activityfw/activityserviceplugin/s60/src/afstorageproxy_p.cpp
changeset 124 e36b2f4799c0
parent 121 0b3699f6c654
equal deleted inserted replaced
121:0b3699f6c654 124:e36b2f4799c0
    19 
    19 
    20 #include <fbs.h>
    20 #include <fbs.h>
    21 
    21 
    22 #include <QSize>
    22 #include <QSize>
    23 #include <QPixmap>
    23 #include <QPixmap>
       
    24 #include <QDateTime>
    24 
    25 
    25 #include <XQConversions>
    26 #include <XQConversions>
    26 
    27 
    27 #include <afstorageglobals.h>
    28 #include <afstorageglobals.h>
    28 #include <afstorageclient.h>
    29 #include <afstorageclient.h>
    43 {
    44 {
    44     delete mClient;
    45     delete mClient;
    45     mAppArcSession.Close();
    46     mAppArcSession.Close();
    46 }
    47 }
    47 
    48 
    48 bool AfStorageProxyPrivate::addActivity(int applicationId, const QString &activityId, const QString &customActivityName, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot)
       
    49 {    
       
    50     int screenshotHandle(-1);
       
    51     CFbsBitmap* bitmap(screenshot.toSymbianCFbsBitmap());
       
    52     if (bitmap) {
       
    53         screenshotHandle = bitmap->Handle();
       
    54     }
       
    55     
       
    56     CAfEntry *entry = createSaveEntry(applicationId, activityId, customActivityName, activityData, metadata);
       
    57     int result = mClient->addActivity(*entry, screenshotHandle);    
       
    58     delete entry;
       
    59     delete bitmap;
       
    60     
       
    61     return KErrNone == result;
       
    62 }
       
    63 
       
    64 bool AfStorageProxyPrivate::updateActivity(int applicationId, const QString &activityId, const QString &customActivityName, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot)
       
    65 {
       
    66     int screenshotHandle(-1);
       
    67     CFbsBitmap* bitmap(screenshot.toSymbianCFbsBitmap());
       
    68     if (bitmap) {
       
    69         screenshotHandle = bitmap->Handle();
       
    70     }
       
    71     
       
    72     CAfEntry *entry = createSaveEntry(applicationId, activityId, customActivityName, activityData, metadata);
       
    73     int result = mClient->updateActivity(*entry, screenshotHandle);    
       
    74     delete entry;
       
    75     delete bitmap;
       
    76     
       
    77     return KErrNone == result;
       
    78 }
       
    79 
       
    80 bool AfStorageProxyPrivate::saveActivity(int applicationId, const QString &activityId, const QString &customActivityName, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot)
    49 bool AfStorageProxyPrivate::saveActivity(int applicationId, const QString &activityId, const QString &customActivityName, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot)
    81 {
    50 {
    82     int screenshotHandle(-1);
    51     int screenshotHandle(-1);
    83     CFbsBitmap* bitmap(screenshot.toSymbianCFbsBitmap());
    52     CFbsBitmap* bitmap(screenshot.toSymbianCFbsBitmap());
    84     if (bitmap) {
    53     if (bitmap) {
   179     int result = mClient->launchActivity(*entry);
   148     int result = mClient->launchActivity(*entry);
   180     delete entry;
   149     delete entry;
   181     return KErrNone == result;
   150     return KErrNone == result;
   182 }
   151 }
   183 
   152 
   184 bool AfStorageProxyPrivate::getThumbnail(const QSize &size, const QString &imagePath, void *userData)
   153 bool AfStorageProxyPrivate::getThumbnail(const QString &imagePath, void *userData)
   185 {
   154 {
   186     HBufC *source = XQConversions::qStringToS60Desc(imagePath);
   155     HBufC *source = XQConversions::qStringToS60Desc(imagePath);
   187     int result = mClient->getThumbnail(TSize(size.width(), size.height()), *source, userData);
   156     int result = mClient->getThumbnail(*source, userData);
   188     delete source;
   157     delete source;
   189     return KErrNone == result;
   158     return KErrNone == result;
   190 }
   159 }
   191 
   160 
   192 bool AfStorageProxyPrivate::notifyDataChange()
   161 bool AfStorageProxyPrivate::notifyDataChange()
   227 }
   196 }
   228  
   197  
   229 CAfEntry *AfStorageProxyPrivate::createFilterEntry(int applicationId, const QString &activityId)
   198 CAfEntry *AfStorageProxyPrivate::createFilterEntry(int applicationId, const QString &activityId)
   230 {   
   199 {   
   231     CAfEntry *entry(0); 
   200     CAfEntry *entry(0); 
   232     QT_TRAP_THROWING(entry = CAfEntry::NewL(0, applicationId, TPtrC(static_cast<const TUint16*>(activityId.utf16())), KNullDesC(), KNullDesC(), KNullDesC8(), KNullDesC8()));
   201     QT_TRAP_THROWING(entry = CAfEntry::NewL(0, applicationId, TPtrC(static_cast<const TUint16*>(activityId.utf16())), KNullDesC(), KNullDesC(), KNullDesC8(), KNullDesC8(), TTime()));
   233     return entry;
   202     return entry;
   234 }
   203 }
   235 
   204 
   236 CAfEntry *AfStorageProxyPrivate::createSaveEntry(int applicationId, const QString &activityId, const QString &customActivityName, const QVariant &activityData, const QVariantHash &metadata)
   205 CAfEntry *AfStorageProxyPrivate::createSaveEntry(int applicationId, const QString &activityId, const QString &customActivityName, const QVariant &activityData, const QVariantHash &metadata)
   237 {   
   206 {   
   266                                applicationId, 
   235                                applicationId, 
   267                                *actBuff, 
   236                                *actBuff, 
   268                                *customNameBuff,
   237                                *customNameBuff,
   269                                KNullDesC, 
   238                                KNullDesC, 
   270                                privateBuff, 
   239                                privateBuff, 
   271                                publicBuff);
   240                                publicBuff,
       
   241                                convertQDateTimeToTTime(metadata[ActivityTimestamp].toDateTime()));
   272         CleanupStack::PopAndDestroy(customNameBuff);
   242         CleanupStack::PopAndDestroy(customNameBuff);
   273         CleanupStack::PopAndDestroy(actBuff);
   243         CleanupStack::PopAndDestroy(actBuff);
   274         CleanupStack::PopAndDestroy(&publicBuff);
   244         CleanupStack::PopAndDestroy(&publicBuff);
   275         CleanupStack::PopAndDestroy(&privateBuff);
   245         CleanupStack::PopAndDestroy(&privateBuff);
   276     );
   246     );
   302     metadata.insert(ActivityActivityKeyword, XQConversions::s60DescToQString(entry->ActivityId()));
   272     metadata.insert(ActivityActivityKeyword, XQConversions::s60DescToQString(entry->ActivityId()));
   303     metadata.insert(ActivityApplicationName, activityDisplayText(entry));
   273     metadata.insert(ActivityApplicationName, activityDisplayText(entry));
   304     metadata.insert(ActivityScreenshotKeyword, XQConversions::s60DescToQString(entry->ImageSrc()));
   274     metadata.insert(ActivityScreenshotKeyword, XQConversions::s60DescToQString(entry->ImageSrc()));
   305     metadata.insert(ActivityPersistence, (entry->Flags() & CAfEntry::Persistent) ? true : false);
   275     metadata.insert(ActivityPersistence, (entry->Flags() & CAfEntry::Persistent) ? true : false);
   306     metadata.insert(ActivityVisibility, (entry->Flags() & CAfEntry::Invisible) ? false : true); 
   276     metadata.insert(ActivityVisibility, (entry->Flags() & CAfEntry::Invisible) ? false : true); 
       
   277     metadata.insert(ActivityTimestamp, convertTTimeToQDateTime(entry->Timestamp())); 
   307     return metadata;
   278     return metadata;
   308 }
   279 }
   309 
   280 
   310 QString AfStorageProxyPrivate::activityDisplayText(CAfEntry *entry)
   281 QString AfStorageProxyPrivate::activityDisplayText(CAfEntry *entry)
   311 {
   282 {
   315         return QString::fromUtf16(info.iShortCaption.Ptr(), info.iShortCaption.Length());        
   286         return QString::fromUtf16(info.iShortCaption.Ptr(), info.iShortCaption.Length());        
   316     } else {
   287     } else {
   317         return XQConversions::s60DescToQString(entry->CustomActivityName());
   288         return XQConversions::s60DescToQString(entry->CustomActivityName());
   318     }
   289     }
   319 }
   290 }
       
   291 
       
   292 // -----------------------------------------------------------------------------
       
   293 TTime AfStorageProxyPrivate::convertQDateTimeToTTime(const QDateTime &timestamp) const
       
   294 {
       
   295     return TTime( _L( "19700000:" ) ) + TTimeIntervalSeconds( timestamp.toTime_t() ) +
       
   296                          TTimeIntervalMicroSeconds( timestamp.time().msec() * 1000 );
       
   297 }
       
   298 
       
   299 // -----------------------------------------------------------------------------
       
   300 QDateTime AfStorageProxyPrivate::convertTTimeToQDateTime(const TTime &s60Time) const
       
   301 {
       
   302     TTime posixEpoch(_L("19700000:"));
       
   303     TTimeIntervalSeconds secondsFrom;
       
   304     TTimeIntervalMicroSeconds microSecondsFrom;
       
   305     s60Time.SecondsFrom(posixEpoch, secondsFrom);
       
   306     microSecondsFrom = s60Time.MicroSecondsFrom(posixEpoch);
       
   307     QDateTime retVal = QDateTime::fromTime_t(secondsFrom.Int());
       
   308     retVal = retVal.addMSecs((microSecondsFrom.Int64() % TInt64(1000000) ) / TInt64(1000));
       
   309     return retVal;    
       
   310 }