--- a/src/hbcore/activity/hbactivitymanager.cpp Mon May 03 12:48:33 2010 +0300
+++ b/src/hbcore/activity/hbactivitymanager.cpp Fri May 14 16:09:54 2010 +0300
@@ -35,7 +35,7 @@
#include "hbactivityplugininterface_p.h"
/*!
- @beta
+ @stable
@hbcore
\class HbActivityManager
\brief HbActivityManager is an access point for Activities features.
@@ -69,38 +69,34 @@
HbActivityPluginInterface *HbActivityManagerPrivate::activityPlugin() const
{
if (!mActivityPlugin) {
- QStringList pluginPathList;
+ foreach (const QString &path, QCoreApplication::libraryPaths()) {
+ QString pluginPath;
+ QString libPath = QDir(path).filePath(QLatin1String("hbactivityplugin"));
+#ifdef Q_OS_SYMBIAN
+ libPath += QLatin1String(".qtplugin");
+ QLibrary library(libPath);
+ if (QFile::exists(libPath) && library.load()) {
+ library.unload();
+ pluginPath = libPath;
+ }
+#else
+ QLibrary library(libPath);
+ if (library.load()) {
+ library.unload();
+ pluginPath = library.fileName();
+ }
+#endif
+ QPluginLoader loader(pluginPath);
+ QObject *pluginInstance = loader.instance();
+ if (pluginInstance) {
+ mActivityPlugin = qobject_cast<HbActivityPluginInterface*>(pluginInstance);
+ if (mActivityPlugin) {
+ q->connect(pluginInstance, SIGNAL(activityRequested(QString)), q, SIGNAL(activityRequested(QString)));
+ } else {
#if defined(Q_OS_SYMBIAN)
- QStringList cDriveList;
- QStringList romList;
-
- foreach (const QString &libraryPath, qApp->libraryPaths()) {
- QString absolutePath = QDir(libraryPath).absolutePath();
- cDriveList << absolutePath.replace(0, 1, 'C');
- romList << absolutePath.replace(0, 1, 'Z');
- }
- pluginPathList << cDriveList << romList;
-#else
- pluginPathList << qApp->libraryPaths();
+ qWarning("Cannot load activity plugin. Features related to activities won't be available.");
#endif
-
- foreach (const QString &path, pluginPathList) {
- QDir dir(path);
- QString filePath = dir.filePath("hbactivityplugin");
- QLibrary library(filePath);
- if (library.load()) {
- QPluginLoader loader(dir.filePath(library.fileName()));
- QObject *pluginInstance = loader.instance();
- if (pluginInstance) {
- mActivityPlugin = qobject_cast<HbActivityPluginInterface*>(pluginInstance);
- if (mActivityPlugin) {
- q->connect(pluginInstance, SIGNAL(activityRequested(QString)), q, SIGNAL(activityRequested(QString)));
- } else {
-#if defined(Q_OS_SYMBIAN)
- qWarning("Cannot load activity plugin. Features related to activities won't be available.");
-#endif
- loader.unload();
- }
+ loader.unload();
}
}
}
@@ -187,6 +183,22 @@
}
/*!
+\internal
+*/
+void HbActivityManagerPrivate::parseCommandLine(const QStringList &commandLineParams, Hb::ActivationReason &reason, QString &id, QVariantHash ¶ms) const
+{
+ HbActivityPluginInterface *plugin = activityPlugin();
+ if (plugin) {
+ QVariantHash activityParams = plugin->parseCommandLine(commandLineParams);
+ if (!activityParams.isEmpty()) {
+ reason = Hb::ActivationReasonActivity;
+ id = activityParams.value("activityname").toString();
+ params = activityParams;
+ }
+ }
+}
+
+/*!
Constructor
\a parent. Parent of this object.
*/
@@ -266,3 +278,18 @@
return d->waitActivity();
}
+/*!
+ Searches \a commandLineArguments for pair of "-activity" marker and
+ activity URI, which should have following syntax:
+
+ appto://UID3?activityname=activity-name-value&key1=value
+
+ If both marker and valid URI are found, \a reason is set to
+ Hb::ActivationReasonActivity, and \a activityId and \a parameters are
+ filled with parsed values.
+*/
+void HbActivityManager::parseCommandLine(const QStringList &commandLineParams, Hb::ActivationReason &reason, QString &id, QVariantHash ¶ms) const
+{
+ Q_D(const HbActivityManager);
+ d->parseCommandLine(commandLineParams, reason, id, params);
+}