taskswitcherapp/tsserviceplugin/src/tsitemprovider.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 19 Mar 2010 09:27:44 +0200
changeset 35 f9ce957a272c
child 36 cdae8c6c3876
permissions -rw-r--r--
Revision: 201007 Kit: 201011

/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description: 
*
*/

#include "tsitemprovider.h"

#include <QModelIndex>
#include <QAbstractItemModel>

#include <caservice.h>

#include "tsrecentapplicationsmodel.h"
#include "tsclosedapplicationsfiltermodel.h"
#include "tsdataroles.h"

TsItemProvider::TsItemProvider(QObject *parent) : TsItemProviderInterface(parent), mService(CaService::instance())
{
    TsRecentApplicationsModel *recentAppModel = new TsRecentApplicationsModel(this);
    mModel = new TsClosedApplicationsFilterModel(this);
    mModel->setSourceModel(recentAppModel);
}

TsItemProvider::~TsItemProvider()
{
}

QAbstractItemModel *TsItemProvider::model()
{
    return mModel;
}

void TsItemProvider::openApplication(const QModelIndex &index)
{
    QVariant entryId = index.data(TsDataRoles::EntryId);
    if (entryId.isValid()) {
        mService->executeCommand(entryId.toInt(), QString("open"));
    }
}

void TsItemProvider::closeApplication(const QModelIndex &index)
{
    if (index.data(TsDataRoles::Closable).toBool()) {
        QVariant entryId = index.data(TsDataRoles::EntryId);
        if (entryId.isValid()) {
            mModel->addId(entryId.toInt());
            mService->executeCommand(entryId.toInt(), QString("close"));
        }
    }
}

void TsItemProvider::closeAllApplications()
{
    for (int row(0); row < mModel->rowCount(); ++row) {
        closeApplication(mModel->index(row, 0));
    }
}

void TsItemProvider::clearClosedApplicationList()
{
    mModel->clearIds();
}