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 ); }
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&))); }
void ImportWizard::displayPluginList() { KTrader::OfferList plugins = KFTPAPI::getInstance()->pluginManager()->getImportPlugins(); KTrader::OfferList::ConstIterator end(plugins.end()); for (KTrader::OfferList::ConstIterator i(plugins.begin()); i != end; ++i) { KService::Ptr service = *i; new PluginListItem(m_pluginList, service); } }
KHTMLPluginKTTSD::KHTMLPluginKTTSD(QObject *parent, const char *name, const QStringList &) : Plugin(parent, name) { // If KTTSD is not installed, hide action. KTrader::OfferList offers = KTrader::self()->query("DCOP/Text-to-Speech", "Name == 'KTTSD'"); if(offers.count() > 0) { (void)new KAction(i18n("&Speak Text"), "kttsd", 0, this, SLOT(slotReadOut()), actionCollection(), "tools_kttsd"); } else kdDebug() << "KHTMLPLuginKTTSD::KHTMLPluginKTTSD: KTrader did not find KTTSD." << endl; }
void DesktopBehavior::load( bool useDefaults ) { g_pConfig->setReadDefaults( useDefaults ); g_pConfig->setGroup( "Desktop Icons" ); bool bShowHidden = g_pConfig->readBoolEntry("ShowHidden", DEFAULT_SHOW_HIDDEN_ROOT_ICONS); showHiddenBox->setChecked(bShowHidden); //bool bVertAlign = g_pConfig->readBoolEntry("VertAlign", DEFAULT_VERT_ALIGN); KTrader::OfferList plugins = KTrader::self()->query("ThumbCreator"); previewListView->clear(); QStringList previews = g_pConfig->readListEntry("Preview"); for (KTrader::OfferList::ConstIterator it = plugins.begin(); it != plugins.end(); ++it) new DesktopBehaviorPreviewItem(this, previewListView, *it, previews.contains((*it)->desktopEntryName())); new DesktopBehaviorPreviewItem(this, previewListView, previews.contains("audio/")); // g_pConfig->setGroup( "FMSettings" ); toolTipBox->setChecked(g_pConfig->readBoolEntry( "ShowFileTips", true ) ); g_pConfig->setGroup( "Menubar" ); KConfig config( "kdeglobals" ); config.setGroup("KDE"); bool globalMenuBar = config.readBoolEntry("macStyle", false); bool desktopMenuBar = g_pConfig->readBoolEntry("ShowMenubar", false); if ( globalMenuBar ) desktopMenuGroup->setButton( 2 ); else if ( desktopMenuBar ) desktopMenuGroup->setButton( 1 ); else desktopMenuGroup->setButton( 0 ); g_pConfig->setGroup( "General" ); vrootBox->setChecked( g_pConfig->readBoolEntry( "SetVRoot", false ) ); iconsEnabledBox->setChecked( g_pConfig->readBoolEntry( "Enabled", true ) ); autoLineupIconsBox->setChecked( g_pConfig->readBoolEntry( "AutoLineUpIcons", false ) ); // g_pConfig->setGroup( "Mouse Buttons" ); QString s; s = g_pConfig->readEntry( "Left", "" ); for ( int c = 0 ; c < choiceCount ; c ++ ) if (s == s_choices[c]) { leftComboBox->setCurrentItem( c ); break; } s = g_pConfig->readEntry( "Middle", "WindowListMenu" ); for ( int c = 0 ; c < choiceCount ; c ++ ) if (s == s_choices[c]) { middleComboBox->setCurrentItem( c ); break; } s = g_pConfig->readEntry( "Right", "DesktopMenu" ); for ( int c = 0 ; c < choiceCount ; c ++ ) if (s == s_choices[c]) { rightComboBox->setCurrentItem( c ); break; } comboBoxChanged(); if (m_bHasMedia) fillMediaListView(); enableChanged(); }
int KDCOPServiceStarter::startServiceFor( const QString& serviceType, const QString& constraint, const QString& preferences, QString *error, QCString* dcopService, int /*flags*/ ) { KTrader::OfferList offers = KTrader::self()->query(serviceType, "Application", constraint, preferences); if ( offers.isEmpty() ) return -1; KService::Ptr ptr = offers.first(); kdDebug() << "KDCOPServiceStarter: starting " << ptr->desktopEntryPath() << endl; return kapp->startServiceByDesktopPath( ptr->desktopEntryPath(), QStringList(), error, dcopService ); }
void PluginSelectDialog::init( ) { const QValueList<KDevPlugin*> loadedPlugins = PluginController::getInstance()->loadedPlugins(); QStringList loadedPluginDesktopNames; QValueList<KDevPlugin*>::ConstIterator it = loadedPlugins.begin(); while( it != loadedPlugins.end() ) { loadedPluginDesktopNames << (*it)->instance()->instanceName(); ++it; } kdDebug(9000) << " *** loadedPluginDesktopNames: " << loadedPluginDesktopNames << endl; KTrader::OfferList localOffers; if ( ProjectManager::getInstance()->projectLoaded() ) { localOffers = PluginController::getInstance()->engine().offers( PluginController::getInstance()->currentProfile(), ProfileEngine::Project ); } KTrader::OfferList globalOffers = PluginController::getInstance()->engine().offers( PluginController::getInstance()->currentProfile(), ProfileEngine::Global); KTrader::OfferList offers = localOffers + globalOffers; for (KTrader::OfferList::ConstIterator it = offers.begin(); it != offers.end(); ++it) { // parse out any existing url to make it clickable QString Comment = (*it)->comment(); QRegExp re("\\bhttp://[\\S]*"); re.search( Comment ); Comment.replace( re, "" ); QString url; if ( re.pos() > -1 ) { url = re.cap(); } PluginItem *item = new PluginItem( plugin_list, (*it)->desktopEntryName(), (*it)->genericName(), Comment, url ); item->setOn( loadedPluginDesktopNames.contains( (*it)->desktopEntryName() ) ); kdDebug(9000) << (*it)->desktopEntryName() << " : " << (loadedPluginDesktopNames.contains( (*it)->desktopEntryName() ) ? "YES" : "NO" ) << endl; } QListViewItem * first = plugin_list->firstChild(); if ( first ) { plugin_list->setSelected( first, true ); } }
bool KPartSaver::openURL( KURL url ) { closeURL(); // find mime type TQString mime = KMimeType::findByURL( url )->name(); // find fitting kparts KTrader::OfferList offers; offers = KTrader::self()->query( mime, "'KParts/ReadOnlyPart' in ServiceTypes" ); if( offers.count()==0 ) { kdDebug() << "Can't find proper kpart for " << mime << endl; return false; } // load kpart library TQString lib = offers.first()->library(); KLibFactory *factory = KLibLoader::self()->factory( lib.latin1() ); if( !factory ) { kdDebug() << "Library " << lib << " not found." << endl; return false; } // create kpart m_part = (KParts::ReadOnlyPart *)factory->create( TQT_TQOBJECT(this), "kpart", "KParts::ReadOnlyPart" ); if( !m_part ) { kdDebug() << "Part for " << url.url() << " can't be constructed" << endl; return false; } else embed( m_part->widget() ); // show kpart delete m_back; m_back = 0; show(); m_part->widget()->show(); // load url if( !m_part->openURL( url ) ) { kdDebug() << "Can't load " << url.url() << endl; closeURL(); return false; } return true; }
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 BaseTreeView::insertOpenWithMenu(KPopupMenu *menu, int position) { if (m_openWithMenuId != -1) menu->removeItem(m_openWithMenuId); for (uint i = 0; i < m_openWithActions.count(); i++) { KAction *action = m_openWithActions[i]; delete action; } m_openWithActions.clear(); KURL urlToOpen = currentURL(); QString mimeType = KMimeType::findByURL(urlToOpen, 0, true, true)->name(); KTrader::OfferList offers = KTrader::self()->query(mimeType, "Type == 'Application'"); QDict<QuantaPlugin> plugins = QuantaPluginInterface::ref()->plugins(); m_pluginIds.clear(); if (offers.count() > 0 || plugins.count() > 0) { m_openWithMenu = new KPopupMenu(this); if (offers.count() > 0) { KTrader::OfferList::Iterator it; for (it = offers.begin(); it != offers.end(); ++it) { KAction *action = new KAction((*it)->name(), (*it)->icon(), 0, 0, QFile::encodeName((*it)->desktopEntryPath()).data()); connect(action, SIGNAL(activated()), this, SLOT(slotOpenWithApplication())); action->plug(m_openWithMenu); m_openWithActions.append(action); } m_openWithMenu->insertSeparator(); } if (plugins.count() > 0) { m_openWithMenu->insertTitle(i18n("Plugins")); QDictIterator<QuantaPlugin> it2(plugins); for(;it2.current();++it2) { int id = m_openWithMenu->insertItem(KGlobal::iconLoader()->loadIconSet(it2.current()->icon(),KIcon::Small), it2.current()->name()); m_pluginIds[id] = it2.current(); } connect(m_openWithMenu, SIGNAL(activated(int)), SLOT(slotOpenWithActivated(int))); m_openWithMenu->insertSeparator(); } m_openWithMenu->insertItem(i18n("&Other..."), this, SLOT(slotOpenWith())); m_openWithMenuId = menu->insertItem(i18n("Open &With"), m_openWithMenu, -1, position); } else m_openWithMenuId = menu->insertItem(i18n("Open &With..."), this, SLOT(slotOpenWith()), 0, -1, position); }
QValueList<KDataToolInfo> KDataToolInfo::query( const QString& datatype, const QString& mimetype, KInstance* instance ) { QValueList<KDataToolInfo> lst; QString constr; if ( !datatype.isEmpty() ) { constr = QString::fromLatin1( "DataType == '%1'" ).arg( datatype ); } if ( !mimetype.isEmpty() ) { QString tmp = QString::fromLatin1( "'%1' in DataMimeTypes" ).arg( mimetype ); if ( constr.isEmpty() ) constr = tmp; else constr = constr + " and " + tmp; } /* Bug in KTrader ? Test with HEAD-kdelibs! if ( instance ) { QString tmp = QString::fromLatin1( "not ('%1' in ExcludeFrom)" ).arg( instance->instanceName() ); if ( constr.isEmpty() ) constr = tmp; else constr = constr + " and " + tmp; } */ // Query the trader //kdDebug() << "KDataToolInfo::query " << constr << endl; KTrader::OfferList offers = KTrader::self()->query( "KDataTool", constr ); KTrader::OfferList::ConstIterator it = offers.begin(); for( ; it != offers.end(); ++it ) { // Temporary replacement for the non-working trader query above if ( !instance || !(*it)->property("ExcludeFrom").toStringList() .contains( instance->instanceName() ) ) lst.append( KDataToolInfo( *it, instance ) ); else kdDebug() << (*it)->entryPath() << " excluded." << endl; } return lst; }
void KDiffTextEdit::searchExtParts() { // only execute once static bool init = false; if ( init ) return; init = true; // search all parts that can handle text/x-diff KTrader::OfferList offers = KTrader::self()->query("text/x-diff", "('KParts/ReadOnlyPart' in ServiceTypes) and ('text/x-diff' in ServiceTypes) and (DesktopEntryName != 'katepart')"); KTrader::OfferList::const_iterator it; for ( it = offers.begin(); it != offers.end(); ++it ) { KService::Ptr ptr = (*it); extPartsTranslated << ptr->name(); extParts << ptr->desktopEntryName(); } return; }
void XXPortManager::loadPlugins() { mXXPortObjects.clear(); const KTrader::OfferList plugins = KTrader::self()->query("KAddressBook/XXPort", QString("[X-KDE-KAddressBook-XXPortPluginVersion] == %1").arg(KAB_XXPORT_PLUGIN_VERSION)); KTrader::OfferList::ConstIterator it; for(it = plugins.begin(); it != plugins.end(); ++it) { if(!(*it)->hasServiceType("KAddressBook/XXPort")) continue; KLibFactory *factory = KLibLoader::self()->factory((*it)->library().latin1()); if(!factory) { kdDebug(5720) << "XXPortManager::loadExtensions(): Factory creation failed" << endl; continue; } KAB::XXPortFactory *xxportFactory = static_cast<KAB::XXPortFactory *>(factory); if(!xxportFactory) { kdDebug(5720) << "XXPortManager::loadExtensions(): Cast failed" << endl; continue; } KAB::XXPort *obj = xxportFactory->xxportObject(mCore->addressBook(), mCore->widget()); if(obj) { if(mCore->guiClient()) mCore->guiClient()->insertChildClient(obj); mXXPortObjects.insert(obj->identifier(), obj); connect(obj, SIGNAL(exportActivated(const QString &, const QString &)), this, SLOT(slotExport(const QString &, const QString &))); connect(obj, SIGNAL(importActivated(const QString &, const QString &)), this, SLOT(slotImport(const QString &, const QString &))); obj->setKApplication(kapp); } } }
void EditorSelection::readConfig() { m_editorsCombo->clear(); KTrader::OfferList editors = KTrader::self()->query( QString::fromLatin1("Komposer/Editor")); KTrader::OfferList::ConstIterator it; int i = 0; for(it = editors.begin(); it != editors.end(); ++it, ++i) { if(!(*it)->hasServiceType(QString::fromLatin1("Komposer/Editor"))) continue; QString name = (*it)->property("X-KDE-KomposerIdentifier").toString(); m_editorsCombo->insertItem(name); if(m_reference.contains(name)) m_editorsCombo->setCurrentItem(i); } }
// static factory method KOCRDialog * KOCRDialog::getOCRDialog( QWidget *parent, const char *name, bool modal ) { KTrader::OfferList offers = KTrader::self()->query("KScan/KOCRDialog"); if ( offers.isEmpty() ) return 0L; KService::Ptr ptr = *(offers.begin()); KLibFactory *factory = KLibLoader::self()->factory( QFile::encodeName(ptr->library()) ); if ( !factory ) return 0; QStringList args; args << QString::number( (int)modal ); QObject *res = factory->create( parent, name, "KOCRDialog", args ); return dynamic_cast<KOCRDialog *>( res ); }
void KURIFilter::loadPlugins() { KTrader::OfferList offers = KTrader::self()->query("KURIFilter/Plugin"); KTrader::OfferList::ConstIterator it = offers.begin(); KTrader::OfferList::ConstIterator end = offers.end(); for(; it != end; ++it) { KURIFilterPlugin *plugin = KParts::ComponentFactory::createInstanceFromService< KURIFilterPlugin >(*it, 0, (*it)->desktopEntryName().latin1()); if(plugin) m_lstPlugins.append(plugin); } // NOTE: Plugin priority is now determined by // the entry in the .desktop files... // TODO: Config dialog to differentiate "system" // plugins from "user-defined" ones... // m_lstPlugins.sort(); }
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); } } } }
Plugin* PluginManager::createFromQuery( const QString &constraint ) { Debug::Block block( __PRETTY_FUNCTION__ ); KTrader::OfferList offers = query( constraint ); if ( offers.isEmpty() ) { warning() << k_funcinfo << "No matching plugin found.\n"; return 0; } // Select plugin with highest rank int rank = 0; uint current = 0; for ( uint i = 0; i < offers.count(); i++ ) { if ( offers[i]->property( "X-KDE-amaroK-rank" ).toInt() > rank ) current = i; } return createFromService( offers[current] ); }
void PluginSelection::readConfig() { const KTrader::OfferList offers = KTrader::self()->query( QString::fromLatin1( "Kontact/Plugin" ), QString( "[X-KDE-KontactPluginVersion] == %1" ).arg( KONTACT_PLUGIN_VERSION ) ); int activeComponent = 0; mPluginCombo->clear(); for ( KService::List::ConstIterator it = offers.begin(); it != offers.end(); ++it ) { KService::Ptr service = *it; // skip summary only plugins QVariant var = service->property( "X-KDE-KontactPluginHasPart" ); if ( var.isValid() && var.toBool() == false ) continue; mPluginCombo->insertItem( service->name() ); mPluginList.append( service ); if ( service->property("X-KDE-PluginInfo-Name").toString() == mItem->value() ) activeComponent = mPluginList.count() - 1; } mPluginCombo->setCurrentItem( activeComponent ); }
EditorChooser::EditorChooser(QWidget *parent, const char *name) : QWidget(parent, name) { d = new PrivateEditorChooser(); // sizemanagment QGridLayout *grid = new QGridLayout(this, 1, 1); d->chooser = new EditorChooser_UI(this, name); grid->addWidget(d->chooser, 0, 0); KTrader::OfferList offers = KTrader::self()->query("text/plain", "'KTextEditor/Document' in ServiceTypes"); KConfig *config = new KConfig("default_components"); config->setGroup("KTextEditor"); QString editor = config->readPathEntry("embeddedEditor"); if(editor.isEmpty()) editor = "katepart"; for(KTrader::OfferList::Iterator it = offers.begin(); it != offers.end(); ++it) { if((*it)->desktopEntryName().contains(editor)) { d->chooser->editorCombo->insertItem(i18n("System Default (%1)").arg((*it)->name())); break; } } for(KTrader::OfferList::Iterator it = offers.begin(); it != offers.end(); ++it) { d->chooser->editorCombo->insertItem((*it)->name()); d->elements.append((*it)->desktopEntryName()); } d->chooser->editorCombo->setCurrentItem(0); }
void ContactEditorWidgetManager::reload() { mFactories.clear(); kdDebug(5720) << "ContactEditorWidgetManager::reload()" << endl; const KTrader::OfferList plugins = KTrader::self()->query("KAddressBook/ContactEditorWidget", QString("[X-KDE-KAddressBook-CEWPluginVersion] == %1").arg(KAB_CEW_PLUGIN_VERSION)); KTrader::OfferList::ConstIterator it; for(it = plugins.begin(); it != plugins.end(); ++it) { KLibFactory *factory = KLibLoader::self()->factory((*it)->library().latin1()); if(!factory) { kdDebug(5720) << "ContactEditorWidgetManager::reload(): Factory creation failed" << endl; continue; } KAB::ContactEditorWidgetFactory *pageFactory = static_cast<KAB::ContactEditorWidgetFactory *>(factory); if(!pageFactory) { kdDebug(5720) << "ContactEditorWidgetManager::reload(): Cast failed" << endl; continue; } mFactories.append(pageFactory); } // add all non-plugin contact editor factories mFactories.append(new FreeBusyWidgetFactory); mFactories.append(new ImageWidgetFactory); mFactories.append(new SoundWidgetFactory); mFactories.append(new GeoWidgetFactory); mFactories.append(new CustomFieldsWidgetFactory); }
int KDCOPServiceStarter::findServiceFor( const QString& serviceType, const QString& _constraint, const QString& preferences, QString *error, QCString* pDcopService, int flags ) { // Ask the trader which service is preferred for this servicetype // We want one that provides a DCOP interface QString constraint = _constraint; if ( !constraint.isEmpty() ) constraint += " and "; constraint += "exist [X-DCOP-ServiceName]"; KTrader::OfferList offers = KTrader::self()->query(serviceType, "Application", constraint, preferences); if ( offers.isEmpty() ) { if ( error ) *error = i18n("No service implementing %1").arg( serviceType ); kdWarning() << "KDCOPServiceStarter: No service implementing " << serviceType << endl; return -1; } KService::Ptr ptr = offers.first(); QCString dcopService = ptr->property("X-DCOP-ServiceName").toString().latin1(); if ( !kapp->dcopClient()->isApplicationRegistered( dcopService ) ) { QString error; if ( startServiceFor( serviceType, constraint, preferences, &error, &dcopService, flags ) != 0 ) { kdDebug() << "KDCOPServiceStarter: Couldn't start service: " << error << endl; return -2; } } kdDebug() << "KDCOPServiceStarter: DCOP service is available now, as " << dcopService << endl; if ( pDcopService ) *pDcopService = dcopService; return 0; }
int DolphinContextMenu::insertOpenWithItems(KPopupMenu* popup, QValueVector<KService::Ptr>& openWithVector) { // Prepare 'Open With' sub menu. Usually a sub menu is created, where all applications // are listed which are registered to open the item. As last entry "Other..." will be // attached which allows to select a custom application. If no applications are registered // no sub menu is created at all, only "Open With..." will be offered. const KFileItemList* list = m_dolphinView->selectedItems(); assert(list != 0); bool insertOpenWithItems = true; const QString contextMimeType(m_fileInfo->mimetype()); KFileItemListIterator mimeIt(*list); KFileItem* item = 0; while (insertOpenWithItems && ((item = mimeIt.current()) != 0)) { insertOpenWithItems = (contextMimeType == item->mimetype()); ++mimeIt; } int openWithID = -1; if (insertOpenWithItems) { // fill the 'Open with' sub menu with application types const KMimeType::Ptr mimePtr = KMimeType::findByURL(m_fileInfo->url()); KTrader::OfferList offers = KTrader::self()->query(mimePtr->name(), "Type == 'Application'"); int index = openWithIDStart; if (offers.count() > 0) { KTrader::OfferList::Iterator it; KPopupMenu* openWithMenu = new KPopupMenu(); for(it = offers.begin(); it != offers.end(); ++it) { // The offer list from the KTrader returns duplicate // application entries. Although this seems to be a configuration // problem outside the scope of Dolphin, duplicated entries just // will be skipped here. const QString appName((*it)->name()); if (!containsEntry(openWithMenu, appName)) { openWithMenu->insertItem((*it)->pixmap(KIcon::Small), appName, index); openWithVector.append(*it); ++index; } } openWithMenu->insertSeparator(); openWithMenu->insertItem(i18n("&Other..."), index); popup->insertItem(i18n("Open With"), openWithMenu); } else { // No applications are registered, hence just offer // a "Open With..." item instead of a sub menu containing // only one entry. popup->insertItem(i18n("Open With..."), openWithIDStart); } openWithID = index; } else { // At least one of the selected items has a different MIME type. In this case // just show a disabled "Open With..." entry. popup->insertItem(i18n("Open With..."), openWithIDStart); popup->setItemEnabled(openWithIDStart, false); } popup->setItemEnabled(openWithID, insertOpenWithItems); return openWithID; }
kgitView::kgitView(QWidget *parent) : kgitViewbase(parent), DCOPObject("kgitIface") { // 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/plain", "'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/*(QWidget *)layout4->parent()*/, 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; } //layout4->addWidget(m_html->widget()); m_html->widget()->hide(); connect(m_html, SIGNAL(setWindowCaption(const QString&)), this, SLOT(slotSetTitle(const QString&))); connect(m_html, SIGNAL(setStatusBarText(const QString&)), this, SLOT(slotOnURL(const QString&))); gitProc = new KProcIO; connect((QObject *)CommitButton,SIGNAL(clicked()),this,SLOT(slotCommitCurrent())); connect((QObject *)DiscardChangesButton,SIGNAL(clicked()),this,SLOT(slotDiscardChanges())); connect((QObject *)UndoCommitButton,SIGNAL(clicked()),this,SLOT(slotUndoLastCommit())); connect((QObject *)RevertCommitButton,SIGNAL(clicked()),this,SLOT(slotRevertCommit())); connect((QObject *)CherryPickFromOtherButton,SIGNAL(clicked()),this,SLOT(slotCherryPickFromOther())); connect((QObject *)SendPatchButton,SIGNAL(clicked()),this,SLOT(slotSendPatch())); connect(comboBoxBranches, SIGNAL(activated(const QString&)),this,SLOT(slotGitChangeBranch(const QString&))); connect(ShortLogList, SIGNAL(doubleClicked( QListViewItem *, const QPoint &, int ) ),this,SLOT(slotGitShowCommitDiff())); ShortLogList->setSorting(-1); connect(RepoTreeList, SIGNAL(selectionChanged()),this,SLOT(slotUpdateFilesToCommit())); connect(FileListFilterText, SIGNAL(textChanged ( const QString & )),this,SLOT(slotFileFilter(const QString &))); commit_files = new QStringList; branches = new QStringList; busyWaiting=0; }
AmarokConfigDialog::AmarokConfigDialog( QWidget *parent, const char* name, KConfigSkeleton *config ) : KConfigDialog( parent, name, config ) , m_engineConfig( 0 ) , m_opt4( 0 ) { setWFlags( WDestructiveClose ); // IMPORTANT Don't simply change the page names, they are used as identifiers in other parts of the app. m_opt1 = new Options1( 0, "General" ); m_opt2 = new Options2( 0, "Appearance" ); m_opt4 = new Options4( 0, "Playback" ); Options5 *opt5 = new Options5( 0, "OSD" ); QVBox *opt6 = new QVBox; m_opt7 = new Options7( 0, "Collection" ); Options8 *opt8 = new Options8( 0, "Scrobbler" ); // Sound System opt6->setName( "Engine" ); opt6->setSpacing( 12 ); opt6->setMargin( 11 ); QWidget *groupBox, *aboutEngineButton; groupBox = new QGroupBox( 2, Qt::Horizontal, i18n("Sound System"), opt6 ); m_engineConfigFrame = new QGroupBox( 1, Qt::Horizontal, opt6 ); m_soundSystem = new QComboBox( false, groupBox ); aboutEngineButton = new QPushButton( i18n("About"), groupBox ); QToolTip::add( m_soundSystem, i18n("Click to select the sound system to use for playback.") ); QToolTip::add( aboutEngineButton, i18n("Click to get the plugin information.") ); KTrader::OfferList offers = PluginManager::query( "[X-KDE-amaroK-plugintype] == 'engine'" ); KTrader::OfferList::ConstIterator end( offers.end() ); for( KTrader::OfferList::ConstIterator it = offers.begin(); it != end; ++it ) { m_soundSystem->insertItem( (*it)->name() ); // Save name properties in QMap for lookup m_pluginName[(*it)->name()] = (*it)->property( "X-KDE-amaroK-name" ).toString(); m_pluginAmarokName[(*it)->property( "X-KDE-amaroK-name" ).toString()] = (*it)->name(); } // KConfigXT doesn't like Comboboxes, still, 2 versions after // it was created. How shit. Hence we can't make recodeEncoding // a string (which we need to because by index is not consistent) QTextCodec *codec; m_opt1->kcfg_RecodeEncoding->insertItem( i18n("Locale Encoding") ); for( int i = 1; (codec = QTextCodec::codecForIndex( i )); i++ ) m_opt1->kcfg_RecodeEncoding->insertItem( codec->name() ); // Collection #if !defined(USE_MYSQL) && !defined(USE_POSTGRESQL) m_opt7->databaseBox->hide(); #endif #ifndef USE_MYSQL //FIXME we do this because this widget breaks the Apply button (always enabled). //It breaks because it is set to type="password" in the .kcfg file. Setting to //type="string" also fixes this bug, but means the password is stored in plain //text. This is a temporary fix so that the majority of users get a fixed Apply //button. delete m_opt7->dbSetupFrame->kcfg_MySqlPassword; #endif m_opt7->collectionFoldersBox->setColumns( 1 ); new CollectionSetup( m_opt7->collectionFoldersBox ); //TODO this widget doesn't update the apply/ok buttons // add pages addPage( m_opt1, i18n( "General" ), "misc", i18n( "Configure General Options" ) ); addPage( m_opt2, i18n( "Appearance" ), "colors", i18n( "Configure amaroK's Appearance" ) ); addPage( m_opt4, i18n( "Playback" ), "kmix", i18n( "Configure Playback" ) ); addPage( opt5, i18n( "OSD" ), "tv", i18n( "Configure On-Screen-Display" ) ); addPage( opt6, i18n( "Engine" ), "amarok", i18n( "Configure Engine" ) ); addPage( m_opt7, i18n( "Collection" ), "collection", i18n( "Configure Collection" ) ); addPage( opt8, i18n( "last.fm" ), "audioscrobbler", i18n( "Configure last.fm Support" ) ); // Show information labels (must be done after insertions) QObjectList *list = queryList( "QLabel", "infoPixmap" ); for( QObject *label = list->first(); label; label = list->next() ) static_cast<QLabel*>(label)->setPixmap( QMessageBox::standardIcon( QMessageBox::Information ) ); delete list; //stop KFont Requesters getting stupidly large list = queryList( "QLabel", "m_sampleLabel" ); for( QObject *label = list->first(); label; label = list->next() ) static_cast<QLabel*>(label)->setMaximumWidth( 250 ); delete list; connect( m_soundSystem, SIGNAL(activated( int )), SLOT(updateButtons()) ); connect( aboutEngineButton, SIGNAL(clicked()), SLOT(aboutEngine()) ); connect( opt5, SIGNAL(settingsChanged()), SLOT(updateButtons()) ); //see options5.ui.h connect( m_opt2->styleComboBox, SIGNAL( activated( int ) ), SLOT( updateButtons() ) ); connect( m_opt7->dbSetupFrame->databaseEngine, SIGNAL( activated( int ) ), SLOT( updateButtons() ) ); }
AmarokConfigDialog::AmarokConfigDialog( QWidget *parent, const char* name, KConfigSkeleton *config ) : KConfigDialog( parent, name, config ) , m_engineConfig( 0 ) , m_opt4( 0 ) { setWFlags( WDestructiveClose ); // IMPORTANT Don't simply change the page names, they are used as identifiers in other parts of the app. m_opt1 = new Options1( 0, "General" ); m_opt2 = new Options2( 0, "Appearance" ); m_opt4 = new Options4( 0, "Playback" ); Options5 *opt5 = new Options5( 0, "OSD" ); QVBox *opt6 = new QVBox; m_opt7 = new Options7( 0, "Collection" ); Options8 *opt8 = new Options8( 0, "Scrobbler" ); QVBox *opt9 = new QVBox; // Sound System opt6->setName( "Engine" ); opt6->setSpacing( KDialog::spacingHint() ); QWidget *groupBox, *aboutEngineButton; groupBox = new QGroupBox( 2, Qt::Horizontal, i18n("Sound System"), opt6 ); m_engineConfigFrame = new QGroupBox( 1, Qt::Horizontal, opt6 ); m_soundSystem = new QComboBox( false, groupBox ); aboutEngineButton = new QPushButton( i18n("About"), groupBox ); QToolTip::add( m_soundSystem, i18n("Click to select the sound system to use for playback.") ); QToolTip::add( aboutEngineButton, i18n("Click to get the plugin information.") ); /// Populate the engine selection combo box KTrader::OfferList offers = PluginManager::query( "[X-KDE-amaroK-plugintype] == 'engine'" ); KTrader::OfferList::ConstIterator end( offers.end() ); for( KTrader::OfferList::ConstIterator it = offers.begin(); it != end; ++it ) { // Don't list the <no engine> (void engine) entry if it's not currenty active, // cause there's no point in choosing this engine (it's a dummy, after all). if( (*it)->property( "X-KDE-amaroK-name" ).toString() == "void-engine" && AmarokConfig::soundSystem() != "void-engine" ) continue; m_soundSystem->insertItem( (*it)->name() ); // Save name properties in QMap for lookup m_pluginName[(*it)->name()] = (*it)->property( "X-KDE-amaroK-name" ).toString(); m_pluginAmarokName[(*it)->property( "X-KDE-amaroK-name" ).toString()] = (*it)->name(); } // Collection #if !defined(USE_MYSQL) && !defined(USE_POSTGRESQL) m_opt7->databaseBox->hide(); #endif #ifndef USE_MYSQL //FIXME we do this because this widget breaks the Apply button (always enabled). //It breaks because it is set to type="password" in the .kcfg file. Setting to //type="string" also fixes this bug, but means the password is stored in plain //text. This is a temporary fix so that the majority of users get a fixed Apply //button. delete m_opt7->dbSetupFrame->kcfg_MySqlPassword2; #endif m_opt7->collectionFoldersBox->setColumns( 1 ); new CollectionSetup( m_opt7->collectionFoldersBox ); //TODO this widget doesn't update the apply/ok buttons // Media Devices opt9->setName( "Media Devices" ); opt9->setSpacing( KDialog::spacingHint() ); QVBox *topbox = new QVBox( opt9 ); topbox->setSpacing( KDialog::spacingHint() ); QGroupBox *mediaBox = new QGroupBox( 2, Qt::Horizontal, i18n("Media Devices"), topbox ); mediaBox->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Minimum ); QVBox *vbox = new QVBox( mediaBox ); vbox->setSpacing( KDialog::spacingHint() ); m_deviceManager = new MediumPluginManager( vbox ); QHBox *hbox = new QHBox( topbox ); hbox->setSpacing( KDialog::spacingHint() ); hbox->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Minimum ); KPushButton *autodetect = new KPushButton( i18n( "Autodetect Devices" ), hbox ); autodetect->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); connect( autodetect, SIGNAL(clicked()), m_deviceManager, SLOT(redetectDevices()) ); KPushButton *add = new KPushButton( i18n( "Add Device..." ), hbox ); add->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); connect( add, SIGNAL(clicked()), m_deviceManager, SLOT(newDevice()) ); QFrame *frame = new QFrame( topbox ); frame->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ); // add pages addPage( m_opt1, i18n( "General" ), "misc", i18n( "Configure General Options" ) ); addPage( m_opt2, i18n( "Appearance" ), "colors", i18n( "Configure amaroK's Appearance" ) ); addPage( m_opt4, i18n( "Playback" ), "kmix", i18n( "Configure Playback" ) ); addPage( opt5, i18n( "OSD" ), "tv", i18n( "Configure On-Screen-Display" ) ); addPage( opt6, i18n( "Engine" ), "amarok", i18n( "Configure Engine" ) ); addPage( m_opt7, i18n( "Collection" ), amaroK::icon( "collection" ), i18n( "Configure Collection" ) ); addPage( opt8, i18n( "last.fm" ), "audioscrobbler", i18n( "Configure last.fm Support" ) ); addPage( opt9, i18n( "Media Devices" ), amaroK::icon( "device" ), i18n( "Configure Portable Player Support" ) ); // Show information labels (must be done after insertions) QObjectList *list = queryList( "QLabel", "infoPixmap" ); for( QObject *label = list->first(); label; label = list->next() ) static_cast<QLabel*>(label)->setPixmap( QMessageBox::standardIcon( QMessageBox::Information ) ); delete list; //stop KFont Requesters getting stupidly large list = queryList( "QLabel", "m_sampleLabel" ); for( QObject *label = list->first(); label; label = list->next() ) static_cast<QLabel*>(label)->setMaximumWidth( 250 ); delete list; connect( m_deviceManager, SIGNAL(changed()), SLOT(updateButtons()) ); connect( m_soundSystem, SIGNAL(activated( int )), SLOT(updateButtons()) ); connect( aboutEngineButton, SIGNAL(clicked()), SLOT(aboutEngine()) ); connect( opt5, SIGNAL(settingsChanged()), SLOT(updateButtons()) ); //see options5.ui.h connect( m_opt2->styleComboBox, SIGNAL( activated( int ) ), SLOT( updateButtons() ) ); connect( m_opt7->dbSetupFrame->databaseEngine, SIGNAL( activated( int ) ), SLOT( updateButtons() ) ); connect( m_opt1->kComboBox_browser, SIGNAL( activated( int ) ), SLOT( updateButtons() ) ); connect( m_opt1->kLineEdit_customBrowser, SIGNAL( textChanged( const QString& ) ), SLOT( updateButtons() ) ); }
PluginBase::PluginBase(ExecState *exec, bool loadPluginInfo) : ObjectImp(exec->interpreter()->builtinObjectPrototype()) { if(loadPluginInfo && !plugins) { plugins = new QPtrList< PluginInfo >; mimes = new QPtrList< MimeClassInfo >; plugins->setAutoDelete(true); mimes->setAutoDelete(true); // read in using KTrader KTrader::OfferList offers = KTrader::self()->query("Browser/View"); KTrader::OfferList::iterator it; for(it = offers.begin(); it != offers.end(); ++it) { QVariant pluginsinfo = (**it).property("X-KDE-BrowserView-PluginsInfo"); if(!pluginsinfo.isValid()) { // <backwards compatible> if((**it).library() == QString("libnsplugin")) pluginsinfo = QVariant("nsplugins/pluginsinfo"); else // </backwards compatible> continue; } // read configuration KConfig kc(locate("data", pluginsinfo.toString())); unsigned num = (unsigned int)kc.readNumEntry("number"); for(unsigned n = 0; n < num; n++) { kc.setGroup(QString::number(n)); PluginInfo *plugin = new PluginInfo; plugin->name = kc.readEntry("name"); plugin->file = kc.readPathEntry("file"); plugin->desc = kc.readEntry("description"); plugins->append(plugin); // get mime types from string QStringList types = QStringList::split(';', kc.readEntry("mime")); QStringList::Iterator type; for(type = types.begin(); type != types.end(); ++type) { // get mime information QStringList tokens = QStringList::split(':', *type, true); if(tokens.count() < 3) // we need 3 items continue; MimeClassInfo *mime = new MimeClassInfo; QStringList::Iterator token = tokens.begin(); mime->type = (*token).lower(); // kdDebug(6070) << "mime->type=" << mime->type << endl; ++token; mime->suffixes = *token; ++token; mime->desc = *token; ++token; mime->plugin = plugin; mimes->append(mime); plugin->mimes.append(mime); } } } } m_refCount++; }
void DebuggerManager::slotNewProjectLoaded(const QString &projectname, const KURL &, const KURL &) { if(m_client) { disconnect(m_client, SIGNAL(updateStatus(DebuggerUI::DebuggerStatus)), m_debuggerui, SLOT(slotStatus(DebuggerUI::DebuggerStatus))); delete m_client; m_client = NULL; } enableAction("*", false); // Remove all breakpoints m_breakpointList->clear(); if(m_debuggerui) { delete m_debuggerui; m_debuggerui = NULL; } //kdDebug(24002) << "DebuggerManager::slotNewProjectLoaded " << projectname << ", " << Project::ref()->debuggerClient << endl; // Load new client if(!projectname.isEmpty()) { KTrader::OfferList offers = KTrader::self()->query("Quanta/Debugger"); KTrader::OfferList::ConstIterator iterDbg; for(iterDbg = offers.begin(); iterDbg != offers.end(); ++iterDbg) { KService::Ptr service = *iterDbg; if(Project::ref()->debuggerClient() == service->name()) { int errCode = 0; //Workaround for dynamic_cast not working correctly on SUSE 10, gcc 4.0.2 //The correct way should be a simple: // m_client = KParts::ComponentFactory::createInstanceFromService<DebuggerClient>(service, this, 0, QStringList(), &errCode); QObject* obj = KParts::ComponentFactory::createInstanceFromService<QObject>(service, this, 0, QStringList(), &errCode); if (obj && obj->inherits("DebuggerClient")) m_client = static_cast<DebuggerClient *>(obj); //kdDebug(24002) << service->name() << " (" << m_client << ")" << endl; if(!m_client) { emit hideSplash(); KMessageBox::error(NULL, i18n("<qt>Unable to load the debugger plugin, error code %1 was returned: <b>%2</b>.</qt>").arg(errCode).arg(KLibLoader::self()->lastErrorMessage()), i18n("Debugger Error")); } break; } } } // Tell client to load its settings if (m_client) { QDomNode nodeThisDbg; QDomDocument *dom = Project::ref()->sessionDom(); QDomNode projectNode = dom->firstChild().firstChild(); QDomNode nodeDbg = projectNode.namedItem("debuggers"); if(nodeDbg.isNull()) { nodeDbg = dom->createElement("debuggers"); projectNode.appendChild(nodeDbg); } // Load this project's mapped paths m_pathmapper->readConfig(); // Load this projects debugger's settings nodeThisDbg = nodeDbg.namedItem(m_client->getName()); if(nodeThisDbg.isNull()) { nodeThisDbg = dom->createElement(m_client->getName()); nodeDbg.appendChild(nodeThisDbg); } m_client->readConfig(nodeThisDbg); // recreate UI m_debuggerui = new DebuggerUI(this, "debuggerui"); connect(m_client, SIGNAL(updateStatus(DebuggerUI::DebuggerStatus)), m_debuggerui, SLOT(slotStatus(DebuggerUI::DebuggerStatus))); // Load saved breakpoints if(Project::ref()->debuggerPersistentBreakpoints()) { QDomNode nodeBreakpoints = nodeDbg.namedItem("breakpoints"); if(!nodeBreakpoints.isNull()) { QDomNode child = nodeBreakpoints.firstChild(); while(!child.isNull()) { DebuggerBreakpoint* bp = new DebuggerBreakpoint(); bp->setFilePath( child.attributes().namedItem("filepath").nodeValue()); bp->setClass( child.attributes().namedItem("class").nodeValue()); bp->setFunction( child.attributes().namedItem("function").nodeValue()); bp->setCondition( child.attributes().namedItem("condition").nodeValue()); bp->setLine( child.attributes().namedItem("line").nodeValue().toLong()); if(child.attributes().namedItem("type").nodeValue() == "true") bp->setType(DebuggerBreakpoint::ConditionalTrue); else if(child.attributes().namedItem("type").nodeValue() == "change") bp->setType(DebuggerBreakpoint::ConditionalChange); else bp->setType(DebuggerBreakpoint::LineBreakpoint); // Update client and ui m_client->addBreakpoint(bp); m_breakpointList->add(bp); // loop child = child.nextSibling(); } } } // Load saved Watches if(Project::ref()->debuggerPersistentWatches()) { QDomNode nodeWatches = nodeDbg.namedItem("watches"); if(!nodeWatches.isNull()) { QDomNode child = nodeWatches.firstChild(); while(!child.isNull()) { QString watch = child.attributes().namedItem("name").nodeValue(); DebuggerVariable *var = new DebuggerVariable(watch, "", DebuggerVariableTypes::Undefined); m_debuggerui->addVariable(var); m_client->addWatch(watch); child = child.nextSibling(); } } } } initClientActions(); // Disable all debugactions that need a session (ie not breakpoints, etc) slotDebugStartSession(); }
void Project::slotOptions() { KURL url; KDialogBase optionsDlg(KDialogBase::Tabbed, WStyle_DialogBorder, d->m_mainWindow, "project_options", true, i18n("Project Settings"), KDialogBase::Ok | KDialogBase::Cancel); // optionsDlg.setMainWidget(&optionsPage); //add the main options page QFrame *page = optionsDlg.addPage(i18n("Options")); ProjectOptions optionsPage(page); QVBoxLayout *topLayout = new QVBoxLayout( page, 0, KDialog::spacingHint() ); topLayout->addWidget(&optionsPage); optionsPage.linePrjName->setText( d->projectName ); url = QExtFileInfo::toRelative(d->templateURL, d->baseURL); optionsPage.linePrjTmpl->setText(QuantaCommon::qUrl(url)); url = QExtFileInfo::toRelative(d->toolbarURL, d->baseURL); optionsPage.linePrjToolbar->setText( QuantaCommon::qUrl(url) ); optionsPage.lineAuthor->setText( d->author ); optionsPage.lineEmail->setText( d->email ); // Signals to handle debugger settings connect(optionsPage.buttonDebuggerOptions, SIGNAL(clicked()), d, SLOT(slotDebuggerOptions())); connect(optionsPage.comboDebuggerClient, SIGNAL(activated(const QString &)), d, SLOT(slotDebuggerChanged(const QString &))); // Debuggers Combo KTrader::OfferList offers = KTrader::self()->query("Quanta/Debugger"); KTrader::OfferList::ConstIterator iterDbg; optionsPage.comboDebuggerClient->clear(); optionsPage.comboDebuggerClient->insertItem(i18n("No Debugger")); int idxDbg = 0; d->m_debuggerClientEdit = d->debuggerClient; optionsPage.buttonDebuggerOptions->setEnabled(false); for(iterDbg = offers.begin(); iterDbg != offers.end(); ++iterDbg) { KService::Ptr service = *iterDbg; optionsPage.comboDebuggerClient->insertItem(service->name()); idxDbg++; if(d->debuggerClient == service->name()) { optionsPage.comboDebuggerClient->setCurrentItem(idxDbg); optionsPage.buttonDebuggerOptions->setEnabled(true); } } optionsPage.checkDebuggerPersistentBreakpoints->setChecked(d->m_debuggerPersistentBreakpoints); optionsPage.checkDebuggerPersistentWatches->setChecked(d->m_debuggerPersistentWatches); QString excludeStr; for (uint i = 0; i < d->excludeList.count(); i++) { excludeStr.append(d->excludeList[i]); excludeStr.append(";"); } optionsPage.lineExclude->setText(excludeStr); optionsPage.checkCvsignore->setChecked(d->m_excludeCvsignore); optionsPage.linePrefix->setText(d->previewPrefix.prettyURL()); QStringList lst = DTDs::ref()->nickNameList(true); uint pos = 0; for (uint i = 0; i < lst.count(); i++) { optionsPage.dtdCombo->insertItem(lst[i]); if (lst[i] == DTDs::ref()->getDTDNickNameFromName(d->m_defaultDTD)) pos = i; } optionsPage.dtdCombo->setCurrentItem(pos); QStringList availableEncodingNames(KGlobal::charsets()->availableEncodingNames()); optionsPage.encodingCombo->insertStringList( availableEncodingNames ); QStringList::ConstIterator iter; int iIndex = -1; for (iter = availableEncodingNames.begin(); iter != availableEncodingNames.end(); ++iter) { ++iIndex; if ((*iter).lower() == d->m_defaultEncoding.lower()) { optionsPage.encodingCombo->setCurrentItem(iIndex); break; } } QStringList list = d->projectViewList(); QString defaultView = d->dom.firstChild().firstChild().namedItem("autoload").toElement().attribute("projectview"); if (list.count() > 0) { optionsPage.viewCombo->insertStringList(list); for (uint i = 0; i < list.count(); i++) { if (list[i] == defaultView) { optionsPage.viewCombo->setCurrentItem(i); break; } } } else { optionsPage.viewCombo->insertItem(i18n("No view was saved yet.")); optionsPage.viewCombo->setEnabled(false); } optionsPage.checkPrefix->setChecked(d->usePreviewPrefix); optionsPage.checkPersistentBookmarks->setChecked(d->m_persistentBookmarks); //add upload profiles page page = optionsDlg.addPage(i18n("Up&load Profiles")); UploadProfilesPage uploadProfilesPage(page); topLayout = new QVBoxLayout( page, 0, KDialog::spacingHint() ); topLayout->addWidget(&uploadProfilesPage); QDomElement uploadEl = d->m_sessionDom.firstChild().firstChild().namedItem("uploadprofiles").toElement(); uploadProfilesPage.profileLabel->setText(uploadEl.attribute("defaultProfile")); uploadProfilesPage.checkShowUploadTreeviews->setChecked(d->m_showUploadTreeviews); //add the team members page page = optionsDlg.addPage(i18n("Team Configuration")); TeamMembersDlg membersPage(page); topLayout = new QVBoxLayout( page, 0, KDialog::spacingHint() ); topLayout->addWidget(&membersPage); QListViewItem *item; if (!teamLeader().name.isEmpty()) { TeamMember member = teamLeader(); item = new QListViewItem(membersPage.membersListView, member.name, member.nickName, member.email, i18n("Team Leader"), member.task); membersPage.membersListView->insertItem(item); } for (QMap<QString, TeamMember>::ConstIterator it = d->m_subprojectLeaders.constBegin(); it != d->m_subprojectLeaders.constEnd(); ++it) { TeamMember member = it.data(); item = new QListViewItem(membersPage.membersListView, member.name, member.nickName, member.email, i18n("Subproject Leader"), member.task, it.key()); } for (QMap<QString, TeamMember>::ConstIterator it = d->m_taskLeaders.constBegin(); it != d->m_taskLeaders.constEnd(); ++it) { TeamMember member = it.data(); item = new QListViewItem(membersPage.membersListView, member.name, member.nickName, member.email, i18n("Task Leader"), it.key()); } for (QValueList<TeamMember>::ConstIterator it = d->m_simpleMembers.constBegin(); it != d->m_simpleMembers.constEnd(); ++it) { TeamMember member = *it; item = new QListViewItem(membersPage.membersListView, member.name, member.nickName, member.email, i18n("Simple Member"), member.task); } membersPage.mailingListEdit->setText(d->m_mailingList); membersPage.setYourself(d->m_yourself); //add the event configuration page page = optionsDlg.addPage(i18n("Event Configuration")); EventConfigurationDlg eventsPage(d->m_mainWindow->actionCollection(), page); topLayout = new QVBoxLayout( page, 0, KDialog::spacingHint() ); topLayout->addWidget(&eventsPage); eventsPage.initEvents(d->m_events); eventsPage.enableEventsBox->setChecked(d->m_eventsEnabled); if ( optionsDlg.exec() ) { d->projectName = optionsPage.linePrjName->text(); d->author = optionsPage.lineAuthor ->text(); d->email = optionsPage.lineEmail ->text(); // Debugger d->debuggerClient = optionsPage.comboDebuggerClient->currentText(); d->m_debuggerPersistentBreakpoints = optionsPage.checkDebuggerPersistentBreakpoints->isChecked(); d->m_debuggerPersistentWatches = optionsPage.checkDebuggerPersistentWatches->isChecked(); d->m_defaultDTD = DTDs::ref()->getDTDNameFromNickName(optionsPage.dtdCombo->currentText()).lower(); d->m_defaultEncoding = optionsPage.encodingCombo->currentText(); QuantaCommon::setUrl(d->templateURL, optionsPage.linePrjTmpl->text()); d->templateURL.adjustPath(1); d->templateURL = QExtFileInfo::toAbsolute(d->templateURL, d->baseURL); if (!QExtFileInfo::createDir(d->templateURL, d->m_mainWindow)) { QuantaCommon::dirCreationError(d->m_mainWindow, d->templateURL); } QuantaCommon::setUrl(d->toolbarURL, optionsPage.linePrjToolbar->text()); d->toolbarURL.adjustPath(1); d->toolbarURL = QExtFileInfo::toAbsolute(d->toolbarURL, d->baseURL); if (!QExtFileInfo::createDir(d->toolbarURL, d->m_mainWindow)) { QuantaCommon::dirCreationError(d->m_mainWindow, d->toolbarURL); } d->previewPrefix = KURL::fromPathOrURL( optionsPage.linePrefix->text() ); d->usePreviewPrefix = optionsPage.checkPrefix->isChecked(); d->m_persistentBookmarks = optionsPage.checkPersistentBookmarks->isChecked(); QDomNode projectNode = d->dom.firstChild().firstChild(); QDomElement el; el = projectNode.toElement(); el.setAttribute("name",d->projectName); el.setAttribute("encoding", d->m_defaultEncoding); el = d->m_sessionDom.firstChild().firstChild().toElement(); el.setAttribute("previewPrefix", d->previewPrefix.url() ); el.setAttribute("usePreviewPrefix", d->usePreviewPrefix ); el.setAttribute("usePersistentBookmarks", d->m_persistentBookmarks); el = projectNode.namedItem("author").toElement(); if (!el.isNull()) el.parentNode().removeChild(el); el =d->dom.createElement("author"); projectNode.appendChild( el ); el.appendChild(d->dom.createTextNode( d->author ) ); el = projectNode.namedItem("email").toElement(); if (!el.isNull()) el.parentNode().removeChild(el); el =d->dom.createElement("email"); projectNode.appendChild( el ); el.appendChild(d->dom.createTextNode( d->email ) ); // Debugger el =projectNode.namedItem("debuggerclient").toElement(); if (!el.isNull()) el.parentNode().removeChild(el); el =d->dom.createElement("debuggerclient"); projectNode.appendChild( el ); el.appendChild(d->dom.createTextNode( d->debuggerClient ) ); el.setAttribute("persistentBreakpoints", d->m_debuggerPersistentBreakpoints); el.setAttribute("persistentWatches", d->m_debuggerPersistentWatches); d->m_excludeCvsignore = optionsPage.checkCvsignore->isChecked(); excludeStr = optionsPage.lineExclude->text(); el =projectNode.namedItem("exclude").toElement(); if (!el.isNull()) el.parentNode().removeChild(el); el =d->dom.createElement("exclude"); if (d->m_excludeCvsignore) el.setAttribute("cvsignore", "true"); else el.setAttribute("cvsignore", "false"); projectNode.appendChild( el ); el.appendChild(d->dom.createTextNode( excludeStr ) ); el =projectNode.namedItem("defaultDTD").toElement(); if(el.isNull()) { el =d->dom.createElement("defaultDTD"); projectNode.appendChild(el); el.appendChild(d->dom.createTextNode(d->m_defaultDTD)); } else { el.firstChild().setNodeValue(d->m_defaultDTD); } el = projectNode.namedItem("templates").toElement(); url = QExtFileInfo::toRelative(d->templateURL, d->baseURL); if(el.isNull()) { el =d->dom.createElement("templates"); projectNode.appendChild(el); el.appendChild(d->dom.createTextNode(QuantaCommon::qUrl(url))); } else { el.firstChild().setNodeValue(QuantaCommon::qUrl(url)); } url = QExtFileInfo::toRelative(d->toolbarURL, d->baseURL); el = projectNode.namedItem("toolbars").toElement(); if(el.isNull()) { el =d->dom.createElement("toolbars"); projectNode.appendChild(el); el.appendChild(d->dom.createTextNode(QuantaCommon::qUrl(url))); } else { el.firstChild().setNodeValue(QuantaCommon::qUrl(url)); } if (optionsPage.viewCombo->isEnabled()) { defaultView = optionsPage.viewCombo->currentText(); el = projectNode.namedItem("autoload").toElement(); if (el.isNull()) { el =d->dom.createElement("autoload"); el.setAttribute("projectview", defaultView); projectNode.appendChild( el ); } else { el.setAttribute("projectview", defaultView); } } uploadEl.setAttribute("showtreeviews", uploadProfilesPage.checkShowUploadTreeviews->isChecked() ? "true" : "false"); QDomNode teamNode = projectNode.namedItem("teamdata"); if (!teamNode.isNull()) projectNode.removeChild(teamNode); teamNode = d->dom.createElement("teamdata"); QDomNode taskLeadersNode = d->dom.createElement("taskleaders"); teamNode.appendChild(taskLeadersNode); QDomNode subLeadersNode = d->dom.createElement("subprojectleaders"); teamNode.appendChild(subLeadersNode); QListViewItemIterator it(membersPage.membersListView); QListViewItem *item; QStringList savedSubprojects; while (it.current()) { item = it.current(); QString role = item->text(3); if (role == i18n(teamLeaderStr.utf8())) { QDomElement leaderEl = d->dom.createElement("leader"); teamNode.appendChild(leaderEl); el = d->dom.createElement("name"); leaderEl.appendChild(el); el.appendChild(d->dom.createTextNode(item->text(0))); el = d->dom.createElement("nickName"); leaderEl.appendChild(el); el.appendChild(d->dom.createTextNode(item->text(1))); el = d->dom.createElement("email"); leaderEl.appendChild(el); el.appendChild(d->dom.createTextNode(item->text(2))); } else if (role == i18n(subprojectLeaderStr.utf8())) { QString prjName = item->text(5); savedSubprojects.append(prjName); QDomElement subEl = d->dom.createElement("subproject"); for (uint i = 0; i < d->m_subprojects.count(); i++) { if (d->m_subprojects[i].name == prjName) { subEl.setAttribute("location", d->m_subprojects[i].location); break; } } subEl.setAttribute("name", prjName); subLeadersNode.appendChild(subEl); el = d->dom.createElement("subprojectleader"); el.setAttribute("name", item->text(0)); el.setAttribute("nickName", item->text(1)); el.setAttribute("email", item->text(2)); subEl.appendChild(el); } else if (role == i18n(taskLeaderStr.utf8())) { el = d->dom.createElement("projecttask"); el.setAttribute("tasklead", item->text(0)); el.setAttribute("nickName", item->text(1)); el.setAttribute("email", item->text(2)); el.setAttribute("task", item->text(4)); taskLeadersNode.appendChild(el); } else if (role == i18n(simpleMemberStr.utf8())) { QDomElement memberEl = d->dom.createElement("member"); memberEl.setAttribute("task", item->text(4)); teamNode.appendChild(memberEl); el = d->dom.createElement("name"); memberEl.appendChild(el); el.appendChild(d->dom.createTextNode(item->text(0))); el = d->dom.createElement("nickName"); memberEl.appendChild(el); el.appendChild(d->dom.createTextNode(item->text(1))); el = d->dom.createElement("email"); memberEl.appendChild(el); el.appendChild(d->dom.createTextNode(item->text(2))); } ++it; } //subprojects without a leader for (uint i = 0; i < d->m_subprojects.count(); i++) { if (!savedSubprojects.contains(d->m_subprojects[i].name)) { el = d->dom.createElement("subproject"); el.setAttribute("name", d->m_subprojects[i].name); el.setAttribute("location", d->m_subprojects[i].location); } } el = d->dom.createElement("mailinglist"); el.setAttribute("address", membersPage.mailingListEdit->text()); teamNode.appendChild(el); projectNode.appendChild(teamNode); teamNode = d->m_sessionDom.firstChild().namedItem("teamdata"); if (!teamNode.isNull()) d->m_sessionDom.firstChild().removeChild(teamNode); d->m_yourself = membersPage.yourself(); el = d->m_sessionDom.createElement("teamdata"); el.setAttribute("yourself", d->m_yourself); d->m_sessionDom.firstChild().appendChild(el); eventsPage.saveEvents(d->dom); d->m_eventsEnabled = eventsPage.enableEventsBox->isChecked(); projectNode.toElement().setAttribute("enableEvents", d->m_eventsEnabled?"true":"false"); setModified(); d->loadProjectXML(); } }
int SyncTaskListItem::createSyncPlugin(bool state) { int ret = 0; if (syncPlugin != NULL) { syncPlugin->unInit(); delete syncPlugin; syncPlugin = NULL; } if (state) { KTrader::OfferList offers; QString library = getPreferedLibrary(); QString offer = getPreferedOffer(); if (library.isEmpty()) { offers = getOffers(); if (offers.begin() != offers.end()) { KService::Ptr service = *offers.begin(); library = service->library(); offer = service->name(); } } if (!library.isEmpty()) { kdDebug(2120) << i18n("Name:") << " " << offer << "; " << i18n("Library:") << " " << library << endl; KLibFactory *factory = KLibLoader::self()->factory(library.ascii()); if (!factory) { QString errorMessage = KLibLoader::self()->lastErrorMessage(); kdDebug(2120) << i18n("There was an error:") << " " << offer << errorMessage << endl; ret = ERROR_NOFACTORY; } else { if (factory->inherits("RakiSyncFactory")) { RakiSyncFactory *syncFactory = static_cast<RakiSyncFactory*> (factory); syncPlugin = static_cast<RakiSyncPlugin*> (syncFactory->create()); syncPlugin->init(rra, this, pdaName, this->listView(), offer); syncFactory->callme(); // Fake call to link correct. } else { kdDebug(2120) << i18n("Library no Raki-Plugin") << endl; ret = ERROR_WRONGLIBRARYTYPE; } } } else { ret = ERROR_NOSYNCHRONIZER; } } switch(ret) { case ERROR_NOSYNCHRONIZER: KMessageBox::information(this->listView(), "<p>" + i18n("No Synchronizer found for") + " <b>" + QString(rra->getTypeForId(objectType)->name2) + "</b></p>", QString(rra->getTypeForId(objectType)->name2) + pdaName); this->setOn(false); this->makePersistent(); break; case ERROR_WRONGLIBRARYTYPE: KMessageBox::error(this->listView(), "<p>" + i18n("Wrong library type for") +" <b>" + QString(rra->getTypeForId(objectType)->name2) + "</b></p>", QString(rra->getTypeForId(objectType)->name2) + pdaName); this->setOn(false); this->makePersistent(); break; case ERROR_NOFACTORY: KMessageBox::error(this->listView(), "<p>" + i18n("Wrong library type for") + " <b>" + QString(rra->getTypeForId(objectType)->name2) + "</b></p>", QString(rra->getTypeForId(objectType)->name2) + pdaName); this->setOn(false); this->makePersistent(); break; } return ret; }