on xenial help sign in
Moved indicator page titles to the root action state of menu model. Fixes: https://bugs.launchpad.net/bugs/1223635.

Approved by PS Jenkins bot, Michał Sawicz.

commit7b1c72f66cd3b174e55e02f462891e61cea9c695 authorNick Dedekind <nicholas.dedekind@gmail.com> dateThu 3 Oct 2013, 04:53 (13 years ago) parent747f6c63745d3d
15 files changed+50−101
Panel/Indicators/DefaultIndicatorWidget.qml+6−6 Panel/Indicators/NetworkIndicatorPage.qml+1−1 Panel/IndicatorsDataModel.qml−31 Panel/MenuContent.qml+9−2 plugins/Unity/Indicators/indicators.h−2 plugins/Unity/Indicators/indicatorsmodel.cpp+1−9 plugins/Unity/Indicators/qml/IndicatorBase.qml+8−5 plugins/Unity/Indicators/qml/IndicatorPage.qml+7−5 plugins/Unity/Indicators/qml/IndicatorWidget.qml−6 plugins/Unity/Indicators/rootactionstate.cpp+7−1 plugins/Unity/Indicators/rootactionstate.h+3 plugins/Unity/Indicators/visibleindicatorsmodel.cpp−2 tests/mocks/Unity/Indicators/IndicatorsModel.qml+5−15 tests/plugins/Unity/Indicators/indicatorsmodeltest.cpp−13 tests/qmltests/Panel/tst_IndicatorRow.qml+3−3
Panel/Indicators/DefaultIndicatorWidget.qml+6−6
@@ -86,8 +86,8 @@ Indicators.IndicatorWidget {
8686 }
8787 }
8888
89− onActionStateChanged: {
90− if (actionState == undefined) {
89+ onRootActionStateChanged: {
90+ if (rootActionState == undefined) {
9191 leftLabel = "";
9292 rightLabel = "";
9393 icons = undefined;
@@ -95,9 +95,9 @@ Indicators.IndicatorWidget {
9595 return;
9696 }
9797
98− leftLabel = actionState.leftLabel ? actionState.leftLabel : "";
99− rightLabel = actionState.rightLabel ? actionState.rightLabel : "";
100− icons = actionState.icons;
101− enabled = actionState.visible;
98+ leftLabel = rootActionState.leftLabel ? rootActionState.leftLabel : "";
99+ rightLabel = rootActionState.rightLabel ? rootActionState.rightLabel : "";
100+ icons = rootActionState.icons;
101+ enabled = rootActionState.visible;
102102 }
103103}
Panel/Indicators/NetworkIndicatorPage.qml+1−1
@@ -30,7 +30,7 @@ PageStack {
3030 // https://bugs.launchpad.net/ubuntu-ui-toolkit/+bug/1211704
3131 __propagated: null
3232
33− property alias title: _mainPage.title
33+ property alias title: pluginItem.title
3434 property alias emptyText: pluginItem.emptyText
3535 property alias busName: pluginItem.busName
3636 property alias actionsObjectPath : pluginItem.actionsObjectPath
Panel/IndicatorsDataModel.qml−31
@@ -27,39 +27,8 @@ Indicators.IndicatorsModel {
2727 Component.onCompleted: load()
2828
2929 indicatorData : {
30− 'indicator-location' : {
31− 'title': 'Location',
32− 'description' : ''
33− },
34− 'indicator-bluetooth' : {
35− 'title': 'Bluetooth',
36− 'description' : ''
37− },
38− 'indicator-messages' : {
39− 'title': 'Messaging',
40− 'description' : ''
41− },
42− 'indicator-sound' : {
43− 'title': 'Sound',
44− 'description' : ''
45− },
4630 'indicator-network' : {
47− 'title': 'Networks',
48− 'description' : '',
49− 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorWidget.qml',
5031 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/NetworkIndicatorPage.qml'
5132 },
52− 'indicator-power' : {
53− 'title': 'Battery',
54− 'description' : ''
55− },
56− 'indicator-session' : {
57− 'title': 'Session',
58− 'description' : ''
59− },
60− 'indicator-datetime' : {
61− 'title': 'Date and Time',
62− 'description' : ''
63− }
6433 }
6534}
Panel/MenuContent.qml+9−2
@@ -100,16 +100,17 @@ MainView {
100100 Tab {
101101 id: tab
102102 objectName: model.identifier
103− title: model.title
104103
105104 page: Page {
106105 Loader {
106+ id: loader
107107 clip: true
108108 anchors.fill: parent
109109 source: pageSource
110110 asynchronous: true
111111
112− property bool contentActive: content.__contentActive && menuActivator.content[index].active
112+ readonly property bool indexActive: index >= 0 && index < menuActivator.count && menuActivator.content[index].active
113+ readonly property bool contentActive: content.__contentActive && indexActive
113114
114115 onContentActiveChanged: {
115116 if (contentActive && item) {
@@ -136,6 +137,12 @@ MainView {
136137 item.start()
137138 }
138139 }
140+
141+ Binding {
142+ target: tab
143+ property: "title"
144+ value: loader.item && loader.item.hasOwnProperty("title") && loader.item.title !== "" ? loader.item.title : model.identifier
145+ }
139146 }
140147 }
141148 }
plugins/Unity/Indicators/indicators.h−2
@@ -74,8 +74,6 @@ public:
7474 enum Roles {
7575 Identifier = 0,
7676 Position,
77− Title,
78− Description,
7977 WidgetSource,
8078 PageSource,
8179 IndicatorProperties,
plugins/Unity/Indicators/indicatorsmodel.cpp+1−9
@@ -201,8 +201,6 @@ QHash<int, QByteArray> IndicatorsModel::roleNames() const
201201 {
202202 roles[IndicatorsModelRole::Identifier] = "identifier";
203203 roles[IndicatorsModelRole::Position] = "position";
204− roles[IndicatorsModelRole::Title] = "title";
205− roles[IndicatorsModelRole::Description] = "description";
206204 roles[IndicatorsModelRole::WidgetSource] = "widgetSource";
207205 roles[IndicatorsModelRole::PageSource] = "pageSource";
208206 roles[IndicatorsModelRole::IndicatorProperties] = "indicatorProperties";
@@ -223,10 +221,6 @@ QVariant IndicatorsModel::defaultData(Indicator::Ptr indicator, int role)
223221 {
224222 case IndicatorsModelRole::Position:
225223 return 0;
226− case IndicatorsModelRole::Title:
227− return indicator ? indicator->identifier() : "Unknown";
228− case IndicatorsModelRole::Description:
229− return "";
230224 case IndicatorsModelRole::WidgetSource:
231225 return shellAppDirectory()+"/Panel/Indicators/DefaultIndicatorWidget.qml";
232226 case IndicatorsModelRole::PageSource:
@@ -268,8 +262,6 @@ QVariant IndicatorsModel::data(const QModelIndex &index, int role) const
268262 return QVariant(indicator->indicatorProperties());
269263 }
270264 break;
271− case IndicatorsModelRole::Title:
272− case IndicatorsModelRole::Description:
273265 case IndicatorsModelRole::WidgetSource:
274266 case IndicatorsModelRole::PageSource:
275267 return indicatorData(indicator, role);
@@ -286,7 +278,7 @@ QVariant IndicatorsModel::indicatorData(const Indicator::Ptr& indicator, int rol
286278 QVariantMap data = m_parsed_indicator_data[indicator->identifier()];
287279 if (data.contains(roleNames()[role])) {
288280 return data[roleNames()[role]];
289− };
281+ }
290282 }
291283 return defaultData(indicator, role);
292284}
plugins/Unity/Indicators/qml/IndicatorBase.qml+8−5
@@ -27,13 +27,11 @@ Item {
2727 enabled: menuObjectPaths.hasOwnProperty(device)
2828
2929 //const
30− property string title
3130 property string busName
3231 property string actionsObjectPath
3332 property var menuObjectPaths: undefined
3433 readonly property string device: "phone"
3534 property string rootMenuType: "com.canonical.indicator.root"
36− property bool active: false
3735
3836 property string deviceMenuObjectPath: menuObjectPaths.hasOwnProperty(device) ? menuObjectPaths[device] : ""
3937
@@ -41,8 +39,13 @@ Item {
4139
4240 CachedUnityMenuModel {
4341 id: cachedModel
44− busName: active ? indicatorItem.busName : ""
45− actionsObjectPath: active ? indicatorItem.actionsObjectPath : ""
46− menuObjectPath: active ? indicatorItem.deviceMenuObjectPath : ""
42+ busName: indicatorItem.busName
43+ actionsObjectPath: indicatorItem.actionsObjectPath
44+ menuObjectPath: indicatorItem.deviceMenuObjectPath
45+ }
46+
47+ property var rootActionState: Indicators.RootActionState {
48+ menu: menuModel
49+ onUpdated: indicatorItem.rootActionStateChanged()
4750 }
4851}
plugins/Unity/Indicators/qml/IndicatorPage.qml+7−5
@@ -26,12 +26,14 @@ IndicatorBase {
2626 id: main
2727
2828 //const
29+ property bool contentActive: false
30+ property string title: rootActionState.title
2931 property alias emptyText: emptyLabel.text
3032 property alias highlightFollowsCurrentItem : mainMenu.highlightFollowsCurrentItem
3133
3234 Indicators.UnityMenuModelStack {
3335 id: menuStack
34− head: main.menuModel
36+ head: contentActive ? main.menuModel : null
3537 }
3638
3739 ListView {
@@ -162,15 +164,15 @@ IndicatorBase {
162164 function start()
163165 {
164166 reset()
165− if (!active) {
166− active = true;
167+ if (!contentActive) {
168+ contentActive = true;
167169 }
168170 }
169171
170172 function stop()
171173 {
172− if (active) {
173− active = false;
174+ if (contentActive) {
175+ contentActive = false;
174176 }
175177 }
176178
plugins/Unity/Indicators/qml/IndicatorWidget.qml−6
@@ -23,12 +23,6 @@ import Unity.Indicators 0.1 as Indicators
2323IndicatorBase {
2424 id: indicatorWidget
2525
26− active: true
2726 enabled: false
2827 property int iconSize: height - units.gu(0.5)
29−
30− property var actionState: Indicators.RootActionState {
31− menu: menuModel
32− onUpdated: indicatorWidget.actionStateChanged()
33− }
3428}
plugins/Unity/Indicators/rootactionstate.cpp+7−1
@@ -102,12 +102,18 @@ void RootActionState::updateActionState()
102102 Q_EMIT updated();
103103}
104104
105−
106105bool RootActionState::isValid() const
107106{
108107 return m_menu && m_menu->rowCount() > 0;
109108}
110109
110+QString RootActionState::title() const
111+{
112+ if (!isValid()) return QString();
113+
114+ return m_cachedState.value("title", QVariant::fromValue(QString())).toString();
115+}
116+
111117QString RootActionState::leftLabel() const
112118{
113119 if (!isValid()) return QString();
plugins/Unity/Indicators/rootactionstate.h+3
@@ -32,6 +32,7 @@ class UNITYINDICATORS_EXPORT RootActionState : public ActionStateParser
3232 Q_PROPERTY(UnityMenuModel* menu READ menu WRITE setMenu NOTIFY menuChanged)
3333
3434 Q_PROPERTY(bool valid READ isValid NOTIFY validChanged)
35+ Q_PROPERTY(QString title READ title NOTIFY titleChanged)
3536 Q_PROPERTY(QString leftLabel READ leftLabel NOTIFY leftLabelChanged)
3637 Q_PROPERTY(QString rightLabel READ rightLabel NOTIFY rightLabelChanged)
3738 Q_PROPERTY(QStringList icons READ icons NOTIFY iconsChanged)
@@ -48,6 +49,7 @@ public:
4849 void setIndex(int index);
4950
5051 bool isValid() const;
52+ QString title() const;
5153 QString leftLabel() const;
5254 QString rightLabel() const;
5355 QStringList icons() const;
@@ -64,6 +66,7 @@ Q_SIGNALS:
6466 void indexChanged();
6567
6668 void validChanged();
69+ void titleChanged();
6770 void leftLabelChanged();
6871 void rightLabelChanged();
6972 void iconsChanged();
plugins/Unity/Indicators/visibleindicatorsmodel.cpp−2
@@ -33,8 +33,6 @@ QHash<int, QByteArray> VisibleIndicatorsModel::roleNames() const
3333 {
3434 roles[IndicatorsModelRole::Identifier] = "identifier";
3535 roles[IndicatorsModelRole::Position] = "position";
36− roles[IndicatorsModelRole::Title] = "title";
37− roles[IndicatorsModelRole::Description] = "description";
3836 roles[IndicatorsModelRole::WidgetSource] = "widgetSource";
3937 roles[IndicatorsModelRole::PageSource] = "pageSource";
4038 roles[IndicatorsModelRole::IndicatorProperties] = "indicatorProperties";
tests/mocks/Unity/Indicators/IndicatorsModel.qml+5−15
@@ -28,45 +28,35 @@ ListModel {
2828 // which throws off the filter for non-visible indicators.
2929 Component.onCompleted: {
3030 append({ "identifier": "indicator-fake1",
31− "priority": 0,
32− "title": "Menu1",
33− "description": "",
31+ "position": 0,
3432 "widgetSource": "qrc:/tests/indciators/qml/fake_menu_widget1.qml",
3533 "pageSource": "qrc:/tests/indciators/qml/fake_menu_page1.qml",
3634 "indicatorProperties": ""
3735 });
3836
3937 append({ "identifier": "indicator-fake2",
40− "priority": 1,
41− "title": "Menu2",
42− "description": "",
38+ "position": 1,
4339 "widgetSource": "qrc:/tests/indciators/qml/fake_menu_widget2.qml",
4440 "pageSource": "qrc:/tests/indciators/qml/fake_menu_page2.qml",
4541 "indicatorProperties": ""
4642 });
4743
4844 append({ "identifier": "indicator-fake3",
49− "priority": 2,
50− "title": "Menu3",
51− "description": "",
45+ "position": 2,
5246 "widgetSource": "qrc:/tests/indciators/qml/fake_menu_widget3.qml",
5347 "pageSource": "qrc:/tests/indciators/qml/fake_menu_page3.qml",
5448 "indicatorProperties": ""
5549 });
5650
5751 append({ "identifier": "indicator-fake4",
58− "priority": 3,
59− "title": "Menu4",
60− "description": "",
52+ "position": 3,
6153 "widgetSource": "qrc:/tests/indciators/qml/fake_menu_widget4.qml",
6254 "pageSource": "qrc:/tests/indciators/qml/fake_menu_page4.qml",
6355 "indicatorProperties": ""
6456 });
6557
6658 append({ "identifier": "indicator-fake5",
67− "priority": 4,
68− "title": "Menu5",
69− "description": "",
59+ "position": 4,
7060 "widgetSource": "qrc:/tests/indciators/qml/fake_menu_widget5.qml",
7161 "pageSource": "qrc:/tests/indciators/qml/fake_menu_page5.qml",
7262 "indicatorProperties": ""
tests/plugins/Unity/Indicators/indicatorsmodeltest.cpp−13
@@ -65,38 +65,25 @@ private Q_SLOTS:
6565 void testDataAndOrder()
6666 {
6767 // Priority order. (2, 1, 4, 3)
68− QVariantMap map;
69− QVariantMap map1; map1["title"] = "fake1";
70− QVariantMap map2; map2["title"] = "fake2";
71− QVariantMap map3; map3["title"] = "fake3";
72− map["indicator-fake1"] = map1;
73− map["indicator-fake2"] = map2;
74− map["indicator-fake3"] = map3;
75−
7668 IndicatorsModel model;
77− model.setIndicatorData(map);
7869 model.load();
7970
8071 // should be in order:
8172 // fake3, fake4, fake1, fake2
8273
8374 QCOMPARE(model.data(0, IndicatorsModelRole::Identifier).toString(), QString("indicator-fake3"));
84− QCOMPARE(model.data(0, IndicatorsModelRole::Title).toString(), QString("fake3"));
8575 QCOMPARE(model.data(0, IndicatorsModelRole::Position).toInt(), 3);
8676 QCOMPARE(model.data(0, IndicatorsModelRole::IndicatorProperties).toMap()["busName"].toString(), QString("com.canonical.indicator.fake3"));
8777
8878 QCOMPARE(model.data(1, IndicatorsModelRole::Identifier).toString(), QString("indicator-fake4"));
89− QCOMPARE(model.data(1, IndicatorsModelRole::Title).toString(), QString("indicator-fake4"));
9079 QCOMPARE(model.data(1, IndicatorsModelRole::Position).toInt(), 2);
9180 QCOMPARE(model.data(1, IndicatorsModelRole::IndicatorProperties).toMap()["busName"].toString(), QString("com.canonical.indicator.fake4"));
9281
9382 QCOMPARE(model.data(2, IndicatorsModelRole::Identifier).toString(), QString("indicator-fake1"));
94− QCOMPARE(model.data(2, IndicatorsModelRole::Title).toString(), QString("fake1"));
9583 QCOMPARE(model.data(2, IndicatorsModelRole::Position).toInt(), 1);
9684 QCOMPARE(model.data(2, IndicatorsModelRole::IndicatorProperties).toMap()["busName"].toString(), QString("com.canonical.indicator.fake1"));
9785
9886 QCOMPARE(model.data(3, IndicatorsModelRole::Identifier).toString(), QString("indicator-fake2"));
99− QCOMPARE(model.data(3, IndicatorsModelRole::Title).toString(), QString("fake2"));
10087 QCOMPARE(model.data(3, IndicatorsModelRole::Position).toInt(), 0);
10188 QCOMPARE(model.data(3, IndicatorsModelRole::IndicatorProperties).toMap()["busName"].toString(), QString("com.canonical.indicator.fake2"));
10289 }
tests/qmltests/Panel/tst_IndicatorRow.qml+3−3
@@ -62,13 +62,13 @@ Item {
6262 function test_set_current_item() {
6363 init_test();
6464 indicatorRow.setCurrentItem(0);
65− compare(indicatorRow.indicatorsModel.get(indicatorRow.currentItemIndex).title, "Menu1", "Incorrect item at position 0");
65+ compare(indicatorRow.indicatorsModel.get(indicatorRow.currentItemIndex).identifier, "indicator-fake1", "Incorrect item at position 0");
6666
6767 indicatorRow.setCurrentItem(1);
68− compare(indicatorRow.indicatorsModel.get(indicatorRow.currentItemIndex).title, "Menu2", "Incorrect item at position 1");
68+ compare(indicatorRow.indicatorsModel.get(indicatorRow.currentItemIndex).identifier, "indicator-fake2", "Incorrect item at position 1");
6969
7070 indicatorRow.setCurrentItem(2);
71− compare(indicatorRow.indicatorsModel.get(indicatorRow.currentItemIndex).title, "Menu3", "Incorrect item at position 2");
71+ compare(indicatorRow.indicatorsModel.get(indicatorRow.currentItemIndex).identifier, "indicator-fake3", "Incorrect item at position 2");
7272 }
7373 }
7474