on xenial help sign in
updated to new indicator file format
bdfbe65Nick Dedekind
Panel/Indicators/NetworkIndicatorPage.qml+2−1
@@ -29,7 +29,8 @@ PageStack {
29 property alias emptyText: _pluginItem.emptyText
29 property alias emptyText: _pluginItem.emptyText
30 property alias busType: _pluginItem.busType
30 property alias busType: _pluginItem.busType
31 property alias busName: _pluginItem.busName
31 property alias busName: _pluginItem.busName
32− property alias objectPath: _pluginItem.objectPath
32+ property alias actionsObjectPath : _pluginItem.actionsObjectPath
33+ property alias menuObjectPaths : _pluginItem.menuObjectPaths
33
34
34 __showHeader: false
35 __showHeader: false
35 anchors.fill: parent
36 anchors.fill: parent
plugins/IndicatorsClient/indicator.cpp+20−5
@@ -42,17 +42,32 @@ Indicator::~Indicator()
42{
42{
43}
43}
44
44
45−void Indicator::init(const QSettings& settings)
45+void Indicator::init(const QString& busName, const QSettings& settings)
46{
46{
47 setId(settings.value("Indicator Service/Name").toString());
47 setId(settings.value("Indicator Service/Name").toString());
48+
48− QString dbusService = settings.value("Indicator Service/DBusName").toString();
49+ QString actionObjectPath = settings.value("Indicator Service/ObjectPath").toString();
49− QString objectPath = settings.value("Indicator Service/ObjectPath").toString();
50+
51+ QVariantMap mapMenuObjectPaths;
52+ Q_FOREACH(const QString& childGroup, settings.childGroups())
53+ {
54+ if (childGroup == "Indicator Service")
55+ continue;
56+
57+ QString menuPath = childGroup+"/ObjectPath";
58+ if (settings.contains(menuPath))
59+ {
60+ mapMenuObjectPaths[childGroup] = settings.value(menuPath).toString();
61+ }
62+ }
63+
50
64
51 QVariantMap properties;
65 QVariantMap properties;
52 properties.clear();
66 properties.clear();
53 properties.insert("busType", 1);
67 properties.insert("busType", 1);
54− properties.insert("busName", dbusService);
68+ properties.insert("busName", busName);
55− properties.insert("objectPath", objectPath);
69+ properties.insert("actionsObjectPath", actionObjectPath);
70+ properties.insert("menuObjectPaths", mapMenuObjectPaths);
56 setIndicatorProperties(properties);
71 setIndicatorProperties(properties);
57}
72}
58
73
plugins/IndicatorsClient/indicator.h+1−1
@@ -41,7 +41,7 @@ public:
41 Indicator(QObject *parent = 0);
41 Indicator(QObject *parent = 0);
42 virtual ~Indicator();
42 virtual ~Indicator();
43
43
44− void init(const QSettings& settings);
44+ void init(const QString& busName, const QSettings& settings);
45
45
46 QString identifier() const;
46 QString identifier() const;
47 QVariant indicatorProperties() const;
47 QVariant indicatorProperties() const;
plugins/IndicatorsClient/indicators/CMakeLists.txt+5−5
@@ -1,9 +1,9 @@
1set(INDICATOR_FILES
1set(INDICATOR_FILES
2− ${CMAKE_CURRENT_SOURCE_DIR}/indicator-datetime.indicator
2+ ${CMAKE_CURRENT_SOURCE_DIR}/com.canonical.indicator.battery
3+ ${CMAKE_CURRENT_SOURCE_DIR}/com.canonical.indicator.messages
3− ${CMAKE_CURRENT_SOURCE_DIR}/indicator-messaging.indicator
4+ ${CMAKE_CURRENT_SOURCE_DIR}/com.canonical.indicator.time
4− ${CMAKE_CURRENT_SOURCE_DIR}/indicator-network.indicator
5+ ${CMAKE_CURRENT_SOURCE_DIR}/com.canonical.settings.network
5− ${CMAKE_CURRENT_SOURCE_DIR}/indicator-power.indicator
6+ ${CMAKE_CURRENT_SOURCE_DIR}/com.canonical.settings.sound
6− ${CMAKE_CURRENT_SOURCE_DIR}/indicator-sound.indicator
7)
7)
8
8
9# copy indicators file into build directory for shadow builds
9# copy indicators file into build directory for shadow builds
plugins/IndicatorsClient/indicators/com.canonical.indicator.batterynew file+9
@@ -0,0 +1,9 @@
1+[Indicator Service]
2+Name=indicator-power
3+ObjectPath=/com/canonical/indicator/battery
4+
5+[phone]
6+ObjectPath=/com/canonical/indicator/battery/phone
7+
8+[desktop]
9+ObjectPath=/com/canonical/indicator/battery/phone
plugins/IndicatorsClient/indicators/com.canonical.indicator.messagesnew file+9
@@ -0,0 +1,9 @@
1+[Indicator Service]
2+Name=indicator-messaging
3+ObjectPath=/com/canonical/indicator/messages
4+
5+[phone]
6+ObjectPath=/com/canonical/indicator/messages/phone
7+
8+[desktop]
9+ObjectPath=/com/canonical/indicator/messages/menu
plugins/IndicatorsClient/indicators/com.canonical.indicator.timenew file+9
@@ -0,0 +1,9 @@
1+[Indicator Service]
2+Name=indicator-datetime
3+ObjectPath=/com/canonical/indicator/time
4+
5+[phone]
6+ObjectPath=/com/canonical/indicator/time/phone
7+
8+[desktop]
9+ObjectPath=/com/canonical/indicator/time/desktop
plugins/IndicatorsClient/indicators/com.canonical.settings.networknew file+9
@@ -0,0 +1,9 @@
1+[Indicator Service]
2+Name=indicator-network
3+ObjectPath=/com/canonical/settings/network
4+
5+[phone]
6+ObjectPath=/com/canonical/settings/network/phone
7+
8+[desktop]
9+ObjectPath=/com/canonical/settings/network/desktop
plugins/IndicatorsClient/indicators/com.canonical.settings.soundnew file+9
@@ -0,0 +1,9 @@
1+[Indicator Service]
2+Name=indicator-sound
3+ObjectPath=/com/canonical/settings/sound
4+
5+[phone]
6+ObjectPath=/com/canonical/settings/sound/phone
7+
8+[desktop]
9+ObjectPath=/com/canonical/settings/sound/desktop
plugins/IndicatorsClient/indicators/indicator-datetime.indicatordeleted−4
@@ -1,4 +0,0 @@
1−[Indicator Service]
2−Name=indicator-datetime
3−DBusName=com.canonical.indicator.time
4−ObjectPath=/com/canonical/indicator/time
plugins/IndicatorsClient/indicators/indicator-messaging.indicatordeleted−4
@@ -1,4 +0,0 @@
1−[Indicator Service]
2−Name=indicator-messaging
3−DBusName=com.canonical.indicator.messages
4−ObjectPath=/com/canonical/indicator/messages
plugins/IndicatorsClient/indicators/indicator-network.indicatordeleted−4
@@ -1,4 +0,0 @@
1−[Indicator Service]
2−Name=indicator-network
3−DBusName=com.canonical.settings.network
4−ObjectPath=/com/canonical/settings/network
plugins/IndicatorsClient/indicators/indicator-power.indicatordeleted−4
@@ -1,4 +0,0 @@
1−[Indicator Service]
2−Name=indicator-power
3−DBusName=com.canonical.indicator.battery
4−ObjectPath=/com/canonical/indicator/battery
plugins/IndicatorsClient/indicators/indicator-sound.indicatordeleted−4
@@ -1,4 +0,0 @@
1−[Indicator Service]
2−Name=indicator-sound
3−DBusName=com.canonical.settings.sound
4−ObjectPath=/com/canonical/settings/sound
plugins/IndicatorsClient/indicatorsmanager.cpp+4−4
@@ -100,7 +100,7 @@ void IndicatorsManager::load(const QDir& dir)
100{
100{
101 startVerify(dir.canonicalPath());
101 startVerify(dir.canonicalPath());
102
102
103− QFileInfoList indicator_files = dir.entryInfoList(QStringList() << "*.indicator", QDir::Files);
103+ QFileInfoList indicator_files = dir.entryInfoList(QStringList(), QDir::Files|QDir::NoDotAndDotDot);
104 Q_FOREACH(const QFileInfo& indicator_file, indicator_files)
104 Q_FOREACH(const QFileInfo& indicator_file, indicator_files)
105 {
105 {
106 load(indicator_file);
106 load(indicator_file);
@@ -112,8 +112,7 @@ void IndicatorsManager::load(const QDir& dir)
112void IndicatorsManager::load(const QFileInfo& file_info)
112void IndicatorsManager::load(const QFileInfo& file_info)
113{
113{
114 QSettings indicator_settings(file_info.absoluteFilePath(), QSettings::IniFormat, this);
114 QSettings indicator_settings(file_info.absoluteFilePath(), QSettings::IniFormat, this);
115− indicator_settings.beginGroup("Indicator Service");
116− QString name = indicator_settings.value("Name").toString();
115+ QString name = indicator_settings.value("Indicator Service/Name").toString();
117
116
118 auto iter = m_indicatorsData.find(name);
117 auto iter = m_indicatorsData.find(name);
119 if (iter != m_indicatorsData.end())
118 if (iter != m_indicatorsData.end())
@@ -256,7 +255,8 @@ Indicator::Ptr IndicatorsManager::indicator(const QString& indicator)
256 if (plugin)
255 if (plugin)
257 {
256 {
258 data->m_indicator = plugin;
257 data->m_indicator = plugin;
259− plugin->init(QSettings(data->m_fileInfo.absoluteFilePath(), QSettings::IniFormat, this));
258+ QSettings settings(data->m_fileInfo.absoluteFilePath(), QSettings::IniFormat, this);
259+ plugin->init(data->m_fileInfo.fileName(), settings);
260 }
260 }
261 return plugin;
261 return plugin;
262}
262}
plugins/IndicatorsClient/qml/IndicatorBase.qml+9−4
@@ -28,10 +28,15 @@ Item {
28
28
29 //const
29 //const
30 property string title
30 property string title
31− property string device: "phone"
31+ property string device: "desktop"
32 property int busType
32 property int busType
33 property string busName
33 property string busName
34− property string objectPath
34+ property string actionsObjectPath
35+ property var menuObjectPaths : undefined
36+
37+ property string deviceMenuObjectPath : menuObjectPaths.hasOwnProperty(device) ? menuObjectPaths[device] : ""
38+
39+ onDeviceMenuObjectPathChanged: console.log("\n\n" + deviceMenuObjectPath + "\n\n");
35
40
36 signal actionGroupUpdated()
41 signal actionGroupUpdated()
37 signal modelUpdated()
42 signal modelUpdated()
@@ -39,7 +44,7 @@ Item {
39 property var actionGroup : QDBusActionGroup {
44 property var actionGroup : QDBusActionGroup {
40 busType: indicatorItem.busType
45 busType: indicatorItem.busType
41 busName: indicatorItem.busName
46 busName: indicatorItem.busName
42− objectPath: indicatorItem.objectPath
47+ objectPath: indicatorItem.actionsObjectPath
43
48
44 onActionAppear: indicatorItem.actionGroupUpdated();
49 onActionAppear: indicatorItem.actionGroupUpdated();
45 }
50 }
@@ -47,7 +52,7 @@ Item {
47 property var proxyModel : IndicatorsClient.FlatMenuProxyModel {
52 property var proxyModel : IndicatorsClient.FlatMenuProxyModel {
48 busType: indicatorItem.busType
53 busType: indicatorItem.busType
49 busName: indicatorItem.busName
54 busName: indicatorItem.busName
50− objectPath: indicatorItem.objectPath + "/" + device
55+ objectPath: indicatorItem.deviceMenuObjectPath
51
56
52 onStatusChanged: indicatorItem.modelUpdated();
57 onStatusChanged: indicatorItem.modelUpdated();
53 onRowsInserted: indicatorItem.modelUpdated();
58 onRowsInserted: indicatorItem.modelUpdated();
plugins/IndicatorsClient/qml/IndicatorIcon.qml+1−1
@@ -25,7 +25,7 @@ import Ubuntu.Components.ListItems 0.1 as ListItem
25IndicatorBase {
25IndicatorBase {
26 id: indicatorIcon
26 id: indicatorIcon
27 property var action: undefined
27 property var action: undefined
28− property bool started: (busType != 0) && (busName != "") && (objectPath != "")
28+ property bool started: (busType != 0) && (busName != "") && (deviceMenuObjectPath != "")
29 property int iconSize: height - units.gu(0.5)
29 property int iconSize: height - units.gu(0.5)
30
30
31 signal actionStateChanged()
31 signal actionStateChanged()
plugins/IndicatorsClient/qml/IndicatorPage.qml+1−1
@@ -184,7 +184,7 @@ IndicatorBase {
184 }
184 }
185
185
186 Component.onCompleted: {
186 Component.onCompleted: {
187− if ((busType != 0) && (busName != "") && (objectPath != "")) {
187+ if ((busType != 0) && (busName != "") && (deviceMenuObjectPath != "")) {
188 start();
188 start();
189 }
189 }
190 }
190 }