camerauis/cameraapp/generic/src/CamStillUserSceneSetupView.cpp
changeset 0 1ddebce53859
child 7 dbec5787fa68
--- /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 <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( 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<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 )
+    {   
+    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 );		
+        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<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