emailuis/nmailui/src/nmuiextensionmanager.cpp
changeset 43 99bcbff212ad
parent 23 2dc6caa42ec3
child 47 f83bd4ae1fe3
equal deleted inserted replaced
42:139d4b7b2938 43:99bcbff212ad
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 #include "nmuiheaders.h"
    18 #include "nmuiheaders.h"
    19 
    19 
    20 const QString NmsPluginExtensionName = "nmsclientplugin.qtplugin"; 
       
    21 /*!
    20 /*!
    22     \class NmUiExtensionManager
    21     \class NmUiExtensionManager
    23     \brief Handles ui extension plugins
    22     \brief Handles ui extension plugins
    24  */
    23  */
    25 
    24 
    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