--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraapp/generic/src/CamCaptureSetupMenuListItem.cpp Wed Sep 01 12:30:54 2010 +0100
@@ -0,0 +1,288 @@
+/*
+* 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: Encapsulates the data for a particular Capture Setup Menu item.*
+*/
+
+
+
+// INCLUDE FILES
+#include "CamCaptureSetupMenuListItem.h"
+#include "CamUtility.h"
+#include <eikenv.h>
+#include <eikappui.h> // For CCoeAppUiBase
+#include <eikapp.h> // For CEikApplication
+#include <barsread.h>
+#include <AknIconUtils.h>
+
+const TInt KIconTextGranularity = 2;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// NewL
+// Two-phased constructor.
+// Returns: CCamCaptureSetupMenuListItem*: Pointer to the created list item.
+// -----------------------------------------------------------------------------
+//
+CCamCaptureSetupMenuListItem* CCamCaptureSetupMenuListItem::NewL(
+ TResourceReader& aReader ) // Used to read/construct data for this list item.
+ {
+ CCamCaptureSetupMenuListItem* self =
+ new (ELeave ) CCamCaptureSetupMenuListItem();
+ CleanupStack::PushL( self );
+ self->ConstructFromResourceL( aReader );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CCamCaptureSetupMenuListItem::~CCamCaptureSetupMenuListItem
+// -----------------------------------------------------------------------------
+//
+CCamCaptureSetupMenuListItem::~CCamCaptureSetupMenuListItem()
+ {
+ PRINT( _L("Camera => ~CCamCaptureSetupMenuListItem") );
+
+ delete iIconTexts;
+ iIconTexts = NULL;
+
+ // Destroy bitmap array.
+ iBitmaps.ResetAndDestroy();
+ iBitmaps.Close();
+ iMasks.ResetAndDestroy();
+ iMasks.Close();
+ PRINT( _L("Camera <= ~CCamCaptureSetupMenuListItem") );
+ }
+
+// -----------------------------------------------------------------------------
+// CCamCaptureSetupMenuListItem::Bitmap
+// Returns the bitmap that represents the current settings model
+// value for this list item.
+// Returns: CFbsBitmap*: Pointer to the bitmap.
+// -----------------------------------------------------------------------------
+//
+CFbsBitmap* CCamCaptureSetupMenuListItem::Bitmap() const
+ {
+ return iBitmaps[iCurrentSettingItemValueId];
+ }
+
+// -----------------------------------------------------------------------------
+// CCamCaptureSetupMenuListItem::Mask
+// Returns the bitmap that represents the current settings model
+// value for this list item.
+// Returns: CFbsBitmap*: Pointer to the bitmap.
+// -----------------------------------------------------------------------------
+//
+CFbsBitmap* CCamCaptureSetupMenuListItem::Mask() const
+ {
+ return iMasks[iCurrentSettingItemValueId];
+ }
+
+// -----------------------------------------------------------------------------
+// CCamCaptureSetupMenuListItem::IconText
+// Returns text used in place of an icon for this list item.
+// Returns: Ref to the icon text.
+// -----------------------------------------------------------------------------
+//
+const TDesC& CCamCaptureSetupMenuListItem::IconText( TInt aSettingVal ) const
+ {
+ if ( iSettingsModelItemId == ECamSettingItemDynamicPhotoBrightness ||
+ iSettingsModelItemId == ECamSettingItemDynamicVideoBrightness ||
+ iSettingsModelItemId == ECamSettingItemDynamicPhotoContrast ||
+ iSettingsModelItemId == ECamSettingItemDynamicVideoContrast )
+ {
+ // get the array index if this item is brightness or contrast
+ GetBrightnessContrastArrayIndex( aSettingVal );
+ }
+
+ return (*iIconTexts)[aSettingVal];
+ }
+
+// -----------------------------------------------------------------------------
+// CCamCaptureSetupMenuListItem::Text
+// Returns text that describes the setting represented by this list item.
+// Returns: Ref to the item text.
+// -----------------------------------------------------------------------------
+//
+const TDesC& CCamCaptureSetupMenuListItem::Text() const
+ {
+ return iText;
+ }
+
+// -----------------------------------------------------------------------------
+// CCamCaptureSetupMenuListItem::CurrentValue
+// Returns the cached settings model value that the current bitmap represents.
+// Returns: TInt: The current value.
+// -----------------------------------------------------------------------------
+//
+TInt CCamCaptureSetupMenuListItem::CurrentValue() const
+ {
+ return iCurrentSettingItemValueId;
+ }
+
+// -----------------------------------------------------------------------------
+// CCamCaptureSetupMenuListItem::SettingsModelItemId
+// Returns the id of the settings model item that this list item represents.
+// Returns: TInt: The settings model item id.
+// -----------------------------------------------------------------------------
+//
+TInt CCamCaptureSetupMenuListItem::SettingsModelItemId() const
+ {
+ return iSettingsModelItemId;
+ }
+
+// -----------------------------------------------------------------------------
+// CCamCaptureSetupMenuListItem::SetValueTo
+// Changes the cached settings model value and the bitmap that represents it.
+// -----------------------------------------------------------------------------
+//
+void CCamCaptureSetupMenuListItem::SetValueTo(
+ TInt aNewValueId ) // the new cached settings model value.
+ {
+ if ( iSettingsModelItemId == ECamSettingItemDynamicPhotoBrightness ||
+ iSettingsModelItemId == ECamSettingItemDynamicVideoBrightness ||
+ iSettingsModelItemId == ECamSettingItemDynamicPhotoContrast ||
+ iSettingsModelItemId == ECamSettingItemDynamicVideoContrast )
+ {
+ // get the array index if this item is brightness or contrast
+ GetBrightnessContrastArrayIndex( aNewValueId );
+ }
+
+ iCurrentSettingItemValueId = aNewValueId;
+ }
+
+// -----------------------------------------------------------------------------
+// CCamCaptureSetupMenuListItem::CCamCaptureSetupMenuListItem
+// C++ default constructor.
+// -----------------------------------------------------------------------------
+//
+CCamCaptureSetupMenuListItem::CCamCaptureSetupMenuListItem()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CCamCaptureSetupMenuListItem::ConstructFromResourceL
+// 2nd phase constructor.
+// -----------------------------------------------------------------------------
+//
+void
+CCamCaptureSetupMenuListItem::ConstructFromResourceL(
+ TResourceReader& aReader ) // reader that is used to construct the data
+ {
+ PRINT( _L("Camera => CCamCaptureSetupMenuListItem::ConstructFromResourceL") );
+ delete iIconTexts;
+ iIconTexts = NULL;
+ iIconTexts = new (ELeave) CArrayFixFlat<TIconText>( KIconTextGranularity );
+
+ // Get the full path for the mbm file
+ TFileName resFileName;
+ CamUtility::ResourceFileName( resFileName );
+
+ // Create a resource reader for reading only this list items data.
+ TInt resourceID = aReader.ReadInt32();
+ TResourceReader localReader;
+ CEikonEnv::Static()->CreateResourceReaderLC( localReader, resourceID );
+
+ // Read the data for this list item from resource.
+ // ...get setting model item id for associated with this list item.
+ iSettingsModelItemId = localReader.ReadInt16();
+ // ...get the text description of this list item.
+ iText = localReader.ReadTPtrC();
+ // ...get the count of all possible values (bitmaps)
+ // ...that this list item can have, and repeatedly get the values.
+ TInt valuesCount = localReader.ReadInt16();
+ TInt i;
+ for ( i = 0; i < valuesCount; ++i )
+ {
+ // ...read the current value's settings model id.
+ TInt settingsModelId = localReader.ReadInt16();
+ // ...read associated bitmap id for current value.
+ TInt bitmapId = localReader.ReadInt16();
+ CFbsBitmap* newBitmap = NULL;
+ CFbsBitmap* mask = NULL;
+ if ( bitmapId != -1 )
+ {
+ AknIconUtils::CreateIconLC( newBitmap, mask, resFileName, bitmapId, bitmapId );
+ // ...add the bitmap to the array of bitmaps for this list item.
+ iBitmaps.InsertL( newBitmap, settingsModelId );
+ iMasks.InsertL( mask, settingsModelId );
+ // newBitmap, mask. Don't know the order of pushing so pop anonymously.
+ CleanupStack::Pop( 2 );
+ }
+ else
+ {
+ // Add NULL bitmaps:
+ iBitmaps.InsertL( newBitmap, settingsModelId );
+ iMasks.InsertL( mask, settingsModelId );
+ }
+
+ iIconTexts->InsertL( settingsModelId, localReader.ReadTPtrC() );
+ }
+
+ // Pop local resource reader.
+ CleanupStack::PopAndDestroy();
+ PRINT( _L("Camera <= CCamCaptureSetupMenuListItem::ConstructFromResourceL") )
+ }
+
+
+// -----------------------------------------------------------------------------
+// CCamCaptureSetupMenuListItem::GetBrightnessContrastArrayIndex
+// Returns the array position for brightness and contrast, as these controls
+// can have negative values, so this maps to an index in the text/bitmaps arrays
+// -----------------------------------------------------------------------------
+//
+void CCamCaptureSetupMenuListItem::GetBrightnessContrastArrayIndex( TInt& aValue ) const
+ {
+ // if brightness or contrast settings - only display either
+ // the plus or negative icon. There isn't going to be an icon
+ // for each setting value as the values can range from -10 to +10
+ if ( iSettingsModelItemId == ECamSettingItemDynamicPhotoBrightness ||
+ iSettingsModelItemId == ECamSettingItemDynamicVideoBrightness )
+ {
+ if ( aValue > 0 )
+ {
+ aValue = ECamBrightnessPlus;
+ }
+ else if ( aValue < 0 )
+ {
+ aValue = ECamBrightnessNeg;
+ }
+ else
+ {
+ aValue = ECamBrightnessNorm;
+ }
+ }
+ else if ( iSettingsModelItemId == ECamSettingItemDynamicPhotoContrast ||
+ iSettingsModelItemId == ECamSettingItemDynamicVideoContrast )
+ {
+ if ( aValue > 0 )
+ {
+ aValue = ECamContrastPlus;
+ }
+ else if ( aValue < 0 )
+ {
+ aValue = ECamContrastNeg;
+ }
+ else
+ {
+ aValue = ECamBrightnessNorm;
+ }
+ }
+ else // lint
+ {
+ }
+ }
+
+
+// End of File