summaryrefslogtreecommitdiffstats
path: root/akregator/src/pluginmanager.h
diff options
context:
space:
mode:
Diffstat (limited to 'akregator/src/pluginmanager.h')
-rw-r--r--akregator/src/pluginmanager.h116
1 files changed, 116 insertions, 0 deletions
diff --git a/akregator/src/pluginmanager.h b/akregator/src/pluginmanager.h
new file mode 100644
index 000000000..15d0c253e
--- /dev/null
+++ b/akregator/src/pluginmanager.h
@@ -0,0 +1,116 @@
+/***************************************************************************
+begin : 2004/03/12
+copyright : (C) Mark Kretschmann
+email : markey@web.de
+***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef AKREGATOR_PLUGINMANAGER_H
+#define AKREGATOR_PLUGINMANAGER_H
+
+#include <vector>
+
+#include <kservice.h>
+#include <ktrader.h>
+
+
+class KLibrary;
+namespace Akregator {
+
+class Plugin;
+class PluginManager
+{
+ public:
+ /** Bump this number whenever the plugin framework gets incompatible with older versions */
+ static const int FrameworkVersion = 1;
+
+ /**
+ * It will return a list of services that match your
+ * specifications. The only required parameter is the service
+ * type. This is something like 'text/plain' or 'text/html'. The
+ * constraint parameter is used to limit the possible choices
+ * returned based on the constraints you give it.
+ *
+ * The @p constraint language is rather full. The most common
+ * keywords are AND, OR, NOT, IN, and EXIST, all used in an
+ * almost spoken-word form. An example is:
+ * \code
+ * (Type == 'Service') and (('KParts/ReadOnlyPart' in ServiceTypes) or (exist Exec))
+ * \endcode
+ *
+ * The keys used in the query (Type, ServiceType, Exec) are all
+ * fields found in the .desktop files.
+ *
+ * @param constraint A constraint to limit the choices returned, QString::null to
+ * get all services of the given @p servicetype
+ *
+ * @return A list of services that satisfy the query
+ * @see http://developer.kde.org/documentation/library/kdeqt/tradersyntax.html
+ */
+ static KTrader::OfferList query( const QString& constraint = QString::null );
+
+ /**
+ * Load and instantiate plugin from query
+ * @param constraint A constraint to limit the choices returned, QString::null to
+ * get all services of the given @p servicetype
+ * @return Pointer to Plugin, or NULL if error
+ * @see http://developer.kde.org/documentation/library/kdeqt/tradersyntax.html
+ */
+ static Akregator::Plugin* createFromQuery( const QString& constraint = QString::null );
+
+ /**
+ * Load and instantiate plugin from service
+ * @param service Pointer to KService
+ * @return Pointer to Plugin, or NULL if error
+ */
+ static Akregator::Plugin* createFromService( const KService::Ptr service );
+
+ /**
+ * Remove library and delete plugin
+ * @param plugin Pointer to plugin
+ */
+ static void unload( Akregator::Plugin* plugin );
+
+ /**
+ * Look up service for loaded plugin from store
+ * @param plugin Pointer to plugin
+ * @return KService, or 0 if not found
+ */
+ static KService::Ptr getService( const Akregator::Plugin* plugin );
+
+ /**
+ * Dump properties from a service to stdout for debugging
+ * @param service Pointer to KService
+ */
+ static void dump( const KService::Ptr service );
+
+ /**
+ * Show modal info dialog about plugin
+ * @param constraint A constraint to limit the choices returned
+ */
+ static void showAbout( const QString& constraint );
+
+ private:
+ struct StoreItem {
+ Akregator::Plugin* plugin;
+ KLibrary* library;
+ KService::Ptr service;
+ };
+
+ static std::vector<StoreItem>::iterator lookupPlugin( const Akregator::Plugin* plugin );
+
+ //attributes:
+ static std::vector<StoreItem> m_store;
+};
+}
+
+#endif /* AKREGATOR_PLUGINMANAGER_H */
+