kontact
uniqueapphandler.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef KONTACT_UNIQUEAPPHANDLER_H
00023 #define KONTACT_UNIQUEAPPHANDLER_H
00024
00025 #include <dcopobject.h>
00026 #include <plugin.h>
00027 #include <kdepimmacros.h>
00028
00029 namespace Kontact
00030 {
00031
00039 class KDE_EXPORT UniqueAppHandler : public DCOPObject
00040 {
00041 K_DCOP
00042
00043 public:
00044 UniqueAppHandler( Plugin* plugin ) : DCOPObject( plugin->name() ), mPlugin( plugin ) {}
00045
00047 virtual void loadCommandLineOptions() = 0;
00048
00051 virtual int newInstance();
00052
00053 Plugin* plugin() const { return mPlugin; }
00054
00056 static void loadKontactCommandLineOptions();
00057
00058 private:
00059 Plugin* mPlugin;
00060 };
00061
00063 class UniqueAppHandlerFactoryBase
00064 {
00065 public:
00066 virtual UniqueAppHandler* createHandler( Plugin* ) = 0;
00067 };
00068
00075 template <class T> class UniqueAppHandlerFactory : public UniqueAppHandlerFactoryBase
00076 {
00077 public:
00078 virtual UniqueAppHandler* createHandler( Plugin* plugin ) {
00079 (void)plugin->dcopClient();
00080 return new T( plugin );
00081 }
00082 };
00083
00084
00092 class KDE_EXPORT UniqueAppWatcher : public QObject
00093 {
00094 Q_OBJECT
00095
00096 public:
00106 UniqueAppWatcher( UniqueAppHandlerFactoryBase* factory, Plugin* plugin );
00107
00108 virtual ~UniqueAppWatcher();
00109
00110 bool isRunningStandalone() const { return mRunningStandalone; }
00111
00112 protected slots:
00113 void unregisteredFromDCOP( const QCString& appId );
00114
00115 private:
00116 bool mRunningStandalone;
00117 UniqueAppHandlerFactoryBase* mFactory;
00118 Plugin* mPlugin;
00119 };
00120
00121 }
00122
00123 #endif
|