┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/kfileitemmodelfilter.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2011-12-10 21:28:01 +0100
committerPeter Penz <[email protected]>2011-12-10 21:30:07 +0100
commitcf704d2db699887a6f262cd51313e6ae02e4a8bd (patch)
tree661b23c6083389db9ed3dde816f0f9b5c58f8612 /src/kitemviews/kfileitemmodelfilter.cpp
parent780e42533a6ae37dbc09df52a76c9eb59e59571e (diff)
Support wildcards for the filter
Thanks to Janardhan Reddy for the patch! BUG: 155986 FIXED-IN: 4.8.0
Diffstat (limited to 'src/kitemviews/kfileitemmodelfilter.cpp')
-rw-r--r--src/kitemviews/kfileitemmodelfilter.cpp74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/kitemviews/kfileitemmodelfilter.cpp b/src/kitemviews/kfileitemmodelfilter.cpp
new file mode 100644
index 000000000..dd40e2452
--- /dev/null
+++ b/src/kitemviews/kfileitemmodelfilter.cpp
@@ -0,0 +1,74 @@
+/***************************************************************************
+ * Copyright (C) 2011 by Janardhan Reddy *
+ * *
+ * Based on the Itemviews NG project from Trolltech Labs: *
+ * http://qt.gitorious.org/qt-labs/itemviews-ng *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
+ ***************************************************************************/
+
+#include "kfileitemmodelfilter_p.h"
+
+#include <KFileItem>
+#include <QRegExp>
+
+KFileItemModelFilter::KFileItemModelFilter() :
+ m_useRegExp(false),
+ m_regExp(0),
+ m_lowerCasePattern(),
+ m_pattern()
+{
+}
+
+KFileItemModelFilter::~KFileItemModelFilter()
+{
+ delete m_regExp;
+ m_regExp = 0;
+}
+
+void KFileItemModelFilter::setPattern(const QString& filter)
+{
+ m_pattern = filter;
+ m_lowerCasePattern = filter.toLower();
+
+ m_useRegExp = filter.contains('*') ||
+ filter.contains('?') ||
+ filter.contains('[');
+ if (m_useRegExp) {
+ if (!m_regExp) {
+ m_regExp = new QRegExp();
+ m_regExp->setCaseSensitivity(Qt::CaseInsensitive);
+ m_regExp->setMinimal(false);
+ m_regExp->setPatternSyntax(QRegExp::WildcardUnix);
+ }
+ m_regExp->setPattern(filter);
+ }
+}
+
+QString KFileItemModelFilter::pattern() const
+{
+ return m_pattern;
+}
+
+bool KFileItemModelFilter::matches(const KFileItem& item) const
+{
+ if (m_useRegExp) {
+ return m_regExp->exactMatch(item.text());
+ } else {
+ return item.text().toLower().contains(m_lowerCasePattern);
+ }
+}