on xenial help sign in
More visibility changes. Visibility test.
commit6048b2524e96c5002ca7b4211799a4908636ce19 authorNick Dedekind <nicholas.dedekind@gmail.com> dateThu 22 Aug 2013, 19:37 (13 years ago) parent9149a61
8 files changed+127−75
Panel/IndicatorItem.qml+1−3 Panel/IndicatorRow.qml+5−1 tests/mocks/Unity/Indicators/IndicatorsModel.qml+83−57 tests/mocks/Unity/Indicators/qml/fake_menu_widget2.qml+2 tests/qmltests/CMakeLists.txt+1−1 tests/qmltests/Panel/tst_IndicatorItem.qml+2−2 tests/qmltests/Panel/tst_Indicators.qml+30−11 tests/qmltests/Panel/tst_Panel.qml+3
Panel/IndicatorItem.qml+1−3
@@ -31,9 +31,7 @@ Item {
3131 opacity: dimmed ? 0.4 : 1
3232 Behavior on opacity { StandardAnimation {} }
3333
34− // only visible when non-empty
35− visible: indicatorVisible
36− width: indicatorVisible ? loader.item.width : 0
34+ width: loader.item != undefined && loader.status == Loader.Ready ? loader.item.width : 0
3735
3836 Loader {
3937 id: loader
Panel/IndicatorRow.qml+5−1
@@ -56,7 +56,8 @@ Item {
5656 Item {
5757 id: itemWrapper
5858 height: indicatorRow.height
59− width: childrenRect.width
59+ width: indicatorItem.width
60+ visible: indicatorItem.indicatorVisible
6061
6162 property int ownIndex: index
6263 property alias highlighted: indicatorItem.highlighted
@@ -72,6 +73,9 @@ Item {
7273 widgetSource: model.widgetSource
7374 indicatorProperties : model.indicatorProperties
7475
76+ Component.onCompleted: {
77+ indicatorsModel.setData(index, indicatorVisible, Indicators.IndicatorsModelRole.IsVisible);
78+ }
7579 onIndicatorVisibleChanged: {
7680 indicatorsModel.setData(index, indicatorVisible, Indicators.IndicatorsModelRole.IsVisible);
7781 }
tests/mocks/Unity/Indicators/IndicatorsModel.qml+83−57
@@ -23,55 +23,54 @@ ListModel {
2323
2424 function load() {}
2525
26− ListElement {
27− identifier: "indicator-fake1";
28− priority: 0
29− title: "Menu1";
30− description: "";
31− widgetSource: "qrc:/tests/indciators/qml/fake_menu_widget1.qml";
32− pageSource: "qrc:/tests/indciators/qml/fake_menu_page1.qml";
33− indicatorProperties: "";
34− isValid: "";
35− }
36− ListElement {
37− identifier: "indicator-fake2";
38− priority: 1
39− title: "Menu2";
40− description: "";
41− widgetSource: "qrc:/tests/indciators/qml/fake_menu_widget2.qml";
42− pageSource: "qrc:/tests/indciators/qml/fake_menu_page2.qml";
43− indicatorProperties: "";
44− isValid: "";
45− }
46− ListElement {
47− identifier: "indicator-fake3";
48− priority: 2
49− title: "Menu3";
50− description: "";
51− widgetSource: "qrc:/tests/indciators/qml/fake_menu_widget3.qml";
52− pageSource: "qrc:/tests/indciators/qml/fake_menu_page3.qml";
53− indicatorProperties: "";
54− isValid: "";
55− }
56− ListElement {
57− identifier: "indicator-fake4";
58− priority: 3
59− title: "Menu4";
60− description: "";
61− widgetSource: "qrc:/tests/indciators/qml/fake_menu_widget4.qml";
62− pageSource: "qrc:/tests/indciators/qml/fake_menu_page4.qml";
63− indicatorProperties: "";
64− isValid: "";
65− }
66− ListElement {
67− identifier: "indicator-fake5";
68− priority: 4
69− title: "Menu5";
70− description: "";
71− widgetSource: "qrc:/tests/indciators/qml/fake_menu_widget5.qml";
72− pageSource: "qrc:/tests/indciators/qml/fake_menu_page5.qml";
73− indicatorProperties: "";
74− isValid: "";
26+ // Need to do this dynamically.
27+ // Apparently ListModels dont order roles visually when using ListElement
28+ // which throws off the filter for non-visible indicators.
29+ Component.onCompleted: {
30+ append({ "identifier": "indicator-fake1",
31+ "priority": 0,
32+ "title": "Menu1",
33+ "description": "",
34+ "widgetSource": "qrc:/tests/indciators/qml/fake_menu_widget1.qml",
35+ "pageSource": "qrc:/tests/indciators/qml/fake_menu_page1.qml",
36+ "indicatorProperties": "",
37+ "isVisible": true});
38+
39+ append({ "identifier": "indicator-fake2",
40+ "priority": 1,
41+ "title": "Menu2",
42+ "description": "",
43+ "widgetSource": "qrc:/tests/indciators/qml/fake_menu_widget2.qml",
44+ "pageSource": "qrc:/tests/indciators/qml/fake_menu_page2.qml",
45+ "indicatorProperties": "",
46+ "isVisible": true});
47+
48+ append({ "identifier": "indicator-fake3",
49+ "priority": 2,
50+ "title": "Menu3",
51+ "description": "",
52+ "widgetSource": "qrc:/tests/indciators/qml/fake_menu_widget3.qml",
53+ "pageSource": "qrc:/tests/indciators/qml/fake_menu_page3.qml",
54+ "indicatorProperties": "",
55+ "isVisible": true});
56+
57+ append({ "identifier": "indicator-fake4",
58+ "priority": 3,
59+ "title": "Menu4",
60+ "description": "",
61+ "widgetSource": "qrc:/tests/indciators/qml/fake_menu_widget4.qml",
62+ "pageSource": "qrc:/tests/indciators/qml/fake_menu_page4.qml",
63+ "indicatorProperties": "",
64+ "isVisible": true});
65+
66+ append({ "identifier": "indicator-fake5",
67+ "priority": 4,
68+ "title": "Menu5",
69+ "description": "",
70+ "widgetSource": "qrc:/tests/indciators/qml/fake_menu_widget5.qml",
71+ "pageSource": "qrc:/tests/indciators/qml/fake_menu_page5.qml",
72+ "indicatorProperties": "",
73+ "isVisible": true});
7574 }
7675
7776 function data(row, role) {
@@ -79,25 +78,52 @@ ListModel {
7978 return get(row).identifier;
8079 }
8180 else if (role == Indicators.IndicatorsModelRole.Priority) {
82− return get(row).priority
81+ return get(row).priority;
82+ }
83+ else if (role == Indicators.IndicatorsModelRole.Title) {
84+ return get(row).title;
85+ }
86+ else if (role == Indicators.IndicatorsModelRole.Description) {
87+ return get(row).description;
88+ }
89+ else if (role == Indicators.IndicatorsModelRole.WidgetSource) {
90+ return get(row).widgetSource;
91+ }
92+ else if (role == Indicators.IndicatorsModelRole.PageSource) {
93+ return get(row).pageSource;
94+ }
95+ else if (role == Indicators.IndicatorsModelRole.IndicatorProperties) {
96+ return get(row).indicatorProperties;
97+ }
98+ else if (role == Indicators.IndicatorsModelRole.IsVisible) {
99+ return get(row).isVisible;
100+ }
101+ }
102+
103+ function setData(row, value, role) {
104+ if (role == Indicators.IndicatorsModelRole.Identifier) {
105+ return set(row, {"identifier": value});
106+ }
107+ else if (role == Indicators.IndicatorsModelRole.Priority) {
108+ return set(row, {"priority": value});
83109 }
84110 else if (role == Indicators.IndicatorsModelRole.Title) {
85− return get(row).title
111+ return set(row, {"title": value});
86112 }
87113 else if (role == Indicators.IndicatorsModelRole.Description) {
88− return get(row).description
114+ return set(row, {"description": value});
89115 }
90116 else if (role == Indicators.IndicatorsModelRole.WidgetSource) {
91− return get(row).widgetSource
117+ return set(row, {"widgetSource": value});
92118 }
93119 else if (role == Indicators.IndicatorsModelRole.PageSource) {
94− return get(row).pageSource
120+ return set(row, {"pageSource": value});
95121 }
96122 else if (role == Indicators.IndicatorsModelRole.IndicatorProperties) {
97− return get(row).indicatorProperties
123+ return set(row, {"indicatorProperties": value});
98124 }
99− else if (role == Indicators.IndicatorsModelRole.IsValid) {
100− return get(row).isValid
125+ else if (role == Indicators.IndicatorsModelRole.IsVisible) {
126+ return set(row, {"isVisible": value});
101127 }
102128 }
103129
tests/mocks/Unity/Indicators/qml/fake_menu_widget2.qml+2
@@ -20,4 +20,6 @@ Rectangle {
2020 width: 40
2121 height: 40
2222 color : "yellow"
23+
24+ enabled: false
2325}
tests/qmltests/CMakeLists.txt+1−1
@@ -65,7 +65,7 @@ add_qml_test(Launcher Launcher IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltes
6565add_qml_test(Notifications Notifications IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_SOURCE_DIR}/tests/mocks)
6666add_qml_test(Panel IndicatorRow)
6767add_qml_test(Panel Indicators IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS})
68−add_qml_test(Panel MenuContent)
68+add_qml_test(Panel MenuContent IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS})
6969add_qml_test(Panel Panel IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS})
7070add_qml_test(Panel SearchIndicator)
7171add_qml_test(SideStage SideStage IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS}
tests/qmltests/Panel/tst_IndicatorItem.qml+2−2
@@ -53,9 +53,9 @@ Rectangle {
5353 }
5454
5555 function test_empty() {
56− compare(indicatorItem.visible, false, "IndicatorItem should not be visible.");
56+ compare(indicatorItem.indicatorVisible, false, "IndicatorItem should not be visible.");
5757 indicatorItem.widgetSource = "qrc:/tests/indciators/qml/fake_menu_widget1.qml";
58− tryCompare(indicatorItem, "visible", true);
58+ tryCompare(indicatorItem, "indicatorVisible", true);
5959 }
6060 }
6161}
tests/qmltests/Panel/tst_Indicators.qml+30−11
@@ -100,26 +100,29 @@ Item {
100100 {
101101 // tests changing the lateral position of the revealer activates the correct indicator items.
102102
103− var indicator_row = findChild(indicators, "indicatorRow")
104− var row_repeater = findChild(indicators, "rowRepeater")
103+ var indicatorRow = findChild(indicators, "indicatorRow")
104+ var rowRepeater = findChild(indicators, "rowRepeater")
105105
106− for (var i = 0; i < row_repeater.count; i++) {
107− var indicator_item = row_repeater.itemAt(i);
106+ for (var i = 0; i < rowRepeater.count; i++) {
107+ var indicatorItem = rowRepeater.itemAt(i);
108108
109− var indicator_position = indicators.mapFromItem(indicator_item,
110− indicator_item.width/2, indicator_item.height/2)
109+ if (!indicatorItem.visible)
110+ continue;
111+
112+ var indicatorPosition = indicators.mapFromItem(indicatorItem,
113+ indicatorItem.width/2, indicatorItem.height/2)
111114
112115 touchFlick(indicators,
113− indicator_position.x, indicator_position.y,
114− indicator_position.x, indicators.openedHeight * 0.4,
116+ indicatorPosition.x, indicatorPosition.y,
117+ indicatorPosition.x, indicators.openedHeight * 0.4,
115118 true /* beginTouch */, false /* endTouch */)
116119
117− compare(indicator_row.currentItem, indicator_item,
120+ compare(indicatorRow.currentItem, indicatorItem,
118121 "Incorrect item activated at position " + i);
119122
120123 touchFlick(indicators,
121− indicator_position.x, indicators.openedHeight * 0.4,
122− indicator_position.x, indicator_position.y,
124+ indicatorPosition.x, indicators.openedHeight * 0.4,
125+ indicatorPosition.x, indicatorPosition.y,
123126 false /* beginTouch */, true /* endTouch */)
124127
125128 // wait until fully closed
@@ -158,5 +161,21 @@ Item {
158161 compare(indicators.fullyOpened, true);
159162 }
160163
164+ function test_row_visible_menuContent_visible_data() { return [
165+ {tag: "visible", index: 0, name: "indicator-fake1", visible: true },
166+ {tag: "invisible", index: 1, name: "indicator-fake2", visible: false }]
167+ }
168+
169+ function test_row_visible_menuContent_visible(data) {
170+ var indicatorTabs = findChild(indicators, "tabs");
171+ var rowRepeater = findChild(indicators, "rowRepeater");
172+
173+ var indicatorItem = rowRepeater.itemAt(data.index);
174+ tryCompareFunction(function() { return indicatorItem.width > 0}, true);
175+ tryCompare(indicatorItem, "visible", data.visible);
176+
177+ var indicatorTab = findChild(indicatorTabs, data.name)
178+ tryCompareFunction(function() { return indicatorTab !== undefined }, data.visible);
179+ }
161180 }
162181}
tests/qmltests/Panel/tst_Panel.qml+3
@@ -159,6 +159,9 @@ Item {
159159 var indicatorItem = get_indicator_item(i);
160160 verify(indicatorItem != undefined);
161161
162+ if (!indicatorItem.visible)
163+ continue;
164+
162165 var indicatorItemCoord = get_indicator_item_position(i);
163166
164167 touchPress(panel,