--- /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 <barsread.h>
+#include <eikenv.h>
+
+#ifndef CAMERAAPP_PLUGIN_BUILD
+ #include <cameraapp.rsg>
+ #include <vgacamsettings.rsg>
+#else
+ #include <gscamerapluginrsc.rsg>
+#endif //CAMERAAPP_PLUGIN_BUILD
+
+#include "CamProductSpecificSettings.hrh"
+#include "CamUtility.h"
+#include "camlayoututils.h"
+#include "CamCaptureSetupListItem.h"
+#include "CamCaptureSetupListBoxModel.h"
+#include "CameraUiConfigManager.h"
+
+#include <aknlayoutscalable_apps.cdl.h>
+
+
+// ================= 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<TInt> 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
+