camerauis/cameraxui/cxui/src/cxuiapplicationstate.cpp
branchRCL_3
changeset 24 bac7acad7cb3
parent 23 61bc0f252b2b
child 25 2c87b2808fd7
--- a/camerauis/cameraxui/cxui/src/cxuiapplicationstate.cpp	Tue Aug 31 15:03:46 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,271 +0,0 @@
-/*
-* Copyright (c) 2010 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 <QMetaEnum>
-
-#include "cxutils.h"
-#include "cxuieventlog.h"
-#include "cxuierrormanager.h"
-#include "cxuiapplicationstate.h"
-
-namespace
-{
-    static const char *EVENT_APPLICATION_STATE = "application state";
-}
-
-/*!
-* Constructor.
-*/
-CxuiApplicationState::CxuiApplicationState(CxuiApplication &application,
-                                           CxeSettings &settings,
-                                           CxuiDocumentLoader *documentLoader)
-    : mState(Background), mApplicationMonitor(NULL), mErrorManager(NULL), mEventLog(NULL)
-{
-    mApplicationMonitor = new CxuiApplicationFrameworkMonitor(application, settings);
-    mErrorManager = new CxuiErrorManager(documentLoader);
-
-    // Foreground state change signals
-    connect(mApplicationMonitor, SIGNAL(foregroundStateChanged(CxuiApplicationFrameworkMonitor::ForegroundState)),
-            this, SLOT(handleForegroundStateChanged(CxuiApplicationFrameworkMonitor::ForegroundState)));
-
-    // Battery empty signal
-    connect(mApplicationMonitor, SIGNAL(batteryEmpty()), this, SLOT(handleBatteryEmpty()));
-
-    // USB mass memory mode signal
-    connect(mApplicationMonitor, SIGNAL(usbMassMemoryModeToggled(bool)),
-            this, SLOT(handleUsbMassMemoryModeChanged(bool)));
-
-    // Severe error signals
-    connect(mErrorManager, SIGNAL(errorPopupShown()), this, SLOT(handleSevereError()));
-    connect(mErrorManager, SIGNAL(errorPopupClosed()), this, SLOT(handleErrorCleared()));
-
-#ifdef CX_DEBUG
-    mEventLog = new CxuiEventLog("CxuiApplicationState");
-#endif
-}
-
-/*!
-* Destructor.
-*/
-CxuiApplicationState::~CxuiApplicationState()
-{
-    delete mErrorManager;
-    delete mApplicationMonitor;
-    delete mEventLog;
-}
-
-/*!
-* Get current application state.
-*/
-CxuiApplicationState::State CxuiApplicationState::currentState() const
-{
-    return mState;
-}
-
-/*!
-* Start monitoring the application state.
-* Initial state is checked and signal emitted about state change *unless* state is Background.
-*/
-void CxuiApplicationState::startMonitoring()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    // Foreground handling checks for errors if needed.
-    handleForegroundStateChanged(mApplicationMonitor->foregroundState());
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Handle error from UI or engine.
-* Error will be checked and if it is severe, application state will become Error and error note will be shown.
-* If error is not severe, a warning note will be shown.
-* @param error The error id.
-*/
-void CxuiApplicationState::handleApplicationError(CxeError::Id error)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    if (error != CxeError::None) {
-        mErrorManager->check(error);
-        // If error manager sees this error as severe one, it will signal that back.
-        // We will handle updating state in handleSevereError().
-        // If only warning note (or nothing) is needed, application state is not changed.
-    }
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Handle change in application foreground status.
-* @param state New foreground status.
-*/
-void CxuiApplicationState::handleForegroundStateChanged(CxuiApplicationFrameworkMonitor::ForegroundState state)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    if (state == CxuiApplicationFrameworkMonitor::ForegroundFullyLost) {
-        CX_DEBUG(("CxuiApplicationState - application is in background"));
-        // Background overwrites even any error.  We clear any active errors.
-        // When returning to background, error situation will be re-checked.
-        setState(Background);
-        mErrorManager->clear();
-    } else {
-        CX_DEBUG(("CxuiApplicationState - application is in partial / full foreground"));
-        // Check that we were in background. Switching between partial and full background
-        // needs no actions.
-        if (currentState() == Background) {
-           CX_DEBUG(("CxuiApplicationState - application was in background before, moving to foreground"));
-            // Check that there's no active errors that have been ignored in background.
-            checkErrors();
-            if (currentState() != Error) {
-                setState(Normal);
-            }
-        }
-    }
-
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Handle USB mass memory mode (USB MMM) activating or deactivating.
-* If USB MMM activates, we enter error state and display error note.
-* When USB MMM deactivates, we hide the note and move to standby mode.
-* @param active Is the USB mass memory mode active.
-*/
-void CxuiApplicationState::handleUsbMassMemoryModeChanged(bool active)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    if (active) {
-        // USB error is not handled if:
-        // (a) other severe error already active
-        // (b) application is in background
-        if (currentState() == Normal || currentState() == Standby) {
-            // Emulate memory not accessible error.
-            handleApplicationError(CxeError::MemoryNotAccessible);
-        }
-    } else {
-        // If we had USB error, clear it now.
-        if (currentState() == Error) {
-            setState(Standby);
-            // Clear memory not accessible error.
-            mErrorManager->clear();
-        }
-    }
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Handle battery emptying. We need to stop all activity and exit the application.
-*/
-void CxuiApplicationState::handleBatteryEmpty()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    setState(Background);
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Handle a severe error after Error Manager has analyzed it.
-*/
-void CxuiApplicationState::handleSevereError()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    // In background we do not change the state from Background to anything else.
-    if (currentState() != Background) {
-        setState(Error);
-    }
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Severe error has been cleared.
-* Check if we should return to normal or background state.
-*/
-void CxuiApplicationState::handleErrorCleared()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    // No state change if we are not currently in Error state.
-    if (currentState() == Error) {
-        setState(Normal);
-    }
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Slot for requesting Standby state to be entered.
-* Request is accepted only if current state is Normal. Otherwise call has no effect.
-*/
-void CxuiApplicationState::enterStandby()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    if (currentState() == Normal) {
-        setState(Standby);
-    }
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Slot for requesting state change from Standby to Normal state.
-* Request is accepted only if current state is Standby. Otherwise call has no effect.
-*/
-void CxuiApplicationState::exitStandby()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    if (currentState() == Standby) {
-        setState(Normal);
-    }
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Set new state.
-* If state is actually changing, stateChanged() signal is emitted.
-*/
-void CxuiApplicationState::setState(State newState)
-{
-    if (mState != newState) {
-#ifdef CX_DEBUG
-        if (mEventLog) {
-            mEventLog->append(EVENT_APPLICATION_STATE,
-                              CxuiApplicationState::staticMetaObject.enumerator(
-                                  CxuiApplicationState::staticMetaObject.
-                                        indexOfEnumerator("State")).valueToKey(newState));
-            mEventLog->print();
-        }
-#endif // CX_DEBUG
-
-        State oldState = mState;
-        mState = newState;
-        emit stateChanged(newState, oldState);
-    }
-}
-
-/*!
-* Check if we have known errors active at the moment.
-* State is set to CxuiApplicationState::Error, if error is found.
-*/
-void CxuiApplicationState::checkErrors()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    if (mApplicationMonitor->isUsbMassMemoryModeActive()) {
-        // Force Error state even if Background is still the current state.
-        // We use this method to check errors also when returning from background.
-        // Normally in Background state we do not enter Error state.
-        setState(Error);
-        handleApplicationError(CxeError::MemoryNotAccessible);
-    }
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-
-// end of file