camerauis/cameraxui/cxui/src/cxuiviewmanager.cpp
author hgs
Wed, 06 Oct 2010 15:52:13 +0300
changeset 64 8ab66fc302e6
parent 58 ddba9caa7f32
permissions -rw-r--r--
201039
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/*
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
     2
* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
*
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    11
*
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    12
* Contributors:
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
*
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    14
* Description:
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
*
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    16
*/
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
#include <QDebug>
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    18
#include <QTimer>
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
#include <hbmainwindow.h>
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
#include <QGraphicsSceneEvent>
38
hgs
parents: 28
diff changeset
    21
#include <hbstyleloader.h>
58
hgs
parents: 52
diff changeset
    22
#include <afactivitystorage.h>
hgs
parents: 52
diff changeset
    23
#include <afactivation.h>
41
hgs
parents: 40
diff changeset
    24
#include <hbaction.h>
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    26
#include "cxuiapplication.h"
41
hgs
parents: 40
diff changeset
    27
#include "cxuiapplicationstate.h"
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    28
#include "cxuiviewmanager.h"
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    29
#include "cxuivideoprecaptureview.h"
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
#include "cxuistillprecaptureview.h"
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
#include "cxuipostcaptureview.h"
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
#include "cxuicapturekeyhandler.h"
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    33
#include "cxeengine.h"
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    34
#include "cxecameradevicecontrol.h"
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    35
#include "cxefeaturemanager.h" //  mEngine->featureManager()
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    36
#include "cxeviewfindercontrol.h"
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    37
#include "cxenamespace.h"
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    38
#include "cxuienums.h"
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    39
#include "cxutils.h"
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    40
#include "cxuidocumentloader.h"
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    41
#include "cxesettings.h"
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    42
#include "cxememorymonitor.h"
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    43
#include "cxuiserviceprovider.h"
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    44
#include "cxuiscenemodeview.h"
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    45
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
    46
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
    47
#ifdef Q_OS_SYMBIAN
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    48
#include "OstTraceDefinitions.h"
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
    49
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    50
#ifdef OST_TRACE_COMPILER_IN_USE
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    51
#include "cxuiviewmanagerTraces.h"
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    52
#endif
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    53
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
    54
#endif //Q_OS_SYMBIAN
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
    55
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    56
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    57
using namespace Cxe;
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    58
using namespace CxUiLayout;
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    59
41
hgs
parents: 40
diff changeset
    60
namespace
hgs
parents: 40
diff changeset
    61
{
hgs
parents: 40
diff changeset
    62
    static const int CXUI_STANDBY_CAMERA_TIMEOUT = 60000; // 60 seconds
hgs
parents: 40
diff changeset
    63
}
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    64
41
hgs
parents: 40
diff changeset
    65
hgs
parents: 40
diff changeset
    66
/*!
hgs
parents: 40
diff changeset
    67
* Constructor.
hgs
parents: 40
diff changeset
    68
*/
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    69
CxuiViewManager::CxuiViewManager(CxuiApplication &application, HbMainWindow &mainWindow, CxeEngine &engine) :
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    70
    mApplication(application),
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    71
    mMainWindow(mainWindow),
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    72
    mEngine(engine),
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    73
    mKeyHandler(NULL),
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    74
    mCameraDocumentLoader(NULL),
41
hgs
parents: 40
diff changeset
    75
    mApplicationState(NULL),
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
    76
    mErrorManager(NULL)
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    77
{
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    78
    CX_DEBUG_ENTER_FUNCTION();
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    79
41
hgs
parents: 40
diff changeset
    80
    // create mappings to map view name to correct docml file
hgs
parents: 40
diff changeset
    81
    mDocmlFilesByView.insert(STILL_PRE_CAPTURE_VIEW, STILL_1ST_XML);
hgs
parents: 40
diff changeset
    82
    mDocmlFilesByView.insert(VIDEO_PRE_CAPTURE_VIEW, VIDEO_1ST_XML);
hgs
parents: 40
diff changeset
    83
    mDocmlFilesByView.insert(POSTCAPTURE_VIEW, POSTCAPTURE_XML);
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
    84
    mDocmlFilesByView.insert(SCENE_MODE_VIEW, SCENEMODE_SETTING_XML);
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    85
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    86
    // Key handler
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    87
    mKeyHandler = new CxuiCaptureKeyHandler(mEngine);
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    88
41
hgs
parents: 40
diff changeset
    89
    // Document loader
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
    90
    OstTrace0(camerax_performance, CXUIVIEWMANAGER_CXUIVIEWMANAGER_1, "msg: e_CX_VIEWMANAGER_CREATE_DOCLOADER 1");
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    91
    mCameraDocumentLoader = new CxuiDocumentLoader(&engine);
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
    92
    OstTrace0(camerax_performance, CXUIVIEWMANAGER_CXUIVIEWMANAGER_2, "msg: e_CX_VIEWMANAGER_CREATE_DOCLOADER 0");
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    93
41
hgs
parents: 40
diff changeset
    94
    // Application state
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
    95
    mApplicationState = new CxuiApplicationState(mApplication, mEngine.settings(), mCameraDocumentLoader);
41
hgs
parents: 40
diff changeset
    96
    CX_ASSERT_ALWAYS(mApplicationState);
hgs
parents: 40
diff changeset
    97
    bool ok = connect(mApplicationState, SIGNAL(stateChanged(CxuiApplicationState::State, CxuiApplicationState::State)),
hgs
parents: 40
diff changeset
    98
                      this, SLOT(handleApplicationStateChanged(CxuiApplicationState::State, CxuiApplicationState::State)));
hgs
parents: 40
diff changeset
    99
    Q_ASSERT_X(ok, "CxuiViewManager", "Application state change signal connect failed.");
hgs
parents: 40
diff changeset
   100
    connect(this, SIGNAL(standbyExitRequested()), mApplicationState, SLOT(exitStandby()), Qt::QueuedConnection);
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   101
41
hgs
parents: 40
diff changeset
   102
    // Standby timer
hgs
parents: 40
diff changeset
   103
    mStandbyTimer.setInterval(CXUI_STANDBY_CAMERA_TIMEOUT);
hgs
parents: 40
diff changeset
   104
    mStandbyTimer.setSingleShot(true);
hgs
parents: 40
diff changeset
   105
    connect(&mStandbyTimer, SIGNAL(timeout()), mApplicationState, SLOT(enterStandby()));
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   106
41
hgs
parents: 40
diff changeset
   107
    // Filter capture and AF keys and follow user activity from mouse events.
hgs
parents: 40
diff changeset
   108
    QCoreApplication::instance()->installEventFilter(this);
hgs
parents: 40
diff changeset
   109
hgs
parents: 40
diff changeset
   110
    // Monitor memory on normal state, not on standby, error or background.
hgs
parents: 40
diff changeset
   111
    connect(this, SIGNAL(normalStateEntered()), &mEngine.memoryMonitor(), SLOT(startMonitoring()));
hgs
parents: 40
diff changeset
   112
    connect(this, SIGNAL(normalStateExited()), &mEngine.memoryMonitor(), SLOT(stopMonitoring()));
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   113
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   114
    //connecting initmode signals
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   115
    connect(&mEngine.cameraDeviceControl(), SIGNAL(initModeComplete(CxeError::Id)),
41
hgs
parents: 40
diff changeset
   116
            mApplicationState, SLOT(handleApplicationError(CxeError::Id)));
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   117
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   118
    connect(&mEngine.stillCaptureControl(), SIGNAL(imageCaptured(CxeError::Id, int)),
41
hgs
parents: 40
diff changeset
   119
            mApplicationState, SLOT(handleApplicationError(CxeError::Id)));
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   120
38
hgs
parents: 28
diff changeset
   121
    // Register stylesheet. It will be automatically destroyed on application
hgs
parents: 28
diff changeset
   122
    // exit.
hgs
parents: 28
diff changeset
   123
    HbStyleLoader::registerFilePath(":/camerax/cxui.css");
hgs
parents: 28
diff changeset
   124
40
hgs
parents: 39
diff changeset
   125
    // Create the view we are starting in, or connect signals so it
hgs
parents: 39
diff changeset
   126
    // will be created once we know the mode we are starting to.
hgs
parents: 39
diff changeset
   127
    initStartupView();
hgs
parents: 39
diff changeset
   128
41
hgs
parents: 40
diff changeset
   129
    // For UI startup testing, we need to emit applicationReady signal once UI is ready to be used.
hgs
parents: 40
diff changeset
   130
    connect(mMainWindow.currentView(), SIGNAL(viewReady()), &mApplication, SIGNAL(applicationReady()));
hgs
parents: 40
diff changeset
   131
hgs
parents: 40
diff changeset
   132
    CX_DEBUG_EXIT_FUNCTION();
hgs
parents: 40
diff changeset
   133
}
hgs
parents: 40
diff changeset
   134
