homescreenapp/stateplugins/hshomescreenstateplugin/src/hsloadscenestate.cpp
branchRCL_3
changeset 82 5f0182e07bfb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsloadscenestate.cpp	Tue Aug 31 15:06:34 2010 +0300
@@ -0,0 +1,129 @@
+/*
+* 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 "hsloadscenestate.h"
+#include "hsscene.h"
+#include "hsgui.h"
+
+#ifdef Q_OS_SYMBIAN
+#include <XQSettingsManager>
+#include <startupdomainpskeys.h>
+#endif
+
+
+/*!
+    \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()
+
+    Loads scene information and initiates a transition to idle state if ready.
+*/
+
+/*!
+    Loads the home screen scene.
+*/
+void HsLoadSceneState::action_loadScene()
+{
+    HsScene::setInstance(new HsScene);
+    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();
+		}
+
+#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);
+		}
+}
+#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";
+  
+    HsGui::instance()->show();
+    emit event_history();
+}