diff -r 000000000000 -r 1ddebce53859 camerauis/cameraapp/generic/src/CamStillUserSceneSetupView.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camerauis/cameraapp/generic/src/CamStillUserSceneSetupView.cpp Thu Jan 07 16:18:56 2010 +0200 @@ -0,0 +1,320 @@ +/* +* Copyright (c) 2007 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 +#include + +// ================= 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( AppUi()->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 ( 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 ) + { + CCamAppUi* appUi = static_cast( 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 ); + 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 ); + } + } + +// --------------------------------------------------------------------------- +// CCamStillUserSceneSetupView::HandleInfoListBoxSelectionL() +// Handle selection events from InfoListBox +// --------------------------------------------------------------------------- +// +void CCamStillUserSceneSetupView::HandleInfoListBoxSelectionL() + { + CCamAppUiBase* appUi = static_cast( 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( 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