tsdevicedialog/tsdevicedialogplugin/src/tsactivitymodelitem.cpp
changeset 104 9b022b1f357c
child 102 8b8b34fa9751
child 109 e0aa398e6810
equal deleted inserted replaced
103:b99b84bcd2d1 104:9b022b1f357c
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: tsactivitymodelitem.cpp
       
    15 *
       
    16 */
       
    17 #include <hbicon.h>
       
    18 #include <afstorageglobals.h>
       
    19 
       
    20 #include "tsactivitymodelitem.h"
       
    21 #include "tsdataroles.h"
       
    22 
       
    23 /*!
       
    24     \class TsActivityModelItem
       
    25     \ingroup group_tsdevicedialogplugin
       
    26     \brief Item presenting activity in the grid.
       
    27 */
       
    28 
       
    29 /*!
       
    30     Standard C++ constructor
       
    31     /param model - reference to parent model
       
    32     /param service - reference to initialized ActivityManager instance
       
    33     /param entry - Activity data
       
    34 */
       
    35 TsActivityModelItem::TsActivityModelItem(QAbstractListModel &model,
       
    36                                          QObject& service, 
       
    37                                          const QVariantHash & activity)
       
    38     :
       
    39     mService(service),
       
    40     mActivity(activity),
       
    41     mIcon(),
       
    42     mRequestPending(false)
       
    43 {
       
    44     connect(this,
       
    45             SIGNAL(entryChanged(TsModelItem *)),
       
    46             &model,
       
    47             SLOT(entryChanged(TsModelItem *)));
       
    48     connect(&mService,
       
    49             SIGNAL(thumbnailReady(QPixmap, void *)),
       
    50             this,
       
    51             SLOT(thumbnailReady(QPixmap, void *)));
       
    52 }
       
    53 
       
    54 /*!
       
    55     Standard C++ destructor
       
    56     /param service - reference to initialized ActivityManager instance
       
    57     /param entry - Activity data
       
    58 */
       
    59 TsActivityModelItem::~TsActivityModelItem()
       
    60 {
       
    61 }
       
    62 
       
    63 /*!
       
    64     Returns the data stored under the given role.
       
    65     /param role - requested data role
       
    66     /return data encapulated by QVariant
       
    67 */
       
    68 QVariant TsActivityModelItem::data(int role) const
       
    69 {
       
    70     switch (role) {
       
    71         case Qt::DisplayRole:
       
    72             return displayRole();
       
    73         case Qt::DecorationRole:
       
    74             return decorationRole();
       
    75         case TsDataRoles::Closable:
       
    76             return QVariant(false);
       
    77         default:
       
    78             return QVariant(QVariant::Invalid);
       
    79     }
       
    80 }
       
    81 
       
    82 /*!
       
    83     Empty interface implementation
       
    84 */
       
    85 void TsActivityModelItem::close()
       
    86 {
       
    87     //no implementation required
       
    88 }
       
    89 
       
    90 /*!
       
    91     Open or move to foreground activity repesented by entry
       
    92 */
       
    93 void TsActivityModelItem::open()
       
    94 {
       
    95     QVariant application(mActivity.value(ActivityApplicationKeyword));
       
    96     QVariant activity(mActivity.value(ActivityActivityKeyword));
       
    97 
       
    98     if (application.isValid() && activity.isValid()) {
       
    99         QMetaObject::invokeMethod(&mService,
       
   100                                   "launchActivity",
       
   101                                   Q_ARG(int, application.toInt()),
       
   102                                   Q_ARG(QString, activity.toString()));
       
   103     }
       
   104 }
       
   105 
       
   106 /*!
       
   107     Return application name keyword
       
   108 */
       
   109 QString TsActivityModelItem::applicationKeyword()
       
   110 {
       
   111     static QString applicationName(ActivityApplicationName);
       
   112     return applicationName;
       
   113 }
       
   114 
       
   115 /*!
       
   116     Return activity visibility status keyword
       
   117 */
       
   118 QString TsActivityModelItem::visibilityKeyword()
       
   119 {
       
   120     static QString visibility("visible");
       
   121     return visibility;
       
   122 }
       
   123 
       
   124 /*!
       
   125     Return activity screenshot keyword
       
   126 */
       
   127 QString TsActivityModelItem::screenshotKeyword()
       
   128 {
       
   129     static QString screenshot(ActivityScreenshotKeyword);
       
   130     return screenshot;
       
   131 }
       
   132 
       
   133 /*!
       
   134     Returns the data stored under decoration role.
       
   135     /return data encapulated by QVariant
       
   136 */
       
   137 QVariant TsActivityModelItem::decorationRole() const
       
   138 {
       
   139     if (!mRequestPending) {
       
   140         const_cast<TsActivityModelItem *>(this)->mRequestPending = true;
       
   141         QVariant screenshot = mActivity.value(screenshotKeyword());
       
   142         if (screenshot.isValid()) {
       
   143             QMetaObject::invokeMethod(&mService,
       
   144                                       "getThumbnail",
       
   145                                       Q_ARG(QSize, QSize(128, 128)),
       
   146                                       Q_ARG(QString, screenshot.toString()),
       
   147                                       Q_ARG(void *, const_cast<TsActivityModelItem *>(this)));
       
   148         }
       
   149     }
       
   150     return QVariant::fromValue<HbIcon>(HbIcon(mIcon));
       
   151 }
       
   152 
       
   153 /*!
       
   154     Returns the data stored under display role.
       
   155     /return data encapulated by QVariant
       
   156 */
       
   157 QVariant TsActivityModelItem::displayRole() const
       
   158 {
       
   159     return mActivity.value(applicationKeyword());
       
   160 }
       
   161 
       
   162 /*!
       
   163     Slot retrieve thumbnail form TM, update content and notify observers
       
   164     /param pixmap - thumbnail content
       
   165     /ptr - user data provided to request
       
   166 */
       
   167 void TsActivityModelItem::thumbnailReady(QPixmap pixmap, void *ptr)
       
   168 {
       
   169     if (ptr == this) {
       
   170         mIcon = pixmap;
       
   171         emit entryChanged(this);
       
   172     }
       
   173 }