@@ -94,6 +94,10 @@ AbstractButton {
94 interactive: false
94 interactive: false
95 model: ListModel {
95 model: ListModel {
96 id: departmentModel
96 id: departmentModel
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
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++;
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--;
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);
140− departmentModel.setProperty(departmentListView.currentIndex - 1, "departmentId", "");
144+ departmentModel.setProperty(departmentListView.currentIndex - 1, "nullifyDepartment", true);
@@ -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});
165+ onHasDepartmentsChanged: {
166+ if (scope.hasDepartments) {
167+ departmentModel.append({"departmentId": scope.currentDepartment, "nullifyDepartment": false});
169+ departmentModel.clear();