diff options
Diffstat (limited to 'src/blocker/filtertree.cpp')
-rw-r--r-- | src/blocker/filtertree.cpp | 57 |
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; +} |