~ubuntu-branches/ubuntu/quantal/psi/quantal

« back to all changes in this revision

Viewing changes to src/pluginmanager.h

  • Committer: Bazaar Package Importer
  • Author(s): Jan Niehusmann
  • Date: 2008-04-14 18:57:30 UTC
  • mfrom: (2.1.9 hardy)
  • Revision ID: james.westby@ubuntu.com-20080414185730-528re3zp0m2hdlhi
Tags: 0.11-8
* added CONFIG -= link_prl to .pro files and removed dependencies
  which are made unnecessary by this change
* Fix segfault when closing last chat tab with qt4.4
  (This is from upstream svn, rev. 1101) (Closes: Bug#476122)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef PLUGINMANAGER_H
 
2
#define PLUGINMANAGER_H
 
3
 
 
4
#include <QtCore>
 
5
#include <QList>
 
6
#include <QMap>
 
7
 
 
8
#include "userlist.h"
 
9
#include "optionstree.h"
 
10
 
 
11
class PsiPlugin;
 
12
 
 
13
class PsiAccount;
 
14
class UserLisItem;
 
15
namespace XMPP {
 
16
        class Jid;
 
17
}
 
18
namespace QCA {
 
19
        class DirWatch;
 
20
}
 
21
 
 
22
class QPluginLoader;
 
23
 
 
24
class PluginManager : public QObject
 
25
{
 
26
        Q_OBJECT
 
27
public:
 
28
        static PluginManager* instance();
 
29
 
 
30
        QStringList availablePlugins();
 
31
 
 
32
        void addAccount( const PsiAccount* account, XMPP::Client* client);
 
33
        void message( PsiAccount* account, const XMPP::Jid& from, 
 
34
        const UserListItem*, const QString& message );
 
35
        bool loadPlugin( const QString& file );
 
36
        void loadEnabledPlugins();
 
37
        bool unloadPlugin( const QString& file );
 
38
        bool unloadAllPlugins();
 
39
        QString pathToPlugin( const QString& plugin );
 
40
        QString shortName( const QString& plugin );
 
41
        QWidget* getOptionsWidget( const QString& plugin );
 
42
        bool processEvent( const PsiAccount* account, QDomElement &event );
 
43
        
 
44
        const QVariant getGlobalOption(const QString& option);
 
45
        
 
46
        static const QString loadOptionPrefix;
 
47
        static const QString pluginOptionPrefix;
 
48
        
 
49
protected:
 
50
        bool loadPlugin( QObject* pluginObject );
 
51
 
 
52
private:
 
53
        PluginManager();
 
54
        void loadAllPlugins();
 
55
        bool verifyStanza(const QString& stanza);
 
56
        
 
57
        static PluginManager* instance_;
 
58
        
 
59
        //name, plugin
 
60
        QMap<QString, PsiPlugin*> plugins_;
 
61
        //name, shortName
 
62
        QMap<QString, QString> shortNames_;
 
63
        //name, file
 
64
        QMap<QString, QString> files_;
 
65
        //filename, loader
 
66
        QMap<QString, QPluginLoader*> loaders_;
 
67
        //account, client
 
68
        QMap<const PsiAccount*, XMPP::Client*> clients_;
 
69
        
 
70
        QList<QCA::DirWatch*> dirWatchers_;
 
71
        OptionsTree options_;
 
72
        
 
73
private slots:
 
74
        void dirsChanged();
 
75
        void setPluginOption( const QString&, const QVariant& );
 
76
        void getPluginOption( const QString&, QVariant&);
 
77
        void setGlobalOption( const QString&, const QVariant& );
 
78
        void getGlobalOption( const QString&, QVariant&);
 
79
        void optionChanged(const QString& option);
 
80
        void sendStanza( const PsiAccount* account, const QDomElement& stanza);
 
81
        void sendStanza( const PsiAccount* account, const QString& stanza);
 
82
};
 
83
 
 
84
#endif