示例#1
0
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;
		}
	}