hgs
parents: 40
diff changeset
   135
hgs
parents: 40
diff changeset
   136
/*!
hgs
parents: 40
diff changeset
   137
* Destructor.
hgs
parents: 40
diff changeset
   138
*/
hgs
parents: 40
diff changeset
   139
CxuiViewManager::~CxuiViewManager()
hgs
parents: 40
diff changeset
   140
{
hgs
parents: 40
diff changeset
   141
    CX_DEBUG_ENTER_FUNCTION();
hgs
parents: 40
diff changeset
   142
    QCoreApplication::instance()->removeEventFilter(this);
hgs
parents: 40
diff changeset
   143
hgs
parents: 40
diff changeset
   144
    if (!CxuiServiceProvider::isCameraEmbedded()) {
hgs
parents: 40
diff changeset
   145
        currentView()->saveActivity();
hgs
parents: 40
diff changeset
   146
    }
hgs
parents: 40
diff changeset
   147
hgs
parents: 40
diff changeset
   148
    delete mApplicationState;
hgs
parents: 40
diff changeset
   149
    delete mCameraDocumentLoader;
hgs
parents: 40
diff changeset
   150
    delete mKeyHandler;
hgs
parents: 40
diff changeset
   151
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   152
    CX_DEBUG_EXIT_FUNCTION();
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   153
}
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   154
41
hgs
parents: 40
diff changeset
   155
hgs
parents: 40
diff changeset
   156
hgs
parents: 40
diff changeset
   157
/*!
hgs
parents: 40
diff changeset
   158
* Handle change in overall state of application.
hgs
parents: 40
diff changeset
   159
* @param newState The new application state.
hgs
parents: 40
diff changeset
   160
*/
hgs
parents: 40
diff changeset
   161
void CxuiViewManager::handleApplicationStateChanged(CxuiApplicationState::State newState,
hgs
parents: 40
diff changeset
   162
                                                    CxuiApplicationState::State oldState)
hgs
parents: 40
diff changeset
   163
{
hgs
parents: 40
diff changeset
   164
    Q_UNUSED(oldState);
hgs
parents: 40
diff changeset
   165
    CX_DEBUG_ENTER_FUNCTION();
hgs
parents: 40
diff changeset
   166
46
hgs
parents: 42
diff changeset
   167
    CxuiView *view = currentView();
41
hgs
parents: 40
diff changeset
   168
    CX_DEBUG(("CxuiViewManager - current view %d", view));
hgs
parents: 40
diff changeset
   169
hgs
parents: 40
diff changeset
   170
    switch (newState) {
hgs
parents: 40
diff changeset
   171
    case CxuiApplicationState::Normal:
52
hgs
parents: 46
diff changeset
   172
        // If camera is in embedded mode, we need to start
hgs
parents: 46
diff changeset
   173
        // listening to key events again
hgs
parents: 46
diff changeset
   174
        if (CxuiServiceProvider::isCameraEmbedded()){
hgs
parents: 46
diff changeset
   175
            mKeyHandler->startListeningKeys();
hgs
parents: 46
diff changeset
   176
        } else {
hgs
parents: 46
diff changeset
   177
            // If in standalone mode, we disable raising to
hgs
parents: 46
diff changeset
   178
            // foreground with capture key.
hgs
parents: 46
diff changeset
   179
            disconnect(mKeyHandler, SIGNAL(captureKeyPressed()),
hgs
parents: 46
diff changeset
   180
                       this, SLOT(toForeground()));
hgs
parents: 46
diff changeset
   181
        }
41
hgs
parents: 40
diff changeset
   182
        connectSignals(view);
hgs
parents: 40
diff changeset
   183
hgs
parents: 40
diff changeset
   184
        CX_DEBUG(("CxuiViewManager - emitting normalStateEntered"));
hgs
parents: 40
diff changeset
   185
        emit normalStateEntered();
hgs
parents: 40
diff changeset
   186
        break;
hgs
parents: 40
diff changeset
   187
    case CxuiApplicationState::Standby:
hgs
parents: 40
diff changeset
   188
         if (view && !view->isStandbyModeSupported()) {
hgs
parents: 40
diff changeset
   189
            // If we move to Stanby, and current view does not
hgs
parents: 40
diff changeset
   190
            // support standby mode, move to Normal mode right away.
hgs
parents: 40
diff changeset
   191
            CX_DEBUG(("CxuiViewManager - view does not support stanbdy, exiting standby right away.."));
hgs
parents: 40
diff changeset
   192
            mApplicationState->exitStandby();
hgs
parents: 40
diff changeset
   193
        } else {
hgs
parents: 40
diff changeset
   194
            handleExitingNormalState();
hgs
parents: 40
diff changeset
   195
        }
hgs
parents: 40
diff changeset
   196
        break;
hgs
parents: 40
diff changeset
   197
    case CxuiApplicationState::Error:
hgs
parents: 40
diff changeset
   198
    case CxuiApplicationState::Background:
hgs
parents: 40
diff changeset
   199
        handleExitingNormalState();
hgs
parents: 40
diff changeset
   200
hgs
parents: 40
diff changeset
   201
        if (newState == CxuiApplicationState::Background) {
hgs
parents: 40
diff changeset
   202
            // Moved to background.
52
hgs
parents: 46
diff changeset
   203
            // If we're in embedded mode, we should stop listening to camera key
hgs
parents: 46
diff changeset
   204
            // events
hgs
parents: 46
diff changeset
   205
            if (CxuiServiceProvider::isCameraEmbedded()){
hgs
parents: 46
diff changeset
   206
                mKeyHandler->stopListeningKeys();
hgs
parents: 46
diff changeset
   207
            } else {
hgs
parents: 46
diff changeset
   208
                // If not in embedded mode, then we bring application back to
hgs
parents: 46
diff changeset
   209
                // foreground by capture key press
hgs
parents: 46
diff changeset
   210
                connect(mKeyHandler, SIGNAL(captureKeyPressed()),
hgs
parents: 46
diff changeset
   211
                        this, SLOT(toForeground()));
hgs
parents: 46
diff changeset
   212
            }
41
hgs
parents: 40
diff changeset
   213
        }
hgs
parents: 40
diff changeset
   214
        break;
hgs
parents: 40
diff changeset
   215
    }
hgs
parents: 40
diff changeset
   216
hgs
parents: 40
diff changeset
   217
    CX_DEBUG_EXIT_FUNCTION();
hgs
parents: 40
diff changeset
   218
}
hgs
parents: 40
diff changeset
   219
hgs
parents: 40
diff changeset
   220
/*!
hgs
parents: 40
diff changeset
   221
* Helper method to handle (possible) exiting from normal state.
hgs
parents: 40
diff changeset
   222
* @param oldState The previous state.
hgs
parents: 40
diff changeset
   223
*/
hgs
parents: 40
diff changeset
   224
void CxuiViewManager::handleExitingNormalState()
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   225
{
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   226
    CX_DEBUG_ENTER_FUNCTION();
41
hgs
parents: 40
diff changeset
   227
    // Store view that is active now.
46
hgs
parents: 42
diff changeset
   228
    CxuiView *view = currentView();
41
hgs
parents: 40
diff changeset
   229
    CX_DEBUG(("CxuiViewManager - current view %d", view));
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   230
41
hgs
parents: 40
diff changeset
   231
    // Emit signal so current view can enter standby.
hgs
parents: 40
diff changeset
   232
    emit normalStateExited();
hgs
parents: 40
diff changeset
   233
    // Disconnect signals so we don't send key event's etc.
hgs
parents: 40
diff changeset
   234
    // Using the view before normalStateExited() signal was emitted,
hgs
parents: 40
diff changeset
   235
    // just in case it caused view switch.
hgs
parents: 40
diff changeset
   236
    disconnectSignals(view);
hgs
parents: 40
diff changeset
   237
    // Make sure standby timer is not running.
hgs
parents: 40
diff changeset
   238
    stopStandbyTimer();
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   239
41
hgs
parents: 40
diff changeset
   240
    CX_DEBUG_EXIT_FUNCTION();
hgs
parents: 40
diff changeset
   241
}
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   242
41
hgs
parents: 40
diff changeset
   243
/*!
hgs
parents: 40
diff changeset
   244
* Slot for starting standby timer.
hgs
parents: 40
diff changeset
   245
*/
hgs
parents: 40
diff changeset
   246
void CxuiViewManager::startStandbyTimer()
hgs
parents: 40
diff changeset
   247
{
hgs
parents: 40
diff changeset
   248
    CX_DEBUG_ENTER_FUNCTION();
hgs
parents: 40
diff changeset
   249
    mStandbyTimer.start();
hgs
parents: 40
diff changeset
   250
    CX_DEBUG_EXIT_FUNCTION();
hgs
parents: 40
diff changeset
   251
}
hgs
parents: 40
diff changeset
   252
hgs
parents: 40
diff changeset
   253
/*!
hgs
parents: 40
diff changeset
   254
* Slot for stopping standby timer.
hgs
parents: 40
diff changeset
   255
*/
hgs
parents: 40
diff changeset
   256
void CxuiViewManager::stopStandbyTimer()
hgs
parents: 40
diff changeset
   257
{
hgs
parents: 40
diff changeset
   258
    CX_DEBUG_ENTER_FUNCTION();
hgs
parents: 40
diff changeset
   259
    mStandbyTimer.stop();
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   260
    CX_DEBUG_EXIT_FUNCTION();
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   261
}
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   262
40
hgs
parents: 39
diff changeset
   263
/*!
41
hgs
parents: 40
diff changeset
   264
 * Helper function to return current view cast to CxuiView.
hgs
parents: 40
diff changeset
   265
 */
hgs
parents: 40
diff changeset
   266
CxuiView* CxuiViewManager::currentView() const
40
hgs
parents: 39
diff changeset
   267
{
41
hgs
parents: 40
diff changeset
   268
    CxuiView *view = qobject_cast<CxuiView*> (mMainWindow.currentView());
hgs
parents: 40
diff changeset
   269
    return view;
40
hgs
parents: 39
diff changeset
   270
}
hgs
parents: 39
diff changeset
   271
hgs
parents: 39
diff changeset
   272
/*!
hgs
parents: 39
diff changeset
   273
* Select and initialize the view we need to start into.
hgs
parents: 39
diff changeset
   274
*/
hgs
parents: 39
diff changeset
   275
void CxuiViewManager::initStartupView()
hgs
parents: 39
diff changeset
   276
{
hgs
parents: 39
diff changeset
   277
    CX_DEBUG_ENTER_FUNCTION();
hgs
parents: 39
diff changeset
   278
58
hgs
parents: 52
diff changeset
   279
    AfActivation activation;
hgs
parents: 52
diff changeset
   280
    AfActivityStorage activityStorage;
64
hgs
parents: 58
diff changeset
   281
    if (activation.reason() == Af::ActivationReasonService) {
40
hgs
parents: 39
diff changeset
   282
        // For embedded mode: don't create view yet, create when engine inits to correct mode.
hgs
parents: 39
diff changeset
   283
        // Connect signals to set up the view after image/video prepare
hgs
parents: 39
diff changeset
   284
        connect(&mEngine.stillCaptureControl(), SIGNAL(imagePrepareComplete(CxeError::Id)),
hgs
parents: 39
diff changeset
   285
                this, SLOT(changeToPrecaptureView()));
hgs
parents: 39
diff changeset
   286
        connect(&mEngine.videoCaptureControl(), SIGNAL(videoPrepareComplete(CxeError::Id)),
hgs
parents: 39
diff changeset
   287
                this, SLOT(changeToPrecaptureView()));
hgs
parents: 39
diff changeset
   288
64
hgs
parents: 58
diff changeset
   289
    } else if (activation.reason() == Af::ActivationReasonActivity) {
41
hgs
parents: 40
diff changeset
   290
        // restoring activity, read startup view from stored activity
hgs
parents: 40
diff changeset
   291
hgs
parents: 40
diff changeset
   292
        // view to start in
hgs
parents: 40
diff changeset
   293
        QString viewName = STILL_PRE_CAPTURE_VIEW;
hgs
parents: 40
diff changeset
   294
hgs
parents: 40
diff changeset
   295
        bool preCapture = true;
58
hgs
parents: 52
diff changeset
   296
        QString activityId = activation.name();
41
hgs
parents: 40
diff changeset
   297
        if (activityId == CxuiActivityIds::STILL_PRECAPTURE_ACTIVITY) {
hgs
parents: 40
diff changeset
   298
            viewName = STILL_PRE_CAPTURE_VIEW;
hgs
parents: 40
diff changeset
   299
        } else if (activityId == CxuiActivityIds::STILL_POSTCAPTURE_ACTIVITY) {
hgs
parents: 40
diff changeset
   300
            viewName = POSTCAPTURE_VIEW;
hgs
parents: 40
diff changeset
   301
            preCapture = false;
hgs
parents: 40
diff changeset
   302
        } else if (activityId == CxuiActivityIds::VIDEO_PRECAPTURE_ACTIVITY) {
hgs
parents: 40
diff changeset
   303
            viewName = VIDEO_PRE_CAPTURE_VIEW;
hgs
parents: 40
diff changeset
   304
        } else if (activityId == CxuiActivityIds::VIDEO_POSTCAPTURE_ACTIVITY) {
hgs
parents: 40
diff changeset
   305
            viewName = POSTCAPTURE_VIEW;
hgs
parents: 40
diff changeset
   306
            preCapture = false;
hgs
parents: 40
diff changeset
   307
        }
hgs
parents: 40
diff changeset
   308
hgs
parents: 40
diff changeset
   309
        CxuiView *view = createView(viewName);
hgs
parents: 40
diff changeset
   310
        if (preCapture) {
46
hgs
parents: 42
diff changeset
   311
            connectPreCaptureSignals(static_cast<CxuiPrecaptureView *>(view));
41
hgs
parents: 40
diff changeset
   312
        } else {
hgs
parents: 40
diff changeset
   313
            connectPostCaptureSignals();
hgs
parents: 40
diff changeset
   314
        }
46
hgs
parents: 42
diff changeset
   315
        mMainWindow.setCurrentView(view, false);
41
hgs
parents: 40
diff changeset
   316
hgs
parents: 40
diff changeset
   317
        // restore view from activity
58
hgs
parents: 52
diff changeset
   318
        view->restoreActivity(activityId, activityStorage.activityData(activityId));
41
hgs
parents: 40
diff changeset
   319
hgs
parents: 40
diff changeset
   320
        clearAllActivities();
hgs
parents: 40
diff changeset
   321
    } else {
hgs
parents: 40
diff changeset
   322
        // normal start
hgs
parents: 40
diff changeset
   323
        // no activity id, get default view from engine state
hgs
parents: 40
diff changeset
   324
        CxuiView *view = NULL;
hgs
parents: 40
diff changeset
   325
        if (mEngine.mode() == Cxe::VideoMode) {
hgs
parents: 40
diff changeset
   326
            view = createView(VIDEO_PRE_CAPTURE_VIEW);
hgs
parents: 40
diff changeset
   327
        } else {
hgs
parents: 40
diff changeset
   328
            view = createView(STILL_PRE_CAPTURE_VIEW);
hgs
parents: 40
diff changeset
   329
        }
46
hgs
parents: 42
diff changeset
   330
        connectPreCaptureSignals(static_cast<CxuiPrecaptureView *>(view));
41
hgs
parents: 40
diff changeset
   331
        mMainWindow.setCurrentView(view, false);
hgs
parents: 40
diff changeset
   332
hgs
parents: 40
diff changeset
   333
        clearAllActivities();
40
hgs
parents: 39
diff changeset
   334
    }
hgs
parents: 39
diff changeset
   335
46
hgs
parents: 42
diff changeset
   336
    // Check the current application state, signalled to handleApplicationStateChanged.
hgs
parents: 42
diff changeset
   337
    mApplicationState->startMonitoring();
hgs
parents: 42
diff changeset
   338
40
hgs
parents: 39
diff changeset
   339
    CX_DEBUG_EXIT_FUNCTION();
hgs
parents: 39
diff changeset
   340
}
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   341
41
hgs
parents: 40
diff changeset
   342
/*!
hgs
parents: 40
diff changeset
   343
* Create view and add it to main window.
hgs
parents: 40
diff changeset
   344
*/
hgs
parents: 40
diff changeset
   345
CxuiView* CxuiViewManager::createView(const QString &viewName)
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   346
{
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   347
    CX_DEBUG_ENTER_FUNCTION();
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   348
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   349
    OstTrace0(camerax_performance, CXUIVIEWMANAGER_CREATEVIEW_IN, "msg: e_CX_CREATE_VIEW 1");
41
hgs
parents: 40
diff changeset
   350
hgs
parents: 40
diff changeset
   351
    CX_DEBUG(("View name: %s", viewName.toAscii().data()));
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   352
41
hgs
parents: 40
diff changeset
   353
    CxuiView* view = mViews[viewName];
hgs
parents: 40
diff changeset
   354
    if (view == NULL) {
hgs
parents: 40
diff changeset
   355
        CX_DEBUG(("View not loaded yet, loading now"));
hgs
parents: 40
diff changeset
   356
        bool ok = false;
hgs
parents: 40
diff changeset
   357
        // Use document loader to create widgets and layouts
hgs
parents: 40
diff changeset
   358
        // (non-sectioned parts are parsed and loaded)
hgs
parents: 40
diff changeset
   359
        QString docmlFile = mDocmlFilesByView[viewName];
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   360
        CX_ASSERT_ALWAYS(mCameraDocumentLoader);
41
hgs
parents: 40
diff changeset
   361
        CX_ASSERT_ALWAYS(!docmlFile.isNull());
hgs
parents: 40
diff changeset
   362
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   363
        OstTrace0(camerax_performance, CXUIVIEWMANAGER_CREATEVIEW_2, "msg: e_CX_DOCUMENTLOADER_LOAD 1");
41
hgs
parents: 40
diff changeset
   364
        mCameraDocumentLoader->load(docmlFile, &ok);
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   365
        OstTrace0(camerax_performance, CXUIVIEWMANAGER_CREATEVIEW_4, "msg: e_CX_DOCUMENTLOADER_LOAD 0");
41
hgs
parents: 40
diff changeset
   366
        Q_ASSERT_X(ok, "createView", "error in xml file parsing");
hgs
parents: 40
diff changeset
   367
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   368
        OstTrace0(camerax_performance, CXUIVIEWMANAGER_CREATEVIEW_6, "msg: e_CX_DOCUMENTLOADER_FINDWIDGET 1");
41
hgs
parents: 40
diff changeset
   369
        QGraphicsWidget *widget = NULL;
hgs
parents: 40
diff changeset
   370
        // ask for the view widget pointer
hgs
parents: 40
diff changeset
   371
        widget = mCameraDocumentLoader->findWidget(viewName);
hgs
parents: 40
diff changeset
   372
        view = qobject_cast<CxuiView *> (widget);
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   373
        CX_ASSERT_ALWAYS(view);
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   374
        OstTrace0(camerax_performance, CXUIVIEWMANAGER_CREATEVIEW_8, "msg: e_CX_DOCUMENTLOADER_FINDWIDGET 1");
41
hgs
parents: 40
diff changeset
   375
hgs
parents: 40
diff changeset
   376
        // call for needed consturction methods
58
hgs
parents: 52
diff changeset
   377
        view->construct(&mMainWindow, &mEngine, mCameraDocumentLoader, mKeyHandler);
41
hgs
parents: 40
diff changeset
   378
        // .. and add to main window (which also takes ownership)
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   379
        OstTrace0(camerax_performance, CXUIVIEWMANAGER_CREATEVIEW_10, "msg: e_CX_MAINWINDOW_ADDVIEW 1");
41
hgs
parents: 40
diff changeset
   380
        mMainWindow.addView(view);
hgs
parents: 40
diff changeset
   381
        mViews.insert(viewName, view);
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   382
        OstTrace0(camerax_performance, CXUIVIEWMANAGER_CREATEVIEW_12, "msg: e_CX_MAINWINDOW_ADDVIEW 0");
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   383
    }
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   384
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   385
    OstTrace0(camerax_performance, CXUIVIEWMANAGER_CREATEVIEW_OUT, "msg: e_CX_CREATE_VIEW 0");
41
hgs
parents: 40
diff changeset
   386
hgs
parents: 40
diff changeset
   387
    CX_DEBUG_EXIT_FUNCTION();
hgs
parents: 40
diff changeset
   388
    return view;
hgs
parents: 40
diff changeset
   389
}
hgs
parents: 40
diff changeset
   390
hgs
parents: 40
diff changeset
   391
/*!
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   392
* CxuiViewManager::showScenesView
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   393
* A private method for displaying Scene Modes selection view
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   394
*/
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   395
void CxuiViewManager::showScenesView()
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   396
{
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   397
    CX_DEBUG_ENTER_FUNCTION();
41
hgs
parents: 40
diff changeset
   398
    // Disconnect signals from old view.
hgs
parents: 40
diff changeset
   399
    disconnectSignals();
hgs
parents: 40
diff changeset
   400
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   401
    CxuiSceneModeView *view = qobject_cast<CxuiSceneModeView*>(createView(SCENE_MODE_VIEW));
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   402
    CX_ASSERT_ALWAYS(view);
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   403
    view->loadBackgroundImages();
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   404
41
hgs
parents: 40
diff changeset
   405
    stopStandbyTimer();
hgs
parents: 40
diff changeset
   406
    connectSceneModeSignals();
46
hgs
parents: 42
diff changeset
   407
    mMainWindow.setCurrentView(view, false);
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   408
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   409
    CX_DEBUG_EXIT_FUNCTION();
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   410
}
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   411
41
hgs
parents: 40
diff changeset
   412
/*!
hgs
parents: 40
diff changeset
   413
* Get the precapture view appropriate for given camera mode and index.
hgs
parents: 40
diff changeset
   414
* If the view does not exist, it is created.
hgs
parents: 40
diff changeset
   415
* @param mode Which camera mode the view should match.
hgs
parents: 40
diff changeset
   416
* @param index Which camera index the view should match.
hgs
parents: 40
diff changeset
   417
*/
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   418
CxuiPrecaptureView*
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   419
CxuiViewManager::getPrecaptureView(Cxe::CameraMode mode, Cxe::CameraIndex camera)
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   420
{
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   421
    CX_DEBUG_ENTER_FUNCTION();
41
hgs
parents: 40
diff changeset
   422
    CX_DEBUG(("CxuiViewManager::getPrecaptureView - mode=%d, camera index=%d", mode, camera));
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   423
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   424
    CX_DEBUG_ASSERT(camera == Cxe::PrimaryCameraIndex);
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   425
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   426
    if (mode == ImageMode) {
41
hgs
parents: 40
diff changeset
   427
        CX_DEBUG(("CxuiViewManager::getPrecaptureView - image mode"));
hgs
parents: 40
diff changeset
   428
        return qobject_cast<CxuiPrecaptureView*>(createView(STILL_PRE_CAPTURE_VIEW));
hgs
parents: 40
diff changeset
   429
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   430
    } else {
41
hgs
parents: 40
diff changeset
   431
        CX_DEBUG(("CxuiViewManager::getPrecaptureView - video mode"));
hgs
parents: 40
diff changeset
   432
        return qobject_cast<CxuiPrecaptureView*>(createView(VIDEO_PRE_CAPTURE_VIEW));
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   433
    }
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   434
}
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   435
41
hgs
parents: 40
diff changeset
   436
/*!
hgs
parents: 40
diff changeset
   437
* Move to post-capture view.
hgs
parents: 40
diff changeset
   438
*/
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   439
void CxuiViewManager::changeToPostcaptureView()
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   440
{
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   441
    CX_DEBUG_ENTER_FUNCTION();
41
hgs
parents: 40
diff changeset
   442
    // Disconnect signals from old view.
hgs
parents: 40
diff changeset
   443
    disconnectSignals();
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   444
41
hgs
parents: 40
diff changeset
   445
    CxuiView *postCaptureView = createView(POSTCAPTURE_VIEW);
hgs
parents: 40
diff changeset
   446
hgs
parents: 40
diff changeset
   447
    // Connecting all necessary signals for postcapture view.
hgs
parents: 40
diff changeset
   448
    // Not connected yet if not in normal state. We connect the signals
hgs
parents: 40
diff changeset
   449
    // once we enter normal state again.
hgs
parents: 40
diff changeset
   450
    if (mApplicationState->currentState() == CxuiApplicationState::Normal) {
hgs
parents: 40
diff changeset
   451
        connectPostCaptureSignals();
hgs
parents: 40
diff changeset
   452
    }
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   453
46
hgs
parents: 42
diff changeset
   454
    // Connect signals before we set the post-capture view as current view.
hgs
parents: 42
diff changeset
   455
    // We need to have signals connected if post-capture view for example
hgs
parents: 42
diff changeset
   456
    // needs to move back to pre-capture view already in showEvent.
hgs
parents: 42
diff changeset
   457
    mMainWindow.setCurrentView(postCaptureView, false);
hgs
parents: 42
diff changeset
   458
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   459
    CX_DEBUG_EXIT_FUNCTION();
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   460
}
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   461
41
hgs
parents: 40
diff changeset
   462
/*!
hgs
parents: 40
diff changeset
   463
* Move to pre-capture view.
hgs
parents: 40
diff changeset
   464
*/
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   465
void CxuiViewManager::changeToPrecaptureView()
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   466
{
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   467
    CX_DEBUG_ENTER_FUNCTION();
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   468
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   469
    if (CxuiServiceProvider::isCameraEmbedded()) {
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   470
        // disconnect signals, we only want to call this once after the initial prepare
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   471
        disconnect(&mEngine.stillCaptureControl(), SIGNAL(imagePrepareComplete(CxeError::Id)),
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   472
                this, SLOT(changeToPrecaptureView()));
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   473
        disconnect(&mEngine.videoCaptureControl(), SIGNAL(videoPrepareComplete(CxeError::Id)),
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   474
                this, SLOT(changeToPrecaptureView()));
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   475
    }
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   476
41
hgs
parents: 40
diff changeset
   477
    // If normal mode is not active, don't switch to precapture view and reserve camera now.
hgs
parents: 40
diff changeset
   478
    if (mApplicationState->currentState() != CxuiApplicationState::Normal) {
hgs
parents: 40
diff changeset
   479
        CX_DEBUG(("CxuiViewManager - Change to precapture blocked as not normal mode (error, standby, background)."));
40
hgs
parents: 39
diff changeset
   480
    } else {
41
hgs
parents: 40
diff changeset
   481
hgs
parents: 40
diff changeset
   482
        // Disconnect signals from old view.
hgs
parents: 40
diff changeset
   483
        disconnectSignals();
hgs
parents: 40
diff changeset
   484
46
hgs
parents: 42
diff changeset
   485
        CxuiPrecaptureView *view =
hgs
parents: 42
diff changeset
   486
            getPrecaptureView(mEngine.mode(), mEngine.cameraDeviceControl().cameraIndex());
hgs
parents: 42
diff changeset
   487
hgs
parents: 42
diff changeset
   488
        // Connect necessary pre-capture view signals.
hgs
parents: 42
diff changeset
   489
        connectPreCaptureSignals(view);
hgs
parents: 42
diff changeset
   490
40
hgs
parents: 39
diff changeset
   491
        mMainWindow.setCurrentView(view, false);
hgs
parents: 39
diff changeset
   492
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   493
        // Release resources needed by scene view.
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   494
        HbView *sceneView = mViews.take(SCENE_MODE_VIEW);
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   495
        if (sceneView) {
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   496
            // This will not delete the view.
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   497
            mMainWindow.removeView(sceneView);
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   498
            // We can get to this slot from scene view, so don't delete the object too early.
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   499
            sceneView->deleteLater();
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   500
            sceneView = NULL;
40
hgs
parents: 39
diff changeset
   501
        }
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   502
41
hgs
parents: 40
diff changeset
   503
        // Make sure engine prepares for new image/video if necessary
hgs
parents: 40
diff changeset
   504
        mEngine.initMode(mEngine.mode());
hgs
parents: 40
diff changeset
   505
hgs
parents: 40
diff changeset
   506
        startStandbyTimer();
hgs
parents: 40
diff changeset
   507
38
hgs
parents: 28
diff changeset
   508
    }
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   509
    CX_DEBUG_EXIT_FUNCTION();
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   510
}
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   511
41
hgs
parents: 40
diff changeset
   512
/*!
hgs
parents: 40
diff changeset
   513
* Switch between cameras.
hgs
parents: 40
diff changeset
   514
*/
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   515
void CxuiViewManager::switchCamera()
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   516
{
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   517
    CX_DEBUG_ENTER_FUNCTION();
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   518
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   519
    Cxe::CameraIndex nextCamera;
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   520
    Qt::Orientation nextViewOrientation;
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   521
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   522
    if (mEngine.cameraDeviceControl().cameraIndex() == Cxe::PrimaryCameraIndex) {
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   523
        nextCamera = Cxe::SecondaryCameraIndex;
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   524
        nextViewOrientation = Qt::Vertical;
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   525
    } else {
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   526
        nextCamera = Cxe::PrimaryCameraIndex;
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   527
        nextViewOrientation = Qt::Horizontal;
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   528
    }
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   529
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   530
    CxuiPrecaptureView* view = getPrecaptureView(mEngine.mode(), nextCamera);
46
hgs
parents: 42
diff changeset
   531
    connectPreCaptureSignals(view);
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   532
    mMainWindow.setCurrentView(view, false);
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   533
    view->updateOrientation(nextViewOrientation);
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   534
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   535
    mEngine.cameraDeviceControl().switchCamera(nextCamera);
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   536
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   537
    CX_DEBUG_EXIT_FUNCTION();
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   538
}
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   539
41
hgs
parents: 40
diff changeset
   540
/*!
hgs
parents: 40
diff changeset
   541
* Event filter function.
hgs
parents: 40
diff changeset
   542
* Used to get mouse and key events for standby and capture key handling.
hgs
parents: 40
diff changeset
   543
* @param object Target object.
hgs
parents: 40
diff changeset
   544
* @param event Event to be checked.
hgs
parents: 40
diff changeset
   545
*/
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   546
bool CxuiViewManager::eventFilter(QObject *object, QEvent *event)
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   547
{
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   548
    Q_UNUSED(object)
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   549
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   550
    bool eventWasConsumed = false;
41
hgs
parents: 40
diff changeset
   551
    bool userActivity = false;
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   552
41
hgs
parents: 40
diff changeset
   553
    switch (event->type()) {
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   554
    case QEvent::KeyPress:
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   555
    case QEvent::KeyRelease:
41
hgs
parents: 40
diff changeset
   556
        userActivity = true;
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   557
        eventWasConsumed = mKeyHandler->handleKeyEvent(event);
41
hgs
parents: 40
diff changeset
   558
        if (eventWasConsumed && mApplicationState->currentState() == CxuiApplicationState::Standby) {
hgs
parents: 40
diff changeset
   559
            // Queued exit from standby.
hgs
parents: 40
diff changeset
   560
            emit standbyExitRequested();
hgs
parents: 40
diff changeset
   561
        }
hgs
parents: 40
diff changeset
   562
        break;
hgs
parents: 40
diff changeset
   563
hgs
parents: 40
diff changeset
   564
    case QEvent::GraphicsSceneMouseMove:
hgs
parents: 40
diff changeset
   565
    case QEvent::GraphicsSceneMousePress:
hgs
parents: 40
diff changeset
   566
        userActivity = true;
hgs
parents: 40
diff changeset
   567
        break;
hgs
parents: 40
diff changeset
   568
    case QEvent::GraphicsSceneMouseRelease:
hgs
parents: 40
diff changeset
   569
        userActivity = true;
hgs
parents: 40
diff changeset
   570
        if (mApplicationState->currentState() == CxuiApplicationState::Standby) {
hgs
parents: 40
diff changeset
   571
            // Queued exit from standby.
hgs
parents: 40
diff changeset
   572
            // Standby popup in view can receive mouse event before it is dismissed.
hgs
parents: 40
diff changeset
   573
            emit standbyExitRequested();
hgs
parents: 40
diff changeset
   574
        }
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   575
        break;
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   576
    }
41
hgs
parents: 40
diff changeset
   577
hgs
parents: 40
diff changeset
   578
    // Restart standby timer if there is user activity.
hgs
parents: 40
diff changeset
   579
    // Only restart the timer if it is running, do not set it running here.
hgs
parents: 40
diff changeset
   580
    if (userActivity && mStandbyTimer.isActive()) {
hgs
parents: 40
diff changeset
   581
        startStandbyTimer();
hgs
parents: 40
diff changeset
   582
    }
hgs
parents: 40
diff changeset
   583
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   584
    // No need to call base class implementation, because we derive from QObject directly.
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   585
    // QObject::eventFilter() implementation always returns false.
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   586
    return eventWasConsumed;
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   587
}
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   588
41
hgs
parents: 40
diff changeset
   589
/*!
hgs
parents: 40
diff changeset
   590
* Connect signals specific to given view.
hgs
parents: 40
diff changeset
   591
*/
46
hgs
parents: 42
diff changeset
   592
void CxuiViewManager::connectSignals(CxuiView *view)
41
hgs
parents: 40
diff changeset
   593
{
hgs
parents: 40
diff changeset
   594
    CX_DEBUG_ENTER_FUNCTION();
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   595
    OstTrace0(camerax_performance, CXUIVIEWMANAGER_CONNECTSIGNALS_1, "msg: e_CX_VIEWMANAGER_CONNECT_SIGNALS 1");
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   596
41
hgs
parents: 40
diff changeset
   597
    if (view) {
hgs
parents: 40
diff changeset
   598
        if (view == mViews[POSTCAPTURE_VIEW]) {
hgs
parents: 40
diff changeset
   599
            connectPostCaptureSignals();
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   600
        } else if (view == mViews[SCENE_MODE_VIEW]) {
41
hgs
parents: 40
diff changeset
   601
            connectSceneModeSignals();
hgs
parents: 40
diff changeset
   602
        } else {
46
hgs
parents: 42
diff changeset
   603
            connectPreCaptureSignals(static_cast<CxuiPrecaptureView *>(view));
41
hgs
parents: 40
diff changeset
   604
        }
hgs
parents: 40
diff changeset
   605
    }
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   606
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   607
    OstTrace0(camerax_performance, CXUIVIEWMANAGER_CONNECTSIGNALS_2, "msg: e_CX_VIEWMANAGER_CONNECT_SIGNALS 0");
41
hgs
parents: 40
diff changeset
   608
    CX_DEBUG_EXIT_FUNCTION();
hgs
parents: 40
diff changeset
   609
}
hgs
parents: 40
diff changeset
   610
hgs
parents: 40
diff changeset
   611
/*!
hgs
parents: 40
diff changeset
   612
* Disconnect signals.
hgs
parents: 40
diff changeset
   613
* We don't want to send or receive signals with inactive views, so this is done every time changing a view.
hgs
parents: 40
diff changeset
   614
* @param view View object from which signals are disconnected. If NULL is given, current view is used.
hgs
parents: 40
diff changeset
   615
*/
46
hgs
parents: 42
diff changeset
   616
void CxuiViewManager::disconnectSignals(CxuiView *view)
41
hgs
parents: 40
diff changeset
   617
{
hgs
parents: 40
diff changeset
   618
    CX_DEBUG_ENTER_FUNCTION();
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   619
    OstTrace0(camerax_performance, CXUIVIEWMANAGER_DISCONNECT_1, "msg: e_CX_VIEWMANAGER_DISCONNECT_SIGNALS 1");
41
hgs
parents: 40
diff changeset
   620
hgs
parents: 40
diff changeset
   621
    // Disconnect all existing capture key signals
hgs
parents: 40
diff changeset
   622
    mKeyHandler->disconnect();
hgs
parents: 40
diff changeset
   623
hgs
parents: 40
diff changeset
   624
    if (!view) {
hgs
parents: 40
diff changeset
   625
        // If view is not given, take current view.
46
hgs
parents: 42
diff changeset
   626
        view = currentView();
41
hgs
parents: 40
diff changeset
   627
    }
hgs
parents: 40
diff changeset
   628
hgs
parents: 40
diff changeset
   629
    CX_DEBUG(("CxuiViewManager - disconnecting from view %d", view));
hgs
parents: 40
diff changeset
   630
    if (view) {
hgs
parents: 40
diff changeset
   631
        // Disconnect all signals from current view to us.
hgs
parents: 40
diff changeset
   632
        disconnect(view, 0, this, 0);
hgs
parents: 40
diff changeset
   633
        // Disconnect all signals from us to current view.
hgs
parents: 40
diff changeset
   634
        disconnect(this, 0, view, 0);
hgs
parents: 40
diff changeset
   635
    }
hgs
parents: 40
diff changeset
   636
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   637
    OstTrace0(camerax_performance, CXUIVIEWMANAGER_DISCONNECT_2, "msg: e_CX_VIEWMANAGER_DISCONNECT_SIGNALS 0");
41
hgs
parents: 40
diff changeset
   638
    CX_DEBUG_EXIT_FUNCTION();
hgs
parents: 40
diff changeset
   639
}
hgs
parents: 40
diff changeset
   640
hgs
parents: 40
diff changeset
   641
/*!
hgs
parents: 40
diff changeset
   642
* Connect signals to pre-capture view.
hgs
parents: 40
diff changeset
   643
*/
46
hgs
parents: 42
diff changeset
   644
void CxuiViewManager::connectPreCaptureSignals(CxuiPrecaptureView *view)
41
hgs
parents: 40
diff changeset
   645
{
hgs
parents: 40
diff changeset
   646
    CX_DEBUG_ENTER_FUNCTION();
hgs
parents: 40
diff changeset
   647
46
hgs
parents: 42
diff changeset
   648
    // Disconnect from the current, "old" view
41
hgs
parents: 40
diff changeset
   649
    disconnectSignals();
hgs
parents: 40
diff changeset
   650
46
hgs
parents: 42
diff changeset
   651
    // connecting pre-capture view signals to standby timer.
hgs
parents: 42
diff changeset
   652
    connect(view, SIGNAL(startStandbyTimer()),       this, SLOT(startStandbyTimer()), Qt::UniqueConnection);
hgs
parents: 42
diff changeset
   653
    connect(view, SIGNAL(stopStandbyTimer()),        this, SLOT(stopStandbyTimer()),  Qt::UniqueConnection);
hgs
parents: 42
diff changeset
   654
    connect(view, SIGNAL(changeToPrecaptureView()),  this, SLOT(startStandbyTimer()), Qt::UniqueConnection);
hgs
parents: 42
diff changeset
   655
    connect(view, SIGNAL(changeToPostcaptureView()), this, SLOT(stopStandbyTimer()),  Qt::UniqueConnection);
41
hgs
parents: 40
diff changeset
   656
46
hgs
parents: 42
diff changeset
   657
    // connecting pre-capture view signals to viewmanager slots
hgs
parents: 42
diff changeset
   658
    connect(view, SIGNAL(changeToPostcaptureView()), this, SLOT(changeToPostcaptureView()), Qt::UniqueConnection);
hgs
parents: 42
diff changeset
   659
    connect(view, SIGNAL(changeToPrecaptureView()),  this, SLOT(changeToPrecaptureView()),  Qt::UniqueConnection);
hgs
parents: 42
diff changeset
   660
hgs
parents: 42
diff changeset
   661
    //connecting scene modes signal
hgs
parents: 42
diff changeset
   662
    connect(view, SIGNAL(showScenesView()), this, SLOT(showScenesView()), Qt::UniqueConnection);
41
hgs
parents: 40
diff changeset
   663
46
hgs
parents: 42
diff changeset
   664
    connect(view, SIGNAL(switchCamera()), this, SLOT(switchCamera()), Qt::UniqueConnection);
41
hgs
parents: 40
diff changeset
   665
46
hgs
parents: 42
diff changeset
   666
    // connecting error signals from precapture view to application state.
hgs
parents: 42
diff changeset
   667
    connect(view, SIGNAL(errorEncountered(CxeError::Id)),
hgs
parents: 42
diff changeset
   668
            mApplicationState, SLOT(handleApplicationError(CxeError::Id)),
hgs
parents: 42
diff changeset
   669
            Qt::UniqueConnection);
41
hgs
parents: 40
diff changeset
   670
46
hgs
parents: 42
diff changeset
   671
    // Standby signals
hgs
parents: 42
diff changeset
   672
    connect(this, SIGNAL(normalStateEntered()), view, SLOT(exitStandby()), Qt::UniqueConnection);
hgs
parents: 42
diff changeset
   673
    connect(this, SIGNAL(normalStateExited()), view, SLOT(enterStandby()), Qt::UniqueConnection);
41
hgs
parents: 40
diff changeset
   674
46
hgs
parents: 42
diff changeset
   675
    // connects all capture key signals.
hgs
parents: 42
diff changeset
   676
    connectCaptureKeySignals(view);
41
hgs
parents: 40
diff changeset
   677
hgs
parents: 40
diff changeset
   678
    CX_DEBUG_EXIT_FUNCTION();
hgs
parents: 40
diff changeset
   679
}
hgs
parents: 40
diff changeset
   680
hgs
parents: 40
diff changeset
   681
/*!
hgs
parents: 40
diff changeset
   682
* Connect signals to post-capture view.
hgs
parents: 40
diff changeset
   683
*/
hgs
parents: 40
diff changeset
   684
void CxuiViewManager::connectPostCaptureSignals()
hgs
parents: 40
diff changeset
   685
{
hgs
parents: 40
diff changeset
   686
    CX_DEBUG_ENTER_FUNCTION();
hgs
parents: 40
diff changeset
   687
46
hgs
parents: 42
diff changeset
   688
    // Disconnect from the current, "old" view
41
hgs
parents: 40
diff changeset
   689
    disconnectSignals();
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   690
46
hgs
parents: 42
diff changeset
   691
    CxuiView *view = mViews[POSTCAPTURE_VIEW];
hgs
parents: 42
diff changeset
   692
    if (view) {
hgs
parents: 42
diff changeset
   693
        connect(view, SIGNAL(changeToPrecaptureView()), this, SLOT(changeToPrecaptureView()), Qt::UniqueConnection);
41
hgs
parents: 40
diff changeset
   694
hgs
parents: 40
diff changeset
   695
        // Standby signals
46
hgs
parents: 42
diff changeset
   696
        connect(this, SIGNAL(normalStateEntered()), view, SLOT(exitStandby()), Qt::UniqueConnection);
hgs
parents: 42
diff changeset
   697
        connect(this, SIGNAL(normalStateExited()), view, SLOT(enterStandby()), Qt::UniqueConnection);
41
hgs
parents: 40
diff changeset
   698
hgs
parents: 40
diff changeset
   699
        // connect necessary capturekey signals
46
hgs
parents: 42
diff changeset
   700
        connectCaptureKeySignals(view);
41
hgs
parents: 40
diff changeset
   701
    }
hgs
parents: 40
diff changeset
   702
    CX_DEBUG_EXIT_FUNCTION();
hgs
parents: 40
diff changeset
   703
}
hgs
parents: 40
diff changeset
   704
hgs
parents: 40
diff changeset
   705
/*!
hgs
parents: 40
diff changeset
   706
* Connect signals to scene mode view.
hgs
parents: 40
diff changeset
   707
*/
hgs
parents: 40
diff changeset
   708
void CxuiViewManager::connectSceneModeSignals()
hgs
parents: 40
diff changeset
   709
{
hgs
parents: 40
diff changeset
   710
    CX_DEBUG_ENTER_FUNCTION();
46
hgs
parents: 42
diff changeset
   711
hgs
parents: 42
diff changeset
   712
    // Disconnect from the current, "old" view
41
hgs
parents: 40
diff changeset
   713
    disconnectSignals();
hgs
parents: 40
diff changeset
   714
46
hgs
parents: 42
diff changeset
   715
    CxuiView *view = mViews[SCENE_MODE_VIEW];
hgs
parents: 42
diff changeset
   716
    if (view) {
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   717
        // Standby signals for releasing camera
46
hgs
parents: 42
diff changeset
   718
        connect(this, SIGNAL(normalStateEntered()), view, SLOT(exitStandby()));
hgs
parents: 42
diff changeset
   719
        connect(this, SIGNAL(normalStateExited()), view, SLOT(enterStandby()));
41
hgs
parents: 40
diff changeset
   720
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   721
        // Moving back to pre-capture view
46
hgs
parents: 42
diff changeset
   722
        connect(view, SIGNAL(viewCloseEvent()), this, SLOT(changeToPrecaptureView()));
hgs
parents: 42
diff changeset
   723
hgs
parents: 42
diff changeset
   724
        connectCaptureKeySignals(view);
42
feebad15db8c 201027_1
hgs
parents: 41
diff changeset
   725
    }
41
hgs
parents: 40
diff changeset
   726
    CX_DEBUG_EXIT_FUNCTION();
hgs
parents: 40
diff changeset
   727
}
hgs
parents: 40
diff changeset
   728
hgs
parents: 40
diff changeset
   729
/*!
hgs
parents: 40
diff changeset
   730
* Connect key handler capture key signals.
hgs
parents: 40
diff changeset
   731
*/
46
hgs
parents: 42
diff changeset
   732
void CxuiViewManager::connectCaptureKeySignals(CxuiView *view)
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   733
{
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   734
    CX_DEBUG_ENTER_FUNCTION();
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   735
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   736
    // Disconnect all existing capture key signals
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   737
    mKeyHandler->disconnect();
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   738
46
hgs
parents: 42
diff changeset
   739
    if (view) {
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   740
        // If the view class does not implement the named slot, the connect will fail
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   741
        // and output some warnings as debug prints. This is by design.
46
hgs
parents: 42
diff changeset
   742
        connect(mKeyHandler, SIGNAL(autofocusKeyPressed()),  view, SLOT(handleAutofocusKeyPressed()));
hgs
parents: 42
diff changeset
   743
        connect(mKeyHandler, SIGNAL(autofocusKeyReleased()), view, SLOT(handleAutofocusKeyReleased()));
hgs
parents: 42
diff changeset
   744
        connect(mKeyHandler, SIGNAL(captureKeyPressed()),    view, SLOT(handleCaptureKeyPressed()));
hgs
parents: 42
diff changeset
   745
        connect(mKeyHandler, SIGNAL(captureKeyReleased()),   view, SLOT(handleCaptureKeyReleased()));
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   746
    }
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   747
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   748
    CX_DEBUG_EXIT_FUNCTION();
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   749
}
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   750
41
hgs
parents: 40
diff changeset
   751
/*!
hgs
parents: 40
diff changeset
   752
 * Clears all camera activities from activity manager.
hgs
parents: 40
diff changeset
   753
 */
hgs
parents: 40
diff changeset
   754
void CxuiViewManager::clearAllActivities()
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   755
{
58
hgs
parents: 52
diff changeset
   756
    AfActivityStorage activityStorage;
hgs
parents: 52
diff changeset
   757
    activityStorage.removeActivity(CxuiActivityIds::STILL_PRECAPTURE_ACTIVITY);
hgs
parents: 52
diff changeset
   758
    activityStorage.removeActivity(CxuiActivityIds::STILL_POSTCAPTURE_ACTIVITY);
hgs
parents: 52
diff changeset
   759
    activityStorage.removeActivity(CxuiActivityIds::VIDEO_PRECAPTURE_ACTIVITY);
hgs
parents: 52
diff changeset
   760
    activityStorage.removeActivity(CxuiActivityIds::VIDEO_POSTCAPTURE_ACTIVITY);
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   761
}
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   762
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   763
/*!
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   764
* Raise application to foreground if it's currently (fully) in background.
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   765
*/
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   766
void CxuiViewManager::toForeground()
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   767
{
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   768
    CX_DEBUG_ENTER_FUNCTION();
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   769
41
hgs
parents: 40
diff changeset
   770
    if (mApplicationState->currentState() == CxuiApplicationState::Background) {
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   771
        // Bring to foreground and gain focus.
41
hgs
parents: 40
diff changeset
   772
        CX_DEBUG(("CxuiViewManager - in background, bringing to foreground now."));
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   773
        mMainWindow.raise();
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   774
        mMainWindow.activateWindow();
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   775
    }
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   776
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   777
    CX_DEBUG_EXIT_FUNCTION();
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   778
}
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   779
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   780
// end of file