on xenial help sign in
Added server value re-assertion + test
commite975b7f74ea5a0f031050dd6d96ee0e9815f5e31 authorNick Dedekind <nick.dedekind@canonical.com> dateThu 9 Oct 2014, 18:06 (12 years ago) parentd548b1d
2 files changed+49−9
qml/Panel/Indicators/MenuItemFactory.qml+32−8 tests/qmltests/Panel/Indicators/tst_MenuItemFactory.qml+17−1
qml/Panel/Indicators/MenuItemFactory.qml+32−8
@@ -290,12 +290,24 @@ Item {
290290 checked: serverChecked
291291 highlightWhenPressed: false
292292
293− onServerCheckedChanged: {
294− // value can be changed by menu, so a binding won't work.
295− checked = serverChecked;
296− }
293+ onServerCheckedChanged: updateFromServer()
297294 onTriggered: {
298295 menuModel.activate(menuIndex);
296+ resyncTimer.restart();
297+ }
298+
299+ // value can be changed by menu, so a binding won't work.
300+ function updateFromServer() {
301+ resyncTimer.stop();
302+ if (checked != serverChecked) {
303+ checked = serverChecked;
304+ }
305+ }
306+
307+ Timer {
308+ id: resyncTimer
309+ interval: 1500
310+ onTriggered: updateFromServer()
299311 }
300312 }
301313 }
@@ -315,12 +327,24 @@ Item {
315327 checked: serverChecked
316328 highlightWhenPressed: false
317329
318− onServerCheckedChanged: {
319− // value can be changed by menu, so a binding won't work.
320− checked = serverChecked;
321− }
330+ onServerCheckedChanged: updateFromServer()
322331 onTriggered: {
323332 menuModel.activate(menuIndex);
333+ resyncTimer.restart();
334+ }
335+
336+ // value can be changed by menu, so a binding won't work.
337+ function updateFromServer() {
338+ resyncTimer.stop();
339+ if (checked != serverChecked) {
340+ checked = serverChecked;
341+ }
342+ }
343+
344+ Timer {
345+ id: resyncTimer
346+ interval: 1500
347+ onTriggered: updateFromServer()
324348 }
325349 }
326350 }
tests/qmltests/Panel/Indicators/tst_MenuItemFactory.qml+17−1
@@ -740,7 +740,7 @@ Item {
740740 compare(loader.item.enabled, data.enabled, "Enabled does not match data");
741741 }
742742
743− function test_lp1336715_broken_checkbox_bindings() {
743+ function test_lp1336715_broken_switch_bindings() {
744744 menuData.type = "com.canonical.indicator.switch";
745745 menuData.sensitive = true;
746746 menuData.isToggled = false;
@@ -758,5 +758,21 @@ Item {
758758
759759 compare(loader.item.checked, false, "Server updates no longer working");
760760 }
761+
762+ // test that the server value is re-aserted if it is not confirmed.
763+ function test_lp1336715_switch_server_value_reassertion() {
764+ menuData.type = "com.canonical.indicator.switch";
765+ menuData.sensitive = true;
766+ menuData.isToggled = false;
767+
768+ loader.data = menuData;
769+ loader.sourceComponent = factory.load(menuData);
770+
771+ compare(loader.item.checked, false, "Loader did not load check state");
772+ mouseClick(loader.item,
773+ loader.item.width / 2, loader.item.height / 2);
774+ compare(loader.item.checked, true, "Clicking switch menu should toggle check");
775+ tryCompare(loader.item, "checked", false);
776+ }
761777 }
762778}