• Skip to content
  • Skip to link menu
KDE 4.0 API Reference
  • KDE API Reference
  • kdelibs
  • Sitemap
  • Contact Us
 

KParts

componentfactory.h

Go to the documentation of this file.
00001 #ifndef __kparts_componentfactory_h__
00002 #define __kparts_componentfactory_h__
00003 
00004 #include <kparts/factory.h>
00005 #include <kparts/part.h>
00006 #include <kservicetypetrader.h>
00007 #include <klibloader.h>
00008 #include <kmimetypetrader.h>
00009 
00010 namespace KParts
00011 {
00012     namespace ComponentFactory
00013     {
00033         template <class T>
00034         KDE_DEPRECATED T *createPartInstanceFromFactory( KParts::Factory *factory,
00035                                           QWidget *parentWidget = 0,
00036                                           QObject *parent = 0,
00037                                           const QStringList &args = QStringList() )
00038         {
00039             KParts::Part *object = factory->createPart( parentWidget,
00040                                                         parent,
00041                                                         T::staticMetaObject.className(),
00042                                                         args );
00043 
00044             T *result = dynamic_cast<T *>( object );
00045             if ( !result )
00046                 delete object;
00047             return result;
00048         }
00049         /*
00050          * @deprecated use KPluginFactory::create instead
00051          */
00052         template <class T>
00053         KDE_DEPRECATED T *createPartInstanceFromLibrary( const char *libraryName,
00054                                           QWidget *parentWidget = 0,
00055                                           QObject *parent = 0,
00056                                           const QStringList &args = QStringList(),
00057                                           int *error = 0 )
00058         {
00059             KLibrary *library = KLibLoader::self()->library( libraryName );
00060             if ( !library )
00061             {
00062                 if ( error )
00063                     *error = KLibLoader::ErrNoLibrary;
00064                 return 0;
00065             }
00066             KLibFactory *factory = library->factory();
00067             if ( !factory )
00068             {
00069                 library->unload();
00070                 if ( error )
00071                     *error = KLibLoader::ErrNoFactory;
00072                 return 0;
00073             }
00074             KParts::Factory *partFactory = dynamic_cast<KParts::Factory *>( factory );
00075             if ( !partFactory )
00076             {
00077                 library->unload();
00078                 if ( error )
00079                     *error = KLibLoader::ErrNoFactory;
00080                 return 0;
00081             }
00082             T *res = createPartInstanceFromFactory<T>( partFactory, parentWidget,
00083                                                        parent, args );
00084             if ( !res )
00085             {
00086                 library->unload();
00087                 if ( error )
00088                     *error = KLibLoader::ErrNoComponent;
00089             }
00090             return res;
00091         }
00092 
00096         template <class T>
00097         KDE_DEPRECATED T *createPartInstanceFromService( const KService::Ptr &service,
00098                                           QWidget *parentWidget = 0,
00099                                           QObject *parent = 0,
00100                                           const QStringList &args = QStringList(),
00101                                           int *error = 0 )
00102         {
00103             QString library = service->library();
00104             if ( library.isEmpty() )
00105             {
00106                 if ( error )
00107                     *error = KLibLoader::ErrServiceProvidesNoLibrary;
00108                 return 0;
00109             }
00110 
00111             return createPartInstanceFromLibrary<T>( library.toLocal8Bit().data(), parentWidget,
00112                                                      parent, args, error );
00113         }
00114 
00115         template <class T, class ServiceIterator>
00116         KDE_DEPRECATED T *createPartInstanceFromServices( ServiceIterator begin,
00117                                            ServiceIterator end,
00118                                            QWidget *parentWidget = 0,
00119                                            QObject *parent = 0,
00120                                            const QStringList &args = QStringList(),
00121                                            int *error = 0 )
00122          {
00123             for (; begin != end; ++begin )
00124             {
00125                 KService::Ptr service = *begin;
00126 
00127                 if ( error )
00128                     *error = 0;
00129 
00130                 T *component = createPartInstanceFromService<T>( service, parentWidget,
00131                                                                  parent, args, error );
00132                 if ( component )
00133                     return component;
00134             }
00135 
00136             if ( error )
00137                 *error = KLibLoader::ErrNoServiceFound;
00138 
00139             return 0;
00140 
00141         }
00142 
00171         template <class T>
00172         T *createPartInstanceFromQuery( const QString &mimeType,
00173                                         const QString &constraint,
00174                                         QWidget *parentWidget = 0,
00175                                         QObject *parent = 0,
00176                                         const QStringList &args = QStringList(),
00177                                         int *error = 0 )
00178         {
00179             const KService::List offers = KMimeTypeTrader::self()->query( mimeType, QLatin1String("KParts/ReadOnlyPart"), constraint );
00180             if ( offers.isEmpty() )
00181             {
00182                 if ( error )
00183                     *error = KLibLoader::ErrNoServiceFound;
00184                 return 0;
00185             }
00186 
00187             return createPartInstanceFromServices<T>( offers.begin(), offers.end(),
00188                                                       parentWidget,
00189                                                       parent, args, error );
00190         }
00191 
00192     }
00193 }
00194 
00195 /*
00196  * vim: et sw=4
00197  */
00198 
00199 #endif

KParts

Skip menu "KParts"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

kdelibs

Skip menu "kdelibs"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • Kate
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • KIO
  • KIOSlave
  • KJS
  •   WTF
  • KJSEmbed
  • KNewStuff
  • KParts
  • Kross
  • KUtils
  • Nepomuk
  •   core
  • Phonon
  •   Backend
  • Solid
  • Sonnet
  • ThreadWeaver
Generated for kdelibs by doxygen 1.5.4
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal