diff -r 000000000000 -r 96612d01cf9f mediasettings/mediasettingsapp/src/MPSettingsVideoSettingItemList.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mediasettings/mediasettingsapp/src/MPSettingsVideoSettingItemList.cpp Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,891 @@ +/* +* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: Setting item list class for Video settings list view.* +*/ + + +// Version : %version: 16 % + + + + +// INCLUDE FILES +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "MediaPlayerVariant.hrh" +#include "MediaPlayerPrivateCRKeys.h" +#include "mediasettings.hrh" +#include "MPSettingsVideoSettingItemList.h" +#include "MPSettingsSliderSettingItem.h" +#include "MPSettingsModelForROP.h" +#include "MPSettingsAppUi.h" +#include "videoplayersettingsengine.h" +#include "videoplayercenrepkeys.h" +#include "mpxlog.h" + + +const TInt KParentControlAdult( 18 ); +const TInt KParentControlMinAge( 4 ); +const TInt KParentControlIndexShift( 3 ); +const TInt KParentControlMaxIndex( 15 ); +const TInt KParentControlSelections( 16 ); +const TInt KParentControlOff( 0 ); + + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CMPSettingsVideoSettingItemList::CMPSettingsVideoSettingItemList +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CMPSettingsVideoSettingItemList::CMPSettingsVideoSettingItemList( + CMPSettingsModelForROP* aModel, CVcxNsSettingsEngine& aVideoSettingsEngine) : + iModel(aModel), iVideoSettingsEngine(aVideoSettingsEngine), iRockerKeysSupported(EFalse) + { + CMPSettingsAppUi* AppUi = + static_cast (CCoeEnv::Static()->AppUi()); + iLandscapeSupportedByDevice = AppUi->OrientationCanBeChanged(); + + TBool rockerSupported = EFalse; + TRAP_IGNORE( rockerSupported = iModel->IsRockerKeysSupportedL() ); + if ( rockerSupported ) + { + iRockerKeysSupported = ETrue; + } + MPX_DEBUG3(_L("#MS# CMPSettingsVideoSettingItemList::CMPSettingsVideoSettingItemList() iLandscapeSupportedByDevice(%d) iRockerKeysSupported(%d) "),iLandscapeSupportedByDevice,iRockerKeysSupported ); + } + +// ----------------------------------------------------------------------------- +// CMPSettingsVideoSettingItemList::~CMPSettingsVideoSettingItemList +// Destructor +// ----------------------------------------------------------------------------- +// +CMPSettingsVideoSettingItemList::~CMPSettingsVideoSettingItemList() + { + MPX_DEBUG1(_L("#MS# CMPSettingsVideoSettingItemList::~CMPSettingsVideoSettingItemList()")); + delete iDriveMonitor; + } + +// ----------------------------------------------------------------------------- +// CMPSettingsVideoSettingItemList::EditItemL +// ----------------------------------------------------------------------------- +// +void CMPSettingsVideoSettingItemList::EditItemL(TInt aIndex, TBool aCalledFromMenu) + { + MPX_DEBUG3(_L("#MS# CMPSettingsVideoSettingItemList::EditItemL(%d,%d)"),aIndex,aCalledFromMenu); + + TInt itemIndex = aIndex; + TBool storeModifiedSetting( ETrue ); + + CAknSettingItem* settingItem = SettingItemArray()->At( itemIndex ); + TInt identifier = settingItem->Identifier(); + + // Load current value from shared data + switch ( identifier ) + { + case EMPSettVideoContrastSettingId: + { + CAknSettingItemList::EditItemL( itemIndex, aCalledFromMenu ); + break; + } + + case EVcSettingsViewParentControlItem: + { + EditParentControlItemL( itemIndex, aCalledFromMenu ); + break; + } + + case EVcSettingsViewMemoryItem: + { + EditPreferredMemoryItemL( itemIndex, aCalledFromMenu ); + break; + } + + case EVcSettingsViewThumbnails: + { + EditThumbnailItemL( itemIndex, aCalledFromMenu ); + break; + } + case EVcSettingsviewIadUpdateItem: + { + // Not editable + storeModifiedSetting = EFalse; + } + break; + + default: + break; + } + + if ( storeModifiedSetting ) + { + // Store the modified setting + switch ( itemIndex ) + { + case EVcSettingsViewParentControlIndex: + case EVcSettingsViewMemoryItemIndex: + case EVcSettingsViewThumbnailsIndex: + break; + + default: + { + // Store setting value to settings model + settingItem->StoreL(); + StoreSettingL( identifier ); + } + break; + } + } + } + +// ----------------------------------------------------------------------------- +// CMPSettingsVideoSettingItemList::EditThumbnailItemL +// ----------------------------------------------------------------------------- +// +void CMPSettingsVideoSettingItemList::EditThumbnailItemL( TInt itemIndex, TBool aCalledFromMenu ) + { + if ( aCalledFromMenu ) + { + CAknSettingItemList::EditItemL( itemIndex, aCalledFromMenu); + (*SettingItemArray())[itemIndex]->StoreL(); + } + else + { + if (iSettingThumbnails) + { + iSettingThumbnails = 0; + } + else + { + iSettingThumbnails = 1; + } + (*SettingItemArray())[itemIndex]->LoadL(); + (*SettingItemArray())[itemIndex]->UpdateListBoxTextL(); + } + + iVideoSettingsEngine.SetVideoOnDemandThumbnails( + iSettingThumbnails); + DrawDeferred(); + } + +// ----------------------------------------------------------------------------- +// CMPSettingsVideoSettingItemList::EditParentControlItemL +// ----------------------------------------------------------------------------- +// +void CMPSettingsVideoSettingItemList::EditParentControlItemL( + TInt itemIndex, + TBool aCalledFromMenu ) + { + if (!iLockCodeAccepted) + { + iLockCodeAccepted = iVideoSettingsEngine.CheckLockCodeL(); + } + if (iLockCodeAccepted) + { + // can edit setting + iParentControlIndex = GetCurrentParentControl(); + CAknSettingItemList::EditItemL( itemIndex, aCalledFromMenu ); + (*SettingItemArray())[itemIndex]->StoreL(); + } + + SetCurrentParentControl( iParentControlIndex ); + iParentControlIndex = GetCurrentParentControl(); + } + +// ----------------------------------------------------------------------------- +// CMPSettingsVideoSettingItemList::EditPreferredMemoryItemL +// ----------------------------------------------------------------------------- +// +void CMPSettingsVideoSettingItemList::EditPreferredMemoryItemL( + TInt itemIndex, + TBool +#ifndef RD_MULTIPLE_DRIVE_ENABLERS + aCalledFromMenu +#endif + ) + { + TInt drive; + iVideoSettingsEngine.GetUsedMemoryL(drive); + iSettingMemory = iDriveMonitor->ArrayPos(drive); + if (iSettingMemory == KErrNotFound) + { + iSettingMemory = 0; + } + +#ifndef RD_MULTIPLE_DRIVE_ENABLERS + const TInt KThree( 3 ); + if ( iDriveMonitor->iAvailableDrives.Count() < KThree && !aCalledFromMenu ) + { + if ( iSettingMemory == 1 ) + { + iSettingMemory = 0; + } + else + { + iSettingMemory = 1; + } + } + else + { + CAknSettingItemList::EditItemL( aIndex, aCalledFromMenu ); + ( *SettingItemArray() )[aIndex]->StoreL(); + } +#else + + TBool driveSelected(EFalse); + + TDriveNumber selectedMem; + TInt includedMedias = 0; + + if (iDriveMonitor->PhoneMemoryDrive() != KErrNotFound) + { + includedMedias = AknCommonDialogsDynMem::EMemoryTypePhone; + } + + includedMedias |= AknCommonDialogsDynMem::EMemoryTypeMMCExternal + | AknCommonDialogsDynMem::EMemoryTypeInternalMassStorage; + + CAknMemorySelectionDialogMultiDrive* dlg = + CAknMemorySelectionDialogMultiDrive::NewL( + ECFDDialogTypeSelect, + R_MTV_MEMORY_SELECTION_DIALOG, EFalse, + includedMedias); + CleanupStack::PushL(dlg); + driveSelected = dlg->ExecuteL(selectedMem); + CleanupStack::PopAndDestroy(dlg); + + if (driveSelected) + { + iSettingMemory = iDriveMonitor->ArrayPos(selectedMem); + } + +#endif + + (*SettingItemArray())[itemIndex]->LoadL(); + (*SettingItemArray())[itemIndex]->UpdateListBoxTextL(); + + iVideoSettingsEngine.SetUsedMemory( + iDriveMonitor->iAvailableDrives[iSettingMemory].iDrive ); + + DrawDeferred(); + } + +// -------------------------------------------------------------------------- +// CMPSettingsVideoSettingItemList::HandleListBoxEventL() +// -------------------------------------------------------------------------- +// +void CMPSettingsVideoSettingItemList::HandleListBoxEventL( + CEikListBox* aListBox, + TListBoxEvent aListBoxEvent ) + { + if ( aListBoxEvent == EEventEnterKeyPressed || + aListBoxEvent == EEventItemSingleClicked || + aListBoxEvent == EEventItemDoubleClicked ) + { + TInt itemIndex = SettingItemArray()->ItemIndexFromVisibleIndex( + aListBox->CurrentItemIndex() ); + + CAknSettingItemList::HandleListBoxEventL( aListBox, aListBoxEvent ); + } + } + +// -------------------------------------------------------------------------- +// CMPSettingsVideoSettingItemList::EditCurrentItemL() +// -------------------------------------------------------------------------- +// +void CMPSettingsVideoSettingItemList::EditCurrentItemL( TBool aCalledFromMenu ) + { + TInt itemIndex = SettingItemArray()->ItemIndexFromVisibleIndex( + ListBox()->CurrentItemIndex() ); + + EditItemL( itemIndex, aCalledFromMenu ); + } + +// -------------------------------------------------------------------------- +// CMPSettingsVideoSettingItemList::IsCurrentItem() +// -------------------------------------------------------------------------- +// +TBool CMPSettingsVideoSettingItemList::IsCurrentItem( TInt aIndex ) + { + TBool retValue( EFalse ); + TInt currentIndex = SettingItemArray()->ItemIndexFromVisibleIndex( + ListBox()->CurrentItemIndex() ); + + CAknSettingItem* settingItem = SettingItemArray()->At( currentIndex ); + TInt identifier = settingItem->Identifier(); + if ( aIndex == identifier ) + { + retValue = ETrue; + } + + return retValue; + } + +// ----------------------------------------------------------------------------- +// CMPSettingsVideoSettingItemList::LoadSettingsL +// ----------------------------------------------------------------------------- +// +void CMPSettingsVideoSettingItemList::LoadSettingsL() + { + MPX_DEBUG1(_L("#MS# CMPSettingsVideoSettingItemList::LoadSettingsL()")); + // Get setting values from settings model + LoadAllL(); + + CAknSettingItemList::LoadSettingsL(); + + FinishConstructionL(); + } + +// ----------------------------------------------------------------------------- +// CMPSettingsVideoSettingItemList::CreateSettingItemL +// ----------------------------------------------------------------------------- +// +CAknSettingItem* CMPSettingsVideoSettingItemList::CreateSettingItemL(TInt aSettingId) + { + MPX_DEBUG2(_L("#MS# CMPSettingsVideoSettingItemList::CreateSettingItemL(%d)"),aSettingId); + CAknSettingItem* settingItem = NULL; + + switch (aSettingId) + { + case EMPSettVideoContrastSettingId: + { + settingItem = new (ELeave) CMPSettingsSliderSettingItem( + aSettingId, iVideoContrast, + R_MPSETT_CONTRAST_SLIDER_LIST_VALUE, EFalse); + if ( ! VideoContrastIsSupportedL() ) + { + settingItem->SetHidden( ETrue ); + } + break; + } + case EVcSettingsViewParentControlItem: + { + iParentControlIndex = GetCurrentParentControl(); + + iSettingParentControlItem + = new (ELeave) CAknEnumeratedTextPopupSettingItem( + aSettingId, iParentControlIndex); + return iSettingParentControlItem; + } + + case EVcSettingsViewMemoryItem: + { + if (!iDriveMonitor) + { + iDriveMonitor = CVideoSettingsDriveMonitor::NewL(); + iDriveMonitor->RegisterObserverL(this); + } + + TInt drive; + iVideoSettingsEngine.GetUsedMemoryL(drive); + iSettingMemory = iDriveMonitor->ArrayPos(drive); + if (iSettingMemory == KErrNotFound) + { + iSettingMemory = 0; + } + + iSettingMemoryItem + = new (ELeave) CAknEnumeratedTextPopupSettingItem( + aSettingId, iSettingMemory); + + return iSettingMemoryItem; + } + + case EVcSettingsviewIadUpdateItem: + { + // Set text value to empty. The version number is displayed by + // changing the string of empty item in UpdateVersionNumberTextL(). + iSettingVersionText = KNullDesC(); + iSettingIadUpdateItem = new (ELeave) CAknTextSettingItem( + aSettingId, iSettingVersionText); + return iSettingIadUpdateItem; + } + + case EVcSettingsViewThumbnails: + { + iVideoSettingsEngine.GetVideoOnDemandThumbnails(iSettingThumbnails); + iSettingThumbnailsItem + = new (ELeave) CAknEnumeratedTextPopupSettingItem( + aSettingId, iSettingThumbnails); + return iSettingThumbnailsItem; + } + + default: + break; + } + + return settingItem; + } + +// ----------------------------------------------------------------------------- +// CMPSettingsVideoSettingItemList::LoadSettingL +// ----------------------------------------------------------------------------- +// +void CMPSettingsVideoSettingItemList::LoadSettingL(TInt aSettingId) + { + MPX_DEBUG2(_L("#MS# CMPSettingsVideoSettingItemList::LoadSettingL(%d)"),aSettingId); + switch (aSettingId) + { + case EMPSettVideoContrastSettingId: + iModel->GetVideoContrast(iVideoContrast); + break; + + default: + break; + } + } + +// ----------------------------------------------------------------------------- +// CMPSettingsVideoSettingItemList::StoreSettingL +// ----------------------------------------------------------------------------- +// +void CMPSettingsVideoSettingItemList::StoreSettingL(TInt aSettingId) + { + MPX_DEBUG2(_L("#MS# CMPSettingsVideoSettingItemList::StoreSettingL(%d)"),aSettingId); + switch (aSettingId) + { + case EMPSettVideoContrastSettingId: + iModel->SetVideoContrast(iVideoContrast); + break; + + default: + break; + } + + iModel->StoreSettingsL(); + } + +// ----------------------------------------------------------------------------- +// CMPSettingsVideoSettingItemList::LoadAllL +// ----------------------------------------------------------------------------- +// +void CMPSettingsVideoSettingItemList::LoadAllL() + { + MPX_DEBUG1(_L("#MS# CMPSettingsVideoSettingItemList::LoadAllL()")); + iModel->LoadSettingsL(EConfigUser); + LoadSettingL(EMPSettVideoContrastSettingId); + } + +// -------------------------------------------------------------------------- +// CMPSettingsVideoSettingItemList::FinishConstructionL() +// -------------------------------------------------------------------------- +// +void CMPSettingsVideoSettingItemList::FinishConstructionL() + { + UpdateMemoryItemTextL(); + UpdateVersionNumberTextL(); + UpdateParentControlTextL(); + } + +// -------------------------------------------------------------------------- +// CMPSettingsVideoSettingItemList::UpdateVersionNumberTextL() +// -------------------------------------------------------------------------- +// +void CMPSettingsVideoSettingItemList::UpdateVersionNumberTextL() + { + Swi::RSisRegistrySession sisRegistrySession; + + if ( sisRegistrySession.Connect() == KErrNone ) + { + CleanupClosePushL( sisRegistrySession ); + + if ( sisRegistrySession.IsInstalledL( KSisUid ) ) + { + Swi::RSisRegistryEntry sisRegistryEntry; + TInt error = sisRegistryEntry.Open( sisRegistrySession, KSisUid ); + if ( error == KErrNone ) + { + CleanupClosePushL( sisRegistryEntry ); + TVersion vcVersion( sisRegistryEntry.VersionL() ); + CleanupStack::PopAndDestroy( &sisRegistryEntry ); + + HBufC* versionString = HBufC::NewLC( KMaxVersionNumberLength ); + TPtr versionPtr( versionString->Des() ); + versionPtr.Format( + KVersionNumberFormat, + vcVersion.iMajor, + vcVersion.iMinor, + vcVersion.iBuild ); + iSettingIadUpdateItem->SetEmptyItemTextL( *versionString ); + CleanupStack::PopAndDestroy( versionString ); + iSettingIadUpdateItem->UpdateListBoxTextL(); + } + } + CleanupStack::PopAndDestroy( &sisRegistrySession ); + } + } + +// -------------------------------------------------------------------------- +// Build dynamic listbox for parental control selection. +// -------------------------------------------------------------------------- +// +void CMPSettingsVideoSettingItemList::UpdateParentControlTextL() + { + // Set up the dynamic texts for this setting item. Choices are: + // + // 0: Parent control not in use. + // 1-15: Selected minimum age 4-18. + + CArrayPtrFlat* enumeratedTextArray = + new ( ELeave ) CArrayPtrFlat( + KParentControlSelections ); + CleanupStack::PushL( enumeratedTextArray ); + CArrayPtr* poppedUpTextArray = + new ( ELeave ) CArrayPtrFlat( KParentControlSelections ); + CleanupStack::PushL( poppedUpTextArray ); + + HBufC* parentControlStrOff1 = NULL; + HBufC* parentControlStrOff2 = NULL; + + parentControlStrOff1 = + StringLoader::LoadLC( R_IPTV_PARENTAL_CONTROL_OFF ); + parentControlStrOff2 = + StringLoader::LoadLC( R_IPTV_PARENTAL_CONTROL_OFF ); + + CAknEnumeratedText* enumeratedTextOff = + new ( ELeave ) CAknEnumeratedText( 0, parentControlStrOff1 ); + CleanupStack::PushL( enumeratedTextOff ); + enumeratedTextArray->AppendL( enumeratedTextOff ); + poppedUpTextArray->AppendL( parentControlStrOff2 ); + CleanupStack::Pop( enumeratedTextOff ); + CleanupStack::Pop( parentControlStrOff2 ); + CleanupStack::Pop( parentControlStrOff1 ); + + for ( TInt age = KParentControlMinAge; age <= KParentControlAdult; age++ ) + { + HBufC* parentControlStr1 = NULL; + HBufC* parentControlStr2 = NULL; + + parentControlStr1 = + StringLoader::LoadLC( R_IPTV_PARENTAL_CONTROL_N_YEARS, age ); + parentControlStr2 = + StringLoader::LoadLC( R_IPTV_PARENTAL_CONTROL_N_YEARS, age ); + + CAknEnumeratedText* enumeratedText = + new ( ELeave ) CAknEnumeratedText( + age - KParentControlIndexShift, parentControlStr1 ); + CleanupStack::PushL( enumeratedText ); + enumeratedTextArray->AppendL( enumeratedText ); + poppedUpTextArray->AppendL( parentControlStr2 ); + CleanupStack::Pop( enumeratedText ); + + CleanupStack::Pop( parentControlStr2 ); + CleanupStack::Pop( parentControlStr1 ); + } + + CleanupStack::Pop( poppedUpTextArray ); + CleanupStack::Pop( enumeratedTextArray ); + + iSettingParentControlItem->SetEnumeratedTextArrays( + enumeratedTextArray, + poppedUpTextArray ); + iSettingParentControlItem->HandleTextArrayUpdateL(); + iSettingParentControlItem->UpdateListBoxTextL(); + } + + +// -------------------------------------------------------------------------- +// Fetch current parent control age and return corresponding index. +// -------------------------------------------------------------------------- +// +TInt CMPSettingsVideoSettingItemList::GetCurrentParentControl() + { + TInt parentControlAge( 0 ); + TInt parentControlIndex( 0 ); + + if ( !iVideoSettingsEngine.GetParentControl( parentControlAge ) ) + { + parentControlAge = KIptvCenRepParentControlKeyDefault; + } + + // Fix age as index. + if ( KParentControlAdult < parentControlAge ) + { + parentControlIndex = KParentControlMaxIndex; + } + else if ( KParentControlMinAge <= parentControlAge ) + { + parentControlIndex = parentControlAge - KParentControlIndexShift; + } + else + { + parentControlIndex = KParentControlOff; + } + + return parentControlIndex; + } + +// ----------------------------------------------------------------------------- +// CMPSettingsVideoSettingItemList::HandleDriveMonitorEvent +// ----------------------------------------------------------------------------- +// +void CMPSettingsVideoSettingItemList::HandleDriveMonitorEvent( + TIptvDriveMonitorEvent& /*aEvent*/ ) + { + TRAP_IGNORE( UpdateMemoryItemTextL() ); + } + +// -------------------------------------------------------------------------- +// CVcSettingsViewSettingsListbox::UpdateMemoryItemTextL() +// -------------------------------------------------------------------------- +// +void CMPSettingsVideoSettingItemList::UpdateMemoryItemTextL() + { + MPX_FUNC( + "CMPSettingsVideoSettingItemList::UpdateMemoryItemTextL() start"); + + if ( !iDriveMonitor ) + { + iDriveMonitor = CVideoSettingsDriveMonitor::NewL(); + iDriveMonitor->RegisterObserverL( this ); + } + + CArrayPtrFlat* enumeratedTextArray = + new ( ELeave ) CArrayPtrFlat( 2 ); + CleanupStack::PushL( enumeratedTextArray ); // 1-> + + CArrayPtr* poppedUpTextArray = + new ( ELeave ) CArrayPtrFlat( 2 ); + CleanupStack::PushL( poppedUpTextArray ); // 2-> + + TInt i; + TInt listIndex = 0; + for ( i = 0; i < iDriveMonitor->iAvailableDrives.Count(); i++ ) + { + if ( (iDriveMonitor->iAvailableDrives[i].iFlags & + TIptvDriveInfo::ERemovable) ) + { + /* + * MMC + */ + if ( (iDriveMonitor->iAvailableDrives[i].iFlags & + TIptvDriveInfo::EMediaNotPresent) ) + { + //removable media not present -> Memory card + MPX_DEBUG1(_L("CMPSettingsVideoSettingItemList:: media not present, adding memory card to the list")); + + AddMemoryCardDesToArraysL( listIndex++, + *enumeratedTextArray, + *poppedUpTextArray ); + } + else + { + if ( (iDriveMonitor->iAvailableDrives[i].iFlags & + TIptvDriveInfo::ELocked) ) + { + //removable media present and locked -> Locked memory card + MPX_DEBUG1(_L("CMPSettingsVideoSettingItemList:: Adding locked memory card to the list")); + + AddLockedMemoryCardDesToArraysL( listIndex++, + *enumeratedTextArray, + *poppedUpTextArray ); + } + else + { + //removable media present and not locked + if ( iDriveMonitor->iAvailableDrives[i].iVolumeName.Length() > 0 ) + { + //removable media present, not locked and name text exits-> Volume name + MPX_DEBUG1(_L("CMPSettingsVideoSettingItemList:: adding volume name to the list")); + HBufC* volumeName = + HBufC::NewL( iDriveMonitor->iAvailableDrives[i].iVolumeName.Length() ); + CleanupStack::PushL( volumeName ); // 3-> + volumeName->Des() = iDriveMonitor->iAvailableDrives[i].iVolumeName; + AddDesToArraysL( listIndex++, + volumeName, + *enumeratedTextArray, + *poppedUpTextArray ); + CleanupStack::Pop( volumeName ); // <-3 + } + else + { + //removable media present, not locked and label text does not exit-> Memory card + MPX_DEBUG1(_L("CMPSettingsVideoSettingItemList:: volume name not defined, adding memory card to the list") ); + AddMemoryCardDesToArraysL( listIndex++, + *enumeratedTextArray, + *poppedUpTextArray ); + } + } + } + } + else + { + /* + * Fixed drive + */ + if ( iDriveMonitor->iAvailableDrives[i].iDrive == + iDriveMonitor->PhoneMemoryDrive() ) + { + //2 = c-drive -> Phone Memory + MPX_DEBUG1(_L("CMPSettingsVideoSettingItemList:: adding Phone memory to the list")); + AddPhoneMemoryDesToArraysL( listIndex++, + *enumeratedTextArray, + *poppedUpTextArray ); + } + else + { + //->Hard disk + MPX_DEBUG1(_L("CMPSettingsVideoSettingItemList:: adding Hard disk to the list")); + AddHardDiskDesToArraysL( listIndex++, + *enumeratedTextArray, + *poppedUpTextArray ); + } + } + } + + iSettingMemoryItem->SetEnumeratedTextArrays( + enumeratedTextArray, poppedUpTextArray ); + iSettingMemoryItem->HandleTextArrayUpdateL(); + iSettingMemoryItem->UpdateListBoxTextL(); + + CleanupStack::Pop( poppedUpTextArray ); // <-2 + CleanupStack::Pop( enumeratedTextArray ); // <-1 + + DrawDeferred(); + } + +// -------------------------------------------------------------------------- +// CMPSettingsVideoSettingItemList::AddPhoneMemoryDesToArraysL() +// -------------------------------------------------------------------------- +// +void CMPSettingsVideoSettingItemList::AddPhoneMemoryDesToArraysL( TInt aIndex, + CArrayPtrFlat& aEnumeratedTextArray, + CArrayPtr& aPoppedUpTextArray ) + { + HBufC* phoneMemoryDes = StringLoader::LoadLC( R_IPTV_SETTING_PHONE_MEMORY ); // 1-> + AddDesToArraysL( aIndex, phoneMemoryDes, aEnumeratedTextArray, aPoppedUpTextArray ); + CleanupStack::Pop( phoneMemoryDes ); // <-1 + } + +// -------------------------------------------------------------------------- +// CMPSettingsVideoSettingItemList::AddMemoryCardDesToArraysL() +// -------------------------------------------------------------------------- +// +void CMPSettingsVideoSettingItemList::AddMemoryCardDesToArraysL( TInt aIndex, + CArrayPtrFlat& aEnumeratedTextArray, + CArrayPtr& aPoppedUpTextArray ) + { + HBufC* memoryCardDes = StringLoader::LoadLC( R_IPTV_SETTING_MEMORY_CARD ); // 1-> + AddDesToArraysL( aIndex, memoryCardDes, aEnumeratedTextArray, aPoppedUpTextArray ); + CleanupStack::Pop( memoryCardDes ); // <-1 + } + +// -------------------------------------------------------------------------- +// CVcSettingsViewSettingsListbox::AddLockedMemoryCardDesToArraysL() +// -------------------------------------------------------------------------- +// +void CMPSettingsVideoSettingItemList::AddLockedMemoryCardDesToArraysL( TInt aIndex, + CArrayPtrFlat& aEnumeratedTextArray, + CArrayPtr& aPoppedUpTextArray ) + { + HBufC* lockedMemoryCardDes = StringLoader::LoadLC( R_IPTV_LOCKED_MEMORY_CARD ); // 1-> + AddDesToArraysL( aIndex, lockedMemoryCardDes, aEnumeratedTextArray, aPoppedUpTextArray); + CleanupStack::Pop( lockedMemoryCardDes ); // <-1 + } + +// -------------------------------------------------------------------------- +// CMPSettingsVideoSettingItemList::AddHardDiskDesToArraysL() +// -------------------------------------------------------------------------- +// +void CMPSettingsVideoSettingItemList::AddHardDiskDesToArraysL( TInt aIndex, + CArrayPtrFlat& aEnumeratedTextArray, + CArrayPtr& aPoppedUpTextArray ) + { + HBufC* hardDiskDes = StringLoader::LoadLC( R_IPTV_SETTING_MASS_MEMORY ); // 1-> + AddDesToArraysL( aIndex, hardDiskDes, aEnumeratedTextArray, aPoppedUpTextArray); + CleanupStack::Pop( hardDiskDes ); // <-1 + } + +// -------------------------------------------------------------------------- +// CMPSettingsVideoSettingItemList::AddDesToArraysL() +// NOTE: Codescanner whines about passing non const HBufC, +// but that's needed for CAknEnumeratedText construction. +// -------------------------------------------------------------------------- +// +void CMPSettingsVideoSettingItemList::AddDesToArraysL( TInt aIndex, HBufC* aText, + CArrayPtrFlat& aEnumeratedTextArray, + CArrayPtr& aPoppedUpTextArray ) + { + CAknEnumeratedText* enumeratedText = + new ( ELeave ) CAknEnumeratedText( aIndex, aText ); + CleanupStack::PushL( enumeratedText ); //1-> + aEnumeratedTextArray.AppendL( enumeratedText ); + CleanupStack::Pop( enumeratedText ); // <-1 + + HBufC* textCopy = HBufC::NewL( aText->Des().Length() ); + CleanupStack::PushL( textCopy ); // 1-> + textCopy->Des() = aText->Des(); + + aPoppedUpTextArray.AppendL( textCopy ); + CleanupStack::Pop( textCopy ); // <-1 + } + +// -------------------------------------------------------------------------- +// Convert and save parent control index as age. +// -------------------------------------------------------------------------- +// +void CMPSettingsVideoSettingItemList::SetCurrentParentControl( + TInt aParentControlIndex ) + { + TInt parentControlAge( 0 ); + + // Fix index as age. + if ( KParentControlMaxIndex < aParentControlIndex ) + { + parentControlAge = KParentControlAdult; + } + else if ( 1 <= aParentControlIndex ) + { + parentControlAge = aParentControlIndex + KParentControlIndexShift; + } + else + { + parentControlAge = 0; + } + + iVideoSettingsEngine.SetParentControl( parentControlAge ); + } + +// -------------------------------------------------------------------------- +// Check if video contrast is supported. +// -------------------------------------------------------------------------- +// +TBool CMPSettingsVideoSettingItemList::VideoContrastIsSupportedL() + { + TInt flags; + + CRepository* repository = CRepository::NewL( KCRUidMediaPlayerFeatures ); + repository->Get( KMPLocalVariation, flags ); + delete repository; + + if ( flags & KMediaPlayerVideoContrast ) + { + return ETrue; + } + + return EFalse; + } + +// End of File