--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraapp/generic/src/CamUserSceneSetupListItem.cpp Thu Jan 07 16:18:56 2010 +0200
@@ -0,0 +1,263 @@
+/*
+* 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: Implements a user scene setup list item.*
+*/
+
+
+// INCLUDE FILES
+#include "CamUserSceneSetupListItem.h"
+#include "CamSettings.hrh"
+#include "CamSettingsInternal.hrh"
+#include "CamPanic.h"
+#include <barsread.h>
+#include <e32std.h>
+#include <eikenv.h>
+#include "CamUtility.h"
+
+// CONSTANTS
+const TInt KValuesArrayGranularity = 6;
+
+
+// ================= MEMBER FUNCTIONS =======================
+// ---------------------------------------------------------
+// CCamUserSceneSetupListItem::NewLC
+// Symbian two-phased constructor.
+// ---------------------------------------------------------
+//
+CCamUserSceneSetupListItem* CCamUserSceneSetupListItem::NewLC
+( TInt aResId )
+ {
+ CCamUserSceneSetupListItem* self =
+ new ( ELeave ) CCamUserSceneSetupListItem;
+ CleanupStack::PushL( self );
+ self->ConstructL( aResId );
+ return self;
+ }
+
+// ---------------------------------------------------------
+// CCamUserSceneSetupListItem::NewL
+// Symbian two-phased constructor.
+// ---------------------------------------------------------
+//
+CCamUserSceneSetupListItem* CCamUserSceneSetupListItem::NewL
+( TInt aResId )
+ {
+ CCamUserSceneSetupListItem* self =
+ CCamUserSceneSetupListItem::NewLC( aResId );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------
+// CCamUserSceneSetupListItem::~CCamUserSceneSetupListItem
+// Destructor.
+// ---------------------------------------------------------
+//
+CCamUserSceneSetupListItem::~CCamUserSceneSetupListItem()
+ {
+ PRINT( _L("Camera => ~CCamUserSceneSetupListItem" ))
+ iValues.ResetAndDestroy();
+ iValues.Close();
+ PRINT( _L("Camera <= ~CCamUserSceneSetupListItem" ))
+ }
+
+// ---------------------------------------------------------
+// CCamUserSceneSetupListItem::ListBoxText
+// Returns the formatted text of this item to be used in the list box
+// ---------------------------------------------------------
+//
+TPtrC16 CCamUserSceneSetupListItem::ListBoxText()
+ {
+ // Create the title part of the text.
+ _LIT( KSettingItemSingleSpace, " " );
+ _LIT( KListBoxTextSeparator, "\t" );
+
+ TPtr listBoxTextPtr = iListBoxText.Des();
+ listBoxTextPtr.Copy( KSettingItemSingleSpace );
+ listBoxTextPtr.Append( KListBoxTextSeparator );
+ listBoxTextPtr.Append( SettingName() );
+ listBoxTextPtr.Append( KListBoxTextSeparator );
+ listBoxTextPtr.Append( KListBoxTextSeparator );
+
+ // Append the second part of the text to the title part.
+ // ...If there is value text for this item then append it.
+ if ( iValues.Count() > 0 )
+ {
+ TPtrC settingPtr = SettingText();
+ listBoxTextPtr.Append( settingPtr );
+ }
+
+ return iListBoxText;
+ }
+
+// ---------------------------------------------------------
+// CCamUserSceneSetupListItem::SettingsModelTypeId
+// Returns the settings model item id that is associated with this
+// list item.
+// ---------------------------------------------------------
+//
+TInt CCamUserSceneSetupListItem::SettingsModelTypeId()
+ {
+ return iSettingsModelItemId;
+ }
+
+// ---------------------------------------------------------
+// CCamUserSceneSetupListItem::SetCurrentValue
+// Sets the current value of this list item
+// ---------------------------------------------------------
+//
+void CCamUserSceneSetupListItem::SetCurrentValue( TInt aNewValue )
+ {
+ PRINT1( _L("Camera => CCamUserSceneSetupListItem::SetCurrentValue = %d" ), aNewValue )
+ PRINT1( _L("iSettingsModelItemId = %d" ), iSettingsModelItemId )
+ // Find the value-text pair that match the new current value,
+ // and store the index.
+ // Currently the brightness and contrast items only show 3 icons
+ // 1 for normal setting i.e. 0
+ // 1 for any positive setting i.e. above 0 and
+ // 1 for any negative setting i.e. below 0
+ // The code below matches positive/negative values to the correct icon
+ if ( iSettingsModelItemId == ECamSettingItemUserSceneBrightness )
+ {
+ if ( aNewValue < ECamBrightnessNorm )
+ {
+ iCurrentPairIndex = ECamBrightnessNeg;
+ return;
+ }
+ if ( aNewValue > ECamBrightnessNorm )
+ {
+ iCurrentPairIndex = ECamBrightnessPlus;
+ return;
+ }
+ }
+ else if ( iSettingsModelItemId == ECamSettingItemUserSceneContrast )
+ {
+ if ( aNewValue < ECamContrastNorm )
+ {
+ PRINT( _L("iCurrentPairIndex = ECamContrastNeg" ) )
+ iCurrentPairIndex = ECamContrastNeg;
+ return;
+ }
+ if ( aNewValue > ECamContrastNorm )
+ {
+ iCurrentPairIndex = ECamContrastPlus;
+ PRINT( _L("iCurrentPairIndex = ECamContrastPlus" ) )
+ return;
+ }
+ }
+ else
+ {
+ // lint
+ }
+
+
+ TInt i = 0;
+ TBool foundPair = EFalse;
+ do
+ {
+ __ASSERT_DEBUG( i <= iValues.Count(),
+ CamPanic( ECamPanicUSSPairNotFound ) );
+ if ( aNewValue == iValues[i]->iSettingsModelId )
+ {
+ foundPair = ETrue;
+ iCurrentPairIndex = i;
+ }
+ else
+ {
+ ++i;
+ }
+ }
+ while ( !foundPair );
+
+ PRINT1( _L("iCurrentPairIndex = %d" ), iCurrentPairIndex )
+ }
+
+// ---------------------------------------------------------
+// CCamUserSceneSetupListItem::CCamUserSceneSetupListItem
+// Constructor
+// ---------------------------------------------------------
+//
+CCamUserSceneSetupListItem::CCamUserSceneSetupListItem()
+:iValues( KValuesArrayGranularity )
+ {
+ }
+
+// ---------------------------------------------------------
+// CCamUserSceneSetupListItem::ConstructFromResourceL
+// 2nd phase Constructor
+// ---------------------------------------------------------
+//
+void CCamUserSceneSetupListItem::ConstructL
+( TInt aResId )
+ {
+ // Create a resource reader for reading only this list items data.
+ TResourceReader localReader;
+ CEikonEnv::Static()->CreateResourceReaderLC
+ ( localReader, aResId );
+
+ // Read the data for this list item from resource.
+ // ...get setting model item id associated with this list item.
+ iSettingsModelItemId = localReader.ReadInt16();
+ // ...get the text name of this list item.
+ iName = localReader.ReadTPtrC();
+ // ...get the count of all possible values
+ // ...that this list item can have, and repeatedly get these values
+ // ...and their associated textual description.
+ TInt valuesCount = localReader.ReadInt16();
+ TInt i;
+ for ( i = 0; i < valuesCount; ++i )
+ {
+ // ...create the pair object.
+ CValueTextPair* pair = new ( ELeave ) CValueTextPair;
+ // ...set the data.
+ pair->iSettingsModelId = localReader.ReadInt16();
+ pair->iText = localReader.ReadTPtrC();
+
+ // ...add the pair to the pair list.
+ CleanupStack::PushL( pair );
+ iValues.AppendL( pair );
+ CleanupStack::Pop( pair );
+ }
+
+ // Pop local resource reader.
+ CleanupStack::PopAndDestroy();
+ }
+
+// ---------------------------------------------------------
+// CCamUserSceneSetupListItem::SettingName
+// Returns the name of the setting type represented by this
+// list item.
+// ---------------------------------------------------------
+//
+TPtrC CCamUserSceneSetupListItem::SettingName() const
+ {
+ return iName;
+ }
+
+// ---------------------------------------------------------
+// CCamUserSceneSetupListItem::SettingText
+// Returns the text for the current setting value of this item
+// ---------------------------------------------------------
+//
+TPtrC CCamUserSceneSetupListItem::SettingText()
+ {
+ iValueText = iValues[iCurrentPairIndex]->iText;
+ return iValueText;
+ }
+
+
+
+
+
+// End of File