@@ -51,20 +51,19 @@ IndicatorsManager::IndicatorsManager(QObject* parent)
51IndicatorsManager::~IndicatorsManager()
51IndicatorsManager::~IndicatorsManager()
57void IndicatorsManager::load()
56void IndicatorsManager::load()
61− QStringList xdgLocations = shellDataDirs();//QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation);
60+ const QStringList xdgLocations = shellDataDirs();
63 m_fsWatcher.reset(new QFileSystemWatcher(this));
62 m_fsWatcher.reset(new QFileSystemWatcher(this));
65 Q_FOREACH(const QString& xdgLocation, xdgLocations)
64 Q_FOREACH(const QString& xdgLocation, xdgLocations)
67− QString indicator_path = QDir::cleanPath(xdgLocation + "/unity/indicators");
66+ const QString indicator_path = QDir::cleanPath(xdgLocation + "/unity/indicators");
68 QDir indicator_dir(indicator_path);
67 QDir indicator_dir(indicator_path);
69 if (indicator_dir.exists())
68 if (indicator_dir.exists())
@@ -103,7 +102,7 @@ void IndicatorsManager::loadDir(const QDir& dir)
104 startVerify(dir.canonicalPath());
103 startVerify(dir.canonicalPath());
106− QFileInfoList indicator_files = dir.entryInfoList(QStringList(), QDir::Files|QDir::NoDotAndDotDot);
105+ const QFileInfoList indicator_files = dir.entryInfoList(QStringList(), QDir::Files|QDir::NoDotAndDotDot);
107 Q_FOREACH(const QFileInfo& indicator_file, indicator_files)
106 Q_FOREACH(const QFileInfo& indicator_file, indicator_files)
109 loadFile(indicator_file);
108 loadFile(indicator_file);
@@ -115,26 +114,32 @@ void IndicatorsManager::loadDir(const QDir& dir)
115void IndicatorsManager::loadFile(const QFileInfo& file_info)
114void IndicatorsManager::loadFile(const QFileInfo& file_info)
117 QSettings indicator_settings(file_info.absoluteFilePath(), QSettings::IniFormat, this);
116 QSettings indicator_settings(file_info.absoluteFilePath(), QSettings::IniFormat, this);
118− QString name = indicator_settings.value(QStringLiteral("Indicator Service/Name")).toString();
117+ const QString name = indicator_settings.value(QStringLiteral("Indicator Service/Name")).toString();
119+ qDebug() << "!!! Loading indicator" << name << ", profile" << m_profile;
121+ if (m_platform.isPC() && name == "indicator-keyboard") {
122+ return; // convergence: skip this indicator until it works in Mir
120− auto iter = m_indicatorsData.find(name);
125+ auto iter = m_indicatorsData.constFind(name);
121− if (iter != m_indicatorsData.end())
126+ if (iter != m_indicatorsData.constEnd())
123− QString newFileInfoDir = QDir::cleanPath(file_info.canonicalPath());
128+ const QString newFileInfoDir = QDir::cleanPath(file_info.canonicalPath());
124 IndicatorData* currentData = (*iter);
129 IndicatorData* currentData = (*iter);
125 currentData->m_verified = true;
130 currentData->m_verified = true;
127 int file_info_location = -1;
132 int file_info_location = -1;
128 int current_data_location = -1;
133 int current_data_location = -1;
130− QString currentDataDir = QDir::cleanPath(currentData->m_fileInfo.canonicalPath());
135+ const QString currentDataDir = QDir::cleanPath(currentData->m_fileInfo.canonicalPath());
132 // if we've already got this indicator, we need to make sure we're not overwriting data which is
137 // if we've already got this indicator, we need to make sure we're not overwriting data which is
133 // from a lower priority standard path
138 // from a lower priority standard path
134 QStringList xdgLocations = shellDataDirs();
139 QStringList xdgLocations = shellDataDirs();
135 for (int i = 0; i < xdgLocations.size(); i++)
140 for (int i = 0; i < xdgLocations.size(); i++)
137− QString indicatorDir = QDir::cleanPath(xdgLocations[i] + "/unity/indicators");
142+ const QString indicatorDir = QDir::cleanPath(xdgLocations[i] + "/unity/indicators");
139 if (newFileInfoDir == indicatorDir)
144 if (newFileInfoDir == indicatorDir)
@@ -194,7 +199,7 @@ void IndicatorsManager::unloadFile(const QFileInfo& file)
195 if (!data->m_verified)
200 if (!data->m_verified)
197− QString name = data->m_name;
202+ const QString name = data->m_name;
198 Q_EMIT indicatorAboutToBeUnloaded(name);
203 Q_EMIT indicatorAboutToBeUnloaded(name);
200 delete data;
205 delete data;
@@ -253,7 +258,7 @@ void IndicatorsManager::endVerify(const QString& path)
254 if (!data->m_verified)
259 if (!data->m_verified)
256− QString name = data->m_name;
261+ const QString name = data->m_name;
257 Q_EMIT indicatorAboutToBeUnloaded(name);
262 Q_EMIT indicatorAboutToBeUnloaded(name);
259 delete data;
264 delete data;
@@ -271,7 +276,7 @@ Indicator::Ptr IndicatorsManager::indicator(const QString& indicator_name)
271 return Indicator::Ptr();
276 return Indicator::Ptr();
274− IndicatorData *data = m_indicatorsData[indicator_name];
279+ IndicatorData *data = m_indicatorsData.value(indicator_name);
275 if (data->m_indicator)
280 if (data->m_indicator)
277 return data->m_indicator;
282 return data->m_indicator;
@@ -281,7 +286,11 @@ Indicator::Ptr IndicatorsManager::indicator(const QString& indicator_name)
281 data->m_indicator = new_indicator;
286 data->m_indicator = new_indicator;
282 QSettings settings(data->m_fileInfo.absoluteFilePath(), QSettings::IniFormat, this);
287 QSettings settings(data->m_fileInfo.absoluteFilePath(), QSettings::IniFormat, this);
283 new_indicator->init(data->m_fileInfo.fileName(), settings);
288 new_indicator->init(data->m_fileInfo.fileName(), settings);
289+ if (new_indicator->identifier() == QStringLiteral("indicator-session") && m_platform.isMultiSession()) {
290+ new_indicator->setProfile("desktop"); // convergence: enable session indicator conditionally
284− new_indicator->setProfile(m_profile);
292+ new_indicator->setProfile(m_profile);
285 QObject::connect(this, &IndicatorsManager::profileChanged, new_indicator.data(), &Indicator::setProfile);
294 QObject::connect(this, &IndicatorsManager::profileChanged, new_indicator.data(), &Indicator::setProfile);
286 return new_indicator;
295 return new_indicator;