10#include <QRegularExpression>
26 for (
const auto& s :
string.split (Separator_, Qt::SkipEmptyParts))
27 FilterTags_ << s.trimmed ();
40 Separator_ = separator;
61 return FilterTagsMode (sourceRow, index);
67 throw std::runtime_error {
"no tags role for the default TagsFilterModel::GetTagsForIndex() implementation" };
69 const auto model = sourceModel ();
73 return model->index (row, 0).data (TagsRole_).toStringList ();
76 bool TagsFilterModel::FilterTagsMode (
int sourceRow,
const QModelIndex&)
const
78 if (FilterTags_.isEmpty ())
82 const auto hasTag = [&] (
const QString& tag) {
return itemTags.contains (tag); };
86 return std::ranges::any_of (FilterTags_, hasTag);
88 return std::ranges::all_of (FilterTags_, hasTag);
virtual void SetFilterString(const QString &)
FixedStringFilterProxyModel(QObject *=nullptr)
bool filterAcceptsRow(int row, const QModelIndex &parent) const override
QString GetDefaultTagsSeparator()