From b8092c07a4b4d7715d825641e458be5fa56972d6 Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava Date: Mon, 1 Jun 2015 16:58:23 -0300 Subject: [PATCH] Create a new DiveSite when user clicks on add Also reorganized a bit of the code, and renamed a few misleading methods. [Dirk Hohndel: remove some C++11 code] Signed-off-by: Tomaz Canabrava Signed-off-by: Dirk Hohndel --- qt-models/divelocationmodel.cpp | 11 +++++++++++ qt-models/divelocationmodel.h | 2 ++ qt-ui/locationinformation.cpp | 8 ++++---- qt-ui/locationinformation.h | 4 ++-- qt-ui/maintab.cpp | 12 ++++++++---- qt-ui/maintab.ui | 24 ++++++++++++++---------- qt-ui/mainwindow.cpp | 6 +++--- 7 files changed, 44 insertions(+), 23 deletions(-) diff --git a/qt-models/divelocationmodel.cpp b/qt-models/divelocationmodel.cpp index c335f7039..3f8c486fe 100644 --- a/qt-models/divelocationmodel.cpp +++ b/qt-models/divelocationmodel.cpp @@ -49,3 +49,14 @@ void LocationInformationModel::update() endInsertRows(); } } + +int32_t LocationInformationModel::addDiveSite(const QString& name, int lon, int lat) +{ + degrees_t latitude, longitude; + latitude.udeg = lat; + longitude.udeg = lon; + + int32_t uuid = create_dive_site_with_gps(name.toUtf8().data(), latitude, longitude); + update(); + return uuid; +} diff --git a/qt-models/divelocationmodel.h b/qt-models/divelocationmodel.h index 9238c4b5b..9d30adf41 100644 --- a/qt-models/divelocationmodel.h +++ b/qt-models/divelocationmodel.h @@ -10,6 +10,8 @@ public: static LocationInformationModel *instance(); int rowCount(const QModelIndex &parent = QModelIndex()) const; QVariant data(const QModelIndex &index = QModelIndex(), int role = Qt::DisplayRole) const; + int32_t addDiveSite(const QString& name, int lat = 0, int lon = 0); + public slots: void update(); private: diff --git a/qt-ui/locationinformation.cpp b/qt-ui/locationinformation.cpp index 699b80d47..b6c4f7fa9 100644 --- a/qt-ui/locationinformation.cpp +++ b/qt-ui/locationinformation.cpp @@ -34,16 +34,16 @@ LocationInformationWidget::LocationInformationWidget(QWidget *parent) : QGroupBo connect(this, SIGNAL(stopFilterDiveSite()), MultiFilterSortModel::instance(), SLOT(stopFilterDiveSite())); } -void LocationInformationWidget::setCurrentDiveSite(int dive_nr) +void LocationInformationWidget::setCurrentDiveSiteByIndex(int dive_nr) { currentDs = get_dive_site(dive_nr); if (currentDs) - setLocationId(currentDs->uuid); + setCurrentDiveSiteByUuid(currentDs->uuid); else - setLocationId(displayed_dive.dive_site_uuid); + setCurrentDiveSiteByUuid(displayed_dive.dive_site_uuid); } -void LocationInformationWidget::setLocationId(uint32_t uuid) +void LocationInformationWidget::setCurrentDiveSiteByUuid(uint32_t uuid) { currentDs = get_dive_site_by_uuid(uuid); if(!currentDs) diff --git a/qt-ui/locationinformation.h b/qt-ui/locationinformation.h index 2a34512bd..0dcae9d7f 100644 --- a/qt-ui/locationinformation.h +++ b/qt-ui/locationinformation.h @@ -15,13 +15,13 @@ protected: public slots: void acceptChanges(); void rejectChanges(); - void setLocationId(uint32_t uuid); + void setCurrentDiveSiteByUuid(uint32_t uuid); void updateGpsCoordinates(void); void markChangedWidget(QWidget *w); void enableEdition(); void resetState(); void resetPallete(); - void setCurrentDiveSite(int dive_nr); + void setCurrentDiveSiteByIndex(int dive_nr); void on_diveSiteCoordinates_textChanged(const QString& text); void on_diveSiteDescription_textChanged(const QString& text); void on_diveSiteName_textChanged(const QString& text); diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp index 2ecfb6c6d..cc09ed723 100644 --- a/qt-ui/maintab.cpp +++ b/qt-ui/maintab.cpp @@ -21,6 +21,8 @@ #include "divepicturemodel.h" #include "divecomputerextradatamodel.h" #include "divelocationmodel.h" +#include "divesite.h" + #if defined(FBSUPPORT) #include "socialnetworks.h" #endif @@ -55,7 +57,7 @@ MainTab::MainTab(QWidget *parent) : QTabWidget(parent), ui.extraData->setModel(extraDataModel); closeMessage(); - connect(ui.manageDiveSite, SIGNAL(clicked()), this, SLOT(prepareDiveSiteEdit())); + connect(ui.addDiveSite, SIGNAL(clicked()), this, SLOT(prepareDiveSiteEdit())); QAction *action = new QAction(tr("Apply changes"), this); connect(action, SIGNAL(triggered(bool)), this, SLOT(acceptChanges())); @@ -231,17 +233,19 @@ void MainTab::setCurrentLocationIndex() void MainTab::enableGeoLookupEdition() { ui.waitingSpinner->stop(); - ui.manageDiveSite->show(); + ui.addDiveSite->show(); } void MainTab::disableGeoLookupEdition() { ui.waitingSpinner->start(); - ui.manageDiveSite->hide(); + ui.addDiveSite->hide(); } void MainTab::prepareDiveSiteEdit() { - emit requestDiveSiteEdit(displayed_dive.dive_site_uuid); + uint32_t dive_site_uuid = LocationInformationModel::instance()->addDiveSite(tr("Unnamed")); + displayed_dive.dive_site_uuid = dive_site_uuid; + emit requestDiveSiteEdit(dive_site_uuid); } void MainTab::toggleTriggeredColumn() diff --git a/qt-ui/maintab.ui b/qt-ui/maintab.ui index 07c4d9fe0..d681fbdbb 100644 --- a/qt-ui/maintab.ui +++ b/qt-ui/maintab.ui @@ -55,8 +55,8 @@ 0 0 - 447 - 766 + 445 + 760 @@ -196,9 +196,13 @@ - + - manage + ... + + + + :/plus:/plus @@ -535,8 +539,8 @@ 0 0 - 447 - 756 + 445 + 754 @@ -630,8 +634,8 @@ 0 0 - 447 - 756 + 445 + 754 @@ -971,8 +975,8 @@ 0 0 - 447 - 756 + 445 + 754 diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp index 9fa1a81d1..3abb230c4 100644 --- a/qt-ui/mainwindow.cpp +++ b/qt-ui/mainwindow.cpp @@ -216,7 +216,7 @@ void MainWindow::on_actionManage_dive_sites_triggered() { } void MainWindow::enableDiveSiteEdit(uint32_t id) { - locationInformationWidget()->setLocationId(displayed_dive.dive_site_uuid); + locationInformationWidget()->setCurrentDiveSiteByUuid(id); setApplicationState("EditDiveSite"); } @@ -404,7 +404,7 @@ void MainWindow::cleanUpEmpty() information()->updateDiveInfo(true); graphics()->setEmptyState(); dive_list()->reload(DiveTripModel::TREE); - locationInformationWidget()->setLocationId(0); + locationInformationWidget()->setCurrentDiveSiteByUuid(0); globe()->reload(); if (!existing_filename) setTitle(MWTF_DEFAULT); @@ -632,7 +632,7 @@ void MainWindow::setupForAddAndPlan(const char *model) // setup the dive cylinders DivePlannerPointsModel::instance()->clear(); DivePlannerPointsModel::instance()->setupCylinders(); - locationInformationWidget()->setLocationId(0); + locationInformationWidget()->setCurrentDiveSiteByUuid(0); } void MainWindow::on_actionReplanDive_triggered()