src/hbcore/activity/hbactivitymanager.cpp
changeset 2 06ff229162e9
parent 1 f7ac710697a9
child 5 627c4a0fd0e7
equal deleted inserted replaced
1:f7ac710697a9 2:06ff229162e9
    33 #include "hbmainwindow.h"
    33 #include "hbmainwindow.h"
    34 #include "hbinstance.h"
    34 #include "hbinstance.h"
    35 #include "hbactivityplugininterface_p.h"
    35 #include "hbactivityplugininterface_p.h"
    36 
    36 
    37 /*!
    37 /*!
    38     @beta
    38     @stable
    39     @hbcore
    39     @hbcore
    40     \class HbActivityManager
    40     \class HbActivityManager
    41     \brief HbActivityManager is an access point for Activities features.
    41     \brief HbActivityManager is an access point for Activities features.
    42     
    42     
    43     Activities can be described as stored application states (for example bookmarks
    43     Activities can be described as stored application states (for example bookmarks
    67 \internal
    67 \internal
    68 */
    68 */
    69 HbActivityPluginInterface *HbActivityManagerPrivate::activityPlugin() const
    69 HbActivityPluginInterface *HbActivityManagerPrivate::activityPlugin() const
    70 {
    70 {
    71     if (!mActivityPlugin) {
    71     if (!mActivityPlugin) {
    72         QStringList pluginPathList;
    72         foreach (const QString &path, QCoreApplication::libraryPaths()) {
       
    73             QString pluginPath;
       
    74             QString libPath = QDir(path).filePath(QLatin1String("hbactivityplugin"));
       
    75 #ifdef Q_OS_SYMBIAN
       
    76             libPath += QLatin1String(".qtplugin");
       
    77             QLibrary library(libPath);           
       
    78             if (QFile::exists(libPath) && library.load()) {
       
    79                 library.unload();
       
    80                 pluginPath = libPath;
       
    81             }
       
    82 #else
       
    83             QLibrary library(libPath);           
       
    84             if (library.load()) {
       
    85                 library.unload();
       
    86                 pluginPath = library.fileName();
       
    87             }     
       
    88 #endif      
       
    89             QPluginLoader loader(pluginPath);
       
    90             QObject *pluginInstance = loader.instance();
       
    91             if (pluginInstance) {
       
    92                 mActivityPlugin = qobject_cast<HbActivityPluginInterface*>(pluginInstance);
       
    93                 if (mActivityPlugin) {
       
    94                     q->connect(pluginInstance, SIGNAL(activityRequested(QString)), q, SIGNAL(activityRequested(QString)));
       
    95                 } else {
    73 #if defined(Q_OS_SYMBIAN)
    96 #if defined(Q_OS_SYMBIAN)
    74         QStringList cDriveList;
    97                     qWarning("Cannot load activity plugin. Features related to activities won't be available.");
    75         QStringList romList;
       
    76 
       
    77         foreach (const QString &libraryPath, qApp->libraryPaths()) {
       
    78             QString absolutePath = QDir(libraryPath).absolutePath();
       
    79             cDriveList << absolutePath.replace(0, 1, 'C');
       
    80             romList << absolutePath.replace(0, 1, 'Z');
       
    81         }
       
    82         pluginPathList << cDriveList << romList;
       
    83 #else
       
    84         pluginPathList << qApp->libraryPaths();
       
    85 #endif
    98 #endif
    86 
    99                     loader.unload();
    87         foreach (const QString &path, pluginPathList) {
       
    88             QDir dir(path);
       
    89             QString filePath = dir.filePath("hbactivityplugin");
       
    90             QLibrary library(filePath);
       
    91             if (library.load()) {
       
    92                 QPluginLoader loader(dir.filePath(library.fileName()));
       
    93                 QObject *pluginInstance = loader.instance();
       
    94                 if (pluginInstance) {
       
    95                     mActivityPlugin = qobject_cast<HbActivityPluginInterface*>(pluginInstance);
       
    96                     if (mActivityPlugin) {
       
    97                         q->connect(pluginInstance, SIGNAL(activityRequested(QString)), q, SIGNAL(activityRequested(QString)));
       
    98                     } else {
       
    99 #if defined(Q_OS_SYMBIAN)
       
   100                         qWarning("Cannot load activity plugin. Features related to activities won't be available.");
       
   101 #endif
       
   102                         loader.unload();
       
   103                     }
       
   104                 }
   100                 }
   105             }
   101             }
   106         }
   102         }
   107     }
   103     }
   108     return mActivityPlugin;
   104     return mActivityPlugin;
   182     HbActivityPluginInterface *plugin = activityPlugin();
   178     HbActivityPluginInterface *plugin = activityPlugin();
   183     if (plugin) {
   179     if (plugin) {
   184         result = plugin->waitActivity();
   180         result = plugin->waitActivity();
   185     }
   181     }
   186     return result;
   182     return result;
       
   183 }
       
   184 
       
   185 /*!
       
   186 \internal
       
   187 */
       
   188 void HbActivityManagerPrivate::parseCommandLine(const QStringList &commandLineParams, Hb::ActivationReason &reason, QString &id, QVariantHash &params) const
       
   189 {
       
   190     HbActivityPluginInterface *plugin = activityPlugin();
       
   191     if (plugin) {
       
   192         QVariantHash activityParams = plugin->parseCommandLine(commandLineParams);
       
   193         if (!activityParams.isEmpty()) {
       
   194             reason = Hb::ActivationReasonActivity;
       
   195             id = activityParams.value("activityname").toString();
       
   196             params = activityParams;
       
   197         }
       
   198     }
   187 }
   199 }
   188 
   200 
   189 /*!
   201 /*!
   190     Constructor
   202     Constructor
   191     \a parent. Parent of this object.
   203     \a parent. Parent of this object.
   264 {
   276 {
   265     Q_D(HbActivityManager);
   277     Q_D(HbActivityManager);
   266     return d->waitActivity();
   278     return d->waitActivity();
   267 }
   279 }
   268 
   280 
       
   281 /*!
       
   282     Searches \a commandLineArguments for pair of "-activity" marker and
       
   283     activity URI, which should have following syntax:
       
   284 
       
   285     appto://UID3?activityname=activity-name-value&key1=value
       
   286 
       
   287     If both marker and valid URI are found, \a reason is set to
       
   288     Hb::ActivationReasonActivity, and \a activityId and \a parameters are
       
   289     filled with parsed values.
       
   290 */
       
   291 void HbActivityManager::parseCommandLine(const QStringList &commandLineParams, Hb::ActivationReason &reason, QString &id, QVariantHash &params) const
       
   292 {
       
   293     Q_D(const HbActivityManager);
       
   294     d->parseCommandLine(commandLineParams, reason, id, params);
       
   295 }