History

running script window treeview fully works

Thijs Wenker committed 11 years ago

Commit 8feb5101 parent 5a8e00f6 files · +161 −62Browse files

Showing the changes to interface/src/ScriptsModelFilter.cpp (1 of 6 files). Show all

Unified · Split

interface/src/ScriptsModelFilter.cpp+44−0
@@ -0,0 +1,44 @@
1//
2// ScriptsModelFilter.cpp
3// interface/src
4//
5// Created by Thijs Wenker on 01/11/15.
6// Copyright 2015 High Fidelity, Inc.
7//
8// Distributed under the Apache License, Version 2.0.
9// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
10//
11
12#include "ScriptsModelFilter.h"
13
14ScriptsModelFilter::ScriptsModelFilter(QObject *parent) :
15 QSortFilterProxyModel(parent) {
16}
17
18bool ScriptsModelFilter::lessThan(const QModelIndex& left, const QModelIndex& right) const {
19 ScriptsModel* scriptsModel = static_cast<ScriptsModel*>(sourceModel());
20 TreeNodeBase* leftNode = scriptsModel->getTreeNodeFromIndex(left);
21 TreeNodeBase* rightNode = scriptsModel->getTreeNodeFromIndex(right);
22 if (leftNode->getType() != rightNode->getType()) {
23 return leftNode->getType() == TREE_NODE_TYPE_FOLDER;
24 }
25 return leftNode->getName() < rightNode->getName();
26}
27
28bool ScriptsModelFilter::filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const {
29 if (!filterRegExp().isEmpty()) {
30 ScriptsModel* scriptsModel = static_cast<ScriptsModel*>(sourceModel());
31 TreeNodeBase* node = scriptsModel->getFolderNodes(
32 static_cast<TreeNodeFolder*>(scriptsModel->getTreeNodeFromIndex(sourceParent))).at(sourceRow);
33 QModelIndex sourceIndex = sourceModel()->index(sourceRow, this->filterKeyColumn(), sourceParent);
34 if (node->getType() == TREE_NODE_TYPE_FOLDER) {
35 int rows = scriptsModel->rowCount(sourceIndex);
36 for (int i = 0; i < rows; i++) {
37 if (filterAcceptsRow(i, sourceIndex)) {
38 return true;
39 }
40 }
41 }
42 }
43 return QSortFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent);
44}