summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2017-11-26 22:21:58 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2017-11-26 18:50:40 -0800
commit24c72cb359e98eb22418789f397bd72e0a29919b (patch)
treebff97ead133f4cf8747625bb95a877905375d096
parentf4bcdf46aa6498c449be8f63c052a7cbeaf8baa6 (diff)
downloadsubsurface-24c72cb359e98eb22418789f397bd72e0a29919b.tar.gz
Inform LocationFilterModel of added dive site name
If the user implicitly adds a dive site by editing a dive, and a location filter is active, check the new dive site in the location filter. This is done by informing the LocationFilterModel of the new dive site name prior to repopulation. The LocationFilterModel then adds a corresponding entry and marks it as checked. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
-rw-r--r--desktop-widgets/tab-widgets/maintab.cpp7
-rw-r--r--desktop-widgets/tab-widgets/maintab.h1
-rw-r--r--qt-models/filtermodels.cpp14
-rw-r--r--qt-models/filtermodels.h1
4 files changed, 22 insertions, 1 deletions
diff --git a/desktop-widgets/tab-widgets/maintab.cpp b/desktop-widgets/tab-widgets/maintab.cpp
index adb73526c..244c6465a 100644
--- a/desktop-widgets/tab-widgets/maintab.cpp
+++ b/desktop-widgets/tab-widgets/maintab.cpp
@@ -21,8 +21,10 @@
#include "qt-models/weightmodel.h"
#include "qt-models/divecomputerextradatamodel.h"
#include "qt-models/divelocationmodel.h"
+#include "qt-models/filtermodels.h"
#include "core/divesite.h"
#include "desktop-widgets/locationinformation.h"
+#include "desktop-widgets/locationinformation.h"
#include "TabDiveExtraInfo.h"
#include "TabDiveInformation.h"
@@ -201,6 +203,7 @@ MainTab::MainTab(QWidget *parent) : QTabWidget(parent),
connect(ui.diveNotesMessage, &KMessageWidget::showAnimationFinished,
ui.location, &DiveLocationLineEdit::fixPopupPosition);
+ connect(this, SIGNAL(diveSiteAdded(const QString &)), LocationFilterModel::instance(), SLOT(addName(const QString &)));
// enable URL clickability in notes:
new TextHyperlinkEventFilter(ui.notes);//destroyed when ui.notes is destroyed
@@ -703,8 +706,10 @@ uint32_t MainTab::updateDiveSite(uint32_t pickedUuid, int divenr)
return origUuid;
if (pickedUuid == RECENTLY_ADDED_DIVESITE) {
- pickedUuid = create_dive_site(ui.location->text().isEmpty() ? qPrintable(tr("New dive site")) : qPrintable(ui.location->text()), displayed_dive.when);
+ QString name = ui.location->text().isEmpty() ? tr("New dive site") : ui.location->text();
+ pickedUuid = create_dive_site(qPrintable(name), displayed_dive.when);
createdNewDive = true;
+ emit diveSiteAdded(name);
}
newDs = get_dive_site_by_uuid(pickedUuid);
diff --git a/desktop-widgets/tab-widgets/maintab.h b/desktop-widgets/tab-widgets/maintab.h
index 03eb5f320..74872ea08 100644
--- a/desktop-widgets/tab-widgets/maintab.h
+++ b/desktop-widgets/tab-widgets/maintab.h
@@ -60,6 +60,7 @@ signals:
void addDiveFinished();
void dateTimeChanged();
void diveSiteChanged(struct dive_site * ds);
+ void diveSiteAdded(const QString &);
public
slots:
void addCylinder_clicked();
diff --git a/qt-models/filtermodels.cpp b/qt-models/filtermodels.cpp
index 568fcd9e2..07ec1a250 100644
--- a/qt-models/filtermodels.cpp
+++ b/qt-models/filtermodels.cpp
@@ -333,6 +333,20 @@ void LocationFilterModel::changeName(const QString &oldName, const QString &newN
checkState[newIndex] = true;
}
+void LocationFilterModel::addName(const QString &newName)
+{
+ // If any item is checked and a new location is added, add the name
+ // of the new location in front of the list and mark it as checked.
+ // Thus, on subsequent repopulation of the list, the new entry will
+ // be registered as already checked.
+ QStringList list = stringList();
+ if (!anyChecked || newName.isEmpty() || list.indexOf(newName) >= 0)
+ return;
+ list.prepend(newName);
+ setStringList(list);
+ checkState.insert(checkState.begin(), true);
+}
+
MultiFilterSortModel::MultiFilterSortModel(QObject *parent) :
QSortFilterProxyModel(parent),
divesDisplayed(0),
diff --git a/qt-models/filtermodels.h b/qt-models/filtermodels.h
index 45f820984..671ac1d19 100644
--- a/qt-models/filtermodels.h
+++ b/qt-models/filtermodels.h
@@ -69,6 +69,7 @@ public
slots:
void repopulate();
void changeName(const QString &oldName, const QString &newName);
+ void addName(const QString &newName);
private:
explicit LocationFilterModel(QObject *parent = 0);