diff options
author | Tomaz Canabrava <tomaz.canabrava@gmail.com> | 2015-06-03 23:50:36 -0300 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2015-06-03 21:36:42 -0700 |
commit | 612b068e33d0c7510e3bee0fd15aceff1f788841 (patch) | |
tree | ec5098b6617b6bf7c64e3f6aebbb51e0653b81bc | |
parent | 4c978eab2e4889054936c75db3fe4c02cba6d386 (diff) | |
download | subsurface-612b068e33d0c7510e3bee0fd15aceff1f788841.tar.gz |
Different states for edit / add dive site
When we start the dive site edit dialog, either for add or for edit, we
don't save the state, so the reject state didn't know what to do with the
dive site.
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | qt-ui/locationinformation.cpp | 13 | ||||
-rw-r--r-- | qt-ui/locationinformation.h | 11 | ||||
-rw-r--r-- | qt-ui/mainwindow.cpp | 9 | ||||
-rw-r--r-- | qt-ui/mainwindow.h | 1 |
4 files changed, 30 insertions, 4 deletions
diff --git a/qt-ui/locationinformation.cpp b/qt-ui/locationinformation.cpp index cc6405947..198d7f6a0 100644 --- a/qt-ui/locationinformation.cpp +++ b/qt-ui/locationinformation.cpp @@ -101,6 +101,19 @@ void LocationInformationWidget::acceptChanges() emit coordinatesChanged(); } +void LocationInformationWidget::editDiveSite(uint32_t uuid) +{ + current_mode = EDIT_DIVE_SITE; + setCurrentDiveSiteByUuid(uuid); +} + +void LocationInformationWidget::createDiveSite() +{ + uint32_t uid = LocationInformationModel::instance()->addDiveSite(tr("untitled")); + current_mode = CREATE_DIVE_SITE; + setCurrentDiveSiteByUuid(uid); +} + void LocationInformationWidget::rejectChanges() { if (currentDs && dive_site_is_empty(currentDs)) { diff --git a/qt-ui/locationinformation.h b/qt-ui/locationinformation.h index 445451197..d78af62f8 100644 --- a/qt-ui/locationinformation.h +++ b/qt-ui/locationinformation.h @@ -8,6 +8,7 @@ class LocationInformationWidget : public QGroupBox { Q_OBJECT public: + enum mode{CREATE_DIVE_SITE, EDIT_DIVE_SITE}; LocationInformationWidget(QWidget *parent = 0); protected: void showEvent(QShowEvent *); @@ -15,8 +16,9 @@ protected: public slots: void acceptChanges(); void rejectChanges(); - void setCurrentDiveSiteByUuid(uint32_t uuid); - void updateGpsCoordinates(void); + void updateGpsCoordinates(); + void editDiveSite(uint32_t uuid); + void createDiveSite(); void markChangedWidget(QWidget *w); void enableEdition(); void resetState(); @@ -25,7 +27,11 @@ public slots: void on_diveSiteDescription_textChanged(const QString& text); void on_diveSiteName_textChanged(const QString& text); void on_diveSiteNotes_textChanged(); +private slots: + void setCurrentDiveSiteByUuid(uint32_t uuid); signals: + void startEditDiveSite(uint32_t uuid); + void endEditDiveSite(); void informationManagementEnded(); void coordinatesChanged(); void startFilterDiveSite(uint32_t uuid); @@ -35,6 +41,7 @@ private: Ui::LocationInformation ui; bool modified; QAction *closeAction, *acceptAction, *rejectAction; + mode current_mode; }; #endif diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp index aef22497b..e4309a23b 100644 --- a/qt-ui/mainwindow.cpp +++ b/qt-ui/mainwindow.cpp @@ -215,8 +215,13 @@ void MainWindow::on_actionManage_dive_sites_triggered() { enableDiveSiteEdit(displayed_dive.dive_site_uuid); } -void MainWindow::enableDiveSiteEdit(uint32_t id) { - locationInformationWidget()->setCurrentDiveSiteByUuid(id); +void MainWindow::enableDiveSiteCreation() { + locationInformationWidget()->createDiveSite(); + setApplicationState("EditDiveSite"); +} + + void MainWindow::enableDiveSiteEdit(uint32_t id) { + locationInformationWidget()->editDiveSite(id); setApplicationState("EditDiveSite"); } diff --git a/qt-ui/mainwindow.h b/qt-ui/mainwindow.h index ea09ca52d..6a5f95921 100644 --- a/qt-ui/mainwindow.h +++ b/qt-ui/mainwindow.h @@ -185,6 +185,7 @@ slots: void planCanceled(); void planCreated(); void setEnabledToolbar(bool arg1); + void enableDiveSiteCreation(); private: Ui::MainWindow ui; |