diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2020-05-27 08:17:06 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2020-09-29 16:13:03 -0700 |
commit | 536fc05dd6acd67a459fe6decbd67071ad388df0 (patch) | |
tree | a745af6ee13e97cb9a2336abddd11ae04aec25f8 /qt-models/filterpresetmodel.cpp | |
parent | 937fdb500b94244b2da0d72776d939e78a56fa33 (diff) | |
download | subsurface-536fc05dd6acd67a459fe6decbd67071ad388df0.tar.gz |
filter: add (very primitive) filterpresetmodel
Implement a trivial model to provide the filter preset names
to the UI. Sadly, for now this features the QWidget/QML
column / name dichotomy. However, in this simple case that
shouldn't be too much of an issue.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'qt-models/filterpresetmodel.cpp')
-rw-r--r-- | qt-models/filterpresetmodel.cpp | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/qt-models/filterpresetmodel.cpp b/qt-models/filterpresetmodel.cpp new file mode 100644 index 000000000..446dd5e16 --- /dev/null +++ b/qt-models/filterpresetmodel.cpp @@ -0,0 +1,59 @@ +// SPDX-License-Identifier: GPL-2.0 +#include "filterpresetmodel.h" +#include "core/filterconstraint.h" +#include "core/filterpreset.h" +#include "core/qthelper.h" +#include "core/subsurface-qt/divelistnotifier.h" + +FilterPresetModel::FilterPresetModel() +{ + setHeaderDataStrings(QStringList{ "", tr("Name") }); + connect(&diveListNotifier, &DiveListNotifier::dataReset, this, &FilterPresetModel::reset); +} + +FilterPresetModel::~FilterPresetModel() +{ +} + +FilterPresetModel *FilterPresetModel::instance() +{ + static FilterPresetModel self; + return &self; +} + +QVariant FilterPresetModel::data(const QModelIndex &index, int role) const +{ + if (!index.isValid() || index.row() >= filter_presets_count()) + return QVariant(); + + switch (role) { + case Qt::DisplayRole: + if (index.column() == NAME) + return filter_preset_name_qstring(index.row()); + break; + case Qt::DecorationRole: + if (index.column() == REMOVE) + return trashIcon(); + break; + case Qt::SizeHintRole: + if (index.column() == REMOVE) + return trashIcon().size(); + break; + case Qt::ToolTipRole: + if (index.column() == REMOVE) + return tr("Clicking here will remove this filter set."); + break; + } + return QVariant(); +} + +int FilterPresetModel::rowCount(const QModelIndex &parent) const +{ + return filter_presets_count(); +} + +void FilterPresetModel::reset() +{ + beginResetModel(); + endResetModel(); +} |