camerauis/cameraapp/generic/src/CamCaptureSetupControlHandler.cpp
changeset 0 1ddebce53859
child 2 e8773a61782d
equal deleted inserted replaced
-1:000000000000 0:1ddebce53859
       
     1 /*
       
     2 * Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Class for creating, initializing and observing*
       
    15 */
       
    16 
       
    17 
       
    18 
       
    19 // INCLUDE FILES
       
    20  
       
    21 #include "CamCaptureSetupControlHandler.h"
       
    22 #include "CamAppController.h"
       
    23 #include "CamLogger.h"
       
    24 
       
    25 #include "CamCaptureSetupListBox.h"
       
    26 #include <cameraapp.rsg>
       
    27 #include <vgacamsettings.rsg>
       
    28 #include "CamCaptureSetupSlider.h"
       
    29 
       
    30 #include "CamUtility.h"
       
    31 #include "CameraUiConfigManager.h"
       
    32 
       
    33 #include <AknUtils.h>
       
    34 
       
    35 // CONSTANTS
       
    36 
       
    37 
       
    38 // ============================ MEMBER FUNCTIONS ===============================
       
    39 
       
    40 // -----------------------------------------------------------------------------
       
    41 // CCamCaptureSetupControlHandler::CCamCaptureSetupControlHandler
       
    42 // Constructor
       
    43 // -----------------------------------------------------------------------------
       
    44 //
       
    45 CCamCaptureSetupControlHandler::CCamCaptureSetupControlHandler( 
       
    46                                              CCamAppController& aController,
       
    47                                              TCamSettingItemIds aSettingType )
       
    48 : iController( aController ), iSettingType( aSettingType)
       
    49     {   
       
    50     }
       
    51     
       
    52 // -----------------------------------------------------------------------------
       
    53 // CCamCaptureSetupControlHandler Destructor
       
    54 // 
       
    55 // -----------------------------------------------------------------------------
       
    56 //
       
    57 CCamCaptureSetupControlHandler::~CCamCaptureSetupControlHandler()
       
    58   {
       
    59   PRINT( _L("Camera => ~CCamCaptureSetupControlHandler") );
       
    60   PRINT( _L("Camera <= ~CCamCaptureSetupControlHandler") );
       
    61   }
       
    62 
       
    63 
       
    64 // -----------------------------------------------------------------------------
       
    65 // CCamCaptureSetupControlHandler::CreateCaptureSetupControlL
       
    66 // Create a new capture setup control with self as observer.
       
    67 // Ownership is transferred to the calling class.
       
    68 // -----------------------------------------------------------------------------
       
    69 //
       
    70 CCoeControl* CCamCaptureSetupControlHandler::CreateCaptureSetupControlL( const CCoeControl* aParent )
       
    71     {
       
    72     // create a new control determined by iSettingType.
       
    73     // set self as observer
       
    74 	switch( iSettingType )
       
    75 		{
       
    76 		case ECamSettingItemDynamicPhotoExposure:
       
    77 		case ECamSettingItemUserSceneExposure:
       
    78 		case ECamSettingItemDynamicPhotoBrightness:
       
    79 		case ECamSettingItemDynamicPhotoContrast:
       
    80 		case ECamSettingItemDynamicVideoBrightness:
       
    81 		case ECamSettingItemDynamicVideoContrast:
       
    82         case ECamSettingItemUserSceneBrightness:
       
    83         case ECamSettingItemUserSceneContrast:
       
    84 			{
       
    85 			// create and return a slider control
       
    86             CCamCaptureSetupSlider* captureSetupControl = 
       
    87 					CCamCaptureSetupSlider::NewL( aParent, this, iSettingType, 0 );
       
    88             CleanupStack::PushL( captureSetupControl );                    
       
    89             captureSetupControl->InitializeL
       
    90                 ( iController.IntegerSettingValue( iSettingType ) );
       
    91             CleanupStack::Pop( captureSetupControl );
       
    92 
       
    93             // pass ownership of the control to the calling class
       
    94             return captureSetupControl;  
       
    95 			}
       
    96 		default:
       
    97 			{
       
    98 			TInt resourceId = ResourceForControl();
       
    99 			if ( resourceId != 0 )
       
   100 				{
       
   101 				// create and return a radio-button listbox    
       
   102 				CCamCaptureSetupListBox* captureSetupControl = 
       
   103 						new( ELeave ) CCamCaptureSetupListBox( this,
       
   104 										iController ); 
       
   105 
       
   106 				CleanupStack::PushL( captureSetupControl );
       
   107 				captureSetupControl->ConstructL( aParent, resourceId, iSettingType );
       
   108 				captureSetupControl->InitializeL
       
   109 					( iController.IntegerSettingValue( iSettingType ) ); 
       
   110 				CleanupStack::Pop( captureSetupControl );
       
   111                 if( iSettingType == ECamSettingItemDynamicPhotoColourFilter ||
       
   112                     iSettingType == ECamSettingItemDynamicPhotoWhiteBalance ||
       
   113                     iSettingType == ECamSettingItemDynamicPhotoFlash ||
       
   114                     iSettingType == ECamSettingItemDynamicPhotoImageSharpness || 
       
   115 
       
   116                     iSettingType == ECamSettingItemDynamicVideoColourFilter ||
       
   117                     iSettingType == ECamSettingItemDynamicVideoWhiteBalance || 
       
   118                     iSettingType == ECamSettingItemDynamicVideoFlash ||
       
   119                     iSettingType == ECamSettingItemDynamicVideoBrightness ||
       
   120 
       
   121                     iSettingType == ECamSettingItemUserSceneImageSharpness ||
       
   122                     iSettingType == ECamSettingItemUserSceneFlash ||
       
   123                     iSettingType == ECamSettingItemUserSceneWhitebalance ||
       
   124                     iSettingType == ECamSettingItemUserSceneColourFilter )
       
   125                     {
       
   126                     captureSetupControl->DisableSingleClick( ETrue );
       
   127                     }
       
   128 				// pass ownership of the control to the calling class
       
   129 				return captureSetupControl;
       
   130 				}
       
   131 			}
       
   132 			break;
       
   133 		}
       
   134     return NULL;
       
   135     }
       
   136 
       
   137 // -----------------------------------------------------------------------------
       
   138 // CCamCaptureSetupControlHandler::HandleSettingValueUpdateL
       
   139 // Update the camera setting to the new value
       
   140 // -----------------------------------------------------------------------------
       
   141 //
       
   142 void CCamCaptureSetupControlHandler::HandleSettingValueUpdateL( TInt aNewValue )
       
   143     {
       
   144     PRINT( _L("Camera => CCamCaptureSetupControlHandler::HandleSettingValueUpdateL" ))
       
   145     iController.PreviewSettingChangeL( iSettingType, aNewValue );
       
   146     }
       
   147 
       
   148 // -----------------------------------------------------------------------------
       
   149 // CCamCaptureSetupControlHandler::ControlTitleResourceId
       
   150 // Return the resource id of the text to display in the title pane
       
   151 // -----------------------------------------------------------------------------
       
   152 //
       
   153 TInt CCamCaptureSetupControlHandler::ControlTitleResourceId() const
       
   154     {
       
   155     TInt resourceId = 0;
       
   156     switch ( iSettingType )
       
   157         {
       
   158         case ECamSettingItemDynamicPhotoWhiteBalance: // fallthrough
       
   159         case ECamSettingItemDynamicVideoWhiteBalance:
       
   160         case ECamSettingItemUserSceneWhitebalance:
       
   161             {
       
   162             resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_WHITEBALANCE;
       
   163             }
       
   164             break;
       
   165         case ECamSettingItemDynamicVideoColourFilter: // fallthrough
       
   166         case ECamSettingItemDynamicPhotoColourFilter:
       
   167         case ECamSettingItemUserSceneColourFilter:
       
   168             {
       
   169             resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_COLOUREFFECT;
       
   170             }
       
   171             break;
       
   172 
       
   173         case ECamSettingItemDynamicPhotoExposure:
       
   174         case ECamSettingItemUserSceneExposure:
       
   175             {
       
   176             resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_EV;
       
   177             }
       
   178             break;
       
   179 
       
   180         case ECamSettingItemDynamicPhotoFlash:
       
   181         case ECamSettingItemUserSceneFlash:
       
   182             {
       
   183             resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_FLASH;
       
   184             }
       
   185             break;
       
   186 		case ECamSettingItemDynamicPhotoBrightness:
       
   187 		case ECamSettingItemDynamicVideoBrightness:
       
   188         case ECamSettingItemUserSceneBrightness:
       
   189 			{
       
   190             resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_BRIGHTNESS;
       
   191             }
       
   192 			break;
       
   193 		case ECamSettingItemDynamicPhotoContrast:
       
   194 		case ECamSettingItemDynamicVideoContrast:
       
   195         case ECamSettingItemUserSceneContrast:
       
   196 			{
       
   197             resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_CONTRAST;
       
   198             }
       
   199 			break;
       
   200         case ECamSettingItemDynamicPhotoImageSharpness:
       
   201         case ECamSettingItemUserSceneImageSharpness:
       
   202             {
       
   203             resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_IMAGESHARPNESS;
       
   204             }
       
   205             break;
       
   206         case ECamSettingItemDynamicSelfTimer:
       
   207             {
       
   208             resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_SELF_TIMER;
       
   209             break;
       
   210             }
       
   211         case ECamSettingItemUserSceneLightSensitivity:
       
   212         case ECamSettingItemDynamicPhotoLightSensitivity:
       
   213         case ECamSettingItemDynamicVideoLightSensitivity:
       
   214             {
       
   215             resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_LIGHT_SENSITIVITY;
       
   216             }
       
   217             break;
       
   218         default:
       
   219             break;
       
   220         }
       
   221     return resourceId;
       
   222     }
       
   223 
       
   224 
       
   225 // -----------------------------------------------------------------------------
       
   226 // CCamCaptureSetupControlHandler::ControlPositionResourceId
       
   227 // Return the resource id for the control's position.
       
   228 // -----------------------------------------------------------------------------
       
   229 //
       
   230 TInt CCamCaptureSetupControlHandler::ControlPositionResourceId() const
       
   231     {
       
   232     TInt resourceId = 0;
       
   233     switch ( iSettingType )
       
   234         {
       
   235         case ECamSettingItemDynamicPhotoWhiteBalance: // fallthrough
       
   236         case ECamSettingItemDynamicVideoWhiteBalance:
       
   237         case ECamSettingItemDynamicVideoColourFilter: 
       
   238         case ECamSettingItemDynamicPhotoColourFilter:
       
   239         case ECamSettingItemDynamicPhotoFlash:
       
   240         case ECamSettingItemDynamicSelfTimer:
       
   241         case ECamSettingItemUserSceneWhitebalance:    
       
   242         case ECamSettingItemUserSceneColourFilter:
       
   243         case ECamSettingItemUserSceneFlash:
       
   244         case ECamSettingItemDynamicPhotoImageSharpness:
       
   245         case ECamSettingItemUserSceneImageSharpness:
       
   246         case ECamSettingItemUserSceneLightSensitivity:
       
   247         case ECamSettingItemDynamicPhotoLightSensitivity:
       
   248         case ECamSettingItemDynamicVideoLightSensitivity:
       
   249             {
       
   250             if ( !AknLayoutUtils::LayoutMirrored() )
       
   251                 {
       
   252                 resourceId = ROID(R_CAM_CAPTURE_SETUP_CONTROL_POSITION_ID);
       
   253                 }
       
   254             else
       
   255                 {
       
   256                 resourceId = ROID(R_CAM_CAPTURE_SETUP_CONTROL_POSITION_AH_ID);
       
   257                 }
       
   258             }
       
   259             break;
       
   260 
       
   261         case ECamSettingItemDynamicPhotoExposure:     // fallthrough
       
   262         case ECamSettingItemUserSceneExposure:
       
   263 
       
   264 		case ECamSettingItemDynamicPhotoBrightness:
       
   265 		case ECamSettingItemDynamicVideoBrightness:
       
   266 		case ECamSettingItemDynamicPhotoContrast:
       
   267 		case ECamSettingItemDynamicVideoContrast:
       
   268         case ECamSettingItemUserSceneBrightness:
       
   269         case ECamSettingItemUserSceneContrast:
       
   270 
       
   271             {
       
   272             if ( !AknLayoutUtils::LayoutMirrored() )
       
   273                 {
       
   274                 resourceId = ROID(R_CAM_CAPTURE_SETUP_SLIDER_CONTROL_POSITION_ID);
       
   275                 }
       
   276             else
       
   277                 {
       
   278                 resourceId = ROID(R_CAM_CAPTURE_SETUP_SLIDER_CONTROL_POSITION_AH_ID);
       
   279                 }
       
   280             break;
       
   281             }
       
   282         default:
       
   283             break;
       
   284         }
       
   285     return resourceId;
       
   286     }
       
   287 
       
   288 // -----------------------------------------------------------------------------
       
   289 // CCamCaptureSetupControlHandler::ControlUsesViewFinder
       
   290 // Whether or not the control requires a viewfinder preview pane
       
   291 // -----------------------------------------------------------------------------
       
   292 //
       
   293 TBool CCamCaptureSetupControlHandler::ControlUsesViewFinder() const
       
   294     {
       
   295     return ( ( iSettingType != ECamSettingItemDynamicPhotoFlash ) &&
       
   296         ( iSettingType != ECamSettingItemUserSceneFlash ) &&
       
   297         ( iSettingType != ECamSettingItemDynamicSelfTimer ));
       
   298     }
       
   299 
       
   300 
       
   301 // -----------------------------------------------------------------------------
       
   302 // CCamCaptureSetupControlHandler::ControlIsListBox
       
   303 // Whether or not the control is of listbox type
       
   304 // -----------------------------------------------------------------------------
       
   305 //
       
   306 TBool CCamCaptureSetupControlHandler::ControlIsListBox() const
       
   307     {
       
   308     return ( ( iSettingType != ECamSettingItemDynamicPhotoExposure ) 
       
   309         && ( iSettingType != ECamSettingItemUserSceneExposure )    
       
   310         && ( iSettingType != ECamSettingItemDynamicPhotoBrightness )    
       
   311         && ( iSettingType != ECamSettingItemDynamicPhotoContrast )    
       
   312         && ( iSettingType != ECamSettingItemDynamicVideoBrightness )    
       
   313         && ( iSettingType != ECamSettingItemDynamicVideoContrast )    
       
   314         && ( iSettingType != ECamSettingItemUserSceneBrightness )    
       
   315         && ( iSettingType != ECamSettingItemUserSceneContrast )    
       
   316            );
       
   317     }
       
   318 
       
   319 
       
   320 // -----------------------------------------------------------------------------
       
   321 // CCamCaptureSetupControlHandler::ControlIsSlider
       
   322 // Whether or not the control is of slider type
       
   323 // -----------------------------------------------------------------------------
       
   324 //
       
   325 TBool CCamCaptureSetupControlHandler::ControlIsSlider() const
       
   326     {
       
   327     return ( ( iSettingType == ECamSettingItemDynamicPhotoExposure ) 
       
   328         || ( iSettingType == ECamSettingItemUserSceneExposure )    
       
   329         || ( iSettingType == ECamSettingItemDynamicPhotoBrightness )    
       
   330         || ( iSettingType == ECamSettingItemDynamicPhotoContrast )    
       
   331         || ( iSettingType == ECamSettingItemDynamicVideoBrightness )    
       
   332         || ( iSettingType == ECamSettingItemDynamicVideoContrast )    
       
   333         || ( iSettingType == ECamSettingItemUserSceneBrightness )    
       
   334         || ( iSettingType == ECamSettingItemUserSceneContrast )    
       
   335            );
       
   336     }
       
   337 
       
   338 
       
   339 // -----------------------------------------------------------------------------
       
   340 // CCamCaptureSetupControlHandler::ResourceForControl
       
   341 // Return the resource for list population
       
   342 // -----------------------------------------------------------------------------
       
   343 //
       
   344 TInt CCamCaptureSetupControlHandler::ResourceForControl() const
       
   345     {
       
   346     TInt resourceId = 0;
       
   347     switch ( iSettingType )
       
   348         {
       
   349         case ECamSettingItemDynamicPhotoWhiteBalance:// fallthrough
       
   350         case ECamSettingItemUserSceneWhitebalance:
       
   351             resourceId = ROID(R_CAM_CAPTURE_SETUP_LIST_STILL_WHITEBALANCE_ID);
       
   352             break;
       
   353         case ECamSettingItemDynamicPhotoColourFilter:// fallthrough
       
   354         case ECamSettingItemUserSceneColourFilter:
       
   355             resourceId = ROID(R_CAM_CAPTURE_SETUP_LIST_STILL_COLOUREFFECT_ID);
       
   356             break;
       
   357         case ECamSettingItemDynamicPhotoFlash:// fallthrough
       
   358         case ECamSettingItemUserSceneFlash:
       
   359             resourceId = ROID(R_CAM_CAPTURE_SETUP_LIST_STILL_FLASH_ID);
       
   360             break;
       
   361         case ECamSettingItemDynamicVideoWhiteBalance:
       
   362             resourceId = ROID(R_CAM_CAPTURE_SETUP_LIST_VIDEO_WHITEBALANCE_ID);
       
   363             break;
       
   364         case ECamSettingItemDynamicVideoColourFilter:
       
   365             resourceId = ROID(R_CAM_CAPTURE_SETUP_LIST_VIDEO_COLOUREFFECT_ID);
       
   366             break;
       
   367         case ECamSettingItemDynamicPhotoImageSharpness:
       
   368         case ECamSettingItemUserSceneImageSharpness:
       
   369         	resourceId = ROID(R_CAM_CAPTURE_SETUP_LIST_PHOTO_IMAGESHARPNESS_ID);
       
   370             break;
       
   371         case ECamSettingItemDynamicSelfTimer:
       
   372             resourceId = ROID(R_CAM_CAPTURE_SETUP_SELF_TIMER_ID); 
       
   373             break;
       
   374         case ECamSettingItemUserSceneLightSensitivity:
       
   375         case ECamSettingItemDynamicPhotoLightSensitivity:
       
   376         case ECamSettingItemDynamicVideoLightSensitivity:
       
   377             if ( iController.UiConfigManagerPtr()->IsExtendedLightSensitivitySupported()) 
       
   378                 {
       
   379     			resourceId = R_CAM_CAPTURE_SETUP_STILL_EXTENDED_LIGHT_SENSITIVITY; 
       
   380                 }
       
   381             else
       
   382                 {
       
   383     			resourceId = R_CAM_CAPTURE_SETUP_STILL_LIGHT_SENSITIVITY; 
       
   384                 }
       
   385 			break;
       
   386         default:
       
   387             break;
       
   388         }
       
   389     return resourceId;
       
   390     }
       
   391 
       
   392 
       
   393 // -----------------------------------------------------------------------------
       
   394 // CCamCaptureSetupControlHandler::ViewfinderResourceId
       
   395 // Return the viewfinder resource to use for the appropriate control
       
   396 // -----------------------------------------------------------------------------
       
   397 //
       
   398 TInt CCamCaptureSetupControlHandler::ViewfinderResourceId() const
       
   399     {
       
   400 	TInt resourceId = 0;
       
   401     switch ( iSettingType )
       
   402         {
       
   403 		case ECamSettingItemDynamicPhotoBrightness:
       
   404 		case ECamSettingItemDynamicVideoBrightness:
       
   405 		case ECamSettingItemDynamicPhotoContrast:
       
   406 		case ECamSettingItemDynamicVideoContrast:
       
   407         case ECamSettingItemUserSceneBrightness:
       
   408         case ECamSettingItemUserSceneContrast:
       
   409         case ECamSettingItemDynamicPhotoExposure:
       
   410         case ECamSettingItemDynamicVideoExposure:
       
   411 			{
       
   412 			if ( !AknLayoutUtils::LayoutMirrored() )
       
   413                 {
       
   414 				resourceId = ROID(R_CAM_CAPTURE_SETUP_SLIDER_CONTVF_RECT_ID);
       
   415 				}
       
   416 			else
       
   417 				{
       
   418 				resourceId = ROID(R_CAM_CAPTURE_SETUP_SLIDER_CONTVF_RECT_AH_ID);
       
   419 				}
       
   420 			}
       
   421 			break;
       
   422 		default:
       
   423 			{
       
   424 			if ( !AknLayoutUtils::LayoutMirrored() )
       
   425                 {
       
   426 				resourceId = ROID(R_CAM_CAPTURE_SETUP_CONTVF_RECT_ID);
       
   427 				}
       
   428 			else
       
   429 				{
       
   430 				resourceId = ROID(R_CAM_CAPTURE_SETUP_CONTVF_RECT_AH_ID);
       
   431 				}
       
   432 			}
       
   433 			break;
       
   434 		}
       
   435 	return resourceId;
       
   436 	}
       
   437 
       
   438 // -----------------------------------------------------------------------------
       
   439 // CCamCaptureSetupControlHandler::SettingType
       
   440 // Identifies which setting is being edited
       
   441 // -----------------------------------------------------------------------------
       
   442 //
       
   443 TCamSettingItemIds CCamCaptureSetupControlHandler::SettingType() const
       
   444     {
       
   445     return iSettingType;
       
   446     }
       
   447 
       
   448 
       
   449 // End of file