forked from KangLin/RabbitIm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPluginAppManage.h
131 lines (121 loc) · 3.25 KB
/
PluginAppManage.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#ifndef CMANAGEPLUGIN_H
#define CMANAGEPLUGIN_H
#include "Manage/Manage.h"
#include "PluginApp.h"
#include <QSharedPointer>
#include <map>
#include <list>
#include <QDir>
/**
* @defgroup RABBITIM_INTERFACE_MANAGEPLUGIN 插件管理类模块
* @ingroup RABBITIM_INTERFACE_MANAGER
* @brief 插件管理类模块,用于管理插件
*/
/**
* @class CManagePlugin
* @ingroup RABBITIM_INTERFACE_MANAGEPLUGIN RABBITIM_INTERFACE
* @brief 插件管理类
* @see CManager
*/
class RABBITIM_SHARED_LIBRARY CPluginAppManage : public CManage
{
Q_OBJECT
public:
explicit CPluginAppManage(QObject *parent = 0);
virtual ~CPluginAppManage();
/**
* @brief 用户登录成功后调用,用于初始化工作
*
* @param szId:登录用户名
* @return int
*/
virtual int Init(const QString &szId);
/**
* @brief 用户登出时调用,用于清理工作
*
* @return int
*/
virtual int Clean();
/**
* @brief 注册插件,插件必须在用户登录前进行注册,否则不会调用插件的 Init() 进行初始化
* @param szId:插件ID
* @param plugin:要注册的插件
* @return 成功返回0,否则返回非0
* @see CPluginApp
*/
int RegisterPlugin(const QString &szId,
QSharedPointer<CPluginApp> plugin);
/**
* @brief 移除插件
* @param szId:插件ID
* @return 成功返回0,否则返回非0
* @see CPluginApp
*/
int UnregisterPlugin(const QString &szId);
/**
* @brief 根据插件名称得到插件
* @param szId:插件ID
* @return
*/
QSharedPointer<CPluginApp> GetPlugin(const QString &szId);
/**
* @brief 得到所有插件
* @return
*/
std::list<QSharedPointer<CPluginApp> > GetAllPlugins();
/**
* @brief 添加插件到收藏中
* @param szId:插件ID
* @return
*/
int AddFavority(const QString &szId);
/**
* @brief 从收藏中删除插件
* @param szId:插件ID
* @return
*/
int RemoveFavority(const QString &szId);
/**
* @brief 得到所有收藏
* @return
*/
std::list<QString> GetFavorites();
private:
/**
* @brief 从存储中加载信息
*
* @param szLocaleJid
* @return int
*/
int LoadFromStorage(const QString &szId);
/**
* @brief 保存信息到存储
*
* @return int
*/
int SaveToStorage();
public:
signals:
/**增加插件
* @param szId:插件ID
*/
void sigChangedAdd(const QString& szId);
/**删除插件
* @param szId:插件ID
*/
void sigChangedRemove(const QString &szId);
/**增加收藏
* @param szId:插件ID
*/
void sigAddFavority(const QString& szId);
/**删除收藏
* @param szId:插件ID
*/
void sigRemoveFavority(const QString &szId);
private:
std::map<QString, QSharedPointer<CPluginApp> > m_Plugins;
std::list<QString> m_FavorityPlugins; //收藏应用
//查找插件
int FindPlugins(QDir dir);
};
#endif // CMANAGEPLUGIN_H