on xenial help sign in
Fix "" being a a valid department (i.e. the root)
beb9977Albert Astals
qml/Dash/DashDepartments.qml+21−6
@@ -94,6 +94,10 @@ AbstractButton {
94 interactive: false
94 interactive: false
95 model: ListModel {
95 model: ListModel {
96 id: departmentModel
96 id: departmentModel
97+ // We have two roles
98+ // departmentId: the department id of the department the list represents
99+ // nullifyDepartment: overrides departmentId to be null
100+ // This is used to "clear" the delegate when going "right" on the tree
97 }
101 }
98 width: root.width
102 width: root.width
99 readonly property int maxHeight: units.gu(60)
103 readonly property int maxHeight: units.gu(60)
@@ -105,14 +109,14 @@ AbstractButton {
105 visible: height != 0
109 visible: height != 0
106 width: departmentListView.width
110 width: departmentListView.width
107 height: !root.showList ? 0 : department && department.loaded ? Math.min(implicitHeight, departmentListView.maxHeight) : departmentListView.prevHeight
111 height: !root.showList ? 0 : department && department.loaded ? Math.min(implicitHeight, departmentListView.maxHeight) : departmentListView.prevHeight
108− department: scope.getDepartment(departmentId)
112+ department: nullifyDepartment ? null : scope.getDepartment(departmentId)
109 onEnterDepartment: {
113 onEnterDepartment: {
110− scope.loadDepartment(departmentId);
114+ scope.loadDepartment(newDepartmentId);
111 // We only need to add a new item to the model
115 // We only need to add a new item to the model
112 // if we have children, otherwise just load it
116 // if we have children, otherwise just load it
113 if (hasChildren) {
117 if (hasChildren) {
114 isGoingBack = false;
118 isGoingBack = false;
115− departmentModel.append({"departmentId": departmentId});
119+ departmentModel.append({"departmentId": newDepartmentId, "nullifyDepartment": false});
116 departmentListView.currentIndex++;
120 departmentListView.currentIndex++;
117 } else {
121 } else {
118 showList = false;
122 showList = false;
@@ -121,7 +125,7 @@ AbstractButton {
121 onGoBackToParentClicked: {
125 onGoBackToParentClicked: {
122 scope.loadDepartment(department.parentId);
126 scope.loadDepartment(department.parentId);
123 isGoingBack = true;
127 isGoingBack = true;
124− departmentModel.setProperty(departmentListView.currentIndex - 1, "departmentId", department.parentId);
128+ departmentModel.setProperty(departmentListView.currentIndex - 1, "nullifyDepartment", false);
125 departmentListView.currentIndex--;
129 departmentListView.currentIndex--;
126 }
130 }
127 onAllDepartmentClicked: {
131 onAllDepartmentClicked: {
@@ -137,7 +141,7 @@ AbstractButton {
137 if (isGoingBack) {
141 if (isGoingBack) {
138 departmentModel.remove(departmentListView.currentIndex + 1);
142 departmentModel.remove(departmentListView.currentIndex + 1);
139 } else {
143 } else {
140− departmentModel.setProperty(departmentListView.currentIndex - 1, "departmentId", "");
144+ departmentModel.setProperty(departmentListView.currentIndex - 1, "nullifyDepartment", true);
141 }
145 }
142 }
146 }
143 }
147 }
@@ -152,7 +156,18 @@ AbstractButton {
152 onScopeChanged: {
156 onScopeChanged: {
153 departmentModel.clear();
157 departmentModel.clear();
154 if (scope && scope.hasDepartments) {
158 if (scope && scope.hasDepartments) {
155− departmentModel.append({"departmentId": scope.currentDepartment});
159+ departmentModel.append({"departmentId": scope.currentDepartment, "nullifyDepartment": false});
160+ }
161+ }
162+
163+ Connections {
164+ target: scope
165+ onHasDepartmentsChanged: {
166+ if (scope.hasDepartments) {
167+ departmentModel.append({"departmentId": scope.currentDepartment, "nullifyDepartment": false});
168+ } else {
169+ departmentModel.clear();
170+ }
156 }
171 }
157 }
172 }
158}
173}
qml/Dash/DashDepartmentsList.qml+6−6
@@ -20,11 +20,12 @@ import Ubuntu.Components 0.1
20Item {
20Item {
21 id: root
21 id: root
22 property var department: null
22 property var department: null
23− signal enterDepartment(var departmentId, bool hasChildren)
23+ signal enterDepartment(var newDepartmentId, bool hasChildren)
24 signal goBackToParentClicked()
24 signal goBackToParentClicked()
25 signal allDepartmentClicked()
25 signal allDepartmentClicked()
26
26
27 readonly property int itemHeight: units.gu(5)
27 readonly property int itemHeight: units.gu(5)
28+ readonly property bool isRoot: department && department.departmentId == ""
28 implicitHeight: flickable.contentHeight
29 implicitHeight: flickable.contentHeight
29
30
30 Rectangle {
31 Rectangle {
@@ -51,14 +52,14 @@ Item {
51
52
52 anchors.fill: parent
53 anchors.fill: parent
53
54
54− readonly property int nItems: department && department.loaded ? (department.count + (department.parentId != "" ? 2 : 0)) : 0
55+ readonly property int nItems: department && department.loaded ? (department.count + (isRoot ? 0 : 2)) : 0
55 contentHeight: nItems * root.itemHeight
56 contentHeight: nItems * root.itemHeight
56 contentWidth: width
57 contentWidth: width
57
58
58 AbstractButton {
59 AbstractButton {
59 id: backButton
60 id: backButton
60 width: parent.width
61 width: parent.width
61− visible: department && department.parentId != ""
62+ visible: department && !isRoot
62 height: itemHeight
63 height: itemHeight
63
64
64 onClicked: root.goBackToParentClicked();
65 onClicked: root.goBackToParentClicked();
@@ -103,7 +104,7 @@ Item {
103 anchors.verticalCenter: parent.verticalCenter
104 anchors.verticalCenter: parent.verticalCenter
104 anchors.left: parent.left
105 anchors.left: parent.left
105 anchors.leftMargin: units.gu(2)
106 anchors.leftMargin: units.gu(2)
106− text: department ? department.allLabel : ""
107+ text: department ? (department.allLabel != "" ? department.allLabel : department.label) : ""
107 font.bold: true
108 font.bold: true
108 }
109 }
109
110
@@ -121,7 +122,6 @@ Item {
121
122
122 onClicked: root.allDepartmentClicked();
123 onClicked: root.allDepartmentClicked();
123 }
124 }
124− // TODO Add line separator
125
125
126 Repeater {
126 Repeater {
127 model: department && department.loaded ? department : null
127 model: department && department.loaded ? department : null
@@ -129,7 +129,7 @@ Item {
129 delegate: AbstractButton {
129 delegate: AbstractButton {
130 height: root.itemHeight
130 height: root.itemHeight
131 width: root.width
131 width: root.width
132− y: ((department.parentId != "" ? 2 : 0) + index) * root.itemHeight
132+ y: ((isRoot ? 0 : 2) + index) * root.itemHeight
133
133
134 onClicked: root.enterDepartment(departmentId, hasChildren)
134 onClicked: root.enterDepartment(departmentId, hasChildren)
135
135