From 612b068e33d0c7510e3bee0fd15aceff1f788841 Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava Date: Wed, 3 Jun 2015 23:50:36 -0300 Subject: 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 Signed-off-by: Dirk Hohndel --- qt-ui/locationinformation.cpp | 13 +++++++++++++ qt-ui/locationinformation.h | 11 +++++++++-- qt-ui/mainwindow.cpp | 9 +++++++-- 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; -- cgit v1.2.3-70-g09d2