diff -r e4f038c420f7 -r 3ac3aaebaee5 homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/hsscene_mock.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/homescreenapp/hsapplication/tsrc/t_hsapplication/t_hsapplicationexe/src/hsscene_mock.cpp Mon Sep 20 10:19:07 2010 +0300 @@ -0,0 +1,183 @@ +/* +* 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 +#include "hsdomainmodeldatastructures.h" +#include "hsscene.h" +#include "hspage.h" +#include "hswidgethost.h" +#include "hswallpaper.h" +#include "hsconfiguration.h" + +HsScene::~HsScene() +{ + delete mWallpaper; + qDeleteAll(mPages); +} + +int HsScene::databaseId() const +{ + return mDatabaseId; +} + +bool HsScene::load() +{ + return true; +} + +HsWallpaper *HsScene::wallpaper() const +{ + return mWallpaper; +} + +QList HsScene::pages() const +{ + return mPages; +} + +bool HsScene::addPage(HsPage *page) +{ + if (!page) { + return false; + } + + if (mPages.contains(page)) { + return true; + } + + mPages << page; + return true; +} + +bool HsScene::removePage(HsPage *page) +{ + if (!page) { + return false; + } + return mPages.removeOne(page); +} + +bool HsScene::setActivePage(HsPage *page) +{ + if (!page) { + return false; + } + + if (!mPages.contains(page)) { + return false; + } + + mActivePage = page; + return true; +} + +bool HsScene::setActivePageIndex(int index) +{ + if (index < 0 || mPages.count() <= index) { + return false; + } + return setActivePage(mPages[index]); +} + +HsPage *HsScene::activePage() const +{ + return mActivePage; +} + +int HsScene::activePageIndex() const +{ + return mPages.indexOf(mActivePage); +} + +void HsScene::setActiveWidget(HsWidgetHost *widget) +{ + mActiveWidget = widget; +} + +HsWidgetHost *HsScene::activeWidget() const +{ + return mActiveWidget; +} + +void HsScene::setOnline(bool online) +{ + mIsOnline = online; + foreach (HsPage *page, mPages) { + page->setOnline(online); + } +} + +bool HsScene::isOnline()const +{ + return mIsOnline; +} + +/*! + Singleton. +*/ +HsScene *HsScene::instance() +{ + return mInstance; +} + +HsScene *HsScene::takeInstance() +{ + HsScene *instance = mInstance; + mInstance = 0; + return instance; +} + +void HsScene::setInstance(HsScene *instance) +{ + if (mInstance != instance) { + delete mInstance; + mInstance = instance; + } +} + +/*! + Listens for application background/foreground changes. +*/ +bool HsScene::eventFilter(QObject *watched, QEvent *event) +{ + switch (event->type()) { + case QEvent::ApplicationActivate: + mActivePage->showWidgets(); + break; + case QEvent::ApplicationDeactivate: + mActivePage->hideWidgets(); + break; + default: + break; + } + return QObject::eventFilter(watched, event); +} + +HsScene::HsScene(QObject *parent) + : QObject(parent), + mDatabaseId(-1), + mWallpaper(0), + mActivePage(0), + mActiveWidget(0), + mIsOnline(true) +{ +} + +/*! + Points to the scene instance. +*/ +HsScene *HsScene::mInstance = 0;