summaryrefslogtreecommitdiffstats
path: root/qt-models
diff options
context:
space:
mode:
Diffstat (limited to 'qt-models')
-rw-r--r--qt-models/divelocationmodel.cpp16
-rw-r--r--qt-models/divelocationmodel.h2
2 files changed, 16 insertions, 2 deletions
diff --git a/qt-models/divelocationmodel.cpp b/qt-models/divelocationmodel.cpp
index fbeab7be8..538f27e16 100644
--- a/qt-models/divelocationmodel.cpp
+++ b/qt-models/divelocationmodel.cpp
@@ -178,8 +178,14 @@ void LocationInformationModel::diveSiteDivesChanged(struct dive_site *ds)
bool DiveSiteSortedModel::filterAcceptsRow(int sourceRow, const QModelIndex &source_parent) const
{
- // TODO: filtering
- return true;
+ if (fullText.isEmpty())
+ return true;
+
+ if (sourceRow < 0 || sourceRow > dive_site_table.nr)
+ return false;
+ struct dive_site *ds = dive_site_table.dive_sites[sourceRow];
+ QString text = QString(ds->name) + QString(ds->description) + QString(ds->notes);
+ return text.contains(fullText, Qt::CaseInsensitive);
}
bool DiveSiteSortedModel::lessThan(const QModelIndex &i1, const QModelIndex &i2) const
@@ -272,6 +278,12 @@ void DiveSiteSortedModel::remove(const QModelIndex &index)
}
#endif // SUBSURFACE_MOBILE
+void DiveSiteSortedModel::setFilter(const QString &text)
+{
+ fullText = text.trimmed();
+ invalidateFilter();
+}
+
GeoReferencingOptionsModel *GeoReferencingOptionsModel::instance()
{
static GeoReferencingOptionsModel *self = new GeoReferencingOptionsModel();
diff --git a/qt-models/divelocationmodel.h b/qt-models/divelocationmodel.h
index 9f1c4468b..ca74ad791 100644
--- a/qt-models/divelocationmodel.h
+++ b/qt-models/divelocationmodel.h
@@ -44,6 +44,7 @@ private:
struct dive_site *getDiveSite(const QModelIndex &idx);
bool filterAcceptsRow(int sourceRow, const QModelIndex &source_parent) const override;
bool lessThan(const QModelIndex &i1, const QModelIndex &i2) const override;
+ QString fullText;
#ifndef SUBSURFACE_MOBILE
bool setData(const QModelIndex &index, const QVariant &value, int role) override;
public slots:
@@ -52,6 +53,7 @@ public slots:
public:
DiveSiteSortedModel();
QStringList allSiteNames() const;
+ void setFilter(const QString &text);
};
// To access only divesites at the given GPS coordinates with the exception of a given dive site