summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tomaz.canabrava@gmail.com>2015-06-03 23:50:36 -0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-06-03 21:36:42 -0700
commit612b068e33d0c7510e3bee0fd15aceff1f788841 (patch)
treeec5098b6617b6bf7c64e3f6aebbb51e0653b81bc
parent4c978eab2e4889054936c75db3fe4c02cba6d386 (diff)
downloadsubsurface-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.cpp13
-rw-r--r--qt-ui/locationinformation.h11
-rw-r--r--qt-ui/mainwindow.cpp9
-rw-r--r--qt-ui/mainwindow.h1
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;