diff -r 0b3699f6c654 -r e36b2f4799c0 tsdevicedialog/tsdevicedialogplugin/src/tsmodel.cpp --- a/tsdevicedialog/tsdevicedialogplugin/src/tsmodel.cpp Fri Sep 17 08:32:18 2010 +0300 +++ b/tsdevicedialog/tsdevicedialogplugin/src/tsmodel.cpp Mon Oct 04 00:38:31 2010 +0300 @@ -23,25 +23,14 @@ #include -#ifdef Q_OS_SYMBIAN -#include -#include - -const int TSDeviceDialogUid = 0x2002677F; -const int ItemsLimit = 0x00000001; -#endif - #include "tsmodelitem.h" -#include "tsentrymodelitem.h" -#include "tsactivitymodelitem.h" #include "tsdataroles.h" #include "tstaskchangeinfo.h" -const int maxItems(10); /*! \class TsModel \ingroup group_tsdevicedialogplugin - \brief Model storing running application and activieties. + \brief Model storing running tasks. */ /*! @@ -49,33 +38,11 @@ \param query used to create model \param pointer to parent object */ -TsModel::TsModel(TsTaskMonitor &applicationSrv, - QObject &activitySrv, - QObject *parent) : +TsModel::TsModel(TsTaskMonitor &applicationSrv, QObject *parent) : QAbstractListModel(parent), mEntries(), - mApplicationService(applicationSrv), - mActivityService(activitySrv), - mMaxItems(maxItems) + mApplicationService(applicationSrv) { - -#ifdef Q_OS_SYMBIAN - XQSettingsManager *crManager = new XQSettingsManager; - XQCentralRepositorySettingsKey itemsNumberKey(TSDeviceDialogUid, ItemsLimit); - QVariant itemsNumberVariant = - crManager->readItemValue(itemsNumberKey, XQSettingsManager::TypeInt); - if (!itemsNumberVariant.isNull()) { - int number = itemsNumberVariant.toInt(); - if (number > 0) { - mMaxItems = number; - } - } -#endif - - connect(&activitySrv, - SIGNAL(dataChanged()), - this, - SLOT(updateActivities())); connect(&applicationSrv, SIGNAL(taskListChanged()), this, @@ -96,8 +63,7 @@ Returns count of rows in model \retval number of rows */ -int TsModel::rowCount( - const QModelIndex &parent) const +int TsModel::rowCount(const QModelIndex &parent) const { Q_UNUSED(parent); return mEntries.count(); @@ -147,23 +113,12 @@ \param role which data role to return \retval models data */ -QVariant TsModel::data(const QModelIndex &index, - int role) const +QVariant TsModel::data(const QModelIndex &index, int role) const { return index.isValid() ? entry(index)->data(role) : QVariant(); } /*! - Returns maximum anount of data allowed for model - \retval maximum data count -*/ - -int TsModel::maxRowCount()const -{ - return mMaxItems; -} - -/*! Activate one of model entries */ void TsModel::openApplication(const QModelIndex &index) @@ -191,10 +146,9 @@ */ void TsModel::updateApplications() { - QList changes(mApplicationService.changeList()); + QList changes(mApplicationService.changeList()); if (changes.count() == 0) { - //no applications - only activities on list return; } //check 1st item whether we have cancel change - if so reset model @@ -206,59 +160,33 @@ switch (changes[iter].first.changeType()) { case TsTaskChangeInfo::EChangeDelete : removeRows(changes[iter].first.oldOffset(), 1); - //we had max rows before delete - so there is possibility to add - //one activity - if(mEntries.count() + 1 == maxRowCount()) { - beginInsertRows(QModelIndex(), mEntries.count(), mEntries.count()); - getActivities(false); - endInsertRows(); - } break; case TsTaskChangeInfo::EChangeInsert : insertRows(changes[iter].first.newOffset(), 1, - new TsEntryModelItem(changes[iter].second)); - //we have too many items - delete some activities if we can - while(mEntries.count() > maxRowCount() && mActivitiesCount > 0) { - removeRows(mEntries.count()-1, 1); - mActivitiesCount--; - } + new TsModelItem(changes[iter].second)); break; case TsTaskChangeInfo::EChangeMove : moveRows(changes[iter].first.oldOffset(), changes[iter].first.newOffset()); break; case TsTaskChangeInfo::EChangeUpdate : updateRows(changes[iter].first.oldOffset(), - new TsEntryModelItem(changes[iter].second)); + new TsModelItem(changes[iter].second)); break; default: break; } } - - //because delete entries are at end of changelist - iterate backwards - } /*! - Updates model with fresh entries -*/ -void TsModel::updateActivities() -{ - //as for now we need full update when activities change - fullUpdate(); -} - -/*! - reset model using full application and activities lists + reset model */ void TsModel::fullUpdate() { beginResetModel(); qDeleteAll(mEntries); mEntries.clear(); - mActivitiesCount = 0; getApplications(); - getActivities(); endResetModel(); } @@ -269,52 +197,15 @@ void TsModel::getApplications() { //get all running applications and append to entries list - TsModelItem *entry(0); - QList< TsTaskChange> tasks(mApplicationService.changeList(true)); + QList tasks(mApplicationService.changeList(true)); foreach(TsTaskChange taskData, tasks) { if (!taskData.second.isNull()) { - entry = new TsEntryModelItem(taskData.second); - if (entry) { - mEntries.append(entry); - } + mEntries.append(new TsModelItem(taskData.second)); } } } /*! - Read current activities -*/ -void TsModel::getActivities(bool fullUpdate) -{ - //get activities - int maxActivitiesCount = maxRowCount() - mEntries.count() + mActivitiesCount; - if (maxActivitiesCount > 0) { - QList activities; - QMetaObject::invokeMethod(&mActivityService, - "activitiesList", - Q_RETURN_ARG(QList, activities), - Q_ARG(int, maxActivitiesCount)); - int iterPos = fullUpdate ? 0 : mActivitiesCount; - for(int iter(iterPos); iter< activities.count(); iter++) { - mEntries.append(new TsActivityModelItem(*this, mActivityService, activities[iter])); - mActivitiesCount++; - } - } -} - -/*! - Called when some item was changed - \param itemPtr - address of updated item -*/ -void TsModel::entryChanged(TsModelItem *itemPtr) -{ - const int itemIndex = mEntries.indexOf(itemPtr); - if (itemIndex != -1) { - emit dataChanged(index(itemIndex, 0), index(itemIndex, 0)); - } -} - -/*! Returns an entry from model \param index of entry in model \retval pointer to an entry