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 ¶ms) 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 ¶ms) const |
|
292 { |
|
293 Q_D(const HbActivityManager); |
|
294 d->parseCommandLine(commandLineParams, reason, id, params); |
|
295 } |