on xenial help sign in
Fix "" being a a valid department (i.e. the root)
commitbeb9977cb4faabd02241aaa58449b3143d3d6c78 authorAlbert Astals <albert.astals@canonical.com> dateTue 27 May 2014, 15:44 (12 years ago) parent665a167
2 files changed+27−12
qml/Dash/DashDepartments.qml+21−6 qml/Dash/DashDepartmentsList.qml+6−6
qml/Dash/DashDepartments.qml+21−6
@@ -94,6 +94,10 @@ AbstractButton {
9494 interactive: false
9595 model: ListModel {
9696 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
97101 }
98102 width: root.width
99103 readonly property int maxHeight: units.gu(60)
@@ -105,14 +109,14 @@ AbstractButton {
105109 visible: height != 0
106110 width: departmentListView.width
107111 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)
109113 onEnterDepartment: {
110− scope.loadDepartment(departmentId);
114+ scope.loadDepartment(newDepartmentId);
111115 // We only need to add a new item to the model
112116 // if we have children, otherwise just load it
113117 if (hasChildren) {
114118 isGoingBack = false;
115− departmentModel.append({"departmentId": departmentId});
119+ departmentModel.append({"departmentId": newDepartmentId, "nullifyDepartment": false});
116120 departmentListView.currentIndex++;
117121 } else {
118122 showList = false;
@@ -121,7 +125,7 @@ AbstractButton {
121125 onGoBackToParentClicked: {
122126 scope.loadDepartment(department.parentId);
123127 isGoingBack = true;
124− departmentModel.setProperty(departmentListView.currentIndex - 1, "departmentId", department.parentId);
128+ departmentModel.setProperty(departmentListView.currentIndex - 1, "nullifyDepartment", false);
125129 departmentListView.currentIndex--;
126130 }
127131 onAllDepartmentClicked: {
@@ -137,7 +141,7 @@ AbstractButton {
137141 if (isGoingBack) {
138142 departmentModel.remove(departmentListView.currentIndex + 1);
139143 } else {
140− departmentModel.setProperty(departmentListView.currentIndex - 1, "departmentId", "");
144+ departmentModel.setProperty(departmentListView.currentIndex - 1, "nullifyDepartment", true);
141145 }
142146 }
143147 }
@@ -152,7 +156,18 @@ AbstractButton {
152156 onScopeChanged: {
153157 departmentModel.clear();
154158 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+ }
156171 }
157172 }
158173}
qml/Dash/DashDepartmentsList.qml+6−6
@@ -20,11 +20,12 @@ import Ubuntu.Components 0.1
2020Item {
2121 id: root
2222 property var department: null
23− signal enterDepartment(var departmentId, bool hasChildren)
23+ signal enterDepartment(var newDepartmentId, bool hasChildren)
2424 signal goBackToParentClicked()
2525 signal allDepartmentClicked()
2626
2727 readonly property int itemHeight: units.gu(5)
28+ readonly property bool isRoot: department && department.departmentId == ""
2829 implicitHeight: flickable.contentHeight
2930
3031 Rectangle {
@@ -51,14 +52,14 @@ Item {
5152
5253 anchors.fill: parent
5354
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
5556 contentHeight: nItems * root.itemHeight
5657 contentWidth: width
5758
5859 AbstractButton {
5960 id: backButton
6061 width: parent.width
61− visible: department && department.parentId != ""
62+ visible: department && !isRoot
6263 height: itemHeight
6364
6465 onClicked: root.goBackToParentClicked();
@@ -103,7 +104,7 @@ Item {
103104 anchors.verticalCenter: parent.verticalCenter
104105 anchors.left: parent.left
105106 anchors.leftMargin: units.gu(2)
106− text: department ? department.allLabel : ""
107+ text: department ? (department.allLabel != "" ? department.allLabel : department.label) : ""
107108 font.bold: true
108109 }
109110
@@ -121,7 +122,6 @@ Item {
121122
122123 onClicked: root.allDepartmentClicked();
123124 }
124− // TODO Add line separator
125125
126126 Repeater {
127127 model: department && department.loaded ? department : null
@@ -129,7 +129,7 @@ Item {
129129 delegate: AbstractButton {
130130 height: root.itemHeight
131131 width: root.width
132− y: ((department.parentId != "" ? 2 : 0) + index) * root.itemHeight
132+ y: ((isRoot ? 0 : 2) + index) * root.itemHeight
133133
134134 onClicked: root.enterDepartment(departmentId, hasChildren)
135135