camerauis/cameraapp/generic/src/CamCaptureSetupControlHandler.cpp
changeset 19 d9aefe59d544
parent 3 8b2d6d0384b0
child 21 fa6d9f75d6a6
child 28 3075d9b614e6
equal deleted inserted replaced
3:8b2d6d0384b0 19:d9aefe59d544
     1 /*
       
     2 * Copyright (c) 2007-2010 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 == ECamSettingItemDynamicPhotoImageSharpness || 
       
   114 
       
   115                     iSettingType == ECamSettingItemDynamicVideoColourFilter ||
       
   116                     iSettingType == ECamSettingItemDynamicVideoWhiteBalance || 
       
   117                     iSettingType == ECamSettingItemDynamicVideoBrightness ||
       
   118 
       
   119                     iSettingType == ECamSettingItemUserSceneImageSharpness ||
       
   120                     iSettingType == ECamSettingItemUserSceneWhitebalance ||
       
   121                     iSettingType == ECamSettingItemUserSceneColourFilter )
       
   122                     {
       
   123                     captureSetupControl->DisableSingleClick( ETrue );
       
   124                     }
       
   125 				// pass ownership of the control to the calling class
       
   126 				return captureSetupControl;
       
   127 				}
       
   128 			}
       
   129 			break;
       
   130 		}
       
   131     return NULL;
       
   132     }
       
   133 
       
   134 // -----------------------------------------------------------------------------
       
   135 // CCamCaptureSetupControlHandler::HandleSettingValueUpdateL
       
   136 // Update the camera setting to the new value
       
   137 // -----------------------------------------------------------------------------
       
   138 //
       
   139 void CCamCaptureSetupControlHandler::HandleSettingValueUpdateL( TInt aNewValue )
       
   140     {
       
   141     PRINT( _L("Camera => CCamCaptureSetupControlHandler::HandleSettingValueUpdateL" ))
       
   142     iController.PreviewSettingChangeL( iSettingType, aNewValue );
       
   143     }
       
   144 
       
   145 // -----------------------------------------------------------------------------
       
   146 // CCamCaptureSetupControlHandler::ControlTitleResourceId
       
   147 // Return the resource id of the text to display in the title pane
       
   148 // -----------------------------------------------------------------------------
       
   149 //
       
   150 TInt CCamCaptureSetupControlHandler::ControlTitleResourceId() const
       
   151     {
       
   152     TInt resourceId = 0;
       
   153     switch ( iSettingType )
       
   154         {
       
   155         case ECamSettingItemDynamicPhotoWhiteBalance: // fallthrough
       
   156         case ECamSettingItemDynamicVideoWhiteBalance:
       
   157         case ECamSettingItemUserSceneWhitebalance:
       
   158             {
       
   159             resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_WHITEBALANCE;
       
   160             }
       
   161             break;
       
   162         case ECamSettingItemDynamicVideoColourFilter: // fallthrough
       
   163         case ECamSettingItemDynamicPhotoColourFilter:
       
   164         case ECamSettingItemUserSceneColourFilter:
       
   165             {
       
   166             resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_COLOUREFFECT;
       
   167             }
       
   168             break;
       
   169 
       
   170         case ECamSettingItemDynamicPhotoExposure:
       
   171         case ECamSettingItemUserSceneExposure:
       
   172             {
       
   173             resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_EV;
       
   174             }
       
   175             break;
       
   176 
       
   177         case ECamSettingItemDynamicPhotoFlash:
       
   178         case ECamSettingItemUserSceneFlash:
       
   179             {
       
   180             resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_FLASH;
       
   181             }
       
   182             break;
       
   183 		case ECamSettingItemDynamicPhotoBrightness:
       
   184 		case ECamSettingItemDynamicVideoBrightness:
       
   185         case ECamSettingItemUserSceneBrightness:
       
   186 			{
       
   187             resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_BRIGHTNESS;
       
   188             }
       
   189 			break;
       
   190 		case ECamSettingItemDynamicPhotoContrast:
       
   191 		case ECamSettingItemDynamicVideoContrast:
       
   192         case ECamSettingItemUserSceneContrast:
       
   193 			{
       
   194             resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_CONTRAST;
       
   195             }
       
   196 			break;
       
   197         case ECamSettingItemDynamicPhotoImageSharpness:
       
   198         case ECamSettingItemUserSceneImageSharpness:
       
   199             {
       
   200             resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_IMAGESHARPNESS;
       
   201             }
       
   202             break;
       
   203         case ECamSettingItemDynamicSelfTimer:
       
   204             {
       
   205             resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_SELF_TIMER;
       
   206             break;
       
   207             }
       
   208         case ECamSettingItemUserSceneLightSensitivity:
       
   209         case ECamSettingItemDynamicPhotoLightSensitivity:
       
   210         case ECamSettingItemDynamicVideoLightSensitivity:
       
   211             {
       
   212             resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_LIGHT_SENSITIVITY;
       
   213             }
       
   214             break;
       
   215         default:
       
   216             break;
       
   217         }
       
   218     return resourceId;
       
   219     }
       
   220 
       
   221 
       
   222 // -----------------------------------------------------------------------------
       
   223 // CCamCaptureSetupControlHandler::ControlPositionResourceId
       
   224 // Return the resource id for the control's position.
       
   225 // -----------------------------------------------------------------------------
       
   226 //
       
   227 TInt CCamCaptureSetupControlHandler::ControlPositionResourceId() const
       
   228     {
       
   229     TInt resourceId = 0;
       
   230     switch ( iSettingType )
       
   231         {
       
   232         case ECamSettingItemDynamicPhotoWhiteBalance: // fallthrough
       
   233         case ECamSettingItemDynamicVideoWhiteBalance:
       
   234         case ECamSettingItemDynamicVideoColourFilter: 
       
   235         case ECamSettingItemDynamicPhotoColourFilter:
       
   236         case ECamSettingItemDynamicPhotoFlash:
       
   237         case ECamSettingItemDynamicSelfTimer:
       
   238         case ECamSettingItemUserSceneWhitebalance:    
       
   239         case ECamSettingItemUserSceneColourFilter:
       
   240         case ECamSettingItemUserSceneFlash:
       
   241         case ECamSettingItemDynamicPhotoImageSharpness:
       
   242         case ECamSettingItemUserSceneImageSharpness:
       
   243         case ECamSettingItemUserSceneLightSensitivity:
       
   244         case ECamSettingItemDynamicPhotoLightSensitivity:
       
   245         case ECamSettingItemDynamicVideoLightSensitivity:
       
   246             {
       
   247             if ( !AknLayoutUtils::LayoutMirrored() )
       
   248                 {
       
   249                 resourceId = ROID(R_CAM_CAPTURE_SETUP_CONTROL_POSITION_ID);
       
   250                 }
       
   251             else
       
   252                 {
       
   253                 resourceId = ROID(R_CAM_CAPTURE_SETUP_CONTROL_POSITION_AH_ID);
       
   254                 }
       
   255             }
       
   256             break;
       
   257 
       
   258         case ECamSettingItemDynamicPhotoExposure:     // fallthrough
       
   259         case ECamSettingItemUserSceneExposure:
       
   260 
       
   261 		case ECamSettingItemDynamicPhotoBrightness:
       
   262 		case ECamSettingItemDynamicVideoBrightness:
       
   263 		case ECamSettingItemDynamicPhotoContrast:
       
   264 		case ECamSettingItemDynamicVideoContrast:
       
   265         case ECamSettingItemUserSceneBrightness:
       
   266         case ECamSettingItemUserSceneContrast:
       
   267 
       
   268             {
       
   269             if ( !AknLayoutUtils::LayoutMirrored() )
       
   270                 {
       
   271                 resourceId = ROID(R_CAM_CAPTURE_SETUP_SLIDER_CONTROL_POSITION_ID);
       
   272                 }
       
   273             else
       
   274                 {
       
   275                 resourceId = ROID(R_CAM_CAPTURE_SETUP_SLIDER_CONTROL_POSITION_AH_ID);
       
   276                 }
       
   277             break;
       
   278             }
       
   279         default:
       
   280             break;
       
   281         }
       
   282     return resourceId;
       
   283     }
       
   284 
       
   285 // -----------------------------------------------------------------------------
       
   286 // CCamCaptureSetupControlHandler::ControlUsesViewFinder
       
   287 // Whether or not the control requires a viewfinder preview pane
       
   288 // -----------------------------------------------------------------------------
       
   289 //
       
   290 TBool CCamCaptureSetupControlHandler::ControlUsesViewFinder() const
       
   291     {
       
   292     return ( ( iSettingType != ECamSettingItemDynamicPhotoFlash ) &&
       
   293         ( iSettingType != ECamSettingItemUserSceneFlash ) &&
       
   294         ( iSettingType != ECamSettingItemDynamicSelfTimer ));
       
   295     }
       
   296 
       
   297 
       
   298 // -----------------------------------------------------------------------------
       
   299 // CCamCaptureSetupControlHandler::ControlIsListBox
       
   300 // Whether or not the control is of listbox type
       
   301 // -----------------------------------------------------------------------------
       
   302 //
       
   303 TBool CCamCaptureSetupControlHandler::ControlIsListBox() const
       
   304     {
       
   305     return ( ( iSettingType != ECamSettingItemDynamicPhotoExposure ) 
       
   306         && ( iSettingType != ECamSettingItemUserSceneExposure )    
       
   307         && ( iSettingType != ECamSettingItemDynamicPhotoBrightness )    
       
   308         && ( iSettingType != ECamSettingItemDynamicPhotoContrast )    
       
   309         && ( iSettingType != ECamSettingItemDynamicVideoBrightness )    
       
   310         && ( iSettingType != ECamSettingItemDynamicVideoContrast )    
       
   311         && ( iSettingType != ECamSettingItemUserSceneBrightness )    
       
   312         && ( iSettingType != ECamSettingItemUserSceneContrast )    
       
   313            );
       
   314     }
       
   315 
       
   316 
       
   317 // -----------------------------------------------------------------------------
       
   318 // CCamCaptureSetupControlHandler::ControlIsSlider
       
   319 // Whether or not the control is of slider type
       
   320 // -----------------------------------------------------------------------------
       
   321 //
       
   322 TBool CCamCaptureSetupControlHandler::ControlIsSlider() const
       
   323     {
       
   324     return ( ( iSettingType == ECamSettingItemDynamicPhotoExposure ) 
       
   325         || ( iSettingType == ECamSettingItemUserSceneExposure )    
       
   326         || ( iSettingType == ECamSettingItemDynamicPhotoBrightness )    
       
   327         || ( iSettingType == ECamSettingItemDynamicPhotoContrast )    
       
   328         || ( iSettingType == ECamSettingItemDynamicVideoBrightness )    
       
   329         || ( iSettingType == ECamSettingItemDynamicVideoContrast )    
       
   330         || ( iSettingType == ECamSettingItemUserSceneBrightness )    
       
   331         || ( iSettingType == ECamSettingItemUserSceneContrast )    
       
   332            );
       
   333     }
       
   334 
       
   335 
       
   336 // -----------------------------------------------------------------------------
       
   337 // CCamCaptureSetupControlHandler::ResourceForControl
       
   338 // Return the resource for list population
       
   339 // -----------------------------------------------------------------------------
       
   340 //
       
   341 TInt CCamCaptureSetupControlHandler::ResourceForControl() const
       
   342     {
       
   343     TInt resourceId = 0;
       
   344     switch ( iSettingType )
       
   345         {
       
   346         case ECamSettingItemDynamicPhotoWhiteBalance:// fallthrough
       
   347         case ECamSettingItemUserSceneWhitebalance:
       
   348             resourceId = ROID(R_CAM_CAPTURE_SETUP_LIST_STILL_WHITEBALANCE_ID);
       
   349             break;
       
   350         case ECamSettingItemDynamicPhotoColourFilter:// fallthrough
       
   351         case ECamSettingItemUserSceneColourFilter:
       
   352             resourceId = ROID(R_CAM_CAPTURE_SETUP_LIST_STILL_COLOUREFFECT_ID);
       
   353             break;
       
   354         case ECamSettingItemDynamicPhotoFlash:// fallthrough
       
   355         case ECamSettingItemUserSceneFlash:
       
   356             resourceId = ROID(R_CAM_CAPTURE_SETUP_LIST_STILL_FLASH_ID);
       
   357             break;
       
   358         case ECamSettingItemDynamicVideoWhiteBalance:
       
   359             resourceId = ROID(R_CAM_CAPTURE_SETUP_LIST_VIDEO_WHITEBALANCE_ID);
       
   360             break;
       
   361         case ECamSettingItemDynamicVideoColourFilter:
       
   362             resourceId = ROID(R_CAM_CAPTURE_SETUP_LIST_VIDEO_COLOUREFFECT_ID);
       
   363             break;
       
   364         case ECamSettingItemDynamicPhotoImageSharpness:
       
   365         case ECamSettingItemUserSceneImageSharpness:
       
   366         	resourceId = ROID(R_CAM_CAPTURE_SETUP_LIST_PHOTO_IMAGESHARPNESS_ID);
       
   367             break;
       
   368         case ECamSettingItemDynamicSelfTimer:
       
   369             resourceId = ROID(R_CAM_CAPTURE_SETUP_SELF_TIMER_ID); 
       
   370             break;
       
   371         case ECamSettingItemUserSceneLightSensitivity:
       
   372         case ECamSettingItemDynamicPhotoLightSensitivity:
       
   373         case ECamSettingItemDynamicVideoLightSensitivity:
       
   374             if ( iController.UiConfigManagerPtr()->IsExtendedLightSensitivitySupported()) 
       
   375                 {
       
   376     			resourceId = R_CAM_CAPTURE_SETUP_STILL_EXTENDED_LIGHT_SENSITIVITY; 
       
   377                 }
       
   378             else
       
   379                 {
       
   380     			resourceId = R_CAM_CAPTURE_SETUP_STILL_LIGHT_SENSITIVITY; 
       
   381                 }
       
   382 			break;
       
   383         default:
       
   384             break;
       
   385         }
       
   386     return resourceId;
       
   387     }
       
   388 
       
   389 
       
   390 // -----------------------------------------------------------------------------
       
   391 // CCamCaptureSetupControlHandler::ViewfinderResourceId
       
   392 // Return the viewfinder resource to use for the appropriate control
       
   393 // -----------------------------------------------------------------------------
       
   394 //
       
   395 TInt CCamCaptureSetupControlHandler::ViewfinderResourceId() const
       
   396     {
       
   397 	TInt resourceId = 0;
       
   398     switch ( iSettingType )
       
   399         {
       
   400 		case ECamSettingItemDynamicPhotoBrightness:
       
   401 		case ECamSettingItemDynamicVideoBrightness:
       
   402 		case ECamSettingItemDynamicPhotoContrast:
       
   403 		case ECamSettingItemDynamicVideoContrast:
       
   404         case ECamSettingItemUserSceneBrightness:
       
   405         case ECamSettingItemUserSceneContrast:
       
   406         case ECamSettingItemDynamicPhotoExposure:
       
   407         case ECamSettingItemDynamicVideoExposure:
       
   408 			{
       
   409 			if ( !AknLayoutUtils::LayoutMirrored() )
       
   410                 {
       
   411 				resourceId = ROID(R_CAM_CAPTURE_SETUP_SLIDER_CONTVF_RECT_ID);
       
   412 				}
       
   413 			else
       
   414 				{
       
   415 				resourceId = ROID(R_CAM_CAPTURE_SETUP_SLIDER_CONTVF_RECT_AH_ID);
       
   416 				}
       
   417 			}
       
   418 			break;
       
   419 		default:
       
   420 			{
       
   421 			if ( !AknLayoutUtils::LayoutMirrored() )
       
   422                 {
       
   423 				resourceId = ROID(R_CAM_CAPTURE_SETUP_CONTVF_RECT_ID);
       
   424 				}
       
   425 			else
       
   426 				{
       
   427 				resourceId = ROID(R_CAM_CAPTURE_SETUP_CONTVF_RECT_AH_ID);
       
   428 				}
       
   429 			}
       
   430 			break;
       
   431 		}
       
   432 	return resourceId;
       
   433 	}
       
   434 
       
   435 // -----------------------------------------------------------------------------
       
   436 // CCamCaptureSetupControlHandler::SettingType
       
   437 // Identifies which setting is being edited
       
   438 // -----------------------------------------------------------------------------
       
   439 //
       
   440 TCamSettingItemIds CCamCaptureSetupControlHandler::SettingType() const
       
   441     {
       
   442     return iSettingType;
       
   443     }
       
   444 
       
   445 
       
   446 // End of file