diff options
author | Willem Ferguson <willemferguson@zoology.up.ac.za> | 2019-02-28 15:35:34 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2019-02-28 15:45:42 -0800 |
commit | 10e7835290fef4275fb85e5efc9e37c06887b9e6 (patch) | |
tree | 8e0a413393fafb435c40546488c37f8fccd73f5c /qt-models | |
parent | 01e8a54f5897c5aaab52f2bcd720f6350677fde5 (diff) | |
download | subsurface-10e7835290fef4275fb85e5efc9e37c06887b9e6.tar.gz |
Filter panel: add suit and notes search fields
All the field in the Notes Panel of the main window are now supported.
This needs some testing especially for the Notes field that may contain
markup. It appears ok to me for single term searches. One would like
to think about the default search option for the Notes.
There is a vertical spacer in the Filter panel that I moved downwards
and whose function I am not quite sure of.
[Dirk Hohndel: small adjustments]
Signed-off-by: willemferguson <willemferguson@zoology.up.ac.za>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-models')
-rw-r--r-- | qt-models/filtermodels.cpp | 29 | ||||
-rw-r--r-- | qt-models/filtermodels.h | 4 |
2 files changed, 33 insertions, 0 deletions
diff --git a/qt-models/filtermodels.cpp b/qt-models/filtermodels.cpp index 359b9a7f6..a5ba07204 100644 --- a/qt-models/filtermodels.cpp +++ b/qt-models/filtermodels.cpp @@ -74,6 +74,27 @@ namespace { { return true; } + + bool hasSuits(const QStringList &suits, const struct dive *d, FilterData::Mode mode) + { + if (suits.isEmpty()) + return true; + QStringList diveSuits; + if (d->suit) + diveSuits.push_back(QString(d->suit)); + return check(suits, diveSuits, mode); + } + + bool hasNotes(const QStringList &dnotes, const struct dive *d, FilterData::Mode mode) + { + if (dnotes.isEmpty()) + return true; + QStringList diveNotes; + if (d->notes) + diveNotes.push_back(QString(d->notes)); + return check(dnotes, diveNotes, mode); + } + } MultiFilterSortModel *MultiFilterSortModel::instance() @@ -149,6 +170,14 @@ bool MultiFilterSortModel::showDive(const struct dive *d) const if (!hasLocations(filterData.location, d, filterData.locationMode)) return false; + // Suit + if (!hasSuits(filterData.suit, d, filterData.suitMode)) + return false; + + // Notes + if (!hasNotes(filterData.dnotes, d, filterData.dnotesMode)) + return false; + if (!hasEquipment(filterData.equipment, d, filterData.equipmentMode)) return false; diff --git a/qt-models/filtermodels.h b/qt-models/filtermodels.h index 996c2efaa..3b3e14abc 100644 --- a/qt-models/filtermodels.h +++ b/qt-models/filtermodels.h @@ -41,10 +41,14 @@ struct FilterData { QStringList tags; QStringList people; QStringList location; + QStringList suit; + QStringList dnotes; QStringList equipment; Mode tagsMode = Mode::ALL_OF; Mode peopleMode = Mode::ALL_OF; Mode locationMode = Mode::ANY_OF; + Mode dnotesMode = Mode::ALL_OF; + Mode suitMode = Mode::ANY_OF; Mode equipmentMode = Mode::ALL_OF; bool logged = true; bool planned = true; |