aboutsummaryrefslogtreecommitdiff
path: root/src/blocker/filtertree.cpp
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2017-05-25 16:12:29 +0200
committerAqua-sama <aqua@iserlohn-fortress.net>2017-05-25 16:12:29 +0200
commit49324c8d4acbf36902754a2f1c62fb134df1b19e (patch)
tree3e4be38562d17f01a6051b9a895c5681e8f0b8ff /src/blocker/filtertree.cpp
parentDisplaying filter rules in a tree model view (diff)
downloadsmolbote-49324c8d4acbf36902754a2f1c62fb134df1b19e.tar.xz
Merged FilterRule into FilterNode
Diffstat (limited to 'src/blocker/filtertree.cpp')
-rw-r--r--src/blocker/filtertree.cpp57
1 files changed, 43 insertions, 14 deletions
diff --git a/src/blocker/filtertree.cpp b/src/blocker/filtertree.cpp
index e8b7ed3..e264015 100644
--- a/src/blocker/filtertree.cpp
+++ b/src/blocker/filtertree.cpp
@@ -19,15 +19,11 @@
******************************************************************************/
#include "filtertree.h"
-#include "filternode.h"
FilterTree::FilterTree(QObject *parent) :
QAbstractItemModel(parent)
{
- // create some nodes here
- QList<QVariant> rootData;
- rootData << "Domain" << "Request" << "Blocked" << "Allowed Types" << "Blocked Types";
- rootItem = new FilterNode(rootData);
+ rootItem = new FilterNode("", "", FilterNode::ResourceRules(), false);
}
FilterTree::~FilterTree()
@@ -90,11 +86,7 @@ int FilterTree::rowCount(const QModelIndex &parent) const
int FilterTree::columnCount(const QModelIndex &parent) const
{
- if(parent.isValid()) {
- return static_cast<FilterNode*>(parent.internalPointer())->columnCount();
- } else {
- return rootItem->columnCount();
- }
+ return 5;
}
QVariant FilterTree::data(const QModelIndex &index, int role) const
@@ -107,7 +99,21 @@ QVariant FilterTree::data(const QModelIndex &index, int role) const
return QVariant();
}
- return static_cast<FilterNode*>(index.internalPointer())->data(index.column());
+ FilterNode *n = static_cast<FilterNode*>(index.internalPointer());
+ switch (index.column()) {
+ case 0: // domain
+ return QVariant(n->domain());
+ case 1: // request
+ return QVariant(n->request());
+ case 2: // should block
+ return QVariant(n->isBlocking() ? "true" : "false");
+ case 3: // allowed types
+ return QVariant("---");
+ case 4: // blocked types
+ return QVariant("---");
+ default:
+ return QVariant();
+ }
}
QVariant FilterTree::headerData(int section, Qt::Orientation orientation, int role) const
@@ -120,12 +126,35 @@ QVariant FilterTree::headerData(int section, Qt::Orientation orientation, int ro
return QVariant();
}
- return rootItem->data(section);
+ switch (section) {
+ case 0:
+ return QVariant(tr("Domain"));
+ case 1:
+ return QVariant(tr("Request"));
+ case 2:
+ return QVariant(tr("Should Block"));
+ case 3:
+ return QVariant(tr("Allowed Types"));
+ case 4:
+ return QVariant(tr("Blocked Types"));
+ default:
+ return QVariant();
+ }
}
-FilterNode *FilterTree::addFilter(QList<QVariant> &data)
+FilterNode *FilterTree::addFilter(const QString &domain, const QString &request, FilterNode::ResourceRules rules, bool shouldBlock)
{
- FilterNode *node = new FilterNode(data, rootItem);
+ FilterNode *node = new FilterNode(domain, request, rules, shouldBlock, rootItem);
+ node->enable();
rootItem->appendChild(node);
return node;
}
+
+QVector<FilterNode*> FilterTree::filters(const QString &domain)
+{
+ QVector<FilterNode*> nodes;
+ for(int i = 0; i < rootItem->childCount(); ++i) {
+ nodes.append(rootItem->child(i));
+ }
+ return nodes;
+}