14
14
* along with this program. If not, see <http://www.gnu.org/licenses/>.
17
#include "fake_department.h"
17
#include "fake_navigation.h"
19
19
#include "fake_scope.h"
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)
26
27
, m_allLabel(allLabel)
27
28
, m_parentId(parentId)
32
33
QTimer::singleShot(1500, this, SLOT(slotLoaded()));
33
connect(scope, SIGNAL(currentDepartmentIdChanged()), this, SLOT(slotCurrentDepartmentChanged()));
34
connect(scope, SIGNAL(currentNavigationIdChanged()), this, SLOT(slotCurrentNavigationChanged()));
36
QString Department::departmentId() const
37
QString Navigation::navigationId() const
38
return m_departmentId;
39
return m_navigationId;
41
QString Department::label() const
42
QString Navigation::label() const
46
QString Department::allLabel() const
47
QString Navigation::allLabel() const
51
QString Department::parentDepartmentId() const
52
QString Navigation::parentNavigationId() const
56
QString Department::parentLabel() const
57
QString Navigation::parentLabel() const
58
59
return m_parentLabel;
61
void Department::slotLoaded()
62
void Navigation::slotLoaded()
64
65
Q_EMIT loadedChanged();
67
bool Department::loaded() const
68
bool Navigation::loaded() const
72
int Department::count() const
73
int Navigation::count() const
77
bool Department::isRoot() const
79
return m_departmentId == "root";
82
int Department::rowCount(const QModelIndex & /*parent*/) const
84
if (!m_loaded || m_departmentId.startsWith("child") || m_departmentId == "middle3")
78
bool Navigation::isRoot() const
80
return m_navigationId == "root" || m_navigationId == "altroot";
83
bool Navigation::hidden() const
85
return m_navigationId == "altroot";
88
int Navigation::rowCount(const QModelIndex & /*parent*/) const
90
if (!m_loaded || m_navigationId.startsWith("child") || m_navigationId == "middle3")
90
QHash<int, QByteArray> Department::roleNames() const
92
QHash<int, QByteArray> res;
93
res[RoleDepartmentId] = "departmentId";
94
res[RoleLabel] = "label";
95
res[RoleHasChildren] = "hasChildren";
96
res[RoleIsActive] = "isActive";
100
QVariant Department::data(const QModelIndex &index, int role) const
96
QVariant Navigation::data(const QModelIndex &index, int role) const
103
case RoleDepartmentId:
104
if (m_departmentId == "root")
99
case RoleNavigationId:
100
if (m_navigationId == "root")
105
101
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());
102
else if (m_navigationId.startsWith("middle"))
103
return QString("child%1%2").arg(m_navigationId).arg(index.row());
110
return QString("%1Child%2").arg(m_departmentId).arg(index.row());
105
return QString("%1Child%2").arg(m_navigationId).arg(index.row());
112
106
case RoleHasChildren:
113
return m_departmentId == "root" && index.row() != 3;
107
return m_navigationId == "root" && index.row() != 3;
115
108
case RoleIsActive:
116
return m_scope->currentDepartmentId() == data(index, RoleDepartmentId);
109
return m_scope->currentNavigationId() == data(index, RoleNavigationId);
119
111
return QVariant();
122
void Department::slotCurrentDepartmentChanged()
114
void Navigation::slotCurrentNavigationChanged()
124
116
// This is wasteful, should only emit it if really something changed in this
125
117
// deparment, but this is a mock, so no need to optimize