[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [digikam/frameworks] libs/database/utils: Add tagsContaining / tagsStartingWith
From: Marcel Wiesweg <marcel.wiesweg () gmx ! de>
Date: 2015-09-20 15:55:03
Message-ID: E1ZdgxD-0004Wq-VA () scm ! kde ! org
[Download RAW message or body]
Git commit 9e3a43e1c77d8100e3c65bc13a0b454aa48d504b by Marcel Wiesweg.
Committed on 20/09/2015 at 15:47.
Pushed by mwiesweg into branch 'frameworks'.
Add tagsContaining / tagsStartingWith
M +41 -0 libs/database/utils/tagscache.cpp
M +10 -0 libs/database/utils/tagscache.h
http://commits.kde.org/digikam/9e3a43e1c77d8100e3c65bc13a0b454aa48d504b
diff --git a/libs/database/utils/tagscache.cpp b/libs/database/utils/tagscache.cpp
index fa78978..f544587 100644
--- a/libs/database/utils/tagscache.cpp
+++ b/libs/database/utils/tagscache.cpp
@@ -224,6 +224,9 @@ public:
pickLabelsTags = pickTags;
}
}
+
+ QList<int> tagsForFragment(bool (QString::*stringFunction)(const QString &, \
Qt::CaseSensitivity cs) const, + const QString& \
fragment, Qt::CaseSensitivity caseSensitivity, HiddenTagsPolicy hiddenTagsPolicy); \
};
// ------------------------------------------------------------------------------------------
@@ -1079,4 +1082,42 @@ QStringList TagsCache::shortenedTagPaths(const QList<int>& \
ids,
return ImagePropertiesTab::shortenedTagPaths(tagPaths(ids, slashPolicy, \
hiddenTagsPolicy)); }
+QList<int> TagsCache::TagsCachePriv::tagsForFragment(bool \
(QString::*stringFunction)(const QString &, Qt::CaseSensitivity cs) const, + \
const QString& fragment, + \
Qt::CaseSensitivity caseSensitivity, + \
HiddenTagsPolicy hiddenTagsPolicy) +{
+ checkNameHash();
+ QList<int> ids;
+ QMultiHash<QString, int>::const_iterator it;
+ const bool excludeHiddenTags = hiddenTagsPolicy == NoHiddenTags;
+
+ if (excludeHiddenTags)
+ {
+ checkProperties();
+ }
+
+ QReadLocker locker(&lock);
+ for (it = nameHash.constBegin(); it != nameHash.constEnd(); ++it)
+ {
+ if ( (!excludeHiddenTags || !internalTags.contains(it.value())) && \
(it.key().*stringFunction)(fragment, caseSensitivity)) + {
+ ids << it.value();
+ }
+ }
+ return ids;
+}
+
+QList<int> TagsCache::tagsStartingWith(const QString& fragment, Qt::CaseSensitivity \
caseSensitivity, + HiddenTagsPolicy \
hiddenTagsPolicy) +{
+ return d->tagsForFragment(&QString::startsWith, fragment, caseSensitivity, \
hiddenTagsPolicy); +}
+
+QList<int> TagsCache::tagsContaining(const QString& fragment, Qt::CaseSensitivity \
caseSensitivity, + HiddenTagsPolicy \
hiddenTagsPolicy) +{
+ return d->tagsForFragment(&QString::contains, fragment, caseSensitivity, \
hiddenTagsPolicy); +}
+
} // namespace Digikam
diff --git a/libs/database/utils/tagscache.h b/libs/database/utils/tagscache.h
index 4ca5ac7..a09e46d 100644
--- a/libs/database/utils/tagscache.h
+++ b/libs/database/utils/tagscache.h
@@ -254,6 +254,16 @@ public:
*/
int pickLabelFromTags(QList<int> tagIds);
+ /**
+ * Returns a list of tag ids whose tag name (not path) starts with / contains \
the given fragment + */
+ QList<int> tagsContaining(const QString& fragment,
+ Qt::CaseSensitivity caseSensitivity = \
Qt::CaseInsensitive, + HiddenTagsPolicy \
hiddenTagsPolicy = NoHiddenTags); + QList<int> tagsStartingWith(const QString& \
begin, + Qt::CaseSensitivity caseSensitivity = \
Qt::CaseInsensitive, + HiddenTagsPolicy \
hiddenTagsPolicy = NoHiddenTags); +
static QLatin1String tagPathOfDigikamInternalTags(LeadingSlashPolicy slashPolicy \
= IncludeLeadingSlash); static QLatin1String propertyNameDigikamInternalTag();
static QLatin1String propertyNameExcludedFromWriting();
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic