@@ -51,20 +51,19 @@ IndicatorsManager::IndicatorsManager(QObject* parent)
5151IndicatorsManager::~IndicatorsManager()
5252{
5353 unload();
54−
5554}
5655
5756void IndicatorsManager::load()
5857{
5958 unload();
6059
61− QStringList xdgLocations = shellDataDirs();//QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation);
60+ const QStringList xdgLocations = shellDataDirs();
6261
6362 m_fsWatcher.reset(new QFileSystemWatcher(this));
6463
6564 Q_FOREACH(const QString& xdgLocation, xdgLocations)
6665 {
67− QString indicator_path = QDir::cleanPath(xdgLocation + "/unity/indicators");
66+ const QString indicator_path = QDir::cleanPath(xdgLocation + "/unity/indicators");
6867 QDir indicator_dir(indicator_path);
6968 if (indicator_dir.exists())
7069 {
@@ -103,7 +102,7 @@ void IndicatorsManager::loadDir(const QDir& dir)
103102{
104103 startVerify(dir.canonicalPath());
105104
106− QFileInfoList indicator_files = dir.entryInfoList(QStringList(), QDir::Files|QDir::NoDotAndDotDot);
105+ const QFileInfoList indicator_files = dir.entryInfoList(QStringList(), QDir::Files|QDir::NoDotAndDotDot);
107106 Q_FOREACH(const QFileInfo& indicator_file, indicator_files)
108107 {
109108 loadFile(indicator_file);
@@ -115,26 +114,32 @@ void IndicatorsManager::loadDir(const QDir& dir)
115114void IndicatorsManager::loadFile(const QFileInfo& file_info)
116115{
117116 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();
118+
119+ qDebug() << "!!! Loading indicator" << name << ", profile" << m_profile;
119120
120− auto iter = m_indicatorsData.find(name);
121− if (iter != m_indicatorsData.end())
121+ if (m_platform.isPC() && name == "indicator-keyboard") {
122+ return; // convergence: skip this indicator until it works in Mir
123+ }
124+
125+ auto iter = m_indicatorsData.constFind(name);
126+ if (iter != m_indicatorsData.constEnd())
122127 {
123− QString newFileInfoDir = QDir::cleanPath(file_info.canonicalPath());
128+ const QString newFileInfoDir = QDir::cleanPath(file_info.canonicalPath());
124129 IndicatorData* currentData = (*iter);
125130 currentData->m_verified = true;
126131
127132 int file_info_location = -1;
128133 int current_data_location = -1;
129134
130− QString currentDataDir = QDir::cleanPath(currentData->m_fileInfo.canonicalPath());
135+ const QString currentDataDir = QDir::cleanPath(currentData->m_fileInfo.canonicalPath());
131136
132137 // if we've already got this indicator, we need to make sure we're not overwriting data which is
133138 // from a lower priority standard path
134139 QStringList xdgLocations = shellDataDirs();
135140 for (int i = 0; i < xdgLocations.size(); i++)
136141 {
137− QString indicatorDir = QDir::cleanPath(xdgLocations[i] + "/unity/indicators");
142+ const QString indicatorDir = QDir::cleanPath(xdgLocations[i] + "/unity/indicators");
138143
139144 if (newFileInfoDir == indicatorDir)
140145 {
@@ -194,7 +199,7 @@ void IndicatorsManager::unloadFile(const QFileInfo& file)
194199 {
195200 if (!data->m_verified)
196201 {
197− QString name = data->m_name;
202+ const QString name = data->m_name;
198203 Q_EMIT indicatorAboutToBeUnloaded(name);
199204
200205 delete data;
@@ -253,7 +258,7 @@ void IndicatorsManager::endVerify(const QString& path)
253258 {
254259 if (!data->m_verified)
255260 {
256− QString name = data->m_name;
261+ const QString name = data->m_name;
257262 Q_EMIT indicatorAboutToBeUnloaded(name);
258263
259264 delete data;
@@ -271,7 +276,7 @@ Indicator::Ptr IndicatorsManager::indicator(const QString& indicator_name)
271276 return Indicator::Ptr();
272277 }
273278
274− IndicatorData *data = m_indicatorsData[indicator_name];
279+ IndicatorData *data = m_indicatorsData.value(indicator_name);
275280 if (data->m_indicator)
276281 {
277282 return data->m_indicator;
@@ -281,7 +286,11 @@ Indicator::Ptr IndicatorsManager::indicator(const QString& indicator_name)
281286 data->m_indicator = new_indicator;
282287 QSettings settings(data->m_fileInfo.absoluteFilePath(), QSettings::IniFormat, this);
283288 new_indicator->init(data->m_fileInfo.fileName(), settings);
284− new_indicator->setProfile(m_profile);
289+ if (new_indicator->identifier() == QStringLiteral("indicator-session") && m_platform.isMultiSession()) {
290+ new_indicator->setProfile("desktop"); // convergence: enable session indicator conditionally
291+ } else {
292+ new_indicator->setProfile(m_profile);
293+ }
285294 QObject::connect(this, &IndicatorsManager::profileChanged, new_indicator.data(), &Indicator::setProfile);
286295 return new_indicator;
287296}