on xenial help sign in
Indicator position moved to service files.
217e58eNick Dedekind
Panel/IndicatorsDataModel.qml−5
@@ -30,35 +30,30 @@ Indicators.IndicatorsModel {
30 'indicator-messaging' : {
30 'indicator-messaging' : {
31 'title': 'Messaging',
31 'title': 'Messaging',
32 'description' : '',
32 'description' : '',
33− 'priority': 10,
34 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/MessagingIndicatorWidget.qml',
33 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/MessagingIndicatorWidget.qml',
35 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/MessagingIndicatorPage.qml'
34 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/MessagingIndicatorPage.qml'
36 },
35 },
37 'indicator-sound' : {
36 'indicator-sound' : {
38 'title': 'Sound',
37 'title': 'Sound',
39 'description' : '',
38 'description' : '',
40− 'priority': 20,
41 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/SoundIndicatorWidget.qml',
39 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/SoundIndicatorWidget.qml',
42 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorPage.qml'
40 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorPage.qml'
43 },
41 },
44 'indicator-network' : {
42 'indicator-network' : {
45 'title': 'Networks',
43 'title': 'Networks',
46 'description' : '',
44 'description' : '',
47− 'priority': 30,
48 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/NetworkIndicatorWidget.qml',
45 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/NetworkIndicatorWidget.qml',
49 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/NetworkIndicatorPage.qml'
46 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/NetworkIndicatorPage.qml'
50 },
47 },
51 'indicator-battery' : {
48 'indicator-battery' : {
52 'title': 'Battery',
49 'title': 'Battery',
53 'description' : '',
50 'description' : '',
54− 'priority': 40,
55 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorWidget.qml',
51 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorWidget.qml',
56 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorPage.qml'
52 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorPage.qml'
57 },
53 },
58 'indicator-time' : {
54 'indicator-time' : {
59 'title': 'Date and Time',
55 'title': 'Date and Time',
60 'description' : '',
56 'description' : '',
61− 'priority': 100,
62 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DatetimeIndicatorWidget.qml',
57 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DatetimeIndicatorWidget.qml',
63 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DatetimeIndicatorPage.qml'
58 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DatetimeIndicatorPage.qml'
64 }
59 }
plugins/Unity/Indicators/indicator.cpp+16−1
@@ -22,7 +22,8 @@
22#include <QStringList>
22#include <QStringList>
23
23
24Indicator::Indicator(QObject *parent)
24Indicator::Indicator(QObject *parent)
25− : QObject(parent)
25+ : QObject(parent),
26+ m_position(0)
26{
27{
27}
28}
28
29
@@ -33,6 +34,7 @@ Indicator::~Indicator()
33void Indicator::init(const QString& busName, const QSettings& settings)
34void Indicator::init(const QString& busName, const QSettings& settings)
34{
35{
35 setId(settings.value("Indicator Service/Name").toString());
36 setId(settings.value("Indicator Service/Name").toString());
37+ setPosition(settings.value("Indicator Service/Position", QVariant::fromValue(0)).toInt());
36
38
37 QString actionObjectPath = settings.value("Indicator Service/ObjectPath").toString();
39 QString actionObjectPath = settings.value("Indicator Service/ObjectPath").toString();
38
40
@@ -72,6 +74,19 @@ void Indicator::setId(const QString &identifier)
72 }
74 }
73}
75}
74
76
77+int Indicator::position() const
78+{
79+ return m_position;
80+}
81+
82+void Indicator::setPosition(int position)
83+{
84+ if (position != m_position) {
85+ m_position = position;
86+ Q_EMIT positionChanged(m_position);
87+ }
88+}
89+
75
90
76QVariant Indicator::indicatorProperties() const
91QVariant Indicator::indicatorProperties() const
77{
92{
plugins/Unity/Indicators/indicator.h+5
@@ -30,6 +30,7 @@ class UNITYINDICATORS_EXPORT Indicator : public QObject
30{
30{
31 Q_OBJECT
31 Q_OBJECT
32 Q_PROPERTY(QString identifier READ identifier NOTIFY identifierChanged)
32 Q_PROPERTY(QString identifier READ identifier NOTIFY identifierChanged)
33+ Q_PROPERTY(int position READ position NOTIFY positionChanged)
33 Q_PROPERTY(QVariant indicatorProperties READ indicatorProperties NOTIFY indicatorPropertiesChanged)
34 Q_PROPERTY(QVariant indicatorProperties READ indicatorProperties NOTIFY indicatorPropertiesChanged)
34
35
35public:
36public:
@@ -41,18 +42,22 @@ public:
41 void init(const QString& busName, const QSettings& settings);
42 void init(const QString& busName, const QSettings& settings);
42
43
43 QString identifier() const;
44 QString identifier() const;
45+ int position() const;
44 QVariant indicatorProperties() const;
46 QVariant indicatorProperties() const;
45
47
46Q_SIGNALS:
48Q_SIGNALS:
47 void identifierChanged(const QString &identifier);
49 void identifierChanged(const QString &identifier);
50+ void positionChanged(int position);
48 void indicatorPropertiesChanged(const QVariant &properties);
51 void indicatorPropertiesChanged(const QVariant &properties);
49
52
50protected:
53protected:
51 void setId(const QString &id);
54 void setId(const QString &id);
55+ void setPosition(int position);
52 void setIndicatorProperties(const QVariant &properties);
56 void setIndicatorProperties(const QVariant &properties);
53
57
54private:
58private:
55 QString m_identifier;
59 QString m_identifier;
60+ int m_position;
56 QVariant m_properties;
61 QVariant m_properties;
57};
62};
58
63
plugins/Unity/Indicators/indicators.h+1−1
@@ -73,7 +73,7 @@ public:
73 Q_ENUMS(Roles)
73 Q_ENUMS(Roles)
74 enum Roles {
74 enum Roles {
75 Identifier = 0,
75 Identifier = 0,
76− Priority,
76+ Position,
77 Title,
77 Title,
78 Description,
78 Description,
79 WidgetSource,
79 WidgetSource,
plugins/Unity/Indicators/indicatorsmodel.cpp+10−5
@@ -118,8 +118,8 @@ void IndicatorsModel::onIndicatorLoaded(const QString& indicator_name)
118 int pos = 0;
118 int pos = 0;
119 while (pos < count())
119 while (pos < count())
120 {
120 {
121− // keep going while the existing priority is less.
121+ // keep going while the existing position is greater. (put lower position on end)
122− if (indicatorData(indicator, IndicatorsModelRole::Priority).toInt() < data(index(pos), IndicatorsModelRole::Priority).toInt())
122+ if (indicator->position() >= data(index(pos), IndicatorsModelRole::Position).toInt())
123 break;
123 break;
124 pos++;
124 pos++;
125 }
125 }
@@ -200,7 +200,7 @@ QHash<int, QByteArray> IndicatorsModel::roleNames() const
200 if (roles.isEmpty())
200 if (roles.isEmpty())
201 {
201 {
202 roles[IndicatorsModelRole::Identifier] = "identifier";
202 roles[IndicatorsModelRole::Identifier] = "identifier";
203− roles[IndicatorsModelRole::Priority] = "priority";
203+ roles[IndicatorsModelRole::Position] = "position";
204 roles[IndicatorsModelRole::Title] = "title";
204 roles[IndicatorsModelRole::Title] = "title";
205 roles[IndicatorsModelRole::Description] = "description";
205 roles[IndicatorsModelRole::Description] = "description";
206 roles[IndicatorsModelRole::WidgetSource] = "widgetSource";
206 roles[IndicatorsModelRole::WidgetSource] = "widgetSource";
@@ -222,7 +222,7 @@ QVariant IndicatorsModel::defaultData(Indicator::Ptr indicator, int role)
222{
222{
223 switch (role)
223 switch (role)
224 {
224 {
225− case IndicatorsModelRole::Priority:
225+ case IndicatorsModelRole::Position:
226 return 0;
226 return 0;
227 case IndicatorsModelRole::Title:
227 case IndicatorsModelRole::Title:
228 return indicator ? indicator->identifier() : "Unknown";
228 return indicator ? indicator->identifier() : "Unknown";
@@ -257,6 +257,12 @@ QVariant IndicatorsModel::data(const QModelIndex &index, int role) const
257 return QVariant(indicator->identifier());
257 return QVariant(indicator->identifier());
258 }
258 }
259 break;
259 break;
260+ case IndicatorsModelRole::Position:
261+ if (indicator)
262+ {
263+ return QVariant(indicator->position());
264+ }
265+ break;
260 case IndicatorsModelRole::IndicatorProperties:
266 case IndicatorsModelRole::IndicatorProperties:
261 if (indicator)
267 if (indicator)
262 {
268 {
@@ -265,7 +271,6 @@ QVariant IndicatorsModel::data(const QModelIndex &index, int role) const
265 break;
271 break;
266 case IndicatorsModelRole::IsValid:
272 case IndicatorsModelRole::IsValid:
267 return (indicator ? true : false);
273 return (indicator ? true : false);
268− case IndicatorsModelRole::Priority:
269 case IndicatorsModelRole::Title:
274 case IndicatorsModelRole::Title:
270 case IndicatorsModelRole::Description:
275 case IndicatorsModelRole::Description:
271 case IndicatorsModelRole::WidgetSource:
276 case IndicatorsModelRole::WidgetSource:
src/Panel/Indicators/servicefiles/com.canonical.indicator.battery+1
@@ -1,6 +1,7 @@
1[Indicator Service]
1[Indicator Service]
2Name=indicator-battery
2Name=indicator-battery
3ObjectPath=/com/canonical/indicator/battery
3ObjectPath=/com/canonical/indicator/battery
4+Position=40
4
5
5[phone]
6[phone]
6ObjectPath=/com/canonical/indicator/battery/phone
7ObjectPath=/com/canonical/indicator/battery/phone
src/Panel/Indicators/servicefiles/com.canonical.indicator.messages+1
@@ -1,6 +1,7 @@
1[Indicator Service]
1[Indicator Service]
2Name=indicator-messaging
2Name=indicator-messaging
3ObjectPath=/com/canonical/indicator/messages
3ObjectPath=/com/canonical/indicator/messages
4+Position=50
4
5
5[phone]
6[phone]
6ObjectPath=/com/canonical/indicator/messages/phone
7ObjectPath=/com/canonical/indicator/messages/phone
src/Panel/Indicators/servicefiles/com.canonical.indicator.time+1
@@ -1,6 +1,7 @@
1[Indicator Service]
1[Indicator Service]
2Name=indicator-time
2Name=indicator-time
3ObjectPath=/com/canonical/indicator/time
3ObjectPath=/com/canonical/indicator/time
4+Position=20
4
5
5[phone]
6[phone]
6ObjectPath=/com/canonical/indicator/time/phone
7ObjectPath=/com/canonical/indicator/time/phone
src/Panel/Indicators/servicefiles/com.canonical.settings.network+1
@@ -1,6 +1,7 @@
1[Indicator Service]
1[Indicator Service]
2Name=indicator-network
2Name=indicator-network
3ObjectPath=/com/canonical/settings/network
3ObjectPath=/com/canonical/settings/network
4+Position=69
4
5
5[phone]
6[phone]
6ObjectPath=/com/canonical/settings/network/phone
7ObjectPath=/com/canonical/settings/network/phone
src/Panel/Indicators/servicefiles/com.canonical.settings.sound+1
@@ -1,6 +1,7 @@
1[Indicator Service]
1[Indicator Service]
2Name=indicator-sound
2Name=indicator-sound
3ObjectPath=/com/canonical/settings/sound
3ObjectPath=/com/canonical/settings/sound
4+Position=30
4
5
5[phone]
6[phone]
6ObjectPath=/com/canonical/settings/sound/phone
7ObjectPath=/com/canonical/settings/sound/phone
tests/data/unity/indicators/com.canonical.indicator.fake1+1
@@ -1,6 +1,7 @@
1[Indicator Service]
1[Indicator Service]
2Name=indicator-fake1
2Name=indicator-fake1
3ObjectPath=/com/canonical/indicator/fake1
3ObjectPath=/com/canonical/indicator/fake1
4+Position=1
4
5
5[phone]
6[phone]
6ObjectPath=/com/canonical/indicator/fake1/phone
7ObjectPath=/com/canonical/indicator/fake1/phone
tests/data/unity/indicators/com.canonical.indicator.fake2+1
@@ -1,6 +1,7 @@
1[Indicator Service]
1[Indicator Service]
2Name=indicator-fake2
2Name=indicator-fake2
3ObjectPath=/com/canonical/indicator/fake2
3ObjectPath=/com/canonical/indicator/fake2
4+Position=0
4
5
5[phone]
6[phone]
6ObjectPath=/com/canonical/indicator/fake2/phone
7ObjectPath=/com/canonical/indicator/fake2/phone
tests/data/unity/indicators/com.canonical.indicator.fake3+1
@@ -1,6 +1,7 @@
1[Indicator Service]
1[Indicator Service]
2Name=indicator-fake3
2Name=indicator-fake3
3ObjectPath=/com/canonical/indicator/fake3
3ObjectPath=/com/canonical/indicator/fake3
4+Position=3
4
5
5[phone]
6[phone]
6ObjectPath=/com/canonical/indicator/fake3/phone
7ObjectPath=/com/canonical/indicator/fake3/phone
tests/data/unity/indicators/com.canonical.indicator.fake4+1
@@ -1,6 +1,7 @@
1[Indicator Service]
1[Indicator Service]
2Name=indicator-fake4
2Name=indicator-fake4
3ObjectPath=/com/canonical/indicator/fake4
3ObjectPath=/com/canonical/indicator/fake4
4+Position=2
4
5
5[phone]
6[phone]
6ObjectPath=/com/canonical/indicator/fake4/phone
7ObjectPath=/com/canonical/indicator/fake4/phone
tests/plugins/Unity/Indicators/indicatorsmanagertest.cpp+1
@@ -72,6 +72,7 @@ private Q_SLOTS:
72 QVERIFY(indicator ? true : false);
72 QVERIFY(indicator ? true : false);
73
73
74 QCOMPARE(indicator->identifier(), QString("indicator-fake1"));
74 QCOMPARE(indicator->identifier(), QString("indicator-fake1"));
75+ QCOMPARE(indicator->position(), 1);
75
76
76 // Check that the initial properties have been set.
77 // Check that the initial properties have been set.
77 QVariantMap props = indicator->indicatorProperties().toMap();
78 QVariantMap props = indicator->indicatorProperties().toMap();
tests/plugins/Unity/Indicators/indicatorsmodeltest.cpp+23−16
@@ -66,10 +66,10 @@ private Q_SLOTS:
66 {
66 {
67 // Priority order. (2, 1, 4, 3)
67 // Priority order. (2, 1, 4, 3)
68 QVariantMap map;
68 QVariantMap map;
69− QVariantMap map1; map1["priority"] = 1; map1["title"] = "fake1";
69+ QVariantMap map1; map1["title"] = "fake1";
70− QVariantMap map2; map2["priority"] = 0; map2["title"] = "fake2";
70+ QVariantMap map2; map2["title"] = "fake2";
71− QVariantMap map3; map3["priority"] = 3; map3["title"] = "fake3";
71+ QVariantMap map3; map3["title"] = "fake3";
72− QVariantMap map4; map4["priority"] = 2; map4["title"] = "fake4";
72+ QVariantMap map4; map4["title"] = "fake4";
73 map["indicator-fake1"] = map1;
73 map["indicator-fake1"] = map1;
74 map["indicator-fake2"] = map2;
74 map["indicator-fake2"] = map2;
75 map["indicator-fake3"] = map3;
75 map["indicator-fake3"] = map3;
@@ -79,21 +79,28 @@ private Q_SLOTS:
79 model.setIndicatorData(map);
79 model.setIndicatorData(map);
80 model.load();
80 model.load();
81
81
82− QCOMPARE(model.data(0, IndicatorsModelRole::Identifier).toString(), QString("indicator-fake2"));
82+ // should be in order:
83− QCOMPARE(model.data(0, IndicatorsModelRole::Title).toString(), QString("fake2"));
83+ // fake3, fake4, fake1, fake2
84− QCOMPARE(model.data(0, IndicatorsModelRole::IndicatorProperties).toMap()["busName"].toString(), QString("com.canonical.indicator.fake2"));
85
84
86− QCOMPARE(model.data(1, IndicatorsModelRole::Identifier).toString(), QString("indicator-fake1"));
85+ QCOMPARE(model.data(0, IndicatorsModelRole::Identifier).toString(), QString("indicator-fake3"));
87− QCOMPARE(model.data(1, IndicatorsModelRole::Title).toString(), QString("fake1"));
86+ QCOMPARE(model.data(0, IndicatorsModelRole::Title).toString(), QString("fake3"));
87+ QCOMPARE(model.data(0, IndicatorsModelRole::Position).toInt(), 3);
88− QCOMPARE(model.data(1, IndicatorsModelRole::IndicatorProperties).toMap()["busName"].toString(), QString("com.canonical.indicator.fake1"));
88+ QCOMPARE(model.data(0, IndicatorsModelRole::IndicatorProperties).toMap()["busName"].toString(), QString("com.canonical.indicator.fake3"));
89
89
90− QCOMPARE(model.data(2, IndicatorsModelRole::Identifier).toString(), QString("indicator-fake4"));
90+ QCOMPARE(model.data(1, IndicatorsModelRole::Identifier).toString(), QString("indicator-fake4"));
91− QCOMPARE(model.data(2, IndicatorsModelRole::Title).toString(), QString("fake4"));
91+ QCOMPARE(model.data(1, IndicatorsModelRole::Title).toString(), QString("fake4"));
92+ QCOMPARE(model.data(1, IndicatorsModelRole::Position).toInt(), 2);
92− QCOMPARE(model.data(2, IndicatorsModelRole::IndicatorProperties).toMap()["busName"].toString(), QString("com.canonical.indicator.fake4"));
93+ QCOMPARE(model.data(1, IndicatorsModelRole::IndicatorProperties).toMap()["busName"].toString(), QString("com.canonical.indicator.fake4"));
93
94
95+ QCOMPARE(model.data(2, IndicatorsModelRole::Identifier).toString(), QString("indicator-fake1"));
96+ QCOMPARE(model.data(2, IndicatorsModelRole::Title).toString(), QString("fake1"));
97+ QCOMPARE(model.data(2, IndicatorsModelRole::Position).toInt(), 1);
98+ QCOMPARE(model.data(2, IndicatorsModelRole::IndicatorProperties).toMap()["busName"].toString(), QString("com.canonical.indicator.fake1"));
99+
94− QCOMPARE(model.data(3, IndicatorsModelRole::Identifier).toString(), QString("indicator-fake3"));
100+ QCOMPARE(model.data(3, IndicatorsModelRole::Identifier).toString(), QString("indicator-fake2"));
95− QCOMPARE(model.data(3, IndicatorsModelRole::Title).toString(), QString("fake3"));
101+ QCOMPARE(model.data(3, IndicatorsModelRole::Title).toString(), QString("fake2"));
102+ QCOMPARE(model.data(3, IndicatorsModelRole::Position).toInt(), 0);
96− QCOMPARE(model.data(3, IndicatorsModelRole::IndicatorProperties).toMap()["busName"].toString(), QString("com.canonical.indicator.fake3"));
103+ QCOMPARE(model.data(3, IndicatorsModelRole::IndicatorProperties).toMap()["busName"].toString(), QString("com.canonical.indicator.fake2"));
97 }
104 }
98};
105};
99
106