-rw-r--r-- | microkde/kresources/factory.cpp | 54 |
1 files changed, 33 insertions, 21 deletions
diff --git a/microkde/kresources/factory.cpp b/microkde/kresources/factory.cpp index 2253de4..f82e94c 100644 --- a/microkde/kresources/factory.cpp +++ b/microkde/kresources/factory.cpp @@ -40,9 +40,9 @@ QDict<Factory> *Factory::mSelves = 0; static KStaticDeleter< QDict<Factory> > staticDeleter; Factory *Factory::self( const QString& resourceFamily ) { - + Factory *factory = 0; if ( !mSelves ) { @@ -53,9 +53,9 @@ Factory *Factory::self( const QString& resourceFamily ) if ( !factory ) { factory = new Factory( resourceFamily ); mSelves->insert( resourceFamily, factory ); - } + } return factory; } @@ -63,21 +63,21 @@ Factory::Factory( const QString& resourceFamily ) : mResourceFamily( resourceFamily ) { //US so far we have three types available for resourceFamily "contact" // and that are "file", "dir", "ldap" -/*US - +/*US + KTrader::OfferList plugins = KTrader::self()->query( "KResources/Plugin", QString( "[X-KDE-ResourceFamily] == '%1'" ) .arg( resourceFamily ) ); KTrader::OfferList::ConstIterator it; for ( it = plugins.begin(); it != plugins.end(); ++it ) { QVariant type = (*it)->property( "X-KDE-ResourceType" ); if ( !type.toString().isEmpty() ) mTypeMap.insert( type.toString(), *it ); } -*/ +*/ -//US new +//US new PluginInfo* info = new PluginInfo; info->library = "microkabc_file"; info->nameLabel = i18n( "file" ); info->descriptionLabel = i18n( "Choose one file" ); @@ -87,16 +87,16 @@ Factory::Factory( const QString& resourceFamily ) : info->library = "microkabc_dir"; info->nameLabel = i18n( "dir" ); info->descriptionLabel = i18n( "Choose a directory with may files" ); mTypeMap.insert( "dir", info ); - + info = new PluginInfo; info->library = "microkabc_ldap"; info->nameLabel = i18n( "ldap" ); info->descriptionLabel = i18n( "No description available" ); mTypeMap.insert( "ldap", info ); - //US add opie plugin only, if the library exists + //US add opie plugin only, if the library exists. QString libname = "microkabc_opie"; QString path = KLibLoader::findLibrary( QFile::encodeName( libname ) ); if ( !path.isEmpty() ) { @@ -106,9 +106,9 @@ Factory::Factory( const QString& resourceFamily ) : info->descriptionLabel = i18n( "Opie PIM Addressbook." ); mTypeMap.insert( "opie", info ); } - //US add qtopia plugin only, if the library exists + //US add qtopia plugin only, if the library exists. libname = "microkabc_qtopia"; path = KLibLoader::findLibrary( QFile::encodeName( libname ) ); if ( !path.isEmpty() ) { @@ -117,9 +117,21 @@ Factory::Factory( const QString& resourceFamily ) : info->nameLabel = i18n( "qtopia" ); info->descriptionLabel = i18n( "Qtopia PIM Addressbook." ); mTypeMap.insert( "qtopia", info ); } - + + //US add sharp plugin only, if the library exists. + libname = "microkabc_sharpdtm"; + path = KLibLoader::findLibrary( QFile::encodeName( libname ) ); + if ( !path.isEmpty() ) + { + info = new PluginInfo; + info->library = libname; + info->nameLabel = i18n( "sharp" ); + info->descriptionLabel = i18n( "Sharp DTM Addressbook." ); + mTypeMap.insert( "sharp", info ); + } + } Factory::~Factory() @@ -129,11 +141,11 @@ Factory::~Factory() QStringList Factory::typeNames() const { //US method QMap::keys() not available yet. SO collect the data manually //US return mTypeMap.keys(); - + QStringList result; - + QMap<QString, PluginInfo*>::ConstIterator it; for( it = mTypeMap.begin(); it != mTypeMap.end(); ++it ) { result << it.key().latin1(); // qDebug("Factory::typeNames() : %s ", it.key().latin1()); @@ -171,22 +183,22 @@ ConfigWidget *Factory::configWidget( const QString& type, QWidget *parent ) qDebug("%s is not a %s plugin.", pi->library.latin1(), mResourceFamily.latin1()); return 0; } return wdg; - + } QString Factory::typeName( const QString &type ) const { if ( type.isEmpty() || !mTypeMap.contains( type ) ) return QString(); - + //US KService::Ptr ptr = mTypeMap[ type ]; //US return ptr->name(); PluginInfo* pi = mTypeMap[ type ]; return pi->nameLabel; - + } QString Factory::typeDescription( const QString &type ) const { @@ -200,14 +212,14 @@ QString Factory::typeDescription( const QString &type ) const } Resource *Factory::resource( const QString& type, const KConfig *config ) { - + if ( type.isEmpty() || !mTypeMap.contains( type ) ) return 0; -/*US load the lib not dynamicly. !! +/*US load the lib not dynamicly. !! KService::Ptr ptr = mTypeMap[ type ]; KLibFactory *factory = KLibLoader::self()->factory( ptr->library().latin1() ); if ( !factory ) { kdDebug() << "KRES::Factory::resource(): Factory creation failed" << endl; @@ -220,24 +232,24 @@ Resource *Factory::resource( const QString& type, const KConfig *config ) qDebug("KRES::Factory::resource(): Factory creation failed for library %s", pi->library.latin1()); kdDebug() << "KRES::Factory::resource(): Factory creation failed" << endl; return 0; } - + PluginFactoryBase *pluginFactory = static_cast<PluginFactoryBase *>( factory ); if ( !pluginFactory ) { qDebug("KRES::Factory::resource(): no plugin factory for library %s", pi->library.latin1()); kdDebug() << "KRES::Factory::resource(): no plugin factory." << endl; return 0; } - + Resource *resource = pluginFactory->resource( config ); - if ( !resource ) { + if ( !resource ) { //US kdDebug() << "'" << ptr->library() << "' is not a " + mResourceFamily + " plugin." << endl; qDebug("%s is not a %s plugin.", pi->library.latin1(), mResourceFamily.latin1()); return 0; } resource->setType( type ); - + return resource; } |