aboutsummaryrefslogtreecommitdiff
path: root/launcher/Filter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'launcher/Filter.cpp')
-rw-r--r--launcher/Filter.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/launcher/Filter.cpp b/launcher/Filter.cpp
new file mode 100644
index 00000000..c65ca0ce
--- /dev/null
+++ b/launcher/Filter.cpp
@@ -0,0 +1,31 @@
+#include "Filter.h"
+
+Filter::~Filter(){}
+
+ContainsFilter::ContainsFilter(const QString& pattern) : pattern(pattern){}
+ContainsFilter::~ContainsFilter(){}
+bool ContainsFilter::accepts(const QString& value)
+{
+ return value.contains(pattern);
+}
+
+ExactFilter::ExactFilter(const QString& pattern) : pattern(pattern){}
+ExactFilter::~ExactFilter(){}
+bool ExactFilter::accepts(const QString& value)
+{
+ return value == pattern;
+}
+
+RegexpFilter::RegexpFilter(const QString& regexp, bool invert)
+ :invert(invert)
+{
+ pattern.setPattern(regexp);
+ pattern.optimize();
+}
+RegexpFilter::~RegexpFilter(){}
+bool RegexpFilter::accepts(const QString& value)
+{
+ auto match = pattern.match(value);
+ bool matched = match.hasMatch();
+ return invert ? (!matched) : (matched);
+}