void Configuration::setServiceMenu() { KMenu *menu = qobject_cast<KMenu*>(sender()); if (menu->actions().count() > 1) { return; } KServiceGroup::Ptr rootGroup = KServiceGroup::group(menu->actions()[0]->data().toString()); if (!rootGroup || !rootGroup->isValid() || rootGroup->noDisplay()) { return; } KServiceGroup::List list = rootGroup->entries(true, true, true, true); QAction *action = menu->addAction(KIcon("list-add"), i18n("Add This Menu")); action->setData(rootGroup->relPath()); menu->addSeparator(); for (int i = 0; i < list.count(); ++i) { if (list.at(i)->isType(KST_KService)) { const KService::Ptr service = KService::Ptr::staticCast(list.at(i)); action = menu->addAction(KIcon(service->icon()), service->name()); action->setEnabled(false); } else if (list.at(i)->isType(KST_KServiceGroup)) { const KServiceGroup::Ptr group = KServiceGroup::Ptr::staticCast(list.at(i)); if (group->noDisplay() || group->childCount() == 0) { continue; } KMenu *subMenu = new KMenu(menu); QAction *action = subMenu->addAction(QString()); action->setData(group->relPath()); action->setVisible(false); action = menu->addAction(KIcon(group->icon()), group->caption()); action->setMenu(subMenu); connect(subMenu, SIGNAL(aboutToShow()), this, SLOT(setServiceMenu())); } else if (list.at(i)->isType(KST_KServiceSeparator)) { menu->addSeparator(); } } }
void KateFileTree::slotFixOpenWithMenu() { QMenu *menu = (QMenu*)sender(); menu->clear(); KTextEditor::Document *doc = model()->data(m_indexContextMenu, KateFileTreeModel::DocumentRole).value<KTextEditor::Document *>(); if (!doc) return; // get a list of appropriate services. KMimeType::Ptr mime = KMimeType::mimeType(doc->mimeType()); //kDebug(13001) << "mime type: " << mime->name(); QAction *a = 0; KService::List offers = KMimeTypeTrader::self()->query(mime->name(), "Application"); // for each one, insert a menu item... for(KService::List::Iterator it = offers.begin(); it != offers.end(); ++it) { KService::Ptr service = *it; if (service->name() == "Kate") continue; a = menu->addAction(KIcon(service->icon()), service->name()); a->setData(service->entryPath()); } // append "Other..." to call the KDE "open with" dialog. a = menu->addAction(i18n("&Other...")); a->setData(QString()); }
void SyncTaskListItem::clickedMenu(int item) { KTrader::OfferList::Iterator it; if (offers.begin() != offers.end()) { for (it = offers.begin(); it != offers.end(); ++it) { KService::Ptr service = *it; kdDebug(2120) << i18n("Select Name:") << " " << service->name() + "; " << i18n("Library:") << " " << service->library() << endl; if (service->name() == itemMenu.text(item)) { if (preferedOffer != service->name() || preferedLibrary != service->library()) { preferedOfferTemp = service->name(); preferedLibraryTemp = service->library(); itemMenu.setItemChecked(item, true); } } else { itemMenu.setItemChecked(item, false); } } } createSyncPlugin(QCheckListItem::isOn()); emit serviceChanged(); }
void KatapultSettings::loadDisplayPlugins() { if(_display != 0) { delete _display; _display = 0; } _displayNames.clear(); _displayIds.clear(); KTrader::OfferList offers = KTrader::self()->query("Katapult/Display"); KTrader::OfferList::ConstIterator it; KService::Ptr lastservice; for(it = offers.begin(); it != offers.end(); ++it) { KService::Ptr service = *it; lastservice = service; _displayNames.append(service->name()); if(!service->property("X-Katapult-ID", QVariant::String).toString().isEmpty()) _displayIds.append(service->property("X-Katapult-ID", QVariant::String).toString()); else _displayIds.append(service->name()); if(_displayIds.last() == _displayName) { int errCode = 0; _display = KParts::ComponentFactory::createInstanceFromService<KatapultDisplay> (service, 0, 0, QStringList(), &errCode); } } if(_display != 0) { KConfigGroup group(kapp->config(), QString("Displays/%1").arg(_displayName)); _display->readSettings(&group); } else { _displayName = _displayIds.last(); int errCode = 0; _display = KParts::ComponentFactory::createInstanceFromService<KatapultDisplay> (lastservice, 0, 0, QStringList(), &errCode); KConfigGroup group(kapp->config(), QString("Displays/%1").arg(_displayName)); _display->readSettings(&group); } }
void BackendSelection::loadServices(const KService::List &offers) { m_services.clear(); m_select->clear(); KService::List::const_iterator it = offers.begin(); const KService::List::const_iterator end = offers.end(); for (; it != end; ++it) { KService::Ptr service = *it; m_select->addItem(service->name()); m_services[service->name()] = service; } m_select->setItemSelected(m_select->item(0), true); }
KPluginInfo::KPluginInfo( const KService::Ptr service ) : d( new KPluginInfoPrivate ) { if (!service) { d = 0; // isValid() == false return; } d->service = service; d->entryPath = service->entryPath(); if ( service->isDeleted() ) { d->hidden = true; return; } d->name = service->name(); d->comment = service->comment(); d->icon = service->icon(); d->author = service->property( QLatin1String("X-KDE-PluginInfo-Author") ).toString(); d->email = service->property( QLatin1String("X-KDE-PluginInfo-Email") ).toString(); d->pluginName = service->property( QLatin1String("X-KDE-PluginInfo-Name") ).toString(); d->version = service->property( QLatin1String("X-KDE-PluginInfo-Version") ).toString(); d->website = service->property( QLatin1String("X-KDE-PluginInfo-Website") ).toString(); d->category = service->property( QLatin1String("X-KDE-PluginInfo-Category") ).toString(); d->license = service->property( QLatin1String("X-KDE-PluginInfo-License") ).toString(); d->dependencies = service->property( QLatin1String("X-KDE-PluginInfo-Depends") ).toStringList(); QVariant tmp = service->property( QLatin1String("X-KDE-PluginInfo-EnabledByDefault") ); d->enabledbydefault = tmp.isValid() ? tmp.toBool() : false; }
void BasicTab::slotCapturedShortcut(const KShortcut &cut) { if(signalsBlocked()) return; if(KKeyChooser::checkGlobalShortcutsConflict(cut, true, topLevelWidget()) || KKeyChooser::checkStandardShortcutsConflict(cut, true, topLevelWidget())) return; if(KHotKeys::present()) { if(!_menuEntryInfo->isShortcutAvailable(cut)) { KService::Ptr service; emit findServiceShortcut(cut, service); if(!service) service = KHotKeys::findMenuEntry(cut.toString()); if(service) { KMessageBox::sorry(this, i18n("<qt>The key <b>%1</b> can not be used here because it is already used to activate <b>%2</b>.") .arg(cut.toString(), service->name())); return; } else { KMessageBox::sorry(this, i18n("<qt>The key <b>%1</b> can not be used here because it is already in use.").arg(cut.toString())); return; } } _menuEntryInfo->setShortcut(cut); } _keyEdit->setShortcut(cut, false); if(_menuEntryInfo) emit changed(_menuEntryInfo); }
DVBevents::DVBevents( QString devType, int anum, int tnum, const QString &charset, EventTable *table ) : KaffeineDVBsection( anum, tnum, charset ) { events = table; KaffeineEpgPlugin *plug; QString plugName; int error; KTrader::OfferList offers = KTrader::self()->query("KaffeineEpgPlugin"); KTrader::OfferList::Iterator end( offers.end() ); for ( KTrader::OfferList::Iterator it=offers.begin(); it!=end; ++it ) { error = 0; KService::Ptr ptr = (*it); if ( !ptr->name().contains(devType) ) continue; plug = KParts::ComponentFactory::createPartInstanceFromService<KaffeineEpgPlugin>(ptr, 0, ptr->name().ascii(), 0, 0, 0, &error ); plugName = ptr->desktopEntryName(); if (error > 0) { fprintf( stderr, "Loading of EPG plugin %s failed: %s\n", plugName.ascii(), KLibLoader::self()->lastErrorMessage().ascii() ); plug = NULL; } else { plugs.append( plug ); plug->setTable( table ); plug->initSection( anum, tnum, charset ); plugNames.append( plugName ); } } fprintf( stderr, "%d EPG plugins loaded for device %d:%d.\n", plugs.count(), anum, tnum ); }
QVariant RecentAppsModel::data(const QModelIndex &index, int role) const { if (!index.isValid() || index.row() >= m_recentApps.count()) { return QVariant(); } const QString storageId = m_recentApps.at(index.row()); KService::Ptr service = KService::serviceByStorageId(storageId); if (!service) { return QVariant(); } if (role == Qt::DisplayRole) { return service->name(); } else if (role == Qt::DecorationRole) { return QIcon::fromTheme(service->icon(), QIcon::fromTheme("unknown")); } else if (role == Kicker::FavoriteIdRole) { return QVariant("app:" + storageId); } else if (role == Kicker::HasActionListRole) { return true; } else if (role == Kicker::ActionListRole) { QVariantList actionList; const QVariantMap &forgetAction = Kicker::createActionItem(i18n("Forget Application"), "forget"); actionList.append(forgetAction); const QVariantMap &forgetAllAction = Kicker::createActionItem(i18n("Forget All Applications"), "forgetAll"); actionList.append(forgetAllAction); return actionList; } return QVariant(); }
void SettingsBase::initApplication() { // Prepare the menu of all modules categories = KServiceTypeTrader::self()->query("SystemSettingsCategory"); modules = KServiceTypeTrader::self()->query("KCModule", "[X-KDE-System-Settings-Parent-Category] != ''"); modules += KServiceTypeTrader::self()->query("SystemSettingsExternalApp"); rootModule = new MenuItem( true, 0 ); initMenuList(rootModule); // Handle lost+found modules... if (lostFound) { for (int i = 0; i < modules.size(); ++i) { const KService::Ptr entry = modules.at(i); MenuItem * infoItem = new MenuItem(false, lostFound); infoItem->setService( entry ); qDebug() << "Added " << entry->name(); } } // Prepare the Base Data BaseData::instance()->setMenuItem( rootModule ); // Load all possible views const KService::List pluginObjects = KServiceTypeTrader::self()->query( "SystemSettingsView" ); const int nbPlugins = pluginObjects.count(); for( int pluginsDone = 0; pluginsDone < nbPlugins ; ++pluginsDone ) { KService::Ptr activeService = pluginObjects.at( pluginsDone ); QString error; BaseMode * controller = activeService->createInstance<BaseMode>(this, QVariantList(), &error); if( error.isEmpty() ) { possibleViews.insert( activeService->library(), controller ); controller->init( activeService ); connect(controller, SIGNAL(changeToolBarItems(BaseMode::ToolBarItems)), this, SLOT(changeToolBar(BaseMode::ToolBarItems))); connect(controller, SIGNAL(actionsChanged()), this, SLOT(updateViewActions())); connect(searchText, SIGNAL(textChanged(QString)), controller, SLOT(searchChanged(QString))); connect(controller, SIGNAL(viewChanged(bool)), this, SLOT(viewChange(bool))); } else {
void PluginManager::loadPlugins() { KService::List offers = KServiceTypeTrader::self()->query(QLatin1String("KTpAccountsKCM/AccountUiPlugin")); KService::List::const_iterator iter; for (iter = offers.constBegin(); iter < offers.constEnd(); ++iter) { QString error; KService::Ptr service = *iter; KPluginFactory *factory = KPluginLoader(service->library()).factory(); if (!factory) { qWarning() << "KPluginFactory could not load the plugin:" << service->library(); continue; } AbstractAccountUiPlugin *plugin = factory->create<AbstractAccountUiPlugin>(this); if (plugin) { qDebug() << "Loaded plugin:" << service->name(); m_plugins.append(plugin); } else { qDebug() << error; } } }
void PluginManager::showAbout( const QString &constraint ) { KTrader::OfferList offers = query( constraint ); if ( offers.isEmpty() ) return; KService::Ptr s = offers.front(); const QString body = "<tr><td>%1</td><td>%2</td></tr>"; QString str = "<html><body><table width=\"100%\" border=\"1\">"; str += body.arg( i18n( "Name" ), s->name() ); str += body.arg( i18n( "Library" ), s->library() ); str += body.arg( i18n( "Authors" ), s->property( "X-KDE-amaroK-authors" ).toStringList().join( "\n" ) ); str += body.arg( i18n( "Email" ), s->property( "X-KDE-amaroK-email" ).toStringList().join( "\n" ) ); str += body.arg( i18n( "Version" ), s->property( "X-KDE-amaroK-version" ).toString() ); str += body.arg( i18n( "Framework Version" ), s->property( "X-KDE-amaroK-framework-version" ).toString() ); str += "</table></body></html>"; KMessageBox::information( 0, str, i18n( "Plugin Information" ) ); }
void AdminDatabase::queryButtonClicked() { if ( ! m_listView->currentItem() ) return; QVBox *widget = new QVBox(this); KTrader::OfferList offers = KTrader::self()->query("text/plain", "'KParts/ReadOnlyPart' in ServiceTypes"); KLibFactory *factory = 0; KTrader::OfferList::Iterator it(offers.begin()); for( ; it != offers.end(); ++it) { KService::Ptr ptr = (*it); factory = KLibLoader::self()->factory( ptr->library() ); if (factory) { m_part = static_cast<KParts::ReadOnlyPart *>(factory->create(widget, ptr->name(), "KParts::ReadOnlyPart")); m_part->openURL("file://"+m_dumpDir->absPath()+"/"+m_listView->getText(0)+".sql"); break; } } if (!factory) { KMessageBox::error(this, i18n("Could not find a suitable component")); return; } emit sendWidget(widget,i18n("View dump")); }
PluginData PluginLoader::instantiatePluginForDevice(const QString& name, Device* device) const { PluginData ret; KService::Ptr service = plugins[name]; if (!service) { kDebug(kdeconnect_kded()) << "Plugin unknown" << name; return ret; } KPluginFactory *factory = KPluginLoader(service->library()).factory(); if (!factory) { kDebug(kdeconnect_kded()) << "KPluginFactory could not load the plugin:" << service->library(); return ret; } ret.interfaces = service->property("X-KdeConnect-SupportedPackageType", QVariant::StringList).toStringList(); QVariant deviceVariant = QVariant::fromValue<Device*>(device); //FIXME any reason to use QObject in template param instead KdeConnectPlugin? ret.plugin = factory->create<KdeConnectPlugin>(device, QVariantList() << deviceVariant); if (!ret.plugin) { kDebug(kdeconnect_kded()) << "Error loading plugin"; return ret; } kDebug(kdeconnect_kded()) << "Loaded plugin:" << service->name(); return ret; }
DesktopBehaviorPreviewItem(DesktopBehavior *rootOpts, QListView *parent, const KService::Ptr &plugin, bool on) : QCheckListItem(parent, plugin->name(), CheckBox), m_rootOpts(rootOpts) { m_pluginName = plugin->desktopEntryName(); setOn(on); }
void SyncTaskListItem::openPopup() { bool preferedFound = false; offers = getOffers(); KTrader::OfferList::ConstIterator it; itemMenu.clear(); itemMenu.setCaption(i18n("Services for") + " " + text()); itemMenu.insertTitle(i18n("Services for") + " " + text()); itemMenu.setCheckable(true); itemMenu.setEnabled(true); if (offers.begin() != offers.end()) { for (it = offers.begin(); it != offers.end(); ++it) { KService::Ptr service = *it; kdDebug(2120) << i18n("Open Name:") << " " << service->name() << "; " << i18n("Library:") << " " << service->library() << endl; int item = itemMenu.insertItem(service->name()); if (service->name() == preferedOfferTemp) { itemMenu.setItemChecked(item, true); preferedFound = true; } } if (!preferedFound) { preferedOffer = ""; preferedLibrary = ""; } itemMenu.move(-1000,-1000); itemMenu.show(); itemMenu.hide(); QPoint g = QCursor::pos(); if (itemMenu.height() < g.y()) { itemMenu.popup(QPoint( g.x(), g.y() - itemMenu.height())); } else { itemMenu.popup(QPoint(g.x(), g.y())); } } }
SearchProvider::SearchProvider(const KService::Ptr service) : m_dirty(false) { m_desktopEntryName = service->desktopEntryName(); m_name = service->name(); m_query = service->property("Query").toString(); m_keys = service->property("Keys").toStringList(); m_charset = service->property("Charset").toString(); }
void NavigatorAppItem::populate(bool recursive) { if(mPopulated) return; KServiceGroup::Ptr root = KServiceGroup::group(mRelpath); if(!root) { kdWarning() << "No Service groups\n"; return; } KServiceGroup::List list = root->entries(); for(KServiceGroup::List::ConstIterator it = list.begin(); it != list.end(); ++it) { KSycocaEntry *e = *it; KService::Ptr s; NavigatorItem *item; KServiceGroup::Ptr g; QString url; switch(e->sycocaType()) { case KST_KService: { s = static_cast< KService * >(e); url = documentationURL(s); if(!url.isEmpty()) { DocEntry *entry = new DocEntry(s->name(), url, s->icon()); item = new NavigatorItem(entry, this); item->setAutoDeleteDocEntry(true); item->setExpandable(true); } break; } case KST_KServiceGroup: { g = static_cast< KServiceGroup * >(e); if((g->childCount() == 0) || g->name().startsWith(".")) continue; DocEntry *entry = new DocEntry(g->caption(), "", g->icon()); NavigatorAppItem *appItem; appItem = new NavigatorAppItem(entry, this, g->relPath()); appItem->setAutoDeleteDocEntry(true); if(recursive) appItem->populate(recursive); break; } default: break; } } sortChildItems(0, true /* ascending */); mPopulated = true; }
static KDevCompilerOptions *createCompilerOptions( const QString &name, QObject *parent ) { KService::Ptr service = KService::serviceByDesktopName( name ); if ( !service ) { kdDebug( 9020 ) << "Can't find service " << name << endl; return 0; } KLibFactory *factory = KLibLoader::self()->factory(QFile::encodeName(service->library())); if (!factory) { QString errorMessage = KLibLoader::self()->lastErrorMessage(); kdDebug(9020) << "There was an error loading the module " << service->name() << endl << "The diagnostics is:" << endl << errorMessage << endl; exit(1); } QStringList args; QVariant prop = service->property("X-KDevelop-Args"); if (prop.isValid()) args = QStringList::split(" ", prop.toString()); QObject *obj = factory->create(parent, service->name().latin1(), "KDevCompilerOptions", args); if (!obj->inherits("KDevCompilerOptions")) { kdDebug(9020) << "Component does not inherit KDevCompilerOptions" << endl; return 0; } KDevCompilerOptions *dlg = (KDevCompilerOptions*) obj; return dlg; /* QStringList args; QVariant prop = service->property( "X-KDevelop-Args" ); if ( prop.isValid() ) args = QStringList::split( " ", prop.toString() ); return KParts::ComponentFactory ::createInstanceFromService<KDevCompilerOptions>( service, parent, service->name().latin1(), args );*/ }
ksimoptsView::ksimoptsView(QWidget *parent) : QWidget(parent), DCOPObject("ksimoptsIface") { // setup our layout manager to automatically add our widgets QHBoxLayout *top_layout = new QHBoxLayout(this); top_layout->setAutoAdd(true); // we want to look for all components that satisfy our needs. the // trader will actually search through *all* registered KDE // applications and components -- not just KParts. So we have to // specify two things: a service type and a constraint // // the service type is like a mime type. we say that we want all // applications and components that can handle HTML -- 'text/html' // // however, by itself, this will return such things as Netscape.. // not what we wanted. so we constrain it by saying that the // string 'KParts/ReadOnlyPart' must be found in the ServiceTypes // field. with this, only components of the type we want will be // returned. KTrader::OfferList offers = KTrader::self()->query("text/html", "'KParts/ReadWritePart' in ServiceTypes"); KLibFactory *factory = 0; // in theory, we only care about the first one.. but let's try all // offers just in case the first can't be loaded for some reason KTrader::OfferList::Iterator it(offers.begin()); for( ; it != offers.end(); ++it) { KService::Ptr ptr = (*it); // we now know that our offer can handle HTML and is a part. // since it is a part, it must also have a library... let's try to // load that now factory = KLibLoader::self()->factory( ptr->library() ); if (factory) { m_html = static_cast<KParts::ReadWritePart *>(factory->create(this, ptr->name(), "KParts::ReadWritePart")); break; } } // if our factory is invalid, then we never found our component // and we might as well just exit now if (!factory) { KMessageBox::error(this, i18n("Could not find a suitable HTML component")); return; } connect(m_html, SIGNAL(setWindowCaption(const QString&)), this, SLOT(slotSetTitle(const QString&))); connect(m_html, SIGNAL(setStatusBarText(const QString&)), this, SLOT(slotOnURL(const QString&))); }
SearchProvider::SearchProvider(const KService::Ptr service) : m_dirty(false) { setDesktopEntryName(service->desktopEntryName()); setName(service->name()); setKeys(service->property(QStringLiteral("Keys")).toStringList()); m_query = service->property(QStringLiteral("Query")).toString(); m_charset = service->property(QStringLiteral("Charset")).toString(); }
bool Helper::writeMimeInfo( QMimeType mime ) { KService::Ptr service = KMimeTypeTrader::self()->preferredService( mime.name()); if( service ) { outputLine( mime.name()); outputLine( mime.comment()); outputLine( service->name()); return true; } return false; }
void PhotoLayoutsEditor::loadEffects() { StandardEffectsFactory * stdEffects = new StandardEffectsFactory( PhotoEffectsLoader::instance() ); PhotoEffectsLoader::registerEffect( stdEffects ); const KService::List offers = KServiceTypeTrader::self()->query("PhotoLayoutsEditor/EffectPlugin"); foreach(const KService::Ptr& service, offers) { if (service) d->effectsServiceMap[service->name()] = service; } foreach(const QString& name, d->effectsServiceMap.keys()) { KService::Ptr service = d->effectsServiceMap.value(name); AbstractPhotoEffectFactory * plugin; if ( d->effectsMap.contains(name) ) continue; else { QString error; plugin = service->createInstance<AbstractPhotoEffectFactory>( PhotoEffectsLoader::instance(), QVariantList(), &error); if (plugin) { d->effectsMap[name] = plugin; PhotoEffectsLoader::registerEffect(plugin); kDebug() << "PhotoLayoutsEditor: Loaded effect " << service->name(); } else { kWarning() << "PhotoLayoutsEditor: createInstance returned 0 for " << service->name() << " (" << service->library() << ")" << " with error: " << error; } } } }
void PhotoLayoutsEditor::loadBorders() { StandardBordersFactory * stdBorders = new StandardBordersFactory( BorderDrawersLoader::instance() ); BorderDrawersLoader::registerDrawer( stdBorders ); const KService::List offers = KServiceTypeTrader::self()->query("PhotoLayoutsEditor/BorderPlugin"); foreach(const KService::Ptr& service, offers) { if (service) d->bordersServiceMap[service->name()] = service; } foreach(const QString& name, d->bordersServiceMap.keys()) { KService::Ptr service = d->bordersServiceMap.value(name); BorderDrawerFactoryInterface * plugin; if ( d->bordersMap.contains(name) ) continue; else { QString error; plugin = service->createInstance<BorderDrawerFactoryInterface>(this, QVariantList(), &error); if (plugin) { d->bordersMap[name] = plugin; BorderDrawersLoader::registerDrawer(plugin); kDebug() << "PhotoLayoutsEditor: Loaded border:" << service->name(); } else { kWarning() << "PhotoLayoutsEditor: createInstance returned 0 for " << service->name() << " (" << service->library() << ")" << " with error: " << error; } } } }
void KatapultSettings::loadCatalogPlugins() { _activeCatalogs.clear(); _catalogNames.clear(); _catalogIds.clear(); ActionRegistry::self()->clear(); KTrader::OfferList offers = KTrader::self()->query("Katapult/Catalog"); KTrader::OfferList::ConstIterator it; for(it = offers.begin(); it != offers.end(); ++it) { QString id; KService::Ptr service = *it; KatapultCatalog *catalog; if(!service->property("X-Katapult-ID", QVariant::String).toString().isEmpty()) id = service->property("X-Katapult-ID", QVariant::String).toString(); else id = service->name(); _catalogNames.append(service->name()); _catalogIds.append(id); if(_activeCatalogNames.contains(id)) { int errCode = 0; catalog = KParts::ComponentFactory::createInstanceFromService<KatapultCatalog> (service, 0, 0, QStringList(), &errCode); if(catalog != 0) { KConfigGroup group(kapp->config(), QString("Catalogs/%1").arg(id)); catalog->readSettings(&group); catalog->initialize(); _activeCatalogs.insert(id, catalog); } } } }
void MenuentryActionWidget::selectApplicationClicked() { KOpenWithDialog dlg; dlg.exec(); KService::Ptr service = dlg.service(); if (service) { ui.application->setText( service->name() ); storage_id = service->storageId(); } }
static void createFileEntry(KIO::UDSEntry& entry, const KService::Ptr& service, const KUrl& parentUrl) { entry.clear(); entry.insert(KIO::UDSEntry::UDS_NAME, KIO::encodeFileName(service->name())); entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFREG); const QString fileUrl = parentUrl.url(KUrl::AddTrailingSlash) + service->desktopEntryName(); entry.insert(KIO::UDSEntry::UDS_URL, fileUrl); entry.insert(KIO::UDSEntry::UDS_ACCESS, 0500); entry.insert(KIO::UDSEntry::UDS_MIME_TYPE, "application/x-desktop"); entry.insert(KIO::UDSEntry::UDS_SIZE, 0); entry.insert(KIO::UDSEntry::UDS_LOCAL_PATH, KStandardDirs::locate("apps", service->entryPath())); entry.insert(KIO::UDSEntry::UDS_MODIFICATION_TIME, time(0)); entry.insert(KIO::UDSEntry::UDS_ICON_NAME, service->icon()); }
void NavigatorAppItem::populate( bool recursive ) { if ( mPopulated ) return; KServiceGroup::Ptr root = KServiceGroup::group(mRelpath); if ( !root ) { kWarning() << "No Service groups\n"; return; } KServiceGroup::List list = root->entries(); for ( KServiceGroup::List::ConstIterator it = list.constBegin(); it != list.constEnd(); ++it ) { const KSycocaEntry::Ptr e = *it; NavigatorItem *item; QString url; switch ( e->sycocaType() ) { case KST_KService: { const KService::Ptr s = KService::Ptr::staticCast(e); url = documentationURL( s.data() ); if ( !url.isEmpty() ) { DocEntry *entry = new DocEntry( s->name(), url, s->icon() ); item = new NavigatorItem( entry, this ); item->setAutoDeleteDocEntry( true ); } break; } case KST_KServiceGroup: { KServiceGroup::Ptr g = KServiceGroup::Ptr::staticCast(e); if ( ( g->childCount() == 0 ) || g->name().startsWith( '.' ) ) continue; DocEntry *entry = new DocEntry( g->caption(), "", g->icon() ); NavigatorAppItem *appItem; appItem = new NavigatorAppItem( entry, this, g->relPath() ); appItem->setAutoDeleteDocEntry( true ); if ( recursive ) appItem->populate( recursive ); break; } default: break; } } sortChildren( 0, Qt::AscendingOrder /* ascending */ ); mPopulated = true; }
void PluginManager::loadPlugins() { DEBUG_FUNC_NAME KConfigGroup group = KGlobal::config()->group( "Plugins" ); KService::List offers = KServiceTypeTrader::self()->query( QString::fromLatin1( "GluonCreator/Plugin" ), QString( "[X-KDE-GluonCreatorPluginVersion] == %1" ).arg( GLUONCREATOR_PLUGIN_VERSION ) ); KService::List::const_iterator iter; for( iter = offers.begin(); iter < offers.end(); ++iter ) { QString error; KService::Ptr service = *iter; QString serviceName = service->desktopEntryName(); bool loadPlugin = group.readEntry<bool>( QString( "%1Enabled" ).arg( serviceName ), true ); if( !d->loadedPlugins.contains( serviceName ) && loadPlugin ) { KPluginFactory* factory = KPluginLoader( service->library() ).factory(); if( !factory ) { DEBUG_TEXT( QString( "KPluginFactory could not load the plugin: %1" ).arg( service->library() ) ); continue; } Plugin* plugin = factory->create<Plugin>( this ); if( plugin ) { DEBUG_TEXT( QString( "Load plugin: %1" ).arg( service->name() ) ); plugin->load( d->mainWindow ); d->loadedPlugins.insert( serviceName, plugin ); } else { DEBUG_TEXT( error ); } } else if( !loadPlugin && d->loadedPlugins.contains( serviceName ) ) { Plugin* plugin = d->loadedPlugins.value( serviceName ); plugin->unload( d->mainWindow ); delete plugin; d->loadedPlugins.remove( serviceName ); } } }
static KonqViewFactory tryLoadingService(KService::Ptr service) { KPluginLoader pluginLoader(*service); pluginLoader.setLoadHints(QLibrary::ExportExternalSymbolsHint); // #110947 KPluginFactory* factory = pluginLoader.factory(); if (!factory) { KMessageBox::error(0, i18n("There was an error loading the module %1.\nThe diagnostics is:\n%2", service->name(), pluginLoader.errorString())); return KonqViewFactory(); } else { return KonqViewFactory(service->library(), factory); } }