void DataSourcesLoader::load() { KPluginInfo::List pluginInfo = KPluginTrader::self()->query("plasma/mediacenter/datasources"); if (pluginInfo.isEmpty()) { qWarning() << "no available data sources"; } Q_FOREACH (const KPluginInfo &info, pluginInfo) { KPluginLoader loader(info.libraryPath()); KPluginFactory* factory = loader.factory(); const QVariantList args = QVariantList() << loader.metaData().toVariantMap(); if(factory) { MediaCenter::AbstractDataSource *dataSource = factory->create<MediaCenter::AbstractDataSource>(0, args); if (dataSource) { dataSource->setMediaLibrary(SingletonFactory::instanceFor<MediaLibrary>()); dataSource->start(); connect(QApplication::instance(), SIGNAL(destroyed(QObject*)), dataSource, SLOT(quit())); qDebug() << "created instance for data source" << info.name(); } else { qDebug() << "Could not create a instance for the data source " << info.name(); } } }
MousePluginWidget::MousePluginWidget(const QString &pluginName, const QString &trigger, QGridLayout *layoutHack, QWidget *parent) : QObject(parent), m_configDlg(0), m_containment(0), m_lastConfigLocation(trigger), m_tempConfigParent(QString(), KConfig::SimpleConfig) { KPluginInfo::List plugins = Plasma::ContainmentActions::listContainmentActionsInfo(); if (plugins.isEmpty()) { //panic!! QLabel *fail = new QLabel(i18n("No plugins found, check your installation."), parent); layoutHack->addWidget(fail, 0, 0); return; } //make us some widgets m_pluginList = new QComboBox(parent); m_aboutButton = new QToolButton(parent); m_clearButton = new QToolButton(parent); m_triggerButton = new MouseInputButton(parent); m_configButton = new QToolButton(parent); //m_ui.description->setText(plugin.comment()); //plugin list //FIXME is there some way to share this across all the entries? foreach (const KPluginInfo& plugin, plugins) { if (plugin.property("NoDisplay").toBool()) { continue; } m_pluginList->addItem(KIcon(plugin.icon()), plugin.name(), QVariant::fromValue(plugin)); if (plugin.pluginName() == pluginName) { m_pluginList->setCurrentIndex(m_pluginList->count() - 1); m_plugin = plugin; } } if (! m_plugin.isValid()) { //probably an empty string; pick the first one m_pluginList->setCurrentIndex(0); m_plugin = plugins.first(); } //I can haz config? m_tempConfig = KConfigGroup(&m_tempConfigParent, "test"); if (!m_plugin.property("X-Plasma-HasConfigurationInterface").toBool()) { m_configButton->setVisible(false); } setTrigger(trigger); //pretty icons for the buttons m_aboutButton->setIcon(KIcon("dialog-information")); m_aboutButton->setToolTip(i18nc("About mouse action", "About")); m_triggerButton->setIcon(KIcon("input-mouse")); m_configButton->setIcon(KIcon("configure")); m_configButton->setToolTip(i18nc("Configure mouse action", "Configure")); m_clearButton->setIcon(KIcon("list-remove")); m_clearButton->setToolTip(i18nc("Remove mouse action", "Remove")); //HACK //FIXME what's the Right Way to do this? int row = layoutHack->rowCount(); layoutHack->addWidget(m_triggerButton, row, 0); layoutHack->addWidget(m_pluginList, row, 1); layoutHack->addWidget(m_configButton, row, 2); layoutHack->addWidget(m_aboutButton, row, 3); layoutHack->addWidget(m_clearButton, row, 4); //connect connect(m_pluginList, SIGNAL(currentIndexChanged(int)), this, SLOT(setPlugin(int))); connect(m_triggerButton, SIGNAL(triggerChanged(QString,QString)), this, SLOT(changeTrigger(QString,QString))); connect(m_configButton, SIGNAL(clicked()), this, SLOT(configure())); connect(m_clearButton, SIGNAL(clicked()), this, SLOT(clearTrigger())); connect(m_aboutButton, SIGNAL(clicked()), this, SLOT(showAbout())); }