tsdevicedialog/tsdevicedialogplugin/src/tsmodel.cpp
changeset 107 b34d53f6acdf
parent 99 7aaf39b772ac
child 112 dbfb5e38438b
equal deleted inserted replaced
106:e78d6e055a5b 107:b34d53f6acdf
    12 * Contributors:
    12 * Contributors:
    13 *
    13 *
    14 * Description: tsmodel.cpp
    14 * Description: tsmodel.cpp
    15 *
    15 *
    16 */
    16 */
       
    17 #include <HbIcon>
       
    18 #include <qvariant.h>
       
    19 #include <qlist.h>
       
    20 #include <afstorageglobals.h>
       
    21 
       
    22 #ifdef Q_OS_SYMBIAN
       
    23 #include <XQSettingsManager>
       
    24 #include <apaid.h>
       
    25 
       
    26 const int TSDeviceDialogUid = 0x2002677F;
       
    27 const int ItemsLimit = 0x00000001;
       
    28 #endif
       
    29 
    17 #include "tsmodel.h"
    30 #include "tsmodel.h"
    18 #include "tsmodelitem.h"
    31 #include "tsmodelitem.h"
    19 #include "tsentrymodelitem.h"
    32 #include "tsentrymodelitem.h"
    20 #include "tsactivitymodelitem.h"
    33 #include "tsactivitymodelitem.h"
    21 #include "tsdataroles.h"
    34 #include "tsdataroles.h"
    22 
    35 
    23 #include <HbIcon>
       
    24 #include <qvariant.h>
       
    25 #include <qlist.h>
       
    26 #include <afstorageglobals.h>
       
    27 
       
    28 #ifdef Q_OS_SYMBIAN
       
    29 #include <XQSettingsManager>
       
    30 #include <apaid.h>
       
    31 
       
    32 const int TSDeviceDialogUid = 0x2002677F;
       
    33 const int ItemsLimit = 0x00000001;
       
    34 #endif
       
    35 
       
    36 const int maxItems(10);
    36 const int maxItems(10);
    37 /*!
    37 /*!
    38     \class TsModel
    38     \class TsModel
    39     \ingroup group_tsdevicedialogplugin
    39     \ingroup group_tsdevicedialogplugin
    40     \brief Model storing running application and activieties.
    40     \brief Model storing running application and activieties.
    43 /*!
    43 /*!
    44     Constructor
    44     Constructor
    45     \param query used to create model
    45     \param query used to create model
    46     \param pointer to parent object
    46     \param pointer to parent object
    47 */
    47 */
    48 TsModel::TsModel(TsTaskMonitor &applicationSrv, QObject &activitySrv, QObject *parent) :
    48 TsModel::TsModel(TsTaskMonitor &applicationSrv, 
       
    49                  QObject &activitySrv, 
       
    50                  QObject *parent) :
    49     QAbstractListModel(parent),
    51     QAbstractListModel(parent),
    50     mEntries(),
    52     mEntries(),
    51     mApplicationService(applicationSrv),
    53     mApplicationService(applicationSrv),
    52     mActivityService(activitySrv),
    54     mActivityService(activitySrv),
    53     mSize(240, 240),
       
    54     mMaxItems(maxItems)
    55     mMaxItems(maxItems)
    55 {
    56 {
    56     
    57     
    57 #ifdef Q_OS_SYMBIAN
    58 #ifdef Q_OS_SYMBIAN
    58     XQSettingsManager *crManager = new XQSettingsManager;
    59     XQSettingsManager *crManager = new XQSettingsManager;
    59     XQCentralRepositorySettingsKey itemsNumberKey(TSDeviceDialogUid, ItemsLimit);
    60     XQCentralRepositorySettingsKey itemsNumberKey(TSDeviceDialogUid, ItemsLimit);
    60     QVariant itemsNumberVariant = crManager->readItemValue(itemsNumberKey, XQSettingsManager::TypeInt);
    61     QVariant itemsNumberVariant = 
       
    62         crManager->readItemValue(itemsNumberKey, XQSettingsManager::TypeInt);
    61     if (!itemsNumberVariant.isNull()) {
    63     if (!itemsNumberVariant.isNull()) {
    62         int number = itemsNumberVariant.toInt();
    64         int number = itemsNumberVariant.toInt();
    63         if (number > 0) {
    65         if (number > 0) {
    64             mMaxItems = number;
    66             mMaxItems = number;
    65         }
    67         }
    66     }
    68     }
    67     iAppArcSession.Connect();
    69     iAppArcSession.Connect();
    68 #endif
    70 #endif
    69 
    71 
    70     connect(&activitySrv, SIGNAL(dataChanged()), this, SLOT(updateModel()));
    72     connect(&activitySrv, 
    71     connect(&applicationSrv, SIGNAL(taskListChanged()), this, SLOT(updateModel()));
    73             SIGNAL(dataChanged()), 
       
    74             this, 
       
    75             SLOT(updateModel()));
       
    76     connect(&applicationSrv, 
       
    77             SIGNAL(taskListChanged()), 
       
    78             this, 
       
    79             SLOT(updateModel()));
    72     updateModel();
    80     updateModel();
    73 }
    81 }
    74 
    82 
    75 /*!
    83 /*!
    76     Destructor
    84     Destructor
   130 /*!
   138 /*!
   131     Close one of moder entries
   139     Close one of moder entries
   132 */
   140 */
   133 void TsModel::closeApplication(const QModelIndex &index)
   141 void TsModel::closeApplication(const QModelIndex &index)
   134 {
   142 {
   135     if (!index.isValid() || !entry(index)->data(TsDataRoles::Closable).toBool()) {
   143     if (!index.isValid() || 
       
   144         !entry(index)->data(TsDataRoles::Closable).toBool()) {
   136         return;
   145         return;
   137     }
   146     }
   138     entry(index)->close();
   147     entry(index)->close();
   139 }
   148 }
   140 
   149 
   142     Updates model with fresh entries
   151     Updates model with fresh entries
   143 */
   152 */
   144 void TsModel::updateModel()
   153 void TsModel::updateModel()
   145 {
   154 {
   146     //clear current data
   155     //clear current data
       
   156     beginResetModel();
   147     qDeleteAll(mEntries);
   157     qDeleteAll(mEntries);
   148     mEntries.clear();
   158     mEntries.clear();
   149 
       
   150     beginResetModel();
       
   151     getApplications();
   159     getApplications();
   152     getActivities();
   160     getActivities();
   153     endResetModel();
   161     endResetModel();
   154 
   162 
   155 }
   163 }
   158     Read list of running applications
   166     Read list of running applications
   159 */
   167 */
   160 void TsModel::getApplications()
   168 void TsModel::getApplications()
   161 {
   169 {
   162     //get running applications
   170     //get running applications
   163     TsModelItem *entry(0);
       
   164     QList< QSharedPointer<TsTask> > tasks(mApplicationService.taskList());
   171     QList< QSharedPointer<TsTask> > tasks(mApplicationService.taskList());
   165     foreach (QSharedPointer<TsTask> taskData, tasks) {
   172     foreach (QSharedPointer<TsTask> taskData, tasks) {
   166         entry = new TsEntryModelItem(taskData);
   173         mEntries.append(new TsEntryModelItem(taskData));
   167         if (0 != entry) {
       
   168             mEntries.append(entry);
       
   169         }
       
   170     }
   174     }
   171 }
   175 }
   172 
   176 
   173 /*!
   177 /*!
   174     Read current activities
   178     Read current activities
   176 void TsModel::getActivities()
   180 void TsModel::getActivities()
   177 {
   181 {
   178     //get activities
   182     //get activities
   179     TsModelItem *entry(0);
   183     TsModelItem *entry(0);
   180     QList<QVariantHash> activities;
   184     QList<QVariantHash> activities;
   181     QMetaObject::invokeMethod(&mActivityService, "activitiesList", Q_RETURN_ARG(QList<QVariantHash>, activities));
   185     QMetaObject::invokeMethod(&mActivityService, 
       
   186                               "activitiesList", 
       
   187                               Q_RETURN_ARG(QList<QVariantHash>, 
       
   188                               activities));
   182     foreach(QVariantHash activity, activities) {
   189     foreach(QVariantHash activity, activities) {
   183         prepareActivityEntry(activity);
   190         prepareActivityEntry(activity);
   184         entry = new TsActivityModelItem(*this, mActivityService, activity);
   191         entry = new TsActivityModelItem(*this, mActivityService, activity);
   185         if (entry) {
   192         if (maxRowCount() <= mEntries.count()) {
   186             if (maxRowCount() <= mEntries.count()) {
   193             delete entry;
   187                 break;
   194             break;
   188             }
       
   189             mEntries.append(entry);
       
   190         }
   195         }
       
   196         mEntries.append(entry);
   191     }
   197     }
   192 }
   198 }
   193 
   199 
   194 /*!
   200 /*!
   195     Modify activity entry replacing application id with name
   201     Modify activity entry replacing application id with name