@@ -33,23 +33,27 @@ Indicator::~Indicator()
34void Indicator::init(const QString &profile, const QString& busName, const QSettings& settings)
34void Indicator::init(const QString &profile, const QString& busName, const QSettings& settings)
36− setId(settings.value("Indicator Service/Name").toString());
36+ // Save all keys we care about from the QSettings object. It's annoying
37+ // that we can't just copy the object.
39+ Q_FOREACH(const QString& key, settings.allKeys()) {
40+ if (key.endsWith("/Position") || key.endsWith("/ObjectPath")) {
41+ m_settings.insert(key, settings.value(key));
38− QVariant pos = settings.value(profile + "/Position");
40− pos = settings.value("Indicator Service/Position", QVariant::fromValue(0));
45+ setId(settings.value("Indicator Service/Name").toString());
41− setPosition(pos.toInt());
43 QString actionObjectPath = settings.value("Indicator Service/ObjectPath").toString();
47 QString actionObjectPath = settings.value("Indicator Service/ObjectPath").toString();
44− QString menuObjectPath = settings.value(profile + "/ObjectPath").toString();
46 QVariantMap properties;
49 QVariantMap properties;
47 properties.clear();
50 properties.clear();
48 properties.insert("busType", 1);
51 properties.insert("busType", 1);
49 properties.insert("busName", busName);
52 properties.insert("busName", busName);
50 properties.insert("actionsObjectPath", actionObjectPath);
53 properties.insert("actionsObjectPath", actionObjectPath);
51− properties.insert("menuObjectPath", menuObjectPath);
54+
52− setIndicatorProperties(properties);
55+ m_properties = properties;
56+ setProfile(profile); // will emit changed signals for us and set position
55QString Indicator::identifier() const
59QString Indicator::identifier() const
@@ -78,6 +82,19 @@ void Indicator::setPosition(int position)
85+void Indicator::setProfile(const QString& profile)
87+ QVariant pos = m_settings.value(profile + "/Position");
89+ pos = m_settings.value("Indicator Service/Position", QVariant::fromValue(0));
90+ setPosition(pos.toInt());
92+ QString menuObjectPath = m_settings.value(profile + "/ObjectPath").toString();
93+ QVariantMap map = m_properties.toMap();
94+ map.insert("menuObjectPath", menuObjectPath);
95+ setIndicatorProperties(map);
81QVariant Indicator::indicatorProperties() const
98QVariant Indicator::indicatorProperties() const
83 return m_properties;
100 return m_properties;