@@ -33,23 +33,27 @@ Indicator::~Indicator()
3333
3434void Indicator::init(const QString &profile, const QString& busName, const QSettings& settings)
3535{
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.
38+ m_settings.clear();
39+ Q_FOREACH(const QString& key, settings.allKeys()) {
40+ if (key.endsWith("/Position") || key.endsWith("/ObjectPath")) {
41+ m_settings.insert(key, settings.value(key));
42+ }
43+ }
3744
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());
45+ setId(settings.value("Indicator Service/Name").toString());
4246
4347 QString actionObjectPath = settings.value("Indicator Service/ObjectPath").toString();
44− QString menuObjectPath = settings.value(profile + "/ObjectPath").toString();
4548
4649 QVariantMap properties;
4750 properties.clear();
4851 properties.insert("busType", 1);
4952 properties.insert("busName", busName);
5053 properties.insert("actionsObjectPath", actionObjectPath);
51− properties.insert("menuObjectPath", menuObjectPath);
52− setIndicatorProperties(properties);
54+
55+ m_properties = properties;
56+ setProfile(profile); // will emit changed signals for us and set position
5357}
5458
5559QString Indicator::identifier() const
@@ -78,6 +82,19 @@ void Indicator::setPosition(int position)
7882 }
7983}
8084
85+void Indicator::setProfile(const QString& profile)
86+{
87+ QVariant pos = m_settings.value(profile + "/Position");
88+ if (!pos.isValid())
89+ pos = m_settings.value("Indicator Service/Position", QVariant::fromValue(0));
90+ setPosition(pos.toInt());
91+
92+ QString menuObjectPath = m_settings.value(profile + "/ObjectPath").toString();
93+ QVariantMap map = m_properties.toMap();
94+ map.insert("menuObjectPath", menuObjectPath);
95+ setIndicatorProperties(map);
96+}
97+
8198QVariant Indicator::indicatorProperties() const
8299{
83100 return m_properties;