QVariant TankInfoModel::data(const QModelIndex &index, int role) const { QVariant ret; if (!index.isValid()) { return ret; } if (role == Qt::FontRole) { return defaultModelFont(); } if (role == Qt::DisplayRole || role == Qt::EditRole) { struct tank_info_t *info = &tank_info[index.row()]; int ml = info->ml; double bar = (info->psi) ? psi_to_bar(info->psi) : info->bar; if (info->cuft && info->psi) ml = cuft_to_l(info->cuft) * 1000 / bar_to_atm(bar); switch (index.column()) { case BAR: ret = bar * 1000; break; case ML: ret = ml; break; case DESCRIPTION: ret = QString(info->name); break; } } return ret; }
QVariant YearlyStatisticsModel::headerData(int section, Qt::Orientation orientation, int role) const { QVariant val; if (role == Qt::FontRole) val = defaultModelFont(); if (role == Qt::DisplayRole && orientation == Qt::Horizontal) { switch(section) { case YEAR: val = tr("Year \n > Month"); break; case DIVES: val = tr("#"); break; case TOTAL_TIME: val = tr("Duration \n Total"); break; case AVERAGE_TIME: val = tr("\nAverage"); break; case SHORTEST_TIME: val = tr("\nShortest"); break; case LONGEST_TIME: val = tr("\nLongest"); break; case AVG_DEPTH: val = QString(tr("Depth (%1)\n Average")).arg(get_depth_unit()); break; case MIN_DEPTH: val = tr("\nMinimum"); break; case MAX_DEPTH: val = tr("\nMaximum"); break; case AVG_SAC: val = QString(tr("SAC (%1)\n Average")).arg(get_volume_unit()); break; case MIN_SAC: val = tr("\nMinimum"); break; case MAX_SAC: val = tr("\nMaximum"); break; case AVG_TEMP: val = QString(tr("Temp. (%1)\n Average").arg(get_temp_unit())); break; case MIN_TEMP: val = tr("\nMinimum"); break; case MAX_TEMP: val = tr("\nMaximum"); break; } } return val; }
QVariant ExtraDataModel::data(const QModelIndex &index, int role) const { QVariant ret; struct extra_data *ed = get_dive_dc(&displayed_dive, dc_number)->extra_data; int i = -1; while (ed && ++i < index.row()) ed = ed->next; if (!ed) return ret; switch (role) { case Qt::FontRole: ret = defaultModelFont(); break; case Qt::TextAlignmentRole: ret = int(Qt::AlignLeft | Qt::AlignVCenter); break; case Qt::DisplayRole: switch (index.column()) { case KEY: ret = QString(ed->key); break; case VALUE: ret = QString(ed->value); break; } break; } return ret; }
QVariant WSInfoModel::data(const QModelIndex &index, int role) const { QVariant ret; if (!index.isValid()) { return ret; } struct ws_info_t *info = &ws_info[index.row()]; int gr = info->grams; switch (role) { case Qt::FontRole: ret = defaultModelFont(); break; case Qt::DisplayRole: case Qt::EditRole: switch (index.column()) { case GR: ret = gr; break; case DESCRIPTION: ret = gettextFromC::instance()->tr(info->name); break; } break; } return ret; }
QVariant GasSelectionModel::data(const QModelIndex &index, int role) const { if (role == Qt::FontRole) { return defaultModelFont(); } return QStringListModel::data(index, role); }
QVariant DiveTripModel::headerData(int section, Qt::Orientation orientation, int role) const { QVariant ret; if (orientation == Qt::Vertical) return ret; switch(role){ case Qt::FontRole : ret = defaultModelFont(); break; case Qt::DisplayRole : switch (section) { case NR: ret = tr("#"); break; case DATE: ret = tr("Date"); break; case RATING: ret = UTF8_BLACKSTAR; break; case DEPTH: ret = (get_units()->length == units::METERS) ? tr("m") : tr("ft"); break; case DURATION: ret = tr("min"); break; case TEMPERATURE:ret = QString("%1%2").arg(UTF8_DEGREE).arg((get_units()->temperature == units::CELSIUS) ? "C" : "F"); break; case TOTALWEIGHT:ret = (get_units()->weight == units::KG) ? tr("kg") : tr("lbs"); break; case SUIT: ret = tr("Suit"); break; case CYLINDER: ret = tr("Cyl"); break; case NITROX: ret = QString("O%1%").arg(UTF8_SUBSCRIPT_2); break; case SAC: ret = tr("SAC"); break; case OTU: ret = tr("OTU"); break; case MAXCNS: ret = tr("maxCNS"); break; case LOCATION: ret = tr("Location"); break; }break; } return ret; }
QVariant DivePlannerPointsModel::data(const QModelIndex &index, int role) const { divedatapoint p = divepoints.at(index.row()); if (role == Qt::DisplayRole || role == Qt::EditRole) { switch (index.column()) { case CCSETPOINT: return (double)p.setpoint / 1000; case DEPTH: return (int) rint(get_depth_units(p.depth, NULL, NULL)); case RUNTIME: return p.time / 60; case DURATION: if (index.row()) return (p.time - divepoints.at(index.row() - 1).time) / 60; else return p.time / 60; case GAS: return get_gas_string(displayed_dive.cylinder[p.cylinderid].gasmix); } } else if (role == Qt::DecorationRole) { switch (index.column()) { case REMOVE: if (rowCount() > 1) return p.entered ? trashIcon() : QVariant(); else return trashForbiddenIcon(); } } else if (role == Qt::SizeHintRole) { switch (index.column()) { case REMOVE: if (rowCount() > 1) return p.entered ? trashIcon().size() : QVariant(); else return trashForbiddenIcon().size(); } } else if (role == Qt::FontRole) { if (divepoints.at(index.row()).entered) { return defaultModelFont(); } else { QFont font = defaultModelFont(); font.setBold(true); return font; } } return QVariant(); }
QVariant TreeModel::data(const QModelIndex& index, int role) const { if (!index.isValid()) return QVariant(); TreeItem* item = static_cast<TreeItem*>(index.internalPointer()); QVariant val = item->data(index.column(), role); if (role == Qt::FontRole && !val.isValid()) return defaultModelFont(); else return val; }
QVariant YearStatisticsItem::data(int column, int role) const { double value; QVariant ret; if (role == Qt::FontRole) { QFont font = defaultModelFont(); font.setBold(stats_interval.is_year); return font; } else if (role != Qt::DisplayRole) { return ret; } switch(column) { case YEAR: if (stats_interval.is_trip) { ret = stats_interval.location; } else { ret = stats_interval.period; } break; case DIVES: ret = stats_interval.selection_size; break; case TOTAL_TIME: ret = get_time_string(stats_interval.total_time.seconds, 0); break; case AVERAGE_TIME: ret = get_minutes(stats_interval.total_time.seconds / stats_interval.selection_size); break; case SHORTEST_TIME: ret = get_minutes(stats_interval.shortest_time.seconds); break; case LONGEST_TIME: ret = get_minutes(stats_interval.longest_time.seconds); break; case AVG_DEPTH: ret = get_depth_string(stats_interval.avg_depth); break; case MIN_DEPTH: ret = get_depth_string(stats_interval.min_depth); break; case MAX_DEPTH: ret = get_depth_string(stats_interval.max_depth); break; case AVG_SAC: ret = get_volume_string(stats_interval.avg_sac); break; case MIN_SAC: ret = get_volume_string(stats_interval.min_sac); break; case MAX_SAC: ret = get_volume_string(stats_interval.max_sac); break; case AVG_TEMP: if (stats_interval.combined_temp && stats_interval.combined_count) { ret = QString::number(stats_interval.combined_temp / stats_interval.combined_count, 'f', 1); } break; case MIN_TEMP: value = get_temp_units(stats_interval.min_temp, NULL); if (value > -100.0) ret = QString::number(value, 'f', 1); break; case MAX_TEMP: value = get_temp_units(stats_interval.max_temp, NULL); if (value > -100.0) ret = QString::number(value, 'f', 1); break; } return ret; }
QVariant DivePlannerPointsModel::data(const QModelIndex &index, int role) const { divedatapoint p = divepoints.at(index.row()); if (role == Qt::DisplayRole || role == Qt::EditRole) { switch (index.column()) { case CCSETPOINT: return (double)p.po2 / 1000; case DEPTH: return (int) rint(get_depth_units(p.depth, NULL, NULL)); case RUNTIME: return p.time / 60; case DURATION: if (index.row()) return (p.time - divepoints.at(index.row() - 1).time) / 60; else return p.time / 60; case GAS: return dpGasToStr(p); } } else if (role == Qt::DecorationRole) { switch (index.column()) { case REMOVE: if (rowCount() > 1) return p.entered ? QIcon(":trash") : QVariant(); } } else if (role == Qt::FontRole) { if (divepoints.at(index.row()).entered) { return defaultModelFont(); } else { QFont font = defaultModelFont(); font.setBold(true); return font; } } return QVariant(); }
QVariant CleanerTableModel::headerData(int section, Qt::Orientation orientation, int role) const { QVariant ret; if (orientation == Qt::Vertical) return ret; switch (role) { case Qt::FontRole: ret = defaultModelFont(); break; case Qt::DisplayRole: ret = headers.at(section); } return ret; }
void TableView::setModel(QAbstractItemModel *model){ ui.tableView->setModel(model); connect(ui.tableView, SIGNAL(clicked(QModelIndex)), model, SLOT(remove(QModelIndex))); QSettings s; s.beginGroup(objectName()); const int columnCount = ui.tableView->model()->columnCount(); for (int i = 0; i < columnCount; i++) { QVariant width = s.value(QString("colwidth%1").arg(i), i == CylindersModel::REMOVE ? 30 : 80 ); ui.tableView->setColumnWidth(i, width.toInt()); } s.endGroup(); QFontMetrics metrics(defaultModelFont()); ui.tableView->horizontalHeader()->setMinimumHeight(metrics.height() + 10); }
void TableView::setModel(QAbstractItemModel *model){ ui.tableView->setModel(model); connect(ui.tableView, SIGNAL(clicked(QModelIndex)), model, SLOT(remove(QModelIndex))); QSettings s; s.beginGroup(objectName()); for (int i = 0; i < ui.tableView->model()->columnCount(); i++) { QVariant width = s.value(QString("colwidth%1").arg(i)); if (width.isValid()) ui.tableView->setColumnWidth(i, width.toInt()); else ui.tableView->resizeColumnToContents(i); } s.endGroup(); QFontMetrics metrics(defaultModelFont()); ui.tableView->horizontalHeader()->setMinimumHeight(metrics.height() + 10); }
QVariant DivePlannerPointsModel::headerData(int section, Qt::Orientation orientation, int role) const { if (role == Qt::DisplayRole && orientation == Qt::Horizontal) { switch (section) { case DEPTH: return tr("Final depth"); case RUNTIME: return tr("Run time"); case DURATION: return tr("Duration"); case GAS: return tr("Used gas"); case CCSETPOINT: return tr("CC set point"); } } else if (role == Qt::FontRole) { return defaultModelFont(); } return QVariant(); }
QVariant WeightModel::headerData(int section, Qt::Orientation orientation, int role) const { QVariant ret; if (orientation == Qt::Vertical) return ret; switch (role) { case Qt::FontRole: ret = defaultModelFont(); break; case Qt::DisplayRole: switch(section) { case TYPE: ret = tr("Type"); break; case WEIGHT: ret = tr("Weight"); break; } break; } return ret; }
QVariant WeightModel::data(const QModelIndex& index, int role) const { QVariant ret; if (!index.isValid() || index.row() >= MAX_WEIGHTSYSTEMS) return ret; weightsystem_t *ws = ¤t->weightsystem[index.row()]; switch (role) { case Qt::FontRole: ret = defaultModelFont(); break; case Qt::TextAlignmentRole: ret = Qt::AlignCenter; break; case Qt::DisplayRole: case Qt::EditRole: switch(index.column()) { case TYPE: ret = QString(ws->description); break; case WEIGHT: ret = get_weight_string(ws->weight, TRUE); break; } break; case Qt::DecorationRole: if (index.column() == REMOVE) ret = QIcon(":trash"); break; case Qt::ToolTipRole: if (index.column() == REMOVE) ret = tr("Clicking here will remove this weigthsystem."); break; } return ret; }
QVariant WSInfoModel::headerData(int section, Qt::Orientation orientation, int role) const { QVariant ret; if (orientation != Qt::Horizontal) return ret; switch(role){ case Qt::FontRole : ret = defaultModelFont(); break; case Qt::DisplayRole : switch(section) { case GR: ret = tr("kg"); break; case DESCRIPTION: ret = tr("Description"); break; } break; } return ret; }
QVariant CylindersModel::headerData(int section, Qt::Orientation orientation, int role) const { QVariant ret; if (orientation == Qt::Vertical) return ret; switch (role) { case Qt::FontRole: ret = defaultModelFont(); break; case Qt::DisplayRole: switch(section) { case TYPE: ret = tr("Type"); break; case SIZE: ret = tr("Size"); break; case WORKINGPRESS: ret = tr("WorkPress"); break; case START: ret = tr("StartPress"); break; case END: ret = tr("EndPress "); break; case O2: ret = tr("O2% "); break; case HE: ret = tr("He% "); break; } } return ret; }
DownloadFromDCWidget::DownloadFromDCWidget(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f), thread(0), downloading(false), previousLast(0), vendorModel(0), productModel(0), timer(new QTimer(this)), dumpWarningShown(false), ostcFirmwareCheck(0), currentState(INITIAL) { clear_table(&downloadTable); ui.setupUi(this); ui.progressBar->hide(); ui.progressBar->setMinimum(0); ui.progressBar->setMaximum(100); diveImportedModel = new DiveImportedModel(this); ui.downloadedView->setModel(diveImportedModel); ui.downloadedView->setSelectionBehavior(QAbstractItemView::SelectRows); ui.downloadedView->setSelectionMode(QAbstractItemView::SingleSelection); int startingWidth = defaultModelFont().pointSize(); ui.downloadedView->setColumnWidth(0, startingWidth * 20); ui.downloadedView->setColumnWidth(1, startingWidth * 10); ui.downloadedView->setColumnWidth(2, startingWidth * 10); connect(ui.downloadedView, SIGNAL(clicked(QModelIndex)), diveImportedModel, SLOT(changeSelected(QModelIndex))); progress_bar_text = ""; fill_computer_list(); ui.chooseDumpFile->setEnabled(ui.dumpToFile->isChecked()); connect(ui.chooseDumpFile, SIGNAL(clicked()), this, SLOT(pickDumpFile())); connect(ui.dumpToFile, SIGNAL(stateChanged(int)), this, SLOT(checkDumpFile(int))); ui.chooseLogFile->setEnabled(ui.logToFile->isChecked()); connect(ui.chooseLogFile, SIGNAL(clicked()), this, SLOT(pickLogFile())); connect(ui.logToFile, SIGNAL(stateChanged(int)), this, SLOT(checkLogFile(int))); ui.selectAllButton->setEnabled(false); ui.unselectAllButton->setEnabled(false); connect(ui.selectAllButton, SIGNAL(clicked()), diveImportedModel, SLOT(selectAll())); connect(ui.unselectAllButton, SIGNAL(clicked()), diveImportedModel, SLOT(selectNone())); vendorModel = new QStringListModel(vendorList); ui.vendor->setModel(vendorModel); auto dc = SettingsObjectWrapper::instance()->dive_computer_settings; if (!dc->dc_vendor().isEmpty()) { ui.vendor->setCurrentIndex(ui.vendor->findText(dc->dc_vendor())); productModel = new QStringListModel(productList[dc->dc_vendor()]); ui.product->setModel(productModel); if (!dc->dc_product().isEmpty()) ui.product->setCurrentIndex(ui.product->findText(dc->dc_product())); } if (!dc->dc_device().isEmpty()) ui.device->setEditText(dc->dc_device()); timer->setInterval(200); connect(timer, SIGNAL(timeout()), this, SLOT(updateProgressBar())); updateState(INITIAL); memset(&data, 0, sizeof(data)); QShortcut *close = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_W), this); connect(close, SIGNAL(activated()), this, SLOT(close())); QShortcut *quit = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q), this); connect(quit, SIGNAL(activated()), parent, SLOT(close())); ui.ok->setEnabled(false); ui.downloadCancelRetryButton->setEnabled(true); ui.downloadCancelRetryButton->setText(tr("Download")); #if defined(BT_SUPPORT) && defined(SSRF_CUSTOM_SERIAL) ui.bluetoothMode->setText(tr("Choose Bluetooth download mode")); ui.bluetoothMode->setChecked(dc->downloadMode() == DC_TRANSPORT_BLUETOOTH); btDeviceSelectionDialog = 0; ui.chooseBluetoothDevice->setEnabled(ui.bluetoothMode->isChecked()); connect(ui.bluetoothMode, SIGNAL(stateChanged(int)), this, SLOT(enableBluetoothMode(int))); connect(ui.chooseBluetoothDevice, SIGNAL(clicked()), this, SLOT(selectRemoteBluetoothDevice())); #else ui.bluetoothMode->hide(); ui.chooseBluetoothDevice->hide(); #endif }
QVariant CylindersModel::data(const QModelIndex& index, int role) const { QVariant ret; if (!index.isValid() || index.row() >= MAX_CYLINDERS) return ret; cylinder_t *cyl = ¤t->cylinder[index.row()]; switch (role) { case Qt::FontRole: { QFont font = defaultModelFont(); switch (index.column()) { case START: font.setItalic(!cyl->start.mbar); break; case END: font.setItalic(!cyl->end.mbar); break; } ret = font; break; } case Qt::TextAlignmentRole: ret = Qt::AlignCenter; break; case Qt::DisplayRole: case Qt::EditRole: switch(index.column()) { case TYPE: ret = QString(cyl->type.description); break; case SIZE: // we can't use get_volume_string because the idiotic imperial tank // sizes take working pressure into account... if (cyl->type.size.mliter) { double volume; int mbar = cyl->type.workingpressure.mbar; if (mbar && prefs.units.volume == prefs.units.CUFT) { volume = ml_to_cuft(cyl->type.size.mliter); volume *= bar_to_atm(mbar / 1000.0); } else { volume = cyl->type.size.mliter / 1000.0; } ret = QString("%1").arg(volume, 0, 'f', 1); } break; case WORKINGPRESS: if (cyl->type.workingpressure.mbar) ret = get_pressure_string(cyl->type.workingpressure, TRUE); break; case START: if (cyl->start.mbar) ret = get_pressure_string(cyl->start, FALSE); else if (cyl->sample_start.mbar) ret = get_pressure_string(cyl->sample_start, FALSE); break; case END: if (cyl->end.mbar) ret = get_pressure_string(cyl->end, FALSE); else if (cyl->sample_end.mbar) ret = get_pressure_string(cyl->sample_end, FALSE); break; case O2: ret = percent_string(cyl->gasmix.o2); break; case HE: ret = percent_string(cyl->gasmix.he); break; case DEPTH: if (prefs.units.length == prefs.units.FEET) ret = mm_to_feet(cyl->depth.mm); else ret = cyl->depth.mm / 1000; break; } break; case Qt::DecorationRole: if (index.column() == REMOVE) ret = QIcon(":trash"); break; case Qt::ToolTipRole: if (index.column() == REMOVE) ret = tr("Clicking here will remove this cylinder."); break; } return ret; }
QVariant CylindersModel::data(const QModelIndex &index, int role) const { QVariant ret; if (!index.isValid() || index.row() >= MAX_CYLINDERS) return ret; cylinder_t *cyl = &displayed_dive.cylinder[index.row()]; switch (role) { case Qt::BackgroundRole: { switch (index.column()) { // mark the cylinder start / end pressure in red if the values // seem implausible case START: case END: if ((cyl->start.mbar && !cyl->end.mbar) || (cyl->end.mbar && cyl->start.mbar <= cyl->end.mbar)) ret = REDORANGE1_HIGH_TRANS; else ret = WHITE1; break; } break; } case Qt::FontRole: { QFont font = defaultModelFont(); switch (index.column()) { case START: font.setItalic(!cyl->start.mbar); break; case END: font.setItalic(!cyl->end.mbar); break; } ret = font; break; } case Qt::TextAlignmentRole: ret = Qt::AlignCenter; break; case Qt::DisplayRole: case Qt::EditRole: switch (index.column()) { case TYPE: ret = QString(cyl->type.description); break; case SIZE: if (cyl->type.size.mliter) ret = get_volume_string(cyl->type.size, true, cyl->type.workingpressure.mbar); break; case WORKINGPRESS: if (cyl->type.workingpressure.mbar) ret = get_pressure_string(cyl->type.workingpressure, true); break; case START: if (cyl->start.mbar) ret = get_pressure_string(cyl->start, true); else if (cyl->sample_start.mbar) ret = get_pressure_string(cyl->sample_start, true); break; case END: if (cyl->end.mbar) ret = get_pressure_string(cyl->end, true); else if (cyl->sample_end.mbar) ret = get_pressure_string(cyl->sample_end, true); break; case O2: ret = percent_string(cyl->gasmix.o2); break; case HE: ret = percent_string(cyl->gasmix.he); break; case DEPTH: ret = get_depth_string(cyl->depth, true); break; } break; case Qt::DecorationRole: if (index.column() == REMOVE) ret = QIcon(":trash"); break; case Qt::ToolTipRole: if (index.column() == REMOVE) ret = tr("Clicking here will remove this cylinder."); break; } return ret; }
DownloadFromDCWidget::DownloadFromDCWidget(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f), downloading(false), previousLast(0), timer(new QTimer(this)), dumpWarningShown(false), ostcFirmwareCheck(0), currentState(INITIAL) { diveImportedModel = new DiveImportedModel(this); diveImportedModel->setDiveTable(&downloadTable); vendorModel.setStringList(vendorList); QShortcut *close = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_W), this); QShortcut *quit = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q), this); int startingWidth = defaultModelFont().pointSize(); clear_table(&downloadTable); ui.setupUi(this); ui.progressBar->hide(); ui.progressBar->setMinimum(0); ui.progressBar->setMaximum(100); ui.downloadedView->setModel(diveImportedModel); ui.downloadedView->setSelectionBehavior(QAbstractItemView::SelectRows); ui.downloadedView->setSelectionMode(QAbstractItemView::SingleSelection); ui.downloadedView->setColumnWidth(0, startingWidth * 20); ui.downloadedView->setColumnWidth(1, startingWidth * 10); ui.downloadedView->setColumnWidth(2, startingWidth * 10); ui.chooseDumpFile->setEnabled(ui.dumpToFile->isChecked()); ui.chooseLogFile->setEnabled(ui.logToFile->isChecked()); ui.selectAllButton->setEnabled(false); ui.unselectAllButton->setEnabled(false); ui.vendor->setModel(&vendorModel); ui.product->setModel(&productModel); progress_bar_text = ""; timer->setInterval(200); connect(ui.downloadedView, SIGNAL(clicked(QModelIndex)), diveImportedModel, SLOT(changeSelected(QModelIndex))); connect(ui.chooseDumpFile, SIGNAL(clicked()), this, SLOT(pickDumpFile())); connect(ui.dumpToFile, SIGNAL(stateChanged(int)), this, SLOT(checkDumpFile(int))); connect(ui.chooseLogFile, SIGNAL(clicked()), this, SLOT(pickLogFile())); connect(ui.logToFile, SIGNAL(stateChanged(int)), this, SLOT(checkLogFile(int))); connect(ui.selectAllButton, SIGNAL(clicked()), diveImportedModel, SLOT(selectAll())); connect(ui.unselectAllButton, SIGNAL(clicked()), diveImportedModel, SLOT(selectNone())); connect(timer, SIGNAL(timeout()), this, SLOT(updateProgressBar())); connect(close, SIGNAL(activated()), this, SLOT(close())); connect(quit, SIGNAL(activated()), parent, SLOT(close())); connect(&thread, SIGNAL(finished()), this, SLOT(onDownloadThreadFinished()), Qt::QueuedConnection); //TODO: Don't call mainwindow. MainWindow *w = MainWindow::instance(); connect(&thread, SIGNAL(finished()), w, SLOT(refreshDisplay())); if (!qPrefDiveComputer::vendor().isEmpty()) { ui.vendor->setCurrentIndex(ui.vendor->findText(qPrefDiveComputer::vendor())); productModel.setStringList(productList[qPrefDiveComputer::vendor()]); if (!qPrefDiveComputer::product().isEmpty()) ui.product->setCurrentIndex(ui.product->findText(qPrefDiveComputer::product())); } updateState(INITIAL); ui.ok->setEnabled(false); ui.downloadCancelRetryButton->setEnabled(true); ui.downloadCancelRetryButton->setText(tr("Download")); QString deviceText = qPrefDiveComputer::device(); #if defined(BT_SUPPORT) ui.bluetoothMode->setText(tr("Choose Bluetooth download mode")); ui.bluetoothMode->setChecked(qPrefDiveComputer::download_mode() == DC_TRANSPORT_BLUETOOTH); btDeviceSelectionDialog = 0; connect(ui.bluetoothMode, SIGNAL(stateChanged(int)), this, SLOT(enableBluetoothMode(int))); connect(ui.chooseBluetoothDevice, SIGNAL(clicked()), this, SLOT(selectRemoteBluetoothDevice())); ui.chooseBluetoothDevice->setEnabled(ui.bluetoothMode->isChecked()); if (ui.bluetoothMode->isChecked()) deviceText = BtDeviceSelectionDialog::formatDeviceText(qPrefDiveComputer::device(), qPrefDiveComputer::device_name()); #else ui.bluetoothMode->hide(); ui.chooseBluetoothDevice->hide(); #endif if (!deviceText.isEmpty()) ui.device->setEditText(deviceText); }
QVariant DiveTripModel::headerData(int section, Qt::Orientation orientation, int role) const { QVariant ret; if (orientation == Qt::Vertical) return ret; switch (role) { case Qt::TextAlignmentRole: ret = dive_table_alignment(section); break; case Qt::FontRole: ret = defaultModelFont(); break; case Qt::DisplayRole: switch (section) { case NR: ret = tr("#"); break; case DATE: ret = tr("Date"); break; case RATING: ret = tr("Rating"); break; case DEPTH: ret = tr("Depth"); break; case DURATION: ret = tr("Duration"); break; case TEMPERATURE: ret = tr("Temp"); break; case TOTALWEIGHT: ret = tr("Weight"); break; case SUIT: ret = tr("Suit"); break; case CYLINDER: ret = tr("Cyl"); break; case GAS: ret = tr("Gas"); break; case SAC: ret = tr("SAC"); break; case OTU: ret = tr("OTU"); break; case MAXCNS: ret = tr("Max CNS"); break; case LOCATION: ret = tr("Location"); break; } break; case Qt::ToolTipRole: switch (section) { case NR: ret = tr("#"); break; case DATE: ret = tr("Date"); break; case RATING: ret = tr("Rating"); break; case DEPTH: ret = tr("Depth(%1)").arg((get_units()->length == units::METERS) ? tr("m") : tr("ft")); break; case DURATION: ret = tr("Duration"); break; case TEMPERATURE: ret = tr("Temp(%1%2)").arg(UTF8_DEGREE).arg((get_units()->temperature == units::CELSIUS) ? "C" : "F"); break; case TOTALWEIGHT: ret = tr("Weight(%1)").arg((get_units()->weight == units::KG) ? tr("kg") : tr("lbs")); break; case SUIT: ret = tr("Suit"); break; case CYLINDER: ret = tr("Cyl"); break; case GAS: ret = tr("Gas"); break; case SAC: const char *unit; get_volume_units(0, NULL, &unit); ret = tr("SAC(%1)").arg(QString(unit).append(tr("/min"))); break; case OTU: ret = tr("OTU"); break; case MAXCNS: ret = tr("Max CNS"); break; case LOCATION: ret = tr("Location"); break; } break; } return ret; }