diff options
Diffstat (limited to 'qt-ui/maintab.cpp')
-rw-r--r-- | qt-ui/maintab.cpp | 205 |
1 files changed, 100 insertions, 105 deletions
diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp index 554b3ccc6..2af6b7b27 100644 --- a/qt-ui/maintab.cpp +++ b/qt-ui/maintab.cpp @@ -26,9 +26,9 @@ #include <QScrollBar> MainTab::MainTab(QWidget *parent) : QTabWidget(parent), - weightModel(new WeightModel(this)), - cylindersModel(CylindersModel::instance()), - editMode(NONE) + weightModel(new WeightModel(this)), + cylindersModel(CylindersModel::instance()), + editMode(NONE) { ui.setupUi(this); @@ -69,8 +69,8 @@ MainTab::MainTab(QWidget *parent) : QTabWidget(parent), ui.tagWidget->installEventFilter(this); QList<QObject *> statisticsTabWidgets = ui.statisticsTab->children(); - Q_FOREACH(QObject* obj, statisticsTabWidgets) { - QLabel* label = qobject_cast<QLabel *>(obj); + Q_FOREACH(QObject * obj, statisticsTabWidgets) { + QLabel *label = qobject_cast<QLabel *>(obj); if (label) label->setAlignment(Qt::AlignHCenter); } @@ -134,18 +134,17 @@ MainTab::MainTab(QWidget *parent) : QTabWidget(parent), " background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1," " stop: 0 #E0E0E0, stop: 1 #FFFFFF);" "}"); - Q_FOREACH(QGroupBox *box, findChildren<QGroupBox*>()) { + Q_FOREACH(QGroupBox * box, findChildren<QGroupBox *>()) { box->setStyleSheet(gnomeCss); } - } ui.cylinders->view()->horizontalHeader()->setContextMenuPolicy(Qt::ActionsContextMenu); QSettings s; s.beginGroup("cylinders_dialog"); - for(int i = 0; i < CylindersModel::COLUMNS; i++) { + for (int i = 0; i < CylindersModel::COLUMNS; i++) { if ((i == CylindersModel::REMOVE) || (i == CylindersModel::TYPE)) - continue; + continue; bool checked = s.value(QString("column%1_hidden").arg(i)).toBool(); action = new QAction(cylindersModel->headerData(i, Qt::Horizontal, Qt::DisplayRole).toString(), ui.cylinders->view()); action->setCheckable(true); @@ -161,16 +160,16 @@ MainTab::~MainTab() { QSettings s; s.beginGroup("cylinders_dialog"); - for(int i = 0; i < CylindersModel::COLUMNS; i++) { + for (int i = 0; i < CylindersModel::COLUMNS; i++) { if ((i == CylindersModel::REMOVE) || (i == CylindersModel::TYPE)) - continue; + continue; s.setValue(QString("column%1_hidden").arg(i), ui.cylinders->view()->isColumnHidden(i)); } } void MainTab::toggleTriggeredColumn() { - QAction *action = qobject_cast<QAction*>(sender()); + QAction *action = qobject_cast<QAction *>(sender()); int col = action->data().toInt(); QTableView *view = ui.cylinders->view(); @@ -178,8 +177,7 @@ void MainTab::toggleTriggeredColumn() view->showColumn(col); if (view->columnWidth(col) <= 15) view->setColumnWidth(col, 80); - } - else + } else view->hideColumn(col); } @@ -188,7 +186,7 @@ void MainTab::addDiveStarted() enableEdition(ADD); } -void MainTab::addMessageAction(QAction* action) +void MainTab::addMessageAction(QAction *action) { ui.diveEquipmentMessage->addAction(action); ui.diveNotesMessage->addAction(action); @@ -272,7 +270,7 @@ void MainTab::enableEdition(EditMode newEditMode) notesBackup[mydive].visibility = mydive->visibility; notesBackup[mydive].latitude = mydive->latitude; notesBackup[mydive].longitude = mydive->longitude; - notesBackup[mydive].coordinates = ui.coordinates->text(); + notesBackup[mydive].coordinates = ui.coordinates->text(); notesBackup[mydive].airtemp = get_temperature_string(mydive->airtemp, true); notesBackup[mydive].watertemp = get_temperature_string(mydive->watertemp, true); notesBackup[mydive].datetime = QDateTime::fromTime_t(mydive->when).toUTC().toString(); @@ -293,7 +291,7 @@ void MainTab::enableEdition(EditMode newEditMode) } } -bool MainTab::eventFilter(QObject* object, QEvent* event) +bool MainTab::eventFilter(QObject *object, QEvent *event) { if (!isEnabled()) return false; @@ -349,17 +347,17 @@ void MainTab::clearStats() ui.timeLimits->clear(); } -#define UPDATE_TEXT(d, field) \ - if (!d || !d->field) \ - ui.field->setText(""); \ - else \ - ui.field->setText(d->field) +#define UPDATE_TEXT(d, field) \ + if (!d || !d->field) \ + ui.field->setText(""); \ + else \ + ui.field->setText(d->field) -#define UPDATE_TEMP(d, field) \ - if (!d || d->field.mkelvin == 0) \ - ui.field->setText(""); \ - else \ - ui.field->setText(get_temperature_string(d->field, true)) +#define UPDATE_TEMP(d, field) \ + if (!d || d->field.mkelvin == 0) \ + ui.field->setText(""); \ + else \ + ui.field->setText(get_temperature_string(d->field, true)) bool MainTab::isEditing() { @@ -480,7 +478,7 @@ void MainTab::updateDiveInfo(int dive) } else { SACs = QString(tr("unknown")); } - for(int i=1; i < MAX_CYLINDERS && gases[i].mliter != 0; i++) { + for (int i = 1; i < MAX_CYLINDERS && gases[i].mliter != 0; i++) { volumes.append("\n" + get_volume_string(gases[i], true)); if (duration[i]) { sac.mliter = gases[i].mliter / (depth_to_atm(mean[i], d) * duration[i] / 60); @@ -507,7 +505,7 @@ void MainTab::updateDiveInfo(int dive) else ui.airPressureText->clear(); if (d->salinity) - ui.salinityText->setText(QString("%1g/l").arg(d->salinity/10.0)); + ui.salinityText->setText(QString("%1g/l").arg(d->salinity / 10.0)); else ui.salinityText->clear(); ui.depthLimits->setMaximum(get_depth_string(stats_selection.max_depth, true)); @@ -542,7 +540,7 @@ void MainTab::updateDiveInfo(int dive) ui.coordinates->clear(); ui.visibility->setCurrentStars(0); /* turns out this is non-trivial for a dateTimeEdit... this is a partial hack */ - QLineEdit *le = ui.dateTimeEdit->findChild<QLineEdit*>(); + QLineEdit *le = ui.dateTimeEdit->findChild<QLineEdit *>(); le->setText(""); } } @@ -580,28 +578,28 @@ void MainTab::acceptChanges() /* now figure out if things have changed */ if (MainWindow::instance() && MainWindow::instance()->dive_list()->selectedTrips().count() == 1) { if (notesBackup[NULL].notes != ui.notes->toPlainText() || - notesBackup[NULL].location != ui.location->text()) + notesBackup[NULL].location != ui.location->text()) mark_divelist_changed(true); } else { struct dive *curr = current_dive; //Reset coordinates field, in case it contains garbage. updateGpsCoordinates(curr); if (notesBackup[curr].buddy != ui.buddy->text() || - notesBackup[curr].suit != ui.suit->text() || - notesBackup[curr].notes != ui.notes->toPlainText() || - notesBackup[curr].divemaster != ui.divemaster->text() || - notesBackup[curr].location != ui.location->text() || - notesBackup[curr].coordinates != ui.coordinates->text() || - notesBackup[curr].rating != ui.visibility->currentStars() || - notesBackup[curr].airtemp != ui.airtemp->text() || - notesBackup[curr].watertemp != ui.watertemp->text() || - notesBackup[curr].datetime != ui.dateTimeEdit->dateTime().toString() || - notesBackup[curr].visibility != ui.rating->currentStars() || - notesBackup[curr].tags != ui.tagWidget->text()) { + notesBackup[curr].suit != ui.suit->text() || + notesBackup[curr].notes != ui.notes->toPlainText() || + notesBackup[curr].divemaster != ui.divemaster->text() || + notesBackup[curr].location != ui.location->text() || + notesBackup[curr].coordinates != ui.coordinates->text() || + notesBackup[curr].rating != ui.visibility->currentStars() || + notesBackup[curr].airtemp != ui.airtemp->text() || + notesBackup[curr].watertemp != ui.watertemp->text() || + notesBackup[curr].datetime != ui.dateTimeEdit->dateTime().toString() || + notesBackup[curr].visibility != ui.rating->currentStars() || + notesBackup[curr].tags != ui.tagWidget->text()) { mark_divelist_changed(true); } if (notesBackup[curr].location != ui.location->text() || - notesBackup[curr].coordinates != ui.coordinates->text()) { + notesBackup[curr].coordinates != ui.coordinates->text()) { MainWindow::instance()->globe()->reload(); } @@ -611,7 +609,7 @@ void MainTab::acceptChanges() DivePlannerPointsModel::instance()->copyCylinders(curr); } else if (editMode != ADD && cylindersModel->changed) { mark_divelist_changed(true); - Q_FOREACH (dive *d, notesBackup.keys()) { + Q_FOREACH(dive * d, notesBackup.keys()) { for (int i = 0; i < MAX_CYLINDERS; i++) { if (notesBackup.keys().count() > 1) // only copy the cylinder type, none of the other values @@ -624,13 +622,12 @@ void MainTab::acceptChanges() if (weightModel->changed) { mark_divelist_changed(true); - Q_FOREACH (dive *d, notesBackup.keys()) { + Q_FOREACH(dive * d, notesBackup.keys()) { for (int i = 0; i < MAX_WEIGHTSYSTEMS; i++) { d->weightsystem[i] = multiEditEquipmentPlaceholder.weightsystem[i]; } } } - } if (current_dive->divetrip) { current_dive->divetrip->when = current_dive->when; @@ -650,7 +647,7 @@ void MainTab::acceptChanges() } // each dive that was selected might have had the temperatures in its active divecomputer changed // so re-populate the temperatures - easiest way to do this is by calling fixup_dive - Q_FOREACH(dive *d, notesBackup.keys()) { + Q_FOREACH(dive * d, notesBackup.keys()) { if (d) fixup_dive(d); } @@ -658,13 +655,13 @@ void MainTab::acceptChanges() resetPallete(); if (editMode == ADD || editMode == MANUALLY_ADDED_DIVE) { MainWindow::instance()->dive_list()->unselectDives(); - struct dive *d = get_dive(dive_table.nr -1 ); + struct dive *d = get_dive(dive_table.nr - 1); // mark the dive as remembered (abusing the selected flag) // and then clear that flag out on the other side of the sort_table() d->selected = true; sort_table(&dive_table); int i = 0; - for_each_dive(i,d) { + for_each_dive(i, d) { if (d->selected) { d->selected = false; break; @@ -672,7 +669,7 @@ void MainTab::acceptChanges() } editMode = NONE; MainWindow::instance()->refreshDisplay(); - MainWindow::instance()->dive_list()->selectDive( i, true ); + MainWindow::instance()->dive_list()->selectDive(i, true); } else { editMode = NONE; MainWindow::instance()->dive_list()->rememberSelection(); @@ -700,14 +697,14 @@ void MainTab::resetPallete() ui.tagWidget->setPalette(p); } -#define EDIT_TEXT2(what, text) \ +#define EDIT_TEXT2(what, text) \ textByteArray = text.toUtf8(); \ - free(what);\ + free(what); \ what = strdup(textByteArray.data()); -#define EDIT_TEXT(what, text) \ +#define EDIT_TEXT(what, text) \ QByteArray textByteArray = text.toUtf8(); \ - free(what);\ + free(what); \ what = strdup(textByteArray.data()); void MainTab::rejectChanges() @@ -718,19 +715,19 @@ void MainTab::rejectChanges() MainWindow::instance()->dive_list()->setEnabled(true); if (MainWindow::instance() && MainWindow::instance()->dive_list()->selectedTrips().count() == 1) { - ui.notes->setText(notesBackup[NULL].notes ); + ui.notes->setText(notesBackup[NULL].notes); ui.location->setText(notesBackup[NULL].location); } else { if (lastMode == ADD) { // clean up DivePlannerPointsModel::instance()->cancelPlan(); - } else if (lastMode == MANUALLY_ADDED_DIVE ) { + } else if (lastMode == MANUALLY_ADDED_DIVE) { // when we tried to edit a manually added dive, we destroyed // the dive we edited, so let's just restore it from backup DivePlannerPointsModel::instance()->restoreBackupDive(); } struct dive *curr = current_dive; - ui.notes->setText(notesBackup[curr].notes ); + ui.notes->setText(notesBackup[curr].notes); ui.location->setText(notesBackup[curr].location); ui.buddy->setText(notesBackup[curr].buddy); ui.suit->setText(notesBackup[curr].suit); @@ -744,7 +741,7 @@ void MainTab::rejectChanges() if (curr) { ui.dateTimeEdit->setDateTime(QDateTime::fromString(notesBackup[curr].datetime)); } else { - QLineEdit *le = ui.dateTimeEdit->findChild<QLineEdit*>(); + QLineEdit *le = ui.dateTimeEdit->findChild<QLineEdit *>(); le->setText(""); } @@ -810,74 +807,72 @@ void MainTab::rejectChanges() } #undef EDIT_TEXT2 -#define EDIT_SELECTED_DIVES( WHAT ) do { \ - if (editMode == NONE) \ - return; \ -\ - for (int _i = 0; _i < dive_table.nr; _i++) { \ - struct dive *mydive = get_dive(_i); \ - if (!mydive) \ - continue; \ - if (!mydive->selected) \ - continue; \ -\ - WHAT; \ - } \ -} while(0) - -void markChangedWidget(QWidget *w) { +#define EDIT_SELECTED_DIVES(WHAT) \ + do { \ + if (editMode == NONE) \ + return; \ + \ + for (int _i = 0; _i < dive_table.nr; _i++) { \ + struct dive *mydive = get_dive(_i); \ + if (!mydive) \ + continue; \ + if (!mydive->selected) \ + continue; \ + \ + WHAT; \ + } \ + } while (0) + +void markChangedWidget(QWidget *w) +{ QPalette p; qreal h, s, l, a; qApp->palette().color(QPalette::Text).getHslF(&h, &s, &l, &a); - p.setBrush(QPalette::Base, ( l <= 0.3 ) ? QColor(Qt::yellow).lighter() - :( l <= 0.6 ) ? QColor(Qt::yellow).light() - :/* else */ QColor(Qt::yellow).darker(300) - ); + p.setBrush(QPalette::Base, (l <= 0.3) ? QColor(Qt::yellow).lighter() : (l <= 0.6) ? QColor(Qt::yellow).light() : /* else */ QColor(Qt::yellow).darker(300)); w->setPalette(p); } void MainTab::on_buddy_textChanged() { QString text = ui.buddy->toPlainText().split(",", QString::SkipEmptyParts).join(", "); - EDIT_SELECTED_DIVES( EDIT_TEXT(mydive->buddy, text) ); + EDIT_SELECTED_DIVES(EDIT_TEXT(mydive->buddy, text)); markChangedWidget(ui.buddy); } void MainTab::on_divemaster_textChanged() { QString text = ui.divemaster->toPlainText().split(",", QString::SkipEmptyParts).join(", "); - EDIT_SELECTED_DIVES( EDIT_TEXT(mydive->divemaster, text) ); + EDIT_SELECTED_DIVES(EDIT_TEXT(mydive->divemaster, text)); markChangedWidget(ui.divemaster); } -void MainTab::on_airtemp_textChanged(const QString& text) +void MainTab::on_airtemp_textChanged(const QString &text) { - EDIT_SELECTED_DIVES( select_dc(&mydive->dc)->airtemp.mkelvin = parseTemperatureToMkelvin(text) ); + EDIT_SELECTED_DIVES(select_dc(&mydive->dc)->airtemp.mkelvin = parseTemperatureToMkelvin(text)); markChangedWidget(ui.airtemp); } -void MainTab::on_watertemp_textChanged(const QString& text) +void MainTab::on_watertemp_textChanged(const QString &text) { - EDIT_SELECTED_DIVES( select_dc(&mydive->dc)->watertemp.mkelvin = parseTemperatureToMkelvin(text) ); + EDIT_SELECTED_DIVES(select_dc(&mydive->dc)->watertemp.mkelvin = parseTemperatureToMkelvin(text)); markChangedWidget(ui.watertemp); } -void MainTab::on_dateTimeEdit_dateTimeChanged(const QDateTime& datetime) +void MainTab::on_dateTimeEdit_dateTimeChanged(const QDateTime &datetime) { QDateTime dateTimeUtc(datetime); dateTimeUtc.setTimeSpec(Qt::UTC); - EDIT_SELECTED_DIVES( mydive->when = dateTimeUtc.toTime_t() ); + EDIT_SELECTED_DIVES(mydive->when = dateTimeUtc.toTime_t()); markChangedWidget(ui.dateTimeEdit); } void MainTab::saveTags() { EDIT_SELECTED_DIVES( - QString tag; - taglist_clear(mydive->tag_list); - foreach (tag, ui.tagWidget->getBlockStringList()) - taglist_add_tag(mydive->tag_list, tag.toUtf8().data()); - ); + QString tag; + taglist_clear(mydive->tag_list); + foreach(tag, ui.tagWidget->getBlockStringList()) + taglist_add_tag(mydive->tag_list, tag.toUtf8().data());); } void MainTab::on_tagWidget_textChanged() @@ -885,7 +880,7 @@ void MainTab::on_tagWidget_textChanged() markChangedWidget(ui.tagWidget); } -void MainTab::on_location_textChanged(const QString& text) +void MainTab::on_location_textChanged(const QString &text) { if (editMode == NONE) return; @@ -896,14 +891,14 @@ void MainTab::on_location_textChanged(const QString& text) } else if (editMode == DIVE || editMode == ADD || editMode == MANUALLY_ADDED_DIVE) { if (!ui.coordinates->isModified() || ui.coordinates->text().trimmed().isEmpty()) { - struct dive* dive; + struct dive *dive; int i = 0; for_each_dive(i, dive) { QString location(dive->location); if (location == text && (dive->latitude.udeg || dive->longitude.udeg)) { - EDIT_SELECTED_DIVES( mydive->latitude = dive->latitude ); - EDIT_SELECTED_DIVES( mydive->longitude = dive->longitude ); + EDIT_SELECTED_DIVES(mydive->latitude = dive->latitude); + EDIT_SELECTED_DIVES(mydive->longitude = dive->longitude); //Don't use updateGpsCoordinates() since we don't want to set modified state yet ui.coordinates->setText(printGPSCoords(dive->latitude.udeg, dive->longitude.udeg)); markChangedWidget(ui.coordinates); @@ -911,15 +906,15 @@ void MainTab::on_location_textChanged(const QString& text) } } } - EDIT_SELECTED_DIVES( EDIT_TEXT(mydive->location, text) ); + EDIT_SELECTED_DIVES(EDIT_TEXT(mydive->location, text)); MainWindow::instance()->globe()->repopulateLabels(); } markChangedWidget(ui.location); } -void MainTab::on_suit_textChanged(const QString& text) +void MainTab::on_suit_textChanged(const QString &text) { - EDIT_SELECTED_DIVES( EDIT_TEXT(mydive->suit, text) ); + EDIT_SELECTED_DIVES(EDIT_TEXT(mydive->suit, text)); markChangedWidget(ui.suit); } @@ -932,14 +927,14 @@ void MainTab::on_notes_textChanged() dive_trip_t *currentTrip = *MainWindow::instance()->dive_list()->selectedTrips().begin(); EDIT_TEXT(currentTrip->notes, ui.notes->toPlainText()); } else if (editMode == DIVE || editMode == ADD || editMode == MANUALLY_ADDED_DIVE) { - EDIT_SELECTED_DIVES( EDIT_TEXT(mydive->notes, ui.notes->toPlainText()) ); + EDIT_SELECTED_DIVES(EDIT_TEXT(mydive->notes, ui.notes->toPlainText())); } markChangedWidget(ui.notes); } #undef EDIT_TEXT -void MainTab::on_coordinates_textChanged(const QString& text) +void MainTab::on_coordinates_textChanged(const QString &text) { bool gpsChanged = false; bool parsed = false; @@ -955,15 +950,15 @@ void MainTab::on_coordinates_textChanged(const QString& text) void MainTab::on_rating_valueChanged(int value) { - EDIT_SELECTED_DIVES(mydive->rating = value ); + EDIT_SELECTED_DIVES(mydive->rating = value); } void MainTab::on_visibility_valueChanged(int value) { - EDIT_SELECTED_DIVES( mydive->visibility = value ); + EDIT_SELECTED_DIVES(mydive->visibility = value); } -void MainTab::editCylinderWidget(const QModelIndex& index) +void MainTab::editCylinderWidget(const QModelIndex &index) { if (editMode == NONE) enableEdition(); @@ -972,7 +967,7 @@ void MainTab::editCylinderWidget(const QModelIndex& index) ui.cylinders->edit(index); } -void MainTab::editWeightWidget(const QModelIndex& index) +void MainTab::editWeightWidget(const QModelIndex &index) { if (editMode == NONE) enableEdition(); @@ -985,7 +980,7 @@ QString MainTab::printGPSCoords(int lat, int lon) { unsigned int latdeg, londeg; unsigned int latmin, lonmin; - double latsec, lonsec; + double latsec, lonsec; QString lath, lonh, result; if (!lat && !lon) |