summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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;