void WatchesModel::addFoundWatch(const QVariantMap &info) { QStringList existing = _config->dirs(); QString base = "watch%1"; QString name = base.arg(""); int num = 1; // Create the setting keys in numerical order // e.g. if watch1 is already existing, use watch2, etc. while (existing.contains(name)) { num++; name = base.arg(num); } // Load the autodetected settings into the new key ConfigKey* newkey = _config->getSubkey(name); foreach (const QString& key, info.keys()) { newkey->set(key, info[key]); } // Set some defaults const QString watchModel = info["model"].toString(); Registry *registry = Registry::registry(); newkey->set("providers", registry->allNotificationProviders()); QStringList allWatchlets = registry->allWatchlets(); QStringList configuredWatchlets; foreach(const QString& watchletId, allWatchlets) { WatchletPluginInterface *plugin = registry->getWatchletPlugin(watchletId); if (plugin) { WatchletPluginInterface::WatchletInfo info = plugin->describeWatchlet(watchletId, watchModel); if (info.visible) { configuredWatchlets += watchletId; } } }
void ConfiguredWatchletsModel::reload() { Registry *registry = Registry::registry(); Q_ASSERT(_config); beginResetModel(); _list.clear(); _info.clear(); _enabled.clear(); qDebug() << "Reloading watchlets"; QString watchModel = _config->value("driver").toString(); QStringList all = registry->allWatchlets(); foreach (const QString& s, all) { WatchletPluginInterface *plugin = registry->getWatchletPlugin(s); if (plugin) { _info[s] = plugin->describeWatchlet(s, watchModel); } else { WatchletPluginInterface::WatchletInfo info; info.name = s; _info[s] = info; } }