activityfw/activityserviceplugin/src/afmanager.cpp
changeset 107 b34d53f6acdf
parent 102 8b8b34fa9751
child 116 305818acdca4
equal deleted inserted replaced
106:e78d6e055a5b 107:b34d53f6acdf
    16 */
    16 */
    17 
    17 
    18 #include <QStringList>
    18 #include <QStringList>
    19 #include <QUrl>
    19 #include <QUrl>
    20 
    20 
    21 #include <afstorageclient.h>
       
    22 #include <afstorageentry.h>
       
    23 #include <afstorageglobals.h>
    21 #include <afstorageglobals.h>
    24 
    22 
       
    23 #include "afactivities_global.h"
    25 #include "afmanager.h"
    24 #include "afmanager.h"
    26 #include "aflauncher.h"
    25 #include "aflauncher.h"
    27 
    26 
    28 AfManager::AfManager(const QSharedPointer<AfStorageClient> &serviceProvider, 
    27 AfManager::AfManager(const QSharedPointer<AfStorageProxy> &serviceProvider, 
    29                      QObject *parent) 
    28                      QObject *parent) 
    30 : 
    29 : 
    31     QObject(parent), 
    30     QObject(parent), 
    32     mServiceProvider(serviceProvider)
    31     mServiceProvider(serviceProvider)
    33 {
    32 {
    34     if(0 == mServiceProvider->connect()){
    33     mServiceProvider->notifyDataChange();
    35         mServiceProvider->notifyDataChange();
       
    36     }
       
    37     connect(mServiceProvider.data(),
    34     connect(mServiceProvider.data(),
    38             SIGNAL(thumbnailRequested(QPixmap, void *)),
    35             SIGNAL(thumbnailRequested(QPixmap,void*)),
    39             this,
    36             this,
    40             SIGNAL(thumbnailReady(QPixmap, void *)));
    37             SIGNAL(thumbnailReady(QPixmap,void*)));
    41     connect(mServiceProvider.data(),
    38     connect(mServiceProvider.data(),
    42             SIGNAL(dataChanged()),
    39             SIGNAL(dataChanged()),
    43             this,
    40             this,
    44             SIGNAL(dataChanged()));
    41             SIGNAL(dataChanged()));
    45 }
    42 }
    48 {
    45 {
    49 }
    46 }
    50 
    47 
    51 QList<QVariantHash> AfManager::activitiesList()
    48 QList<QVariantHash> AfManager::activitiesList()
    52 {
    49 {
    53     QList<AfStorageEntry> results;
    50     QList<QVariantHash> results;
    54     mServiceProvider->activities(results);
    51     mServiceProvider->activities(results);
    55     
    52     return results;
    56     QList<QVariantHash> retVal;
       
    57     QList<AfStorageEntry>::iterator iter(results.begin());
       
    58     for (; iter != results.end(); iter = results.erase(iter)) {
       
    59         retVal.append((*iter).publicData());
       
    60     }
       
    61     return retVal;
       
    62 }
    53 }
    63 
    54 
    64 void AfManager::launchActivity(const QUrl &uri)
    55 void AfManager::launchActivity(const QUrl &uri)
    65 {
    56 {
    66     if (uri.scheme() != "appto")
    57     if (uri.scheme() != Af::KActivityScheme)
    67         return;
    58         return;
    68 
    59 
    69     bool conversionOk(false);
    60     bool conversionOk(false);
    70     int applicationId = uri.host().toUInt(&conversionOk, 16);   
    61     int applicationId = uri.host().toUInt(&conversionOk, 16);   
    71     if (!conversionOk)
    62     if (!conversionOk)
    78     QList<QPair<QString, QString> > uriParams = uri.queryItems();
    69     QList<QPair<QString, QString> > uriParams = uri.queryItems();
    79     for (QList<QPair<QString, QString> >::const_iterator i = uriParams.constBegin(); i != uriParams.constEnd(); ++i) {
    70     for (QList<QPair<QString, QString> >::const_iterator i = uriParams.constBegin(); i != uriParams.constEnd(); ++i) {
    80         parameters.insert(i->first, i->second);
    71         parameters.insert(i->first, i->second);
    81     }
    72     }
    82 
    73 
    83     if (parameters.contains("activityname")) {
    74     if (parameters.contains(Af::KActivityUriNameKey)) {
    84         activity.insert(ActivityActivityKeyword, parameters.value("activityname").toString());
    75         activity.insert(ActivityActivityKeyword, parameters.value(Af::KActivityUriNameKey).toString());
    85         parameters.remove("activityname");
    76         parameters.remove(Af::KActivityUriNameKey);
    86     }
    77     }
    87     
    78     
    88     activity.insert(ActivityParametersKeyword, parameters);
    79     activity.insert(ActivityParametersKeyword, parameters);
    89     
    80     
    90     launchActivity(activity);
    81     launchActivity(activity);
   113 
   104 
   114 void AfManager::launchActivity(const QVariantHash& activity)
   105 void AfManager::launchActivity(const QVariantHash& activity)
   115 {
   106 {
   116     AfLauncher applicationLauncher;
   107     AfLauncher applicationLauncher;
   117     int applicationId = activity.value(ActivityApplicationKeyword).toInt();
   108     int applicationId = activity.value(ActivityApplicationKeyword).toInt();
   118     AfStorageEntry entry(applicationId, 
       
   119                          activity[ActivityActivityKeyword].toString());
       
   120     if (applicationLauncher.isRunning(applicationId)) {
   109     if (applicationLauncher.isRunning(applicationId)) {
   121         mServiceProvider->launchActivity(entry);
   110         mServiceProvider->launchActivity(applicationId, activityToUri(activity).toString());
   122     } else {
   111     } else {
   123         applicationLauncher.startApplication(applicationId, activityToUri(activity));
   112         applicationLauncher.startApplication(applicationId, activityToUri(activity));
   124     }
   113     }
   125 }
   114 }
   126 
   115 
   127 QUrl AfManager::activityToUri(const QVariantHash& activity) const
   116 QUrl AfManager::activityToUri(const QVariantHash& activity) const
   128 {
   117 {
   129     QUrl uri;
   118     QUrl uri;
   130     uri.setScheme("appto");
   119     uri.setScheme(Af::KActivityScheme);
   131     uri.setHost(QString("%1").arg(activity.value(ActivityApplicationKeyword).toUInt(), 8, 16, QChar('0')));
   120     uri.setHost(QString("%1").arg(activity.value(ActivityApplicationKeyword).toUInt(), 8, 16, QChar('0')));
   132     
   121     
   133     if (activity.contains(ActivityActivityKeyword))
   122     if (activity.contains(ActivityActivityKeyword))
   134         uri.addQueryItem("activityname", activity.value(ActivityActivityKeyword).toString());
   123         uri.addQueryItem(Af::KActivityUriNameKey, activity.value(ActivityActivityKeyword).toString());
   135     
   124     
   136     QVariantHash parameters = activity.value(ActivityParametersKeyword).toHash();
   125     QVariantHash parameters = activity.value(ActivityParametersKeyword).toHash();
   137     foreach(const QString &key, parameters.keys()) {
   126     foreach(const QString &key, parameters.keys()) {
   138         uri.addQueryItem(key, parameters.value(key).toString());
   127         uri.addQueryItem(key, parameters.value(key).toString());
   139     } 
   128     }