summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tomaz.canabrava@gmail.com>2015-07-25 12:56:48 -0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-07-25 13:52:53 -0700
commitf4c31f110fc98eb6d5d18c806e6b0f2ccc762d54 (patch)
tree439565a35ee5258a7ba9af195ad05309f78e64c5
parent68053a11508d67604360481eb4ab5bbba8c64860 (diff)
downloadsubsurface-f4c31f110fc98eb6d5d18c806e6b0f2ccc762d54.tar.gz
Clean code from the dive site edit
This is an edit dialog, not a create dialog. This makes Subsurface crash but it's a step in the right direction. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--qt-ui/locationinformation.cpp63
-rw-r--r--qt-ui/locationinformation.h5
2 files changed, 9 insertions, 59 deletions
diff --git a/qt-ui/locationinformation.cpp b/qt-ui/locationinformation.cpp
index 5d42468b9..442ee5571 100644
--- a/qt-ui/locationinformation.cpp
+++ b/qt-ui/locationinformation.cpp
@@ -30,12 +30,6 @@ LocationInformationWidget::LocationInformationWidget(QWidget *parent) : QGroupBo
void LocationInformationWidget::setCurrentDiveSiteByUuid(uint32_t uuid)
{
- currentDs = get_dive_site_by_uuid(uuid);
- if(!currentDs)
- return;
-
- displayed_dive_site = *currentDs;
-
if (displayed_dive_site.name)
ui.diveSiteName->setText(displayed_dive_site.name);
else
@@ -53,8 +47,7 @@ void LocationInformationWidget::setCurrentDiveSiteByUuid(uint32_t uuid)
else
ui.diveSiteCoordinates->clear();
- if (current_mode == EDIT_DIVE_SITE)
- emit startFilterDiveSite(displayed_dive_site.uuid);
+ emit startFilterDiveSite(displayed_dive_site.uuid);
emit startEditDiveSite(uuid);
}
@@ -67,6 +60,7 @@ void LocationInformationWidget::acceptChanges()
{
emit stopFilterDiveSite();
char *uiString;
+ struct dive_site *currentDs = get_dive_site_by_uuid(displayed_dive_site.uuid);
currentDs->latitude = displayed_dive_site.latitude;
currentDs->longitude = displayed_dive_site.longitude;
uiString = ui.diveSiteName->text().toUtf8().data();
@@ -84,8 +78,6 @@ void LocationInformationWidget::acceptChanges()
free(currentDs->notes);
currentDs->notes = copy_string(uiString);
}
- if (current_mode == CREATE_DIVE_SITE)
- displayed_dive.dive_site_uuid = currentDs->uuid;
if (dive_site_is_empty(currentDs)) {
LocationInformationModel::instance()->removeRow(get_divesite_idx(currentDs));
displayed_dive.dive_site_uuid = 0;
@@ -97,33 +89,8 @@ 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 (current_mode == CREATE_DIVE_SITE) {
- LocationInformationModel::instance()->removeRow(get_divesite_idx(currentDs));
- if (displayed_dive.dive_site_uuid) {
- displayed_dive_site = *get_dive_site_by_uuid(displayed_dive.dive_site_uuid);
- } else {
- displayed_dive_site.uuid = 0;
- }
- } else if ((currentDs && dive_site_is_empty(currentDs))) {
- LocationInformationModel::instance()->removeRow(get_divesite_idx(currentDs));
- displayed_dive_site.uuid = 0;
- }
-
resetState();
emit stopFilterDiveSite();
emit informationManagementEnded();
@@ -132,7 +99,7 @@ void LocationInformationWidget::rejectChanges()
void LocationInformationWidget::showEvent(QShowEvent *ev)
{
- if (displayed_dive_site.uuid && current_mode == EDIT_DIVE_SITE)
+ if (displayed_dive_site.uuid)
emit startFilterDiveSite(displayed_dive_site.uuid);
QGroupBox::showEvent(ev);
}
@@ -175,7 +142,9 @@ extern bool parseGpsText(const QString &gps_text, double *latitude, double *long
void LocationInformationWidget::on_diveSiteCoordinates_textChanged(const QString& text)
{
- if (!currentDs || !same_string(qPrintable(text), printGPSCoords(currentDs->latitude.udeg, currentDs->longitude.udeg))) {
+ uint lat = displayed_dive_site.latitude.udeg;
+ uint lon = displayed_dive_site.longitude.udeg;
+ if (!same_string(qPrintable(text), printGPSCoords(lat, lon))) {
double latitude, longitude;
if (parseGpsText(text, &latitude, &longitude)) {
displayed_dive_site.latitude.udeg = latitude * 1000000;
@@ -188,33 +157,19 @@ void LocationInformationWidget::on_diveSiteCoordinates_textChanged(const QString
void LocationInformationWidget::on_diveSiteDescription_textChanged(const QString& text)
{
- if (!currentDs || !same_string(qPrintable(text), currentDs->description))
+ if (!same_string(qPrintable(text), displayed_dive_site.description))
markChangedWidget(ui.diveSiteDescription);
}
void LocationInformationWidget::on_diveSiteName_textChanged(const QString& text)
{
- if (currentDs && text != currentDs->name) {
- // This needs to be changed directly into the model so that
- // the changes are replyed on the ComboBox with the current selection.
-
- int i;
- struct dive_site *ds;
- for_each_dive_site(i,ds)
- if (ds->uuid == currentDs->uuid)
- break;
-
- displayed_dive_site.name = copy_string(qPrintable(text));
- QModelIndex idx = LocationInformationModel::instance()->index(i,0);
- LocationInformationModel::instance()->setData(idx, text, Qt::EditRole);
+ if (!same_string(qPrintable(text), displayed_dive_site.name))
markChangedWidget(ui.diveSiteName);
- emit coordinatesChanged();
- }
}
void LocationInformationWidget::on_diveSiteNotes_textChanged()
{
- if (! currentDs || !same_string(qPrintable(ui.diveSiteNotes->toPlainText()), currentDs->notes))
+ if (!same_string(qPrintable(ui.diveSiteNotes->toPlainText()), displayed_dive_site.notes))
markChangedWidget(ui.diveSiteNotes);
}
diff --git a/qt-ui/locationinformation.h b/qt-ui/locationinformation.h
index b55a1b42c..1c4bdde36 100644
--- a/qt-ui/locationinformation.h
+++ b/qt-ui/locationinformation.h
@@ -8,7 +8,6 @@
class LocationInformationWidget : public QGroupBox {
Q_OBJECT
public:
- enum mode{CREATE_DIVE_SITE, EDIT_DIVE_SITE};
LocationInformationWidget(QWidget *parent = 0);
protected:
void showEvent(QShowEvent *);
@@ -17,8 +16,6 @@ public slots:
void acceptChanges();
void rejectChanges();
void updateGpsCoordinates();
- void editDiveSite(uint32_t uuid);
- void createDiveSite();
void markChangedWidget(QWidget *w);
void enableEdition();
void resetState();
@@ -37,11 +34,9 @@ signals:
void startFilterDiveSite(uint32_t uuid);
void stopFilterDiveSite();
private:
- struct dive_site *currentDs;
Ui::LocationInformation ui;
bool modified;
QAction *closeAction, *acceptAction, *rejectAction;
- mode current_mode;
};
class LocationManagementEditHelper : public QObject {