@@ -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}