diff -r 61bc0f252b2b -r bac7acad7cb3 camerauis/cameraapp/generic/common/src/CamCaptureSetupListBoxModel.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camerauis/cameraapp/generic/common/src/CamCaptureSetupListBoxModel.cpp Wed Sep 01 12:30:54 2010 +0100 @@ -0,0 +1,332 @@ +/* +* 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: A model class for CCamCaptureSetupListBox* +*/ + + +// INCLUDE FILES +#include +#include + +#ifndef CAMERAAPP_PLUGIN_BUILD + #include + #include +#else + #include +#endif //CAMERAAPP_PLUGIN_BUILD + +#include "CamProductSpecificSettings.hrh" +#include "CamUtility.h" +#include "camlayoututils.h" +#include "CamCaptureSetupListItem.h" +#include "CamCaptureSetupListBoxModel.h" +#include "CameraUiConfigManager.h" + +#include + + +// ================= MEMBER FUNCTIONS ======================= + +// ----------------------------------------------------------------------------- +// CCamCaptureSetupListBoxModel::NewLC +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CCamCaptureSetupListBoxModel* CCamCaptureSetupListBoxModel::NewLC( +#ifndef CAMERAAPP_PLUGIN_BUILD + CCamAppController& aController, +#else // location setting will be moved to the plugin + MCamAppController& aController, +#endif + TInt aArrayResourceId, + TInt aSettingItem, + TBool aShootingModeListBox, + TBool aLocationSettingListBox, + TRect aListBoxRect + ) + { + CCamCaptureSetupListBoxModel* self = new( ELeave ) CCamCaptureSetupListBoxModel( aController, + aShootingModeListBox, + aLocationSettingListBox + ); + + CleanupStack::PushL( self ); + self->ConstructL( aArrayResourceId, aSettingItem, aListBoxRect ); + return self; + } + +// --------------------------------------------------------------------------- +// CCamCaptureSetupListBoxModel destructor +// +// --------------------------------------------------------------------------- +// +CCamCaptureSetupListBoxModel::~CCamCaptureSetupListBoxModel() + { + PRINT( _L("Camera => ~CCamCaptureSetupListBoxModel") ); + iItemArray.ResetAndDestroy(); + iItemArray.Close(); + PRINT( _L("Camera <= ~CCamCaptureSetupListBoxModel") ); + } + +// --------------------------------------------------------- +// CCamCaptureSetupListBoxModel::NumberOfItems +// Returns number of items that are in array +// --------------------------------------------------------- +// +TInt CCamCaptureSetupListBoxModel::NumberOfItems() const + { + return iItemArray.Count(); + } + +// --------------------------------------------------------- +// CCamCaptureSetupListBoxModel::MatchableTextArray +// Returns null, no support for incremental matching +// --------------------------------------------------------- +// +const MDesCArray* CCamCaptureSetupListBoxModel::MatchableTextArray() const + { + return NULL; + } + +// --------------------------------------------------------- +// CCamCaptureSetupListBoxModel::ItemText +// Returns a pointer to the item text +// --------------------------------------------------------- +// +TPtrC CCamCaptureSetupListBoxModel::ItemText( TInt aItemIndex ) const + { + return iItemArray[ aItemIndex ]->ItemText(); + } + +// --------------------------------------------------------- +// CCamCaptureSetupListBoxModel::ItemValue +// Returns the value id of the specified item +// --------------------------------------------------------- +// +TInt CCamCaptureSetupListBoxModel::ItemValue( TInt aItemIndex ) const + { + return iItemArray[aItemIndex]->ItemValue(); + } + +// --------------------------------------------------------- +// CCamCaptureSetupListBoxModel::Bitmap +// Returns a pointer to the bitmap of the specified item +// --------------------------------------------------------- +// +CFbsBitmap* CCamCaptureSetupListBoxModel::Bitmap( TInt aItemIndex ) const + { + return iItemArray[ aItemIndex ]->Bitmap(); + } + +// --------------------------------------------------------- +// CCamCaptureSetupListBoxModel::BitmapMask +// Returns a pointer to the mask of the specified item +// --------------------------------------------------------- +// +CFbsBitmap* CCamCaptureSetupListBoxModel::BitmapMask( TInt aItemIndex ) const + { + return iItemArray[ aItemIndex ]->BitmapMask(); + } + +// --------------------------------------------------------- +// CCamCaptureSetupListBoxModel::ItemIndexFromValueId +// Returns the index of the item with a matching value id +// --------------------------------------------------------- +// +TInt CCamCaptureSetupListBoxModel::ValueIndex( TInt aValueId ) const + { + return iItemArray.Find( aValueId, CCamInfoListboxItemBase::EqualIds ); + } + +// --------------------------------------------------------- +// CCamCaptureSetupListBoxModel::ShootingModeListBox +// Returns whether the model represents a shooting mode listbox +// --------------------------------------------------------- +// +TBool CCamCaptureSetupListBoxModel::ShootingModeListBox() const + { + return iShootingModeListBox; + } + + +TAknLayoutRect CCamCaptureSetupListBoxModel::IconLayoutData() const + { + return iIconLayoutData; + } +TAknLayoutRect CCamCaptureSetupListBoxModel::RadioButtonLayoutData() const + { + return iRadioButtonLayoutData; + } +TAknLayoutText CCamCaptureSetupListBoxModel::TextLayoutData() const + { + return iTextLayoutData; + } +TAknLayoutRect CCamCaptureSetupListBoxModel::ListItemLayoutData() const + { + return iListItemLayoutData; + } +// --------------------------------------------------------------------------- +// CCamCaptureSetupListBoxModel::CCamCaptureSetupListBoxModel +// C++ constructor +// --------------------------------------------------------------------------- +// + +CCamCaptureSetupListBoxModel::CCamCaptureSetupListBoxModel( +#ifndef CAMERAAPP_PLUGIN_BUILD + CCamAppController& aController, +#else // location setting will be moved to the plugin + MCamAppController& aController, +#endif + TBool aShootingModeListBox, + TBool aLocationSettingListBox + ) +: iController( aController ), iShootingModeListBox ( aShootingModeListBox ), + iLocationSettingListBox ( aLocationSettingListBox ) + { + } + +// --------------------------------------------------------------------------- +// CCamCaptureSetupListBoxModel::ConstructL +// 2nd phase construction +// --------------------------------------------------------------------------- +// +void CCamCaptureSetupListBoxModel::ConstructL( TInt aArrayResourceId, TInt aSettingItem, TRect aListBoxRect ) + { + ReadLayoutData( aListBoxRect ); + + // create array from resource + TResourceReader reader; + CEikonEnv::Static()->CreateResourceReaderLC( reader, aArrayResourceId ); + const TInt count = reader.ReadInt16(); + +#ifndef CAMERAAPP_PLUGIN_BUILD + iSupportedFlashModes = iController.SupportedFlashModes(); + iSupportedWBModes = iController.SupportedWBModes(); +#endif //CAMERAAPP_PLUGIN_BUILD + + // for each entry in the resource array, create a new list item + for ( TInt i = 0; i < count; i++ ) + { + CCamCaptureSetupListItem* listItem = + CCamCaptureSetupListItem::NewLC( reader, iIconLayoutData ); + + if( SettingValueSupportedL( listItem, aSettingItem ) ) + { + iItemArray.AppendL( listItem ); + } + + CleanupStack::Pop( listItem ); + } + CleanupStack::PopAndDestroy(); // reader + } + +// --------------------------------------------------------------------------- +// CCamCaptureSetupListBoxModel::ReadLayoutData +// Read in layout data from resource +// --------------------------------------------------------------------------- +// +void CCamCaptureSetupListBoxModel::ReadLayoutData( TRect aListBoxRect ) + { + if ( CamUtility::IsNhdDevice() ) + { + iIconLayoutData.LayoutRect( aListBoxRect, + AknLayoutScalable_Apps::cset_list_set_pane_g3( 0 ) ); + iRadioButtonLayoutData.LayoutRect( aListBoxRect, + AknLayoutScalable_Apps::cset_list_set_pane_g1( 0 ) ); + iListItemLayoutData.LayoutRect( aListBoxRect, + AknLayoutScalable_Apps::cset_list_set_pane( 0 ) ); + } + else + { + TRect mnPane; + AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mnPane ); + TAknLayoutRect listLayoutRect; + listLayoutRect.LayoutRect( mnPane, + AknLayoutScalable_Apps::main_cset6_listscroll_pane( 4 ) ); + iIconLayoutData.LayoutRect( listLayoutRect.Rect(), + AknLayoutScalable_Apps::cset_list_set_pane_g3_copy1( 0 ) ); + iRadioButtonLayoutData.LayoutRect( listLayoutRect.Rect(), + AknLayoutScalable_Apps::cset_list_set_pane_g1_copy1( 0 ) ); + TAknWindowLineLayout l = AknLayoutScalable_Apps::cset_list_set_pane_copy1( 0 ); + if( !l.iH ) + { + l.iH = 73; // TODO Temporarily defined! + } + iListItemLayoutData.LayoutRect( listLayoutRect.Rect(), l ); + } + } + +// --------------------------------------------------------------------------- +// CCamCaptureSetupListBoxModel::SettingValueSupportedL +// --------------------------------------------------------------------------- +// +TBool +CCamCaptureSetupListBoxModel::SettingValueSupportedL( CCamInfoListboxItemBase* aItem, TInt aSettingItem ) + { + TBool supported = EFalse; + TBool checkConfiguredItems = ETrue; + TInt val = aItem->ItemValue(); + + CCameraUiConfigManager* dynamicSettings = iController.UiConfigManagerPtr(); + RArray supportedItems; + CleanupClosePushL( supportedItems ); + supportedItems.Reset(); + + // just for flash to start with + if( aSettingItem == ECamSettingItemDynamicPhotoFlash ) + { +#ifndef CAMERAAPP_PLUGIN_BUILD + if ( dynamicSettings ) + { + dynamicSettings->SupportedFlashModeSettingsL( supportedItems ); + } +#endif //CAMERAAPP_PLUGIN_BUILD + } + else if( ECamSettingItemDynamicPhotoWhiteBalance == aSettingItem || + ECamSettingItemDynamicVideoWhiteBalance == aSettingItem ) + { +#ifndef CAMERAAPP_PLUGIN_BUILD + if ( dynamicSettings ) + { + dynamicSettings->SupportedWhiteBalanceSettingsL( supportedItems ); + } +#endif //CAMERAAPP_PLUGIN_BUILD + } + else if ( ECamSettingItemDynamicPhotoColourFilter == aSettingItem || + ECamSettingItemDynamicVideoColourFilter == aSettingItem || + ECamSettingItemUserSceneColourFilter == aSettingItem ) + { +#ifndef CAMERAAPP_PLUGIN_BUILD + if ( dynamicSettings ) + { + dynamicSettings->SupportedColorToneSettingsL( supportedItems ); + } +#endif //CAMERAAPP_PLUGIN_BUILD + } + else + { + checkConfiguredItems = EFalse; + supported = ETrue; + } + + if ( checkConfiguredItems && supportedItems.Count() > 0 ) + { + supported = KErrNotFound != supportedItems.Find( val ); + } + + CleanupStack::PopAndDestroy( &supportedItems ); + return supported; + } +// End of File +