/*
* Copyright (c) 2007-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: Ensures that the container for the user scene setup is constructed*
*/
// INCLUDE FILES
#include "CamStillUserSceneSetupView.h"
#include "CamUserSceneSetupContainer.h"
#include "CamShootingModeContainer.h"
#include "CamAppUiBase.h"
#include "Cam.hrh"
#include "CamAppController.h"
#include "CamUtility.h"
#include "CamAppUi.h"
#include "CamInfoListBoxContainer.h"
#include "CamTimeLapseUtility.h"
#include "CameraUiConfigManager.h"
#include <cameraapp.rsg>
#include <vgacamsettings.rsg>
// ================= MEMBER FUNCTIONS =======================
// ---------------------------------------------------------------------------
// CCamStillUserSceneSetupView::NewLC
// Symbian OS two-phased constructor
// ---------------------------------------------------------------------------
//
CCamStillUserSceneSetupView* CCamStillUserSceneSetupView::NewLC( CCamAppController& aController )
{
CCamStillUserSceneSetupView* self =
new ( ELeave ) CCamStillUserSceneSetupView( aController );
CleanupStack::PushL( self );
self->ConstructL();
return self;
}
// ---------------------------------------------------------------------------
// CCamStillUserSceneSetupView::~CCamStillUserSceneSetupView
// Destructor
// ---------------------------------------------------------------------------
//
CCamStillUserSceneSetupView::~CCamStillUserSceneSetupView()
{
}
// ---------------------------------------------------------------------------
// CCamStillUserSceneSetupView::Id
// Returns the id of this view.
// ---------------------------------------------------------------------------
//
TUid CCamStillUserSceneSetupView::Id() const
{
return TUid::Uid( ECamViewIdPhotoUserSceneSetup );
}
// ---------------------------------------------------------------------------
// CCamStillUserSceneSetupView::CreateContainerL
// Creates the user scene setup list.
// ---------------------------------------------------------------------------
//
void CCamStillUserSceneSetupView::CreateContainerL()
{
iContainer =
CCamUserSceneSetupContainer::NewL( ClientRect(),
R_CAM_PHOTO_USER_SCENE_SETUP_TITLE_NAME , iController,
*this );
}
// ---------------------------------------------------------------------------
// CCamStillUserSceneSetupView::StartViewFinder
// Enter viewfinder mode
// ---------------------------------------------------------------------------
//
void CCamStillUserSceneSetupView::StartViewFinder()
{
iController.EnterViewfinderMode( ECamControllerImage );
}
// ---------------------------------------------------------------------------
// CCamStillUserSceneSetupView::StopViewFinder
// Exit viewfinder mode
// ---------------------------------------------------------------------------
//
void CCamStillUserSceneSetupView::StopViewFinder()
{
iController.ExitViewfinderMode( ECamControllerImage );
}
// ---------------------------------------------------------------------------
// CCamStillUserSceneSetupView::ExitCaptureSetupModeL
// Exit capture setup mode
// ---------------------------------------------------------------------------
//
void CCamStillUserSceneSetupView::ExitCaptureSetupModeL()
{
static_cast<CCamUserSceneSetupContainer*> ( iContainer )->
UpdateCurrentListItem();
CCamUserSceneSetupViewBase::ExitCaptureSetupModeL();
StatusPane()->MakeVisible(ETrue);
}
// ---------------------------------------------------------------------------
// CCamStillUserSceneSetupView::CCamStillUserSceneSetupView
// C++ Constructor
// ---------------------------------------------------------------------------
//
CCamStillUserSceneSetupView::CCamStillUserSceneSetupView
( CCamAppController& aController )
: CCamUserSceneSetupViewBase( aController )
{
}
// ---------------------------------------------------------------------------
// CCamStillUserSceneSetupView::ConstructL
// 2nd phase Constructor
// ---------------------------------------------------------------------------
//
void CCamStillUserSceneSetupView::ConstructL()
{
BaseConstructL( ROID(R_CAM_USER_SCENE_SETUP_VIEW_ID));
}
// ---------------------------------------------------------------------------
// CCamStillUserSceneSetupView::ExitUserSceneSetupModeL
// Exits the user scene setup mode.
// ---------------------------------------------------------------------------
//
void CCamStillUserSceneSetupView::ExitUserSceneSetupModeL()
{
CCamUserSceneSetupViewBase::ExitUserSceneSetupModeL();
AppUi()->HandleCommandL( ECamCmdSceneSettingList );
}
// ---------------------------------------------------------------------------
// CCamStillUserSceneSetupView::SwitchToUserSceneSetupModeL
// Switches to the user scene setup mode.
// ---------------------------------------------------------------------------
//
void CCamStillUserSceneSetupView::SwitchToUserSceneSetupModeL()
{
CCamUserSceneSetupViewBase::SwitchToUserSceneSetupModeL();
}
// ---------------------------------------------------------------------------
// CCamStillUserSceneSetupView::SwitchToSceneSettingModeL
// Switches the current mode to scene setting and activates a
// specific control.
// ---------------------------------------------------------------------------
//
void CCamStillUserSceneSetupView::SwitchToSceneSettingModeL()
{
CCamUserSceneSetupViewBase::ExitUserSceneSetupModeL();
if ( !iSceneSettingContainer )
{
// Create the scene setting container for still mode.
iSceneSettingContainer = CCamShootingModeContainer::NewL( AppUi()->ApplicationRect(),
*this,
ECamControllerImage,
iController,
ETrue );
}
iSceneSettingContainer->DrawableWindow()->SetOrdinalPosition(-1);
iSettingModeTitleResourceId = R_CAM_STILL_SCENE_SETTING_TITLE;
iPreviousMenuResourceId = ROID(R_CAM_USER_SCENE_SETUP_MENUBAR_ID);
// Remove the view's main container, and add the capture setup
// control associated with the input command to the container stack.
CCamCaptureSetupViewBase::SwitchToSceneSettingModeL();
}
// ---------------------------------------------------------------------------
// CCamStillUserSceneSetupView::SwitchToInfoListBoxL
// ---------------------------------------------------------------------------
//
void CCamStillUserSceneSetupView::SwitchToInfoListBoxL( TCamInfoListBoxMode aMode, TBool aFullySkinned )
{
CCamAppUi* appUi = static_cast<CCamAppUi*>( iCoeEnv->AppUi() );
TBool modeSelected = EFalse;
TInt listBoxResource;
TInt summaryResource;
TInt initialValue;
TInt titleResource;
switch( aMode )
{
// Only ISO mode is supported for InfoListBox in user scene setup
case EInfoListBoxModeISO:
{
// Light sensitivity selector initialization values
initialValue = iController.IntegerSettingValue( ECamSettingItemUserSceneLightSensitivity );
// initialValue = 0;
if ( iController.UiConfigManagerPtr()->IsExtendedLightSensitivitySupported() )
{
listBoxResource = R_CAM_CAPTURE_SETUP_LIST_EXTENDED_LIGHT_SENSITIVITY;
summaryResource = R_CAM_CAPTURE_SETUP_LIST_EXTENDED_LIGHT_SENSITIVITY_SUMMARY;
}
else
{
listBoxResource = R_CAM_CAPTURE_SETUP_LIST_LIGHT_SENSITIVITY;
summaryResource = R_CAM_CAPTURE_SETUP_LIST_LIGHT_SENSITIVITY_SUMMARY;
}
titleResource = R_CAM_LIGHT_SENSITIVITY_TITLE;
modeSelected = ETrue;
}
break;
default:
break;
}
if( modeSelected)
{
StatusPane()->MakeVisible( EFalse );
CCamUserSceneSetupViewBase::ExitUserSceneSetupModeL();
iInfoListBoxContainer = CCamInfoListBoxContainer::NewL( AppUi()->ClientRect(),
*this,
iController,
listBoxResource,
summaryResource,
initialValue,
titleResource,
aFullySkinned);
if( !aFullySkinned )
{
StartViewFinder();
}
iInfoListBoxMode = aMode;
iSettingModeTitleResourceId = titleResource;
iPreviousMenuResourceId = ROID(R_CAM_USER_SCENE_SETUP_MENUBAR_ID);
// Remove the view's main container, and add the capture setup
// control associated with the input command to the container stack.
CCamCaptureSetupViewBase::SwitchToInfoListBoxL( aMode, aFullySkinned );
}
}
// ---------------------------------------------------------------------------
// CCamStillUserSceneSetupView::HandleInfoListBoxSelectionL()
// Handle selection events from InfoListBox
// ---------------------------------------------------------------------------
//
void CCamStillUserSceneSetupView::HandleInfoListBoxSelectionL()
{
CCamAppUiBase* appUi = static_cast<CCamAppUiBase*>( AppUi() );
if( iInfoListBoxContainer->SettingValueChanged() )
{
// Store the selected setting
switch( iInfoListBoxMode )
{
// Only ISO mode is supported for InfoListBox in user scene setup
case EInfoListBoxModeISO:
{
TInt settingValue = iInfoListBoxContainer->CurrentSettingItemValue();
iController.SetIntegerSettingValueL( ECamSettingItemUserSceneLightSensitivity, settingValue );
}
break;
default:
break;
}
}
ExitInfoListBoxL();
}
// ---------------------------------------------------------------------------
// CCamStillUserSceneSetupView::ExitSceneSettingModeL
// Exit scene setting mode
// ---------------------------------------------------------------------------
//
void CCamStillUserSceneSetupView::ExitSceneSettingModeL()
{
static_cast<CCamUserSceneSetupContainer*>( iContainer )->
UpdateCurrentListItem();
CCamUserSceneSetupViewBase::ExitSceneSettingModeL();
}
// ---------------------------------------------------------------------------
// CCamStillUserSceneSetupView::DynInitMenuPaneL
// Dynamically initialise the options menu
// ---------------------------------------------------------------------------
//
void CCamStillUserSceneSetupView::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
{
PRINT( _L("Camera => CCamStillUserSceneSetupView::DynInitMenuPaneL"))
if ( aResourceId != R_CAM_USER_SCENE_SETUP_MENU )
{
CCamCaptureSetupViewBase::DynInitMenuPaneL( aResourceId, aMenuPane );
}
PRINT( _L("Camera <= CCamStillUserSceneSetupView::DynInitMenuPaneL"))
}
// End of File