on xenial help sign in
Allow setting different indicator positions for different profiles.

Approved by PS Jenkins bot, Nick Dedekind.

commit9b2a564e5976a9784f344206c9aa9ac2656e07ef authorLars Uebernickel <lars.uebernickel@canonical.com> dateThu 21 Nov 2013, 19:17 (13 years ago) parent9802b817d4daf7
6 files changed+18−28
Panel/Indicators/client/IndicatorsTree.qml+2−3 plugins/Unity/Indicators/indicator.cpp+8−16 plugins/Unity/Indicators/indicator.h+1−1 plugins/Unity/Indicators/indicatorsmanager.cpp+3−1 plugins/Unity/Indicators/qml/IndicatorBase.qml+3−4 tests/plugins/Unity/Indicators/indicatorsmanagertest.cpp+1−3
Panel/Indicators/client/IndicatorsTree.qml+2−3
@@ -29,10 +29,9 @@ Page {
2929
3030 property string busName: unityModel.busName
3131 property string actionsObjectPath
32− property var menuObjectPaths: undefined
33− readonly property string device: "phone"
32+ property string menuObjectPath
3433
35− property string deviceMenuObjectPath: menuObjectPaths.hasOwnProperty(device) ? menuObjectPaths[device] : ""
34+ property string deviceMenuObjectPath: menuObjectPath
3635
3736 function start() {
3837 }
plugins/Unity/Indicators/indicator.cpp+8−16
@@ -31,32 +31,24 @@ Indicator::~Indicator()
3131{
3232}
3333
34−void Indicator::init(const QString& busName, const QSettings& settings)
34+void Indicator::init(const QString &profile, const QString& busName, const QSettings& settings)
3535{
3636 setId(settings.value("Indicator Service/Name").toString());
37− setPosition(settings.value("Indicator Service/Position", QVariant::fromValue(0)).toInt());
3837
39− QString actionObjectPath = settings.value("Indicator Service/ObjectPath").toString();
40−
41− QVariantMap mapMenuObjectPaths;
42− Q_FOREACH(const QString& childGroup, settings.childGroups())
43− {
44− if (childGroup == "Indicator Service")
45− continue;
38+ QVariant pos = settings.value(profile + "/Position");
39+ if (!pos.isValid())
40+ pos = settings.value("Indicator Service/Position", QVariant::fromValue(0));
41+ setPosition(pos.toInt());
4642
47− QString menuPath = childGroup+"/ObjectPath";
48− if (settings.contains(menuPath))
49− {
50− mapMenuObjectPaths[childGroup] = settings.value(menuPath).toString();
51− }
52− }
43+ QString actionObjectPath = settings.value("Indicator Service/ObjectPath").toString();
44+ QString menuObjectPath = settings.value(profile + "/ObjectPath").toString();
5345
5446 QVariantMap properties;
5547 properties.clear();
5648 properties.insert("busType", 1);
5749 properties.insert("busName", busName);
5850 properties.insert("actionsObjectPath", actionObjectPath);
59− properties.insert("menuObjectPaths", mapMenuObjectPaths);
51+ properties.insert("menuObjectPath", menuObjectPath);
6052 setIndicatorProperties(properties);
6153}
6254
plugins/Unity/Indicators/indicator.h+1−1
@@ -35,7 +35,7 @@ public:
3535 Indicator(QObject *parent = 0);
3636 virtual ~Indicator();
3737
38− void init(const QString& busName, const QSettings& settings);
38+ void init(const QString &profile, const QString& busName, const QSettings& settings);
3939
4040 QString identifier() const;
4141 int position() const;
plugins/Unity/Indicators/indicatorsmanager.cpp+3−1
@@ -26,6 +26,8 @@
2626
2727#include "paths.h"
2828
29+const QString profile = "phone";
30+
2931
3032class IndicatorsManager::IndicatorData
3133{
@@ -298,7 +300,7 @@ Indicator::Ptr IndicatorsManager::indicator(const QString& indicator_name)
298300 Indicator::Ptr new_indicator(new Indicator(this));
299301 data->m_indicator = new_indicator;
300302 QSettings settings(data->m_fileInfo.absoluteFilePath(), QSettings::IniFormat, this);
301− new_indicator->init(data->m_fileInfo.fileName(), settings);
303+ new_indicator->init(profile, data->m_fileInfo.fileName(), settings);
302304 return new_indicator;
303305}
304306
plugins/Unity/Indicators/qml/IndicatorBase.qml+3−4
@@ -24,16 +24,15 @@ import Unity.Indicators 0.1 as Indicators
2424Item {
2525 id: indicatorItem
2626
27− enabled: menuObjectPaths.hasOwnProperty(device)
27+ enabled: menuObjectPath != ""
2828
2929 //const
3030 property string busName
3131 property string actionsObjectPath
32− property var menuObjectPaths: undefined
33− readonly property string device: "phone"
32+ property string menuObjectPath
3433 property string rootMenuType: "com.canonical.indicator.root"
3534
36− property string deviceMenuObjectPath: menuObjectPaths.hasOwnProperty(device) ? menuObjectPaths[device] : ""
35+ property string deviceMenuObjectPath: menuObjectPath
3736
3837 property alias menuModel: cachedModel.model
3938
tests/plugins/Unity/Indicators/indicatorsmanagertest.cpp+1−3
@@ -80,9 +80,7 @@ private Q_SLOTS:
8080 QCOMPARE(props["busName"].toString(), QString("com.canonical.indicator.fake1"));
8181 QCOMPARE(props["actionsObjectPath"].toString(), QString("/com/canonical/indicator/fake1"));
8282
83− QVariantMap objectPaths = props["menuObjectPaths"].toMap();
84− QCOMPARE(objectPaths["phone"].toString(), QString("/com/canonical/indicator/fake1/phone"));
85− QCOMPARE(objectPaths["desktop"].toString(), QString("/com/canonical/indicator/fake1/desktop"));
83+ QCOMPARE(props["menuObjectPath"].toString(), QString("/com/canonical/indicator/fake1/phone"));
8684 }
8785
8886 /*