@@ -14,14 +14,15 @@
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1515 */
1616
17−#include "fake_department.h"
17+#include "fake_navigation.h"
1818
1919#include "fake_scope.h"
2020
21+#include <QDebug>
2122#include <QTimer>
2223
23−Department::Department(const QString& departmentId, const QString& label, const QString& allLabel, const QString& parentId, const QString& parentLabel, Scope* scope)
24− : m_departmentId(departmentId)
24+Navigation::Navigation(const QString& navigationId, const QString& label, const QString& allLabel, const QString& parentId, const QString& parentLabel, Scope* scope)
25+ : m_navigationId(navigationId)
2526 , m_label(label)
2627 , m_allLabel(allLabel)
2728 , m_parentId(parentId)
@@ -30,96 +31,99 @@ Department::Department(const QString& departmentId, const QString& label, const
3031 , m_scope(scope)
3132{
3233 QTimer::singleShot(1500, this, SLOT(slotLoaded()));
33− connect(scope, SIGNAL(currentDepartmentIdChanged()), this, SLOT(slotCurrentDepartmentChanged()));
34+ connect(scope, SIGNAL(currentNavigationIdChanged()), this, SLOT(slotCurrentNavigationChanged()));
3435}
3536
36−QString Department::departmentId() const
37+QString Navigation::navigationId() const
3738{
38− return m_departmentId;
39+ return m_navigationId;
3940}
4041
41−QString Department::label() const
42+QString Navigation::query() const
43+{
44+ return "navigation:/" + m_navigationId;
45+}
46+
47+QString Navigation::label() const
4248{
4349 return m_label;
4450}
4551
46−QString Department::allLabel() const
52+QString Navigation::allLabel() const
4753{
4854 return m_allLabel;
4955}
5056
51−QString Department::parentDepartmentId() const
57+QString Navigation::parentNavigationId() const
5258{
5359 return m_parentId;
5460}
5561
56−QString Department::parentLabel() const
62+QString Navigation::parentQuery() const
63+{
64+ return "navigation:/" + m_parentId;
65+}
66+
67+QString Navigation::parentLabel() const
5768{
5869 return m_parentLabel;
5970}
6071
61−void Department::slotLoaded()
72+void Navigation::slotLoaded()
6273{
6374 m_loaded = true;
6475 Q_EMIT loadedChanged();
6576}
6677
67−bool Department::loaded() const
78+bool Navigation::loaded() const
6879{
6980 return m_loaded;
7081}
7182
72−int Department::count() const
83+int Navigation::count() const
7384{
7485 return rowCount();
7586}
7687
77−bool Department::isRoot() const
88+bool Navigation::isRoot() const
7889{
79− return m_departmentId == "root";
90+ return m_navigationId == "root" || m_navigationId == "altroot";
8091}
8192
82−int Department::rowCount(const QModelIndex & /*parent*/) const
93+bool Navigation::hidden() const
8394{
84− if (!m_loaded || m_departmentId.startsWith("child") || m_departmentId == "middle3")
85− return 0;
86− else
87− return 8;
95+ return m_navigationId == "altroot";
8896}
8997
90−QHash<int, QByteArray> Department::roleNames() const
98+int Navigation::rowCount(const QModelIndex & /*parent*/) const
9199{
92− QHash<int, QByteArray> res;
93− res[RoleDepartmentId] = "departmentId";
94− res[RoleLabel] = "label";
95− res[RoleHasChildren] = "hasChildren";
96− res[RoleIsActive] = "isActive";
97− return res;
100+ if (!m_loaded || m_navigationId.startsWith("child") || m_navigationId == "middle3")
101+ return 0;
102+ else
103+ return 8;
98104}
99105
100−QVariant Department::data(const QModelIndex &index, int role) const
106+QVariant Navigation::data(const QModelIndex &index, int role) const
101107{
102108 switch (role) {
103− case RoleDepartmentId:
104− if (m_departmentId == "root")
109+ case RoleQuery:
110+ return QString("navigation:/%1").arg(data(index, RoleNavigationId).toString());
111+ case RoleNavigationId:
112+ if (m_navigationId == "root")
105113 return QString("middle%1").arg(index.row());
106− else if (m_departmentId.startsWith("middle"))
107− return QString("child%1%2").arg(m_departmentId).arg(index.row());
108− break;
114+ else if (m_navigationId.startsWith("middle"))
115+ return QString("child%1%2").arg(m_navigationId).arg(index.row());
109116 case RoleLabel:
110− return QString("%1Child%2").arg(m_departmentId).arg(index.row());
111− break;
117+ return QString("%1Child%2").arg(m_navigationId).arg(index.row());
112118 case RoleHasChildren:
113− return m_departmentId == "root" && index.row() != 3;
114− break;
119+ return m_navigationId == "root" && index.row() != 3;
115120 case RoleIsActive:
116− return m_scope->currentDepartmentId() == data(index, RoleDepartmentId);
117− break;
121+ return m_scope->currentNavigationId() == data(index, RoleNavigationId);
118122 }
119123 return QVariant();
120124}
121125
122−void Department::slotCurrentDepartmentChanged()
126+void Navigation::slotCurrentNavigationChanged()
123127{
124128 // This is wasteful, should only emit it if really something changed in this
125129 // deparment, but this is a mock, so no need to optimize