KDECore
kmimetypetrader.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef KMIMETYPETRADER_H
00021 #define KMIMETYPETRADER_H
00022
00023 #include <kservice.h>
00024 class KServiceOffer;
00025
00042 class KDECORE_EXPORT KMimeTypeTrader
00043 {
00044 public:
00045
00049 ~KMimeTypeTrader();
00050
00082 KService::List query( const QString& mimeType,
00083 const QString& genericServiceType = QString::fromLatin1("Application"),
00084 const QString& constraint = QString() ) const;
00085
00086
00097 KService::Ptr preferredService( const QString & mimeType, const QString & genericServiceType = QString::fromLatin1("Application") );
00098
00120 template <class T>
00121 static T *createPartInstanceFromQuery(const QString &mimeType, QWidget *parentWidget = 0, QObject *parent = 0,
00122 const QString &constraint = QString(),
00123 const QVariantList &args = QVariantList(),
00124 QString *error = 0)
00125 {
00126 const KService::List offers = self()->query(mimeType, QString::fromAscii("KParts/ReadOnlyPart"), constraint);
00127 Q_FOREACH (const KService::Ptr &ptr, offers) {
00128 T *component = ptr->template createInstance<T>(parentWidget, parent, args, error);
00129 if (component) {
00130 if (error)
00131 error->clear();
00132 return component;
00133 }
00134 }
00135 if (error)
00136 *error = i18n("No service matching the requirements was found");
00137 return 0;
00138 }
00139
00153 template <class T>
00154 static T *createInstanceFromQuery(const QString &mimeType, const QString &serviceType, QObject *parent = 0,
00155 const QString &constraint = QString(),
00156 const QVariantList &args = QVariantList(),
00157 QString *error = 0)
00158 {
00159 const KService::List offers = self()->query(mimeType, serviceType, constraint);
00160 Q_FOREACH (const KService::Ptr &ptr, offers) {
00161 T *component = ptr->template createInstance<T>(parent, args, error);
00162 if (component) {
00163 if (error)
00164 error->clear();
00165 return component;
00166 }
00167 }
00168 if (error)
00169 *error = i18n("No service matching the requirements was found");
00170 return 0;
00171 }
00172
00181 static KMimeTypeTrader* self();
00182
00183 private:
00187 KMimeTypeTrader();
00188
00189 private:
00190 class Private;
00191 Private * const d;
00192 };
00193
00194 #endif