diff options
-rw-r--r-- | desktop-widgets/command.cpp | 2 | ||||
-rw-r--r-- | desktop-widgets/command.h | 2 | ||||
-rw-r--r-- | desktop-widgets/command_divesite.cpp | 13 | ||||
-rw-r--r-- | desktop-widgets/command_divesite.h | 2 | ||||
-rw-r--r-- | desktop-widgets/locationinformation.cpp | 97 | ||||
-rw-r--r-- | desktop-widgets/locationinformation.h | 8 | ||||
-rw-r--r-- | desktop-widgets/mapwidget.cpp | 8 | ||||
-rw-r--r-- | desktop-widgets/mapwidget.h | 5 | ||||
-rw-r--r-- | map-widget/qmlmapwidgethelper.cpp | 4 | ||||
-rw-r--r-- | map-widget/qmlmapwidgethelper.h | 2 |
10 files changed, 30 insertions, 113 deletions
diff --git a/desktop-widgets/command.cpp b/desktop-widgets/command.cpp index 36d9faf5a..4ba6c10e9 100644 --- a/desktop-widgets/command.cpp +++ b/desktop-widgets/command.cpp @@ -103,7 +103,7 @@ void editDiveSiteCountry(dive_site *ds, const QString &value) execute(new EditDiveSiteCountry(ds, value)); } -void editDiveSiteLocation(dive_site *ds, const QString &value) +void editDiveSiteLocation(dive_site *ds, location_t value) { execute(new EditDiveSiteLocation(ds, value)); } diff --git a/desktop-widgets/command.h b/desktop-widgets/command.h index 782a46ea5..b41462ac9 100644 --- a/desktop-widgets/command.h +++ b/desktop-widgets/command.h @@ -45,7 +45,7 @@ void editDiveSiteName(dive_site *ds, const QString &value); void editDiveSiteDescription(dive_site *ds, const QString &value); void editDiveSiteNotes(dive_site *ds, const QString &value); void editDiveSiteCountry(dive_site *ds, const QString &value); -void editDiveSiteLocation(dive_site *ds, const QString &value); +void editDiveSiteLocation(dive_site *ds, location_t value); void addDiveSite(const QString &name); } // namespace Command diff --git a/desktop-widgets/command_divesite.cpp b/desktop-widgets/command_divesite.cpp index 5e2a8b18a..91a6dbe81 100644 --- a/desktop-widgets/command_divesite.cpp +++ b/desktop-widgets/command_divesite.cpp @@ -208,17 +208,8 @@ void EditDiveSiteCountry::undo() redo(); } -// Parse GPS text into location_t -static location_t parseGpsText(const QString &text) -{ - double lat, lon; - if (parseGpsText(text, &lat, &lon)) - return create_location(lat, lon); - return { {0}, {0} }; -} - -EditDiveSiteLocation::EditDiveSiteLocation(dive_site *dsIn, const QString &location) : ds(dsIn), - value(parseGpsText(location)) +EditDiveSiteLocation::EditDiveSiteLocation(dive_site *dsIn, const location_t location) : ds(dsIn), + value(location) { setText(tr("Edit dive site location")); } diff --git a/desktop-widgets/command_divesite.h b/desktop-widgets/command_divesite.h index 7ebc69ccb..bf6fb3dc4 100644 --- a/desktop-widgets/command_divesite.h +++ b/desktop-widgets/command_divesite.h @@ -94,7 +94,7 @@ private: class EditDiveSiteLocation : public Base { public: - EditDiveSiteLocation(dive_site *ds, const QString &location); + EditDiveSiteLocation(dive_site *ds, location_t location); private: bool workToBeDone() override; void undo() override; diff --git a/desktop-widgets/locationinformation.cpp b/desktop-widgets/locationinformation.cpp index 4c9414056..39bd6678f 100644 --- a/desktop-widgets/locationinformation.cpp +++ b/desktop-widgets/locationinformation.cpp @@ -19,21 +19,17 @@ #include <QDesktopWidget> #include <QScrollBar> -LocationInformationWidget::LocationInformationWidget(QWidget *parent) : QGroupBox(parent), modified(false), diveSite(nullptr) +LocationInformationWidget::LocationInformationWidget(QWidget *parent) : QGroupBox(parent), diveSite(nullptr) { memset(&taxonomy, 0, sizeof(taxonomy)); ui.setupUi(this); ui.diveSiteMessage->setCloseButtonVisible(false); - acceptAction = new QAction(tr("Apply changes"), this); - connect(acceptAction, SIGNAL(triggered(bool)), this, SLOT(acceptChanges())); - - rejectAction = new QAction(tr("Discard changes"), this); - connect(rejectAction, SIGNAL(triggered(bool)), this, SLOT(rejectChanges())); + QAction *acceptAction = new QAction(tr("Done"), this); + connect(acceptAction, &QAction::triggered, this, &LocationInformationWidget::acceptChanges); ui.diveSiteMessage->setText(tr("Dive site management")); ui.diveSiteMessage->addAction(acceptAction); - ui.diveSiteMessage->addAction(rejectAction); connect(ui.geoCodeButton, SIGNAL(clicked()), this, SLOT(reverseGeocode())); ui.diveSiteCoordinates->installEventFilter(this); @@ -43,9 +39,6 @@ LocationInformationWidget::LocationInformationWidget(QWidget *parent) : QGroupBo ui.diveSiteListView->setModel(&filter_model); ui.diveSiteListView->setModelColumn(LocationInformationModel::NAME); ui.diveSiteListView->installEventFilter(this); - // Map Management Code. - connect(MapWidget::instance(), &MapWidget::coordinatesChanged, - this, &LocationInformationWidget::updateGpsCoordinates); } bool LocationInformationWidget::eventFilter(QObject *object, QEvent *ev) @@ -161,36 +154,24 @@ void LocationInformationWidget::clearLabels() ui.locationTags->clear(); } -void LocationInformationWidget::updateGpsCoordinates(const location_t &location) -{ - QString oldText = ui.diveSiteCoordinates->text(); - - ui.diveSiteCoordinates->setText(printGPSCoords(&location)); - enableLocationButtons(has_location(&location)); - if (oldText != ui.diveSiteCoordinates->text()) - markChangedWidget(ui.diveSiteCoordinates); -} - -// Parse GPS text into latitude and longitude. -// On error, false is returned and the output parameters are left unmodified. -bool parseGpsText(const QString &text, location_t &location) +// Parse GPS text into location_t +static location_t parseGpsText(const QString &text) { double lat, lon; - if (parseGpsText(text, &lat, &lon)) { - location = create_location(lat, lon); - return true; - } - return false; + if (parseGpsText(text, &lat, &lon)) + return create_location(lat, lon); + return { {0}, {0} }; } void LocationInformationWidget::acceptChanges() { - resetState(); -} - -void LocationInformationWidget::rejectChanges() -{ - resetState(); + MainWindow::instance()->diveList->setEnabled(true); + MainWindow::instance()->setEnabledToolbar(true); + MainWindow::instance()->setApplicationState("Default"); + MapWidget::instance()->endGetDiveCoordinates(); + MapWidget::instance()->repopulateLabels(); + MultiFilterSortModel::instance()->stopFilterDiveSite(); + emit endEditDiveSite(); } void LocationInformationWidget::initFields(dive_site *ds) @@ -213,43 +194,11 @@ void LocationInformationWidget::initFields(dive_site *ds) MapWidget::instance()->prepareForGetDiveCoordinates(ds); } -void LocationInformationWidget::markChangedWidget(QWidget *w) -{ - QPalette p; - qreal h, s, l, a; - if (!modified) - enableEdition(); - 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)); - w->setPalette(p); - modified = true; -} - -void LocationInformationWidget::resetState() -{ - modified = false; - resetPallete(); - MainWindow::instance()->diveList->setEnabled(true); - MainWindow::instance()->setEnabledToolbar(true); - ui.diveSiteMessage->setText(tr("Dive site management")); - MapWidget::instance()->endGetDiveCoordinates(); - MapWidget::instance()->repopulateLabels(); - MultiFilterSortModel::instance()->stopFilterDiveSite(); - emit endEditDiveSite(); -} - -void LocationInformationWidget::enableEdition() -{ - MainWindow::instance()->diveList->setEnabled(false); - MainWindow::instance()->setEnabledToolbar(false); - ui.diveSiteMessage->setText(tr("You are editing a dive site")); -} - void LocationInformationWidget::on_diveSiteCoordinates_editingFinished() { if (!diveSite) return; - Command::editDiveSiteLocation(diveSite, ui.diveSiteCoordinates->text()); + Command::editDiveSiteLocation(diveSite, parseGpsText(ui.diveSiteCoordinates->text())); } void LocationInformationWidget::on_diveSiteCountry_editingFinished() @@ -276,20 +225,10 @@ void LocationInformationWidget::on_diveSiteNotes_editingFinished() Command::editDiveSiteNotes(diveSite, ui.diveSiteNotes->toPlainText()); } -void LocationInformationWidget::resetPallete() -{ - QPalette p; - ui.diveSiteCoordinates->setPalette(p); - ui.diveSiteDescription->setPalette(p); - ui.diveSiteCountry->setPalette(p); - ui.diveSiteName->setPalette(p); - ui.diveSiteNotes->setPalette(p); -} - void LocationInformationWidget::reverseGeocode() { - location_t location; - if (!parseGpsText(ui.diveSiteCoordinates->text(), location)) + location_t location = parseGpsText(ui.diveSiteCoordinates->text()); + if (!has_location(&location)) return; reverseGeoLookup(location.lat, location.lon, &taxonomy); ui.locationTags->setText(constructLocationTags(&taxonomy, false)); diff --git a/desktop-widgets/locationinformation.h b/desktop-widgets/locationinformation.h index efa770774..550b8ba8e 100644 --- a/desktop-widgets/locationinformation.h +++ b/desktop-widgets/locationinformation.h @@ -23,12 +23,6 @@ protected: public slots: void acceptChanges(); - void rejectChanges(); - void updateGpsCoordinates(const location_t &); - void markChangedWidget(QWidget *w); - void enableEdition(); - void resetState(); - void resetPallete(); void on_diveSiteCountry_editingFinished(); void on_diveSiteCoordinates_editingFinished(); void on_diveSiteDescription_editingFinished(); @@ -45,8 +39,6 @@ signals: private: void clearLabels(); Ui::LocationInformation ui; - bool modified; - QAction *acceptAction, *rejectAction; GPSLocationInformationModel filter_model; dive_site *diveSite; taxonomy_data taxonomy; diff --git a/desktop-widgets/mapwidget.cpp b/desktop-widgets/mapwidget.cpp index c7b4a08ad..5ae7451ee 100644 --- a/desktop-widgets/mapwidget.cpp +++ b/desktop-widgets/mapwidget.cpp @@ -12,6 +12,7 @@ #include "qt-models/divelocationmodel.h" #include "mainwindow.h" #include "divelistview.h" +#include "command.h" static const QUrl urlMapWidget = QUrl(QStringLiteral("qrc:/qml/MapWidget.qml")); static const QUrl urlMapWidgetError = QUrl(QStringLiteral("qrc:/qml/MapWidgetError.qml")); @@ -49,7 +50,7 @@ void MapWidget::doneLoading(QQuickWidget::Status status) m_mapHelper = rootObject()->findChild<MapWidgetHelper *>(); connect(m_mapHelper, SIGNAL(selectedDivesChanged(QList<int>)), this, SLOT(selectedDivesChanged(QList<int>))); - connect(m_mapHelper, &MapWidgetHelper::coordinatesChanged, this, &MapWidget::coordinatesChangedLocal); + connect(m_mapHelper, &MapWidgetHelper::coordinatesChanged, this, &MapWidget::coordinatesChanged); } void MapWidget::centerOnSelectedDiveSite() @@ -112,10 +113,9 @@ void MapWidget::selectedDivesChanged(QList<int> list) skipReload = false; } -void MapWidget::coordinatesChangedLocal(const location_t &location) +void MapWidget::coordinatesChanged(struct dive_site *ds, const location_t &location) { - CHECK_IS_READY_RETURN_VOID(); - emit coordinatesChanged(location); + Command::editDiveSiteLocation(ds, location); } void MapWidget::diveSiteChanged(struct dive_site *ds, int field) diff --git a/desktop-widgets/mapwidget.h b/desktop-widgets/mapwidget.h index bbdae80aa..9d31aa75a 100644 --- a/desktop-widgets/mapwidget.h +++ b/desktop-widgets/mapwidget.h @@ -24,9 +24,6 @@ public: static MapWidget *instance(); void reload(); -signals: - void coordinatesChanged(const location_t &); - public slots: void centerOnSelectedDiveSite(); void centerOnDiveSite(struct dive_site *); @@ -35,7 +32,7 @@ public slots: void repopulateLabels(); void prepareForGetDiveCoordinates(struct dive_site *ds); void selectedDivesChanged(QList<int>); - void coordinatesChangedLocal(const location_t &); + void coordinatesChanged(struct dive_site *ds, const location_t &); void doneLoading(QQuickWidget::Status status); void diveSiteChanged(struct dive_site *ds, int field); diff --git a/map-widget/qmlmapwidgethelper.cpp b/map-widget/qmlmapwidgethelper.cpp index b13c047e7..a0062db6b 100644 --- a/map-widget/qmlmapwidgethelper.cpp +++ b/map-widget/qmlmapwidgethelper.cpp @@ -257,7 +257,7 @@ void MapWidgetHelper::updateCurrentDiveSiteCoordinatesFromMap(struct dive_site * if (loc) loc->setCoordinate(coord); location_t location = mk_location(coord); - emit coordinatesChanged(location); + emit coordinatesChanged(ds, location); } void MapWidgetHelper::updateDiveSiteCoordinates(struct dive_site *ds, const location_t &location) @@ -294,8 +294,6 @@ void MapWidgetHelper::enterEditMode(struct dive_site *ds) coord = exists->coordinate(); } centerOnDiveSite(ds); - location_t location = mk_location(coord); - emit coordinatesChanged(location); emit editModeChanged(); } diff --git a/map-widget/qmlmapwidgethelper.h b/map-widget/qmlmapwidgethelper.h index 43f722aba..2ea4959d6 100644 --- a/map-widget/qmlmapwidgethelper.h +++ b/map-widget/qmlmapwidgethelper.h @@ -53,7 +53,7 @@ signals: void modelChanged(); void editModeChanged(); void selectedDivesChanged(QList<int> list); - void coordinatesChanged(const location_t &); + void coordinatesChanged(struct dive_site *ds, const location_t &); void pluginObjectChanged(); }; |