/*
* 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 <HbMainWindow>
#ifdef Q_OS_SYMBIAN
#include <XQSettingsManager>
#include <startupdomainpskeys.h>
#endif
#include "hsloadscenestate.h"
#include "hsscene.h"
/*!
\class HsLoadSceneState
\ingroup group_hshomescreenstateplugin
\brief View part of the home screen idle state.
Loads the home screen scene.
*/
/*!
Constructs a new load scene state with the given \a parent.
*/
HsLoadSceneState::HsLoadSceneState(QState *parent)
: QState(parent)
#ifdef Q_OS_SYMBIAN
,mStartupKey(KPSUidStartup.iUid, KPSStartupUiPhase),
mSettingsMgr(0)
#endif
{
connect(this, SIGNAL(entered()), SLOT(action_loadScene()));
#ifdef Q_OS_SYMBIAN
mSettingsMgr = new XQSettingsManager(this);
#endif //Q_OS_SYMBIAN
}
/*!
Destroys this idle state.
*/
HsLoadSceneState::~HsLoadSceneState()
{
}
/*!
\fn HsLoadSceneState::event_idle()
Initiates a transition to idle state.
*/
/*!
Loads the home screen scene.
*/
void HsLoadSceneState::action_loadScene()
{
HsScene::instance()->load();
#ifdef Q_OS_SYMBIAN
int startupPhase = mSettingsMgr->readItemValue(mStartupKey).toInt();
qDebug() << "HsLoadSceneState::action_loadScene boot phase " << startupPhase;
if (EStartupUiPhaseAllDone != startupPhase) {
qDebug() << "HsLoadSceneState::HsLoadSceneState, starting to listen key";
connect(mSettingsMgr,SIGNAL(valueChanged(XQSettingsKey, const QVariant &)), this,
SLOT(handleKeyChange(XQSettingsKey, const QVariant &)));
mSettingsMgr->startMonitoring(mStartupKey);
} else {
// We're already at the phase in boot where we can draw ourself to the foreground.
showUi();
delete mSettingsMgr;
mSettingsMgr = 0;
}
#else
showUi();
#endif
}
#ifdef Q_OS_SYMBIAN
/*!
\fn HsLoadSceneState::handleKeyChange()
Handles the key change. Activates hs ui when appropriate.
*/
void HsLoadSceneState::handleKeyChange(XQSettingsKey key, const QVariant &value)
{
qDebug() << "HsLoadSceneState::handleKeyChange key " << key.key()
<< "value " << value.toInt();
if (key.key() == KPSStartupUiPhase && value.toInt() == EStartupUiPhaseAllDone) {
showUi();
mSettingsMgr->stopMonitoring(mStartupKey);
mSettingsMgr->deleteLater();
mSettingsMgr = 0;
}
}
#endif
/*!
\fn HsLoadSceneState::showUi()
Makes the main window visible, signals transition to idle state and
brings the hs app to the foreground.
*/
void HsLoadSceneState::showUi()
{
qDebug() << "HsLoadSceneState::showUi";
HsScene::mainWindow()->raise();
HsScene::mainWindow()->show();
emit event_history();
}