camerauis/cameraxui/cxui/src/cxuiprecaptureview.cpp
branchRCL_3
changeset 24 bac7acad7cb3
parent 23 61bc0f252b2b
child 25 2c87b2808fd7
--- a/camerauis/cameraxui/cxui/src/cxuiprecaptureview.cpp	Tue Aug 31 15:03:46 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,982 +0,0 @@
-/*
-* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#include <QProcess>
-#include <QApplication>
-#include <hbmainwindow.h>
-#include <hbslider.h>
-#include <hbtoolbar.h>
-#include <hblabel.h>
-#include <hbtoolbarextension.h>
-#include <hbtransparentwindow.h>
-#include <hbmenu.h>
-#include <hbdialog.h>
-#include <hbdeviceprofile.h>
-#include <hbnotificationdialog.h>
-#include <hbmessagebox.h>
-#include <hbaction.h>
-#include <hbstyle.h>
-#include <hbframeitem.h>
-#include <hbwidget.h>
-#include <hbeffect.h>
-#include <hbinstance.h>
-
-#include "cxeengine.h"
-#include "cxeviewfindercontrol.h"
-#include "cxezoomcontrol.h"
-#include "cxecameradevicecontrol.h"
-#include "cxenamespace.h"
-#include "cxefeaturemanager.h"
-#include "cxestillcapturecontrol.h"
-#include "cxevideocapturecontrol.h"
-#include "cxesettings.h"
-#include "cxutils.h"
-#include "cxuienums.h"
-#include "cxuidocumentloader.h"
-#include "cxuidisplaypropertyhandler.h"
-#include "cxuicapturekeyhandler.h"
-#include "cxuiprecaptureview.h"
-#include "cxuisettingdialog.h"
-#include "cxuisettingradiobuttonlist.h"
-#include "cxuisettingslider.h"
-#include "cxuisettingsinfo.h"
-
-#ifdef Q_OS_SYMBIAN
-#include "OstTraceDefinitions.h"
-
-#ifdef OST_TRACE_COMPILER_IN_USE
-#include "cxuiprecaptureviewTraces.h"
-#endif
-
-#endif //Q_OS_SYMBIAN
-
-#include "cxuifullscreenpopup.h"
-#include "cxuiserviceprovider.h"
-#include "cxuizoomslider.h"
-
-using namespace CxUiLayout;
-using namespace CxUiSettings;
-using namespace CxUiInternal;
-
-
-// ---------------------------------------------------------------------------
-// CxuiPrecaptureView::CxuiPrecaptureView
-// Constructor
-// ---------------------------------------------------------------------------
-//
-CxuiPrecaptureView::CxuiPrecaptureView(QGraphicsItem *parent) :
-    CxuiView(parent),
-    mViewfinder(0),
-    mDisplayHandler(0),
-    mSettingsGrid(0),
-    mWidgetsLoaded(false),
-    mSettingsDialog(NULL),
-    mSettingsDialogList(NULL),
-    mQualityIcon(NULL),
-    mGeoTaggingIndicatorIcon(NULL),
-    mFaceTrackingIcon(NULL),
-    mStandbyPopup(NULL),
-    mSettingsDialogHeading(NULL),
-    mSliderSettingsDialog(NULL),
-    mSliderSettingsDialogHeading(NULL),
-    mSettingsSlider(NULL),
-    mSettingsInfo(NULL),
-    mSettingsDialogOkAction(NULL),
-    mSliderSettingsDialogOkAction(NULL)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    mDisplayHandler = new CxuiDisplayPropertyHandler();
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-CxuiPrecaptureView::~CxuiPrecaptureView()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    QCoreApplication::instance()->removeEventFilter(this);
-    delete mSettingsGrid;
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/**
- * CxuiPrecaptureView::construct
- * Construct-method handles initialisation tasks for this class.
- * @param mainwindow
- * @param engine
- * @param documentLoader
- * @param keyHandler
- */
-void CxuiPrecaptureView::construct(HbMainWindow *mainWindow, CxeEngine *engine,
-                                   CxuiDocumentLoader *documentLoader,
-                                   CxuiCaptureKeyHandler * keyHandler,
-                                   HbActivityManager *activityManager)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    OstTrace0(camerax_performance, CXUIPRECAPTUREVIEW_CONSTRUCT_1, "msg: e_CX_PRECAPVIEW_CONSTRUCT 1");
-
-    CxuiView::construct(mainWindow, engine, documentLoader, keyHandler, activityManager);
-
-    mSettingsInfo = new CxuiSettingsInfo(engine);
-    CX_DEBUG_ASSERT(mSettingsInfo);
-
-    setContentFullScreen(true);
-
-    connect(&mEngine->zoomControl(), SIGNAL(stateChanged(CxeZoomControl::State, CxeError::Id)), this,
-            SLOT(handleEngineZoomStateChange(CxeZoomControl::State, CxeError::Id)));
-
-    connect(&mEngine->zoomControl(), SIGNAL(zoomLevelChanged(int)), this,
-            SLOT(handleZoomLevelChange(int)));
-
-
-    connect(&mEngine->viewfinderControl(), SIGNAL(stateChanged(CxeViewfinderControl::State, CxeError::Id)),
-            this, SLOT(handleVfStateChanged(CxeViewfinderControl::State, CxeError::Id)));
-
-    connect(&mEngine->geoTaggingTrail(), SIGNAL(stateChanged(CxeGeoTaggingTrail::State, CxeError::Id)),
-            this, SLOT(updateLocationIndicator(CxeGeoTaggingTrail::State, CxeError::Id)));
-
-    connect(&(mEngine->settings()), SIGNAL(settingValueChanged(const QString&,QVariant)),
-            this, SLOT(handleSettingValueChanged(const QString&, QVariant)));
-
-    // adjust the timer, and connect it to correct slot
-    connect(&mHideControlsTimeout, SIGNAL(timeout()), this, SLOT(hideControls()));
-
-    mHideControlsTimeout.setSingleShot(true);
-    mHideControlsTimeout.setInterval(CXUI_HIDE_CONTROLS_TIMEOUT);
-
-    hideControls();
-
-    if (CxuiServiceProvider::isCameraEmbedded()) {
-        // override exit with action that completes the request before exiting
-        HbAction* exitAction = new HbAction(Hb::QuitNaviAction, this);
-        connect(exitAction, SIGNAL(triggered()), CxuiServiceProvider::instance(), SLOT(sendFilenameToClientAndExit()));
-        setNavigationAction(exitAction);
-    }
-
-    OstTrace0(camerax_performance, CXUIPRECAPTUREVIEW_CONSTRUCT_2, "msg: e_CX_PRECAPVIEW_CONSTRUCT 0");
-
-    QCoreApplication::instance()->installEventFilter(this);
-
-    HbEffect::add("toolbarextension", "camera_toolbarextension_appear", "toolbarextension_appear");
-    HbEffect::add("toolbarextension", "camera_toolbarextension_disappear", "toolbarextension_disappear");
-
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Is standby mode supported / needed by this view.
-* Pre-capture views implement / need standby mode and return true.
-* @return True if standby mode is supported, false otherwise.
-*/
-bool CxuiPrecaptureView::isStandbyModeSupported() const
-{
-    return true;
-}
-
-// ---------------------------------------------------------------------------
-// CxuiPrecaptureView::handleEngineZoomStateChange
-// Slot for the initModeComplete signal from device control.
-// ---------------------------------------------------------------------------
-//
-void CxuiPrecaptureView::handleEngineZoomStateChange(CxeZoomControl::State newState, CxeError::Id /*error*/ )
-{
-    CX_DEBUG_ENTER_FUNCTION();
-
-    if (newState == CxeZoomControl::Ready) {
-        // Set the zoom range (if more than zero!)
-        // NOTE: This is & should be done after ECam resolution has been set.
-        int min = mEngine->zoomControl().min();
-        int max = mEngine->zoomControl().max();
-
-        // only change values if they are acceptable and have changed
-        if (mSlider && (max - min > 0) && ((mSlider->maximum() != max)
-                || (mSlider->minimum()!= min))) {
-            mSlider->setRange(min, max);
-        }
-    }
-
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-// ---------------------------------------------------------------------------
-// CxuiPrecaptureView::zoomTo
-// Responds to valueChanged notification from zoom bar UI
-// and asks the engine to set the appropriate zoom level.
-// ---------------------------------------------------------------------------
-//
-void CxuiPrecaptureView::zoomTo(int value)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-
-    CX_DEBUG(( "Slider value: %d", value ));
-    mEngine->zoomControl().zoomTo(value);
-
-    // restarts the timer, if ongoing
-    if (mHideControlsTimeout.isActive()) {
-        mHideControlsTimeout.start();
-    }
-
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-// ---------------------------------------------------------------------------
-// CxuiPrecaptureView::toggleZoom
-//
-// ---------------------------------------------------------------------------
-//
-void CxuiPrecaptureView::toggleZoom()
-{
-    if (mZoomVisible) {
-        hideZoom();
-    } else {
-        showZoom();
-    }
-}
-
-
-/*
- *  Event filter which filters tool bar mouse events and
- *  application wide mouse events.
- */
-
-bool CxuiPrecaptureView::eventFilter(QObject *object, QEvent *event)
-{
-    bool eventWasConsumed = false;
-
-    switch (event->type())
-    {
-    case QEvent::GraphicsSceneMouseRelease:
-        if (mStandbyPopup) {
-            mStandbyPopup->handleMouseRelease();
-        } else {
-            mHideControlsTimeout.start();
-        }
-        break;
-    case QEvent::GraphicsSceneMousePress:
-        if (object == mStandbyPopup) {
-            mStandbyPopup->handleMousePress();
-        } else {
-            mHideControlsTimeout.stop();
-        }
-        break;
-    default:
-        break;
-    }
-
-    return eventWasConsumed;
-}
-
-
-// ---------------------------------------------------------------------------
-// CxuiPrecaptureView::toggleControls
-//
-// ---------------------------------------------------------------------------
-//
-void CxuiPrecaptureView::toggleControls()
-{
-    // This method is put here to demonstrate that widget creation can
-    // be postponed using sections in layout xml
-    if (!mWidgetsLoaded) {
-        // call load widgets to load app DocML and get the pointers to needed widgets
-        loadWidgets();
-    }
-    CxuiView::toggleControls();
-}
-
-// ---------------------------------------------------------------------------
-// CxuiPrecaptureView::handleZoomLevelChange
-// Slot to handle zoom level change signal from zoom control.
-// -------------------------------------------------------------------------
-//
-void CxuiPrecaptureView::handleZoomLevelChange(int zoomValue)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-
-    if (mSlider && zoomValue != mSlider->value()) {
-        CX_DEBUG(( "Zoom level is: %d", zoomValue ));
-        mSlider->setValue(zoomValue);
-    }
-
-    // reset the timer if it is ongoing
-    if (mHideControlsTimeout.isActive()) {
-        mHideControlsTimeout.start();
-    }
-
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-// ---------------------------------------------------------------------------
-// CxuiPrecaptureView::showEvent
-//
-// ---------------------------------------------------------------------------
-//
-void CxuiPrecaptureView::showEvent(QShowEvent *event)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-
-    QGraphicsWidget::showEvent(event);
-
-    if (event->type() == QEvent::Show) {
-        QCoreApplication::instance()->installEventFilter(this);
-        event->accept();
-    }
-
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-// ---------------------------------------------------------------------------
-// CxuiPrecaptureView::hideEvent
-//
-// ---------------------------------------------------------------------------
-//
-void CxuiPrecaptureView::hideEvent(QHideEvent *event)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-
-    QGraphicsWidget::hideEvent(event);
-
-    if (event->type() == QEvent::Hide) {
-        QCoreApplication::instance()->removeEventFilter(this);
-        hideZoom();
-        event->accept();
-    }
-
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-// ---------------------------------------------------------------------------
-// CxuiPrecaptureView::requestCameraSwitch
-// Slot to switch camera. Needed for options menu signals (in DocML).
-// ---------------------------------------------------------------------------
-//
-void CxuiPrecaptureView::requestCameraSwitch() {
-    emit switchCamera();
-}
-
-/**
-* Handle pressing auto focus key.
-*/
-void CxuiPrecaptureView::handleAutofocusKeyPressed()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-
-    if (mSettingsDialog) {
-        // Prevent us from trying to show grid when dialog closes.
-        mSettingsDialog->setStarterAction(NULL);
-        mSettingsDialog->close();
-    }
-    if (mSliderSettingsDialog) {
-        mSliderSettingsDialog->setStarterAction(NULL);
-        mSliderSettingsDialog->close();
-    }
-
-    menu()->close();
-    hideControls();
-
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-// ---------------------------------------------------------------------------
-// CxuiPrecaptureView::disableControlsTimeout
-// Slot
-// ---------------------------------------------------------------------------
-//
-void CxuiPrecaptureView::disableControlsTimeout()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    if (mHideControlsTimeout.isActive()) {
-        mHideControlsTimeout.stop();
-    }
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-
-// ---------------------------------------------------------------------------
-// CxuiPrecaptureView::initCamera
-// ---------------------------------------------------------------------------
-void CxuiPrecaptureView::initCamera()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    mEngine->initMode(mEngine->mode());
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-
-/*
- * viewfinder state call backs
- */
-void CxuiPrecaptureView::handleVfStateChanged(
-    CxeViewfinderControl::State newState, CxeError::Id /*error*/)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-
-    if (newState == CxeViewfinderControl::Running) {
-        // switch off screen saver and turn on backlight
-        if(mDisplayHandler) {
-            mDisplayHandler->setDisplayAlwaysVisible(true);
-        }
-        // start the standby timer
-        emit startStandbyTimer();
-    } else {
-        // switch on screen saver and turn off backlight
-        if(mDisplayHandler) {
-            mDisplayHandler->setDisplayAlwaysVisible(false);
-        }
-        // stop the standby timer when vf is not running.
-        emit stopStandbyTimer();
-    }
-
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Slot for entering standby mode.
-* Show standby canvas in addition to base class implementation.
-* @sa CxuiView::enterStandby()
-*/
-void CxuiPrecaptureView::enterStandby()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-
-    // Release camera right away to avoid any problems with GPU memory.
-    CxuiView::enterStandby();
-
-    // If this view is still the current view, show popup.
-    // If we moved to precapture view because (error) standby during capturing,
-    // don't try show the popup.
-    if (mMainWindow->currentView() == this) {
-        // Show standby canvas / popup.
-        if (!mStandbyPopup) {
-            mStandbyPopup = CxuiFullScreenPopup::create(scene(), hbTrId("txt_cam_info_camera_in_standby_mode"));
-        }
-        mStandbyPopup->show();
-    }
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Slot for exiting standby mode.
-* Hide the standby canvas and re-prepare camera.
-* @sa CxuiView::exitStandby()
-*/
-void CxuiPrecaptureView::exitStandby()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    CxuiView::exitStandby();
-
-    if (mStandbyPopup) {
-        mStandbyPopup->hide();
-        delete mStandbyPopup;
-        mStandbyPopup = NULL;
-    }
-
-    initCamera();
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Handle setting dialog showing up.
-* If the setting dialog was launched from the setting grid, hide grid now.
-* @param action Action that launched the dialog.
-*/
-void CxuiPrecaptureView::prepareToShowDialog(HbAction *action)
-{
-    if (!action) {
-        return;
-    }
-
-    // Check if the dialog was started from grid, and hide the grid now if needed.
-    QString fromGrid = action->property(PROPERTY_KEY_SETTING_GRID).toString();
-    if (fromGrid.compare(QString(PROPERTY_KEY_TRUE)) == 0 ) {
-        hideSettingsGrid();
-    }
-}
-
-/*!
-* Handle setting dialog closing down.
-* If the setting dialog was launched from the setting grid, show grid again now.
-* @param action Action that launched the dialog.
-*/
-void CxuiPrecaptureView::prepareToCloseDialog(HbAction *action)
-{
-    // Check if the dialog was started from grid, and show the grid now if needed.
-    // Autofocus key-press will clear the action to disable showing the grid.
-    if (action) {
-        QString fromGrid = action->property(PROPERTY_KEY_SETTING_GRID).toString();
-        if (fromGrid.compare(QString(PROPERTY_KEY_TRUE)) == 0 ) {
-            showSettingsGrid();
-        }
-        // disable geotagging disclaimer after geotagging setting is triggered from FirstTimeUse dialog
-        QString settingId = action->property(PROPERTY_KEY_SETTING_ID).toString();
-        CX_DEBUG(("settingsKey=%s", settingId.toAscii().constData()));
-        Cxe::GeoTaggingDisclaimer value = mEngine->settings().get<Cxe::GeoTaggingDisclaimer>(CxeSettingIds::GEOTAGGING_DISCLAIMER, Cxe::GeoTaggingDisclaimerDisabled);
-        if (settingId == CxeSettingIds::GEOTAGGING && value == Cxe::GeoTaggingDisclaimerEnabled) {
-            // disable geotagging first-time-use dialog
-            disableGeotaggingDisclaimer();
-        }
-    }
-
-    // Clear the starter actions to be sure they are not reused.
-    if (mSettingsDialog) {
-        mSettingsDialog->setStarterAction(NULL);
-    }
-    if (mSliderSettingsDialog) {
-        mSliderSettingsDialog->setStarterAction(NULL);
-    }
-
-    // Dialog will be deleted automatically when closed
-    // The pointers may become invalid at any time
-    mSettingsDialog = NULL;
-    mSettingsDialogList = NULL;
-    mSettingsDialogHeading = NULL;
-
-    mSliderSettingsDialog = NULL;
-    mSliderSettingsDialogHeading = NULL;
-    mSettingsSlider = NULL;
-}
-
-
-
-/*!
-*Helper method to create setting dialog
-*/
-CxuiSettingDialog* CxuiPrecaptureView::createSettingsDialog()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-
-    CX_DEBUG(("Loading popup DocML"));
-    CxuiDocumentLoader *documentLoader = new CxuiDocumentLoader(mEngine);
-
-    // Use document loader to create popup
-    bool ok = false;
-    documentLoader->load(SETTINGS_DIALOG_XML, &ok);
-    CX_DEBUG(("load ok=%d", ok));
-
-    CxuiSettingDialog *dialog =
-        qobject_cast<CxuiSettingDialog*>(documentLoader->findWidget(SETTINGS_DIALOG_WIDGET));
-    CX_ASSERT_ALWAYS(dialog);
-
-    dialog->setTimeout(HbDialog::NoTimeout);
-    dialog->setBackgroundFaded(false);
-
-    mSettingsDialogHeading = qobject_cast<HbLabel *>(
-                                    documentLoader->findWidget(SETTINGS_DIALOG_HEADING_WIDGET));
-    CX_ASSERT_ALWAYS(mSettingsDialogHeading);
-
-    mSettingsDialogList = qobject_cast<CxuiSettingRadioButtonList *>(
-                                    documentLoader->findWidget(SETTINGS_DIALOG_CONTENT_WIDGET));
-    CX_ASSERT_ALWAYS(mSettingsDialogList);
-
-	// The radio button size policy defaults to "Expanding" which makes it
-	// always full screen. Let's override the policy here to make the layout
-	// reasonable.
-    mSettingsDialogList->setSizePolicy(QSizePolicy(QSizePolicy::Ignored,
-	                                               QSizePolicy::Maximum));
-
-    QObject *object = documentLoader->findObject(SETTINGS_DIALOG_OK_ACTION);
-    mSettingsDialogOkAction = qobject_cast<HbAction *>(object);
-    CX_DEBUG_ASSERT(mSettingsDialogOkAction);
-
-    CX_DEBUG_EXIT_FUNCTION();
-
-    delete documentLoader;
-    documentLoader = NULL;
-
-    return dialog;
-}
-
-
-
-/*!
-*Helper method to create setting dialog
-*/
-void CxuiPrecaptureView::launchSettingsDialog(QObject* action)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-
-    if (!action) {
-        return;
-    }
-
-    hideControls();
-
-    QString key = action->property(PROPERTY_KEY_SETTING_ID).toString();
-    CX_DEBUG(("settingsKey=%s", key.toAscii().constData()));
-
-    RadioButtonListParams data;
-
-    // Load data and check that the setting is supported.
-    if (mSettingsInfo && mSettingsInfo->getSettingsContent(key, data)) {
-
-        if (!mSettingsDialog) {
-            mSettingsDialog = createSettingsDialog();
-
-            connect(mSettingsDialog, SIGNAL(dialogAboutToShow(HbAction *)),
-                    this, SLOT(prepareToShowDialog(HbAction *)));
-            connect(mSettingsDialog, SIGNAL(dialogAboutToClose(HbAction *)),
-                    this, SLOT(prepareToCloseDialog(HbAction *)));
-        }
-
-        if (mSettingsDialogHeading) {
-            mSettingsDialogHeading->setPlainText(data.mHeading);
-        }
-
-        if (mSettingsDialogList) {
-            mSettingsDialogList->init(&data);
-        }
-
-        if (mSettingsDialog) {
-            // Store action that starts the dialog.
-            // Dialog passes this along with it's signals,
-            // so we can easily decide if we show grid again or not.
-            mSettingsDialog->setStarterAction(qobject_cast<HbAction *>(action));
-
-            if (mSettingsDialogOkAction) {
-                // disconnect ok action from dialog so that dialog won't be closed
-                // automatically when action is triggered. handleSelectionAccepted
-                // is called instead
-                mSettingsDialogOkAction->disconnect(mSettingsDialog);
-                connect(mSettingsDialogOkAction, SIGNAL(triggered()), mSettingsDialogList, SLOT(handleSelectionAccepted()));
-
-                // Close the dialog when new setting value is committed
-                connect(mSettingsDialogList, SIGNAL(selectionCommitted()), mSettingsDialog, SLOT(close()));
-
-                connect(mSettingsDialog, SIGNAL(aboutToClose()), mSettingsDialogList, SLOT(handleClose()));
-            }
-
-            // Adjust position and show the dialog.
-            mSettingsDialog->setPreferredPos(getDialogPosition(), HbPopup::BottomRightCorner);
-            mSettingsDialog->setAttribute(Qt::WA_DeleteOnClose, true);
-            mSettingsDialog->show();
-
-        }
-    } else {
-        launchNotSupportedNotification();
-    }
-
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-*Helper method to create slider setting dialog
-*/
-CxuiSettingDialog* CxuiPrecaptureView::createSliderSettingsDialog()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-
-    CX_DEBUG(("Loading dialog DocML"));
-    CxuiDocumentLoader *documentLoader = new CxuiDocumentLoader(mEngine);
-
-    // Use document loader to create popup
-    bool ok = false;
-    documentLoader->load(SETTINGS_SLIDER_DIALOG_XML, &ok);
-    CX_DEBUG(("load ok=%d", ok));
-
-    CxuiSettingDialog *dialog =
-        qobject_cast<CxuiSettingDialog *>(documentLoader->findWidget(SETTINGS_SLIDER_DIALOG_WIDGET));
-    CX_ASSERT_ALWAYS(dialog);
-
-    dialog->setTimeout(HbDialog::NoTimeout);
-    dialog->setBackgroundFaded(false);
-
-    mSliderSettingsDialogHeading = qobject_cast<HbLabel *>(
-                                    documentLoader->findWidget(SETTINGS_SLIDER_DIALOG_HEADING_WIDGET));
-    CX_ASSERT_ALWAYS(mSliderSettingsDialogHeading);
-
-    mSettingsSlider = qobject_cast<CxuiSettingSlider *>(
-                                    documentLoader->findWidget(SETTINGS_SLIDER_DIALOG_CONTENT_WIDGET));
-    CX_ASSERT_ALWAYS(mSettingsSlider);
-
-    QObject *object = documentLoader->findObject(SETTINGS_DIALOG_OK_ACTION);
-    mSliderSettingsDialogOkAction = qobject_cast<HbAction *>(object);
-    CX_DEBUG_ASSERT(mSliderSettingsDialogOkAction);
-
-    CX_DEBUG_EXIT_FUNCTION();
-
-    delete documentLoader;
-    documentLoader = NULL;
-
-    return dialog;
-
-}
-
-
-void CxuiPrecaptureView::launchSliderSetting()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-
-    QObject *action = sender();
-    if (!action) {
-         return;
-    }
-
-    hideControls();
-
-    QString key = action->property(PROPERTY_KEY_SETTING_ID).toString();
-    CX_DEBUG(("settingsKey=%s", key.toAscii().constData()));
-
-    SliderParams data;
-
-    // Load data and check that the setting is supported.
-    if (mSettingsInfo && mSettingsInfo->getSettingsContent(key, data)) {
-
-        if (!mSliderSettingsDialog) {
-            mSliderSettingsDialog = createSliderSettingsDialog();
-
-            connect(mSliderSettingsDialog, SIGNAL(dialogAboutToShow(HbAction *)),
-                    this, SLOT(prepareToShowDialog(HbAction *)));
-            connect(mSliderSettingsDialog, SIGNAL(dialogAboutToClose(HbAction *)),
-                    this, SLOT(prepareToCloseDialog(HbAction *)));
-        }
-
-        if (mSliderSettingsDialogHeading) {
-            mSliderSettingsDialogHeading->setPlainText(data.mHeading);
-        }
-
-        if (mSettingsSlider) {
-            mSettingsSlider->init(&data);
-        }
-
-        if(mSliderSettingsDialog && mSettingsSlider) {
-            // Store action that starts the dialog.
-            // Dialog passes this along with it's signals,
-            // so we can easily decide if we show grid again or not.
-            mSliderSettingsDialog->setStarterAction(qobject_cast<HbAction *>(action));
-
-            if (mSliderSettingsDialogOkAction) {
-                // disconnect ok action from dialog so that dialog won't be closed
-                // automatically when action is triggered. handleSelectionAccepted
-                // is called instead
-                mSliderSettingsDialogOkAction->disconnect(mSliderSettingsDialog);
-                connect(mSliderSettingsDialogOkAction, SIGNAL(triggered()), mSettingsSlider, SLOT(handleSelectionAccepted()));
-
-                // Close the dialog when new setting value is committed
-                connect(mSettingsSlider, SIGNAL(selectionCommitted()), mSliderSettingsDialog, SLOT(close()));
-
-                connect(mSliderSettingsDialog, SIGNAL(aboutToClose()), mSettingsSlider, SLOT(handleClose()));
-            }
-
-            // Adjust position and show the dialog.
-            mSliderSettingsDialog->setFrameType(HbPopup::Weak);
-            mSliderSettingsDialog->setPreferredPos(getDialogPosition(), HbPopup::BottomRightCorner);
-            mSliderSettingsDialog->setAttribute(Qt::WA_DeleteOnClose, true);
-            mSliderSettingsDialog->show();
-
-        }
-    } else {
-        launchNotSupportedNotification();
-    }
-
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/**
-* Show settings grid.
-*/
-void CxuiPrecaptureView::showSettingsGrid()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-
-    // Create grid if it's not shown before.
-    initializeSettingsGrid();
-
-    // Show grid modally.
-    // This call will still not block until grid is dismissed.
-    if(mSettingsGrid) {
-        mSettingsGrid->setModal(true);
-        mSettingsGrid->show();
-        HbEffect::start(mSettingsGrid, "toolbarextension", "toolbarextension_appear");
-    }
-
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Hide the settings grid dialog.
-*/
-void CxuiPrecaptureView::hideSettingsGrid()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    if (mSettingsGrid) {
-        // Hiding of the settingsgrid will be done after effect has finished
-        HbEffect::start(mSettingsGrid, "toolbarextension", "toolbarextension_disappear", this, "toolbarExtensionDisappearEffectFinished");
-    }
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Returns dialogs bottom right corner
-*/
-QPointF CxuiPrecaptureView::getDialogPosition()
-{
-    HbStyle *style = HbInstance::instance()->style();
-
-    if (style) {
-        qreal bottomMargin = 0.0f;
-        qreal rightMargin = 0.0f;
-        bool ok = style->parameter("hb-param-margin-gene-bottom",
-                                   bottomMargin);
-        CX_DEBUG_ASSERT(ok);
-        ok = style->parameter("hb-param-margin-gene-right",
-                              rightMargin);
-        CX_DEBUG_ASSERT(ok);
-
-        // calculate dialog's bottom right position
-        QSize deviceRes =
-            mEngine->viewfinderControl().deviceDisplayResolution();
-        QPointF point(deviceRes.width() - rightMargin,
-                      deviceRes.height() - bottomMargin);
-
-        style = NULL; // owned by HbInstance
-        return point;
-    } else {
-        return QPointF(); // (0, 0)
-    }
-}
-
-
-/*!
-    Get setting item icon for given value.
-    \param key Setting key (CxeSettingIds)
-    \param value Setting value
-    \return Returns string containing icon locigal name
-*/
-QString CxuiPrecaptureView::getSettingItemIcon(const QString &key, QVariant value)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    CxUiSettings::RadioButtonListParams data;
-    QString icon = "";
-    if (mSettingsInfo && mSettingsInfo->getSettingsContent(key, data)) {
-        CxUiSettings::SettingItem setting;
-        foreach (setting, data.mSettingPairList) {
-            if (setting.mValue == value) {
-                icon = setting.mIcon;
-                break;
-            }
-        }
-    }
-
-    CX_DEBUG((("Setting icon name [%s]"), icon.toAscii().constData()));
-    CX_DEBUG_EXIT_FUNCTION();
-    return icon;
-}
-
-void CxuiPrecaptureView::handleSettingValueChanged(const QString& key, QVariant newValue)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    Q_UNUSED(key);
-    Q_UNUSED(newValue);
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
- * Slot to keep track of state changes in GeotaggingLocation trail. We use these states to update
- * the UI by enabling right icon.
- */
-void CxuiPrecaptureView::updateLocationIndicator(CxeGeoTaggingTrail::State newState, CxeError::Id error)
-{
-    CX_DEBUG( ("CxuiPrecaptureView::updateLocationIndicator <> error: %d ", error));
-
-    if (mGeoTaggingIndicatorIcon) {
-        if (newState == CxeGeoTaggingTrail::DataAvailable && error == CxeError::None) {
-            CX_DEBUG(("CxuiPrecaptureView::updateLocationIndicator GPS data available, showing icon"));
-            mGeoTaggingIndicatorIcon->setIcon(HbIcon("qtg_mono_geotag"));
-            mGeoTaggingIndicatorIcon->show();
-        } else {
-            CX_DEBUG(("CxuiPrecaptureView::handleIconChanged GPS data not available"));
-            mGeoTaggingIndicatorIcon->hide();
-        }
-    }
-
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-
-void CxuiPrecaptureView::toolbarExtensionDisappearEffectFinished(const HbEffect::EffectStatus &status) {
-    if (mSettingsGrid) {
-        mSettingsGrid->hide();
-    }
-}
-
-void CxuiPrecaptureView::toolbarExtensionAppearEffectFinished(const HbEffect::EffectStatus &status) {
-}
-
-
-
-/*!
-* Lauches "Geotagging first-time use" notification to the user
-*/
-void CxuiPrecaptureView::launchGeoTaggingDisclaimerDialog()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-
-    HbMessageBox *ftuMessageBox = new HbMessageBox(hbTrId("txt_cam_info_captured_photos_and_videos_will_be_ta"),
-                                                   HbMessageBox::MessageTypeInformation);
-
-    HbAction *okAction = new HbAction(hbTrId("txt_common_button_ok"));
-    HbAction *settingsAction = new HbAction(hbTrId("txt_cam_info_geotagging_ftu_note_settings_button"));
-
-    // connecting signals for dialog's actions
-    connect(okAction,
-            SIGNAL(triggered()),
-            this,
-            SLOT(disableGeotaggingDisclaimer()));
-
-    connect(settingsAction,
-            SIGNAL(triggered()),
-            this,
-            SLOT(launchGeoTaggingSetting()));
-
-    // adding buttons to the information message
-    ftuMessageBox->setStandardButtons(HbMessageBox::NoButton);
-    ftuMessageBox->addAction(okAction);
-    ftuMessageBox->addAction(settingsAction);
-
-    ftuMessageBox->setAttribute(Qt::WA_DeleteOnClose, true);
-    ftuMessageBox->show();
-
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Slot that disables Geotagging first-time use notification.
-*/
-void CxuiPrecaptureView::disableGeotaggingDisclaimer()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-
-    // disable geotagging first-time-use dialog
-    mEngine->settings().set(CxeSettingIds::GEOTAGGING_DISCLAIMER, Cxe::GeoTaggingDisclaimerDisabled);
-
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-
-/*!
-* Slot that launches geotagging setting dialog.
-*/
-void CxuiPrecaptureView::launchGeoTaggingSetting()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-
-    QObject *action = sender();
-    action->setProperty(PROPERTY_KEY_SETTING_ID, CxeSettingIds::GEOTAGGING);
-    launchSettingsDialog(action);
-
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-// end of file
-