29 Creates list of folder paths where plug-ins can be loaded from. |
28 Creates list of folder paths where plug-ins can be loaded from. |
30 \return folder path list. |
29 \return folder path list. |
31 */ |
30 */ |
32 QStringList NmUiExtensionManager::pluginFolders() |
31 QStringList NmUiExtensionManager::pluginFolders() |
33 { |
32 { |
34 NMLOG(QString("NmUiExtensionManager - HELPER FUNCTIONS - pluginFolders")); |
33 NM_FUNCTION; |
35 |
34 |
36 const QString NmSettingsPluginFolderPath("/resource/qt/plugins/nmail/uiext"); |
35 const QString NmSettingsPluginFolderPath("/resource/qt/plugins/nmail/uiext"); |
37 QStringList pluginDirectories; |
36 QStringList pluginDirectories; |
38 QFileInfoList driveList = QDir::drives(); |
37 QFileInfoList driveList = QDir::drives(); |
39 |
38 |
40 foreach(const QFileInfo &driveInfo, driveList) { |
39 foreach(const QFileInfo &driveInfo, driveList) { |
43 NMLOG(QString("fileInfo.absoluteFilePath() : %1").arg(pluginDirectory)); |
42 NMLOG(QString("fileInfo.absoluteFilePath() : %1").arg(pluginDirectory)); |
44 if (QFileInfo(pluginDirectory).exists()) { |
43 if (QFileInfo(pluginDirectory).exists()) { |
45 pluginDirectories.append(pluginDirectory); |
44 pluginDirectories.append(pluginDirectory); |
46 } |
45 } |
47 } |
46 } |
48 |
47 |
49 NMLOG(QString("NmUiExtensionManager - HELPER FUNCTIONS - pluginFolders - OK")); |
|
50 return pluginDirectories; |
48 return pluginDirectories; |
51 } |
49 } |
52 |
50 |
53 NmUiExtensionManager::NmUiExtensionManager() |
51 NmUiExtensionManager::NmUiExtensionManager() |
54 { |
52 { |
|
53 NM_FUNCTION; |
|
54 |
55 // load the protocol extension plugins |
55 // load the protocol extension plugins |
56 loadExtensionPlugins(); |
56 loadExtensionPlugins(); |
57 } |
57 } |
58 |
58 |
59 /*! |
59 /*! |
60 Destructor |
60 Destructor |
61 */ |
61 */ |
62 NmUiExtensionManager::~NmUiExtensionManager() |
62 NmUiExtensionManager::~NmUiExtensionManager() |
63 { |
63 { |
|
64 NM_FUNCTION; |
|
65 |
64 // delete plugins from array |
66 // delete plugins from array |
65 qDeleteAll(mExtensions.begin(), mExtensions.end()); |
67 qDeleteAll(mExtensions.begin(), mExtensions.end()); |
66 mExtensions.clear(); |
68 mExtensions.clear(); |
67 |
69 |
68 qDeleteAll(mPluginLoaders.begin(), mPluginLoaders.end()); |
70 qDeleteAll(mPluginLoaders.begin(), mPluginLoaders.end()); |
74 */ |
76 */ |
75 void NmUiExtensionManager::getActions( |
77 void NmUiExtensionManager::getActions( |
76 const NmActionRequest &menuRequest, |
78 const NmActionRequest &menuRequest, |
77 QList<NmAction*> &actionList) |
79 QList<NmAction*> &actionList) |
78 { |
80 { |
|
81 NM_FUNCTION; |
|
82 |
79 for (int i = 0; i < mExtensions.count(); i++) { |
83 for (int i = 0; i < mExtensions.count(); i++) { |
80 NmUiExtensionInterface* interface = mExtensions[i]; |
84 NmUiExtensionInterface* interface = mExtensions[i]; |
81 interface->getActions(menuRequest, actionList); |
85 interface->getActions(menuRequest, actionList); |
82 } |
86 } |
83 } |
87 } |
85 Loads plug-ins which implements NmUiExtensionInterface and are registered |
89 Loads plug-ins which implements NmUiExtensionInterface and are registered |
86 to <code>/resource/qt/plugins/nmail/uiext</code> folder. |
90 to <code>/resource/qt/plugins/nmail/uiext</code> folder. |
87 */ |
91 */ |
88 void NmUiExtensionManager::loadExtensionPlugins() |
92 void NmUiExtensionManager::loadExtensionPlugins() |
89 { |
93 { |
90 NMLOG(QString("NmUiExtensionManager::loadExtensionPlugins -->")); |
94 NM_FUNCTION; |
91 |
95 |
92 QStringList directories(pluginFolders()); |
96 QStringList directories(pluginFolders()); |
93 foreach (const QString &directoryPath, directories) { |
97 foreach (const QString &directoryPath, directories) { |
94 QDir directory(directoryPath); |
98 QDir directory(directoryPath); |
95 QFileInfoList fileList(directory.entryInfoList()); |
99 QFileInfoList fileList(directory.entryInfoList()); |
96 |
100 |
97 foreach (const QFileInfo &fileInfo, fileList) { |
101 foreach (const QFileInfo &fileInfo, fileList) { |
98 NMLOG(QString("Plugin absolute FilePath : %1").arg(fileInfo.absoluteFilePath())); |
102 NM_COMMENT(QString("Plugin absolute FilePath : %1").arg(fileInfo.absoluteFilePath())); |
99 QScopedPointer<QPluginLoader> loader( |
103 QScopedPointer<QPluginLoader> loader( |
100 new QPluginLoader(fileInfo.absoluteFilePath())); |
104 new QPluginLoader(fileInfo.absoluteFilePath())); |
101 mPluginLoaders.append(loader.data()); |
105 mPluginLoaders.append(loader.data()); |
102 loader.take(); |
106 loader.take(); |
103 } |
107 } |
104 } |
108 } |
105 |
109 |
106 NmUiExtensionInterface *interface = NULL; |
110 NmUiExtensionInterface *interface = NULL; |
107 foreach (QPluginLoader *loader, mPluginLoaders) { |
111 foreach (QPluginLoader *loader, mPluginLoaders) { |
108 NMLOG(QString("Plugin fileName() : %1").arg(loader->fileName())); |
112 NM_COMMENT(QString("Plugin fileName() : %1").arg(loader->fileName())); |
109 QString fileName = loader->fileName(); |
113 QString fileName = loader->fileName(); |
110 if (fileName.contains(NmsPluginExtensionName, Qt::CaseInsensitive) == false) { |
114 QObject *pluginInstance = loader->instance(); |
111 QObject *pluginInstance = loader->instance(); |
115 interface = qobject_cast<NmUiExtensionInterface*>(pluginInstance); |
112 interface = qobject_cast<NmUiExtensionInterface*>(pluginInstance); |
116 if (interface) { |
113 if (interface) { |
117 mExtensions.append(interface); |
114 mExtensions.append(interface); |
|
115 } |
|
116 } |
118 } |
117 } |
119 } |
118 NMLOG(QString("<-- NmUiExtensionManager::loadExtensionPlugins")); |
|
119 } |
120 } |
120 |
121 |
121 |
122 |