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