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