--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gssettingsuis/Gs/GSDisplayPlugin/Src/GSDisplayPluginContainer.cpp Wed Sep 01 12:20:44 2010 +0100
@@ -0,0 +1,701 @@
+/*
+* Copyright (c) 2005 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: Container for the Display sub-folder
+*
+*/
+
+
+
+// INCLUDE FILES
+#include "GSDisplayPluginContainer.h"
+#include "GSDisplayPluginModel.h"
+#include "GsDisplayPlugin.hrh"
+#include "GSDisplayPlugin.h"
+
+#include <bldvariant.hrh>
+#include <aknlists.h>
+#include <eikfrlb.h>
+#include <aknslider.h>
+#include <gulicon.h>
+#include <StringLoader.h>
+#include <featmgr.h>
+#include <AknUtils.h>
+#include <csxhelp/cp.hlp.hrh>
+#include <gsfwviewuids.h> // for KUidGS
+#include <gsdisplaypluginrsc.rsg>
+#include <gslistbox.h>
+#include <AknsConstants.h> //for determining skin change
+#include <AknDef.hrh>
+#include <AknIconArray.h>
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// CONSTANTS
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+const TInt KGSBufSize128 = 128;
+const TInt KGSNumberOfIcons = 3;
+const TInt KGSContrastIndex = 0;
+const TInt KGSBrightnessIndex = 1;
+const TInt KGSAmbientLightSensorIndex = 2;
+const TInt KGSSliderIndexMin = 0;
+const TInt KGSBrightnessMax = 31;
+const TInt KGSALSMax = 5;
+
+// MODULE DATA STRUCTURES
+// current ordering is based on the resource structure.
+enum TZoomLevel
+ {
+ EZoomLargeInUi,
+ EZoomNormalInUi,
+ EZoomSmallInUi
+ };
+
+// LOCAL FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+// ============================= LOCAL FUNCTIONS ==============================
+
+// ========================== MEMBER FUNCTIONS ================================
+
+// ---------------------------------------------------------------------------
+// CGSDisplayPluginContainer::ConstructL(const TRect& aRect)
+// Symbian OS two phased constructor
+//
+// ---------------------------------------------------------------------------
+//
+void CGSDisplayPluginContainer::ConstructL( const TRect& aRect )
+ {
+ iListBox = new ( ELeave ) CAknSettingStyleListBox;
+ iModel = CGSDisplayPluginModel::NewL();
+ iModel->SetOwner( this );
+
+ BaseConstructL( aRect, R_GS_DISPLAY_VIEW_TITLE, R_DISPL_LBX );
+ }
+
+// ---------------------------------------------------------------------------
+// CGSDisplayPluginContainer::~CGSDisplayPluginContainer()
+//
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CGSDisplayPluginContainer::~CGSDisplayPluginContainer()
+ {
+ if ( FeatureManager::FeatureSupported ( KFeatureIdUiZoom ) )
+ {
+ delete iDispTxtSizeItems;
+ }
+
+ if ( iWelcomeItems )
+ {
+ delete iWelcomeItems;
+ }
+
+ if ( iLedItems )
+ {
+ delete iLedItems;
+ }
+
+ if ( iOperatorLogoItems)
+ {
+ delete iOperatorLogoItems;
+ iOperatorLogoItems = NULL;
+ }
+
+ if ( iModel )
+ {
+ delete iModel;
+ iModel = NULL;
+ }
+
+ if ( iListboxItemArray )
+ {
+ delete iListboxItemArray;
+ }
+ }
+
+
+// ---------------------------------------------------------------------------
+// CGSDisplayPluginContainer::CGSDisplayPluginContainer()
+//
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CGSDisplayPluginContainer::CGSDisplayPluginContainer()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// CGSDisplayPluginContainer::ConstructListBoxL()
+// Destructor
+//
+// ---------------------------------------------------------------------------
+//
+void CGSDisplayPluginContainer::ConstructListBoxL( TInt aResLbxId )
+ {
+ iListBox->ConstructL( this, EAknListBoxSelectionList );
+ iListboxItemArray =
+ CGSListBoxItemTextArray::NewL( aResLbxId, *iListBox, *iCoeEnv );
+ iListBox->Model()->SetItemTextArray( iListboxItemArray );
+ iListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+
+
+ if ( FeatureManager::FeatureSupported ( KFeatureIdUiZoom ) )
+ {
+ iDispTxtSizeItems = iCoeEnv->ReadDesC16ArrayResourceL(
+ R_DISPLAY_TEXT_SIZE_SETTING_PAGE_LBX );
+ }
+
+ iWelcomeItems = iCoeEnv->ReadDesC16ArrayResourceL(
+ R_WELCOME_NOTE_SETTING_PAGE_LBX );
+ iLedItems = iCoeEnv->ReadDesC16ArrayResourceL(
+ R_POWER_SAVE_LED_SETTING_PAGE_LBX );
+ iOperatorLogoItems = iCoeEnv->ReadDesC16ArrayResourceL(
+ R_OPLOGO_ON_OFF_SETTING_PAGE_LBX );
+
+
+ CArrayPtr<CGulIcon>* icons =
+ new( ELeave ) CAknIconArray( KGSNumberOfIcons );
+ CleanupStack::PushL( icons );
+
+ CGulIcon* icon = CGulIcon::NewL();
+ CleanupStack::PushL( icon );
+
+ CGulIcon* icon2 = CGulIcon::NewL();
+ CleanupStack::PushL( icon2 );
+
+ CGulIcon* icon3 = CGulIcon::NewL();
+ CleanupStack::PushL( icon3 );
+
+ icons->AppendL( icon );
+ icons->AppendL( icon2 );
+ icons->AppendL( icon3 );
+
+ CEikFormattedCellListBox* listbox =
+ static_cast<CEikFormattedCellListBox*>( iListBox );
+ listbox->ItemDrawer()->FormattedCellData()->SetIconArray( icons );
+ CleanupStack::Pop( 4, icons ); // icons, icon & icon2 & icon3
+ iIconArray = listbox->ItemDrawer()->FormattedCellData()->IconArray();
+
+ CreateListBoxItemsL();
+ }
+
+// ---------------------------------------------------------------------------
+// CGSDisplayPluginContainer::CreateListBoxItemsL()
+//
+//
+// ---------------------------------------------------------------------------
+//
+void CGSDisplayPluginContainer::CreateListBoxItemsL()
+ {
+ if( iModel->ContrastL() != KErrNotSupported )
+ {
+ MakeContrastItemL();
+ }
+
+ TInt pslnStatus = iModel->BackgroundImage()->GetPlnsStatus();
+
+ if ( FeatureManager::FeatureSupported( KFeatureIdBrightnessControl) )
+ {
+ MakeBrightnessItemL();
+ }
+
+ if( iModel->CheckScreenSaverTimeoutSupportL() )
+ {
+ MakeSSPItemL();
+ }
+
+ MakeBacklightItemL();
+
+ if ( FeatureManager::FeatureSupported( KFeatureIdAmbientLightSensor ) )
+ {
+ MakeAmbientLightSensorItemL();
+ }
+
+ if( iModel->IsUWNoteSupportedL() )
+ {
+ MakeWNIItemL();
+ }
+
+ if ( FeatureManager::FeatureSupported ( KFeatureIdUiZoom ) )
+ {
+ MakeDisplayTextSizeItemL();
+ }
+
+ if ( iModel->CheckPowerSaveLedSupportL() )
+ {
+ MakePowerSaveLedItemL();
+ }
+
+ if ( iModel->ShowOperatorLogoSettingL() )
+ {
+ // Make item to show operator logo
+ MakeOperatorLogoItemL();
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CGSDisplayPluginContainer::UpdateListBoxL(TInt aItemId)
+//
+//
+// ---------------------------------------------------------------------------
+//
+void CGSDisplayPluginContainer::UpdateListBoxL( TInt aFeatureId )
+ {
+ switch ( aFeatureId )
+ {
+ case EGSSettIdContrast:
+ if( iModel->ContrastL() != KErrNotSupported )
+ {
+ MakeContrastItemL();
+ }
+ break;
+ case EGSSettIdBrightness:
+ if ( FeatureManager::FeatureSupported(
+ KFeatureIdBrightnessControl ) )
+ {
+ MakeBrightnessItemL();
+ }
+ break;
+ case EGSSettIdSSP:
+ if( iModel->CheckScreenSaverTimeoutSupportL() )
+ {
+ MakeSSPItemL();
+ }
+ break;
+ case EGSSettIdBacklight:
+ MakeBacklightItemL();
+ break;
+ case EGSSettIdAmbientLightSensor:
+ if ( FeatureManager::FeatureSupported(
+ KFeatureIdAmbientLightSensor ) )
+ {
+ MakeAmbientLightSensorItemL();
+ }
+ break;
+ case EGSSettIdWNI:
+ if( iModel->IsUWNoteSupportedL() )
+ {
+ MakeWNIItemL();
+ }
+ break;
+ case EGSSettIdDisplayTextSize:
+ if ( FeatureManager::FeatureSupported ( KFeatureIdUiZoom ) )
+ {
+ MakeDisplayTextSizeItemL();
+ }
+ break;
+ case EGSSettIdPowerSaveLed:
+ if ( iModel->CheckPowerSaveLedSupportL() )
+ {
+ MakePowerSaveLedItemL();
+ }
+ break;
+ case EGSSettIdOperatorLogo:
+ if ( iModel->ShowOperatorLogoSettingL() )
+ {
+ // Update operator logo settings
+ MakeOperatorLogoItemL();
+ }
+ default:
+ break;
+ }
+
+ iListBox->HandleItemAdditionL();
+ }
+
+// ---------------------------------------------------------------------------
+// CGSDisplayPluginContainer::MakeContrastItemL()
+//
+//
+// ---------------------------------------------------------------------------
+//
+void CGSDisplayPluginContainer::MakeContrastItemL()
+ {
+ TInt currentPos = iModel->ContrastL();
+
+ CreateBitmapL( currentPos, R_CONTRAST_SLIDER, KGSContrastIndex );
+
+ // And add to listbox
+ iListboxItemArray->SetItemVisibilityL( EGSSettIdContrast,
+ CGSListBoxItemTextArray::EVisible );
+ }
+
+
+// ---------------------------------------------------------------------------
+// CGSDisplayPluginContainer::MakeBrightnessItemL()
+//
+//
+// ---------------------------------------------------------------------------
+//
+void CGSDisplayPluginContainer::MakeBrightnessItemL()
+ {
+ TInt currentPos = iModel->BrightnessL();
+
+ if ( currentPos > KGSSliderIndexMin &&
+ currentPos <= KGSBrightnessMax )
+ {
+ CreateBitmapL( currentPos, R_BRIGHTNESS_SLIDER, KGSBrightnessIndex );
+
+ // And add to listbox
+ iListboxItemArray->SetItemVisibilityL( EGSSettIdBrightness,
+ CGSListBoxItemTextArray::EVisible );
+ }
+ }
+
+
+// ---------------------------------------------------------------------------
+// CGSDisplayPluginContainer::MakeAmbientLightSensorItemL()
+//
+//
+// ---------------------------------------------------------------------------
+//
+void CGSDisplayPluginContainer::MakeAmbientLightSensorItemL()
+ {
+ TInt currentPos = iModel->AmbientLightSensorL();
+
+ if ( currentPos > KGSSliderIndexMin &&
+ currentPos <= KGSALSMax )
+ {
+ CreateBitmapL( currentPos, R_AMBIENT_LIGHT_SENSOR_SLIDER,
+ KGSAmbientLightSensorIndex );
+
+ // And add to listbox
+ iListboxItemArray->SetItemVisibilityL( EGSSettIdAmbientLightSensor,
+ CGSListBoxItemTextArray::EVisible );
+
+ }
+ }
+
+
+// ---------------------------------------------------------------------------
+// CGSDisplayPluginContainer::MakeSSPItemL()
+//
+//
+// ---------------------------------------------------------------------------
+//
+void CGSDisplayPluginContainer::MakeSSPItemL()
+ {
+ TInt timeOut = iModel->ScreenSaverAndKeyguardPeriodL();
+ HBufC* dynamicText = CAknSlider::CreateValueTextInHBufCL( timeOut,
+ R_SETTING_SCREEN_SAVER_SLIDER );
+
+ // for A&H number conversion
+ TPtr bufPtr = dynamicText->Des();
+ if( AknTextUtils::DigitModeQuery( AknTextUtils::EDigitModeShownToUser ) )
+ {
+ AknTextUtils::LanguageSpecificNumberConversion( bufPtr );
+ }
+
+ // Finally, set the dynamic text
+ iListboxItemArray->SetDynamicTextL( EGSSettIdSSP, dynamicText->Des() );
+
+ // And add to listbox
+ iListboxItemArray->SetItemVisibilityL( EGSSettIdSSP,
+ CGSListBoxItemTextArray::EVisible );
+
+ delete dynamicText;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CGSDisplayPluginContainer::MakeBackLightItemL()
+//
+// Backlight timeout item
+// ---------------------------------------------------------------------------
+//
+void CGSDisplayPluginContainer::MakeBacklightItemL()
+ {
+ TInt timeOut = iModel->BacklightPeriodL();
+ HBufC* dynamicText = CAknSlider::CreateValueTextInHBufCL( timeOut,
+ R_SETTING_BACKLIGHT_SLIDER );
+
+ // for A&H number conversion
+ TPtr bufPtr = dynamicText->Des();
+ if( AknTextUtils::DigitModeQuery( AknTextUtils::EDigitModeShownToUser ) )
+ {
+ AknTextUtils::LanguageSpecificNumberConversion( bufPtr );
+ }
+
+ // Finally, set the dynamic text
+ iListboxItemArray->SetDynamicTextL( EGSSettIdBacklight,
+ dynamicText->Des() );
+
+ // And add to listbox
+ iListboxItemArray->SetItemVisibilityL( EGSSettIdBacklight,
+ CGSListBoxItemTextArray::EVisible );
+
+ delete dynamicText;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CGSDisplayPluginContainer::MakeDisplayTextSizeItemL()
+//
+// Display text size item
+// ---------------------------------------------------------------------------
+//
+void CGSDisplayPluginContainer::MakeDisplayTextSizeItemL()
+ {
+ HBufC* dynamicText = HBufC::NewLC( KGSBufSize128 );
+ TPtr ptrBuffer ( dynamicText->Des() );
+
+ TInt textSize = iModel->DisplayTextSizeL();
+ // value is changed through the below method
+ MapZoomLevelToUi( textSize );
+
+ ptrBuffer = ( *iDispTxtSizeItems )[ textSize ];
+
+ // Finally, set the dynamic text
+ iListboxItemArray->SetDynamicTextL( EGSSettIdDisplayTextSize, ptrBuffer );
+ CleanupStack::PopAndDestroy( dynamicText );
+
+ // And add to listbox
+ iListboxItemArray->SetItemVisibilityL( EGSSettIdDisplayTextSize,
+ CGSListBoxItemTextArray::EVisible );
+ }
+
+
+// ---------------------------------------------------------------------------
+// CGSDisplayPluginContainer::MakeWNIItemL()
+//
+// Welcome note item
+// ---------------------------------------------------------------------------
+//
+void CGSDisplayPluginContainer::MakeWNIItemL()
+ {
+ HBufC* dynamicText = HBufC::NewLC( KGSBufSize128 );
+ TPtr ptrBuffer ( dynamicText->Des() );
+
+ const TInt welcomeNoteTypeIndex = iModel->WelcomeNoteTypeL();
+ ptrBuffer = ( *iWelcomeItems )[ welcomeNoteTypeIndex ];
+
+ // Finally, set the dynamic text
+ iListboxItemArray->SetDynamicTextL( EGSSettIdWNI, ptrBuffer );
+ CleanupStack::PopAndDestroy( dynamicText );
+
+ // And add to listbox
+ iListboxItemArray->SetItemVisibilityL( EGSSettIdWNI,
+ CGSListBoxItemTextArray::EVisible );
+ }
+
+
+// ---------------------------------------------------------------------------
+// CGSDisplayPluginContainer::MakePowerSaveLedItemL()
+//
+//
+// ---------------------------------------------------------------------------
+//
+void CGSDisplayPluginContainer::MakePowerSaveLedItemL()
+ {
+
+ HBufC* dynamicText = HBufC::NewLC( KGSBufSize128 );
+ TPtr ptrBuffer ( dynamicText->Des() );
+
+ TInt objectSel = iModel->PowerSaveLedL();
+ ptrBuffer = ( *iLedItems )[ objectSel ];
+
+ // Finally, set the dynamic text
+ iListboxItemArray->SetDynamicTextL( EGSSettIdPowerSaveLed, ptrBuffer );
+ CleanupStack::PopAndDestroy( dynamicText );
+
+ // And add to listbox
+ iListboxItemArray->SetItemVisibilityL( EGSSettIdPowerSaveLed,
+ CGSListBoxItemTextArray::EVisible );
+ }
+
+
+// ---------------------------------------------------------------------------
+// CGSDisplayPluginContainer::MakeOperatorLogoItemL()
+//
+//
+// ---------------------------------------------------------------------------
+//
+void CGSDisplayPluginContainer::MakeOperatorLogoItemL()
+ {
+ HBufC* dynamicText = HBufC::NewLC( KGSBufSize128 );
+ TPtr ptrBuffer ( dynamicText->Des() );
+
+ TInt selectedItem = iModel->OperatorLogoL();
+ ptrBuffer = ( *iOperatorLogoItems )[ 1 - selectedItem ];
+
+ iListboxItemArray->SetDynamicTextL( EGSSettIdOperatorLogo, ptrBuffer );
+ CleanupStack::PopAndDestroy( dynamicText );
+
+ iListboxItemArray->SetItemVisibilityL( EGSSettIdOperatorLogo,
+ CGSListBoxItemTextArray::EVisible );
+ }
+
+// ---------------------------------------------------------------------------
+// CGSDisplayPluginContainer::CreateBitmapL()
+//
+//
+// ---------------------------------------------------------------------------
+//
+void CGSDisplayPluginContainer::CreateBitmapL( TInt aValue, TInt aResourceId,
+ TInt aIndex )
+ {
+ CGulIcon* icon =
+ CAknSlider::CreateSetStyleListBoxIconL( aValue, aResourceId );
+
+ if( icon )
+ {
+ delete iIconArray->At( aIndex );
+ iIconArray->At( aIndex ) = icon;
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CGSDisplayPluginContainer::CurrentFeatureId()
+//
+// ---------------------------------------------------------------------------
+//
+TInt CGSDisplayPluginContainer::CurrentFeatureId( ) const
+ {
+ return iListboxItemArray->CurrentFeature( );
+ }
+
+
+// ---------------------------------------------------------------------------
+// CGSDisplayPluginContainer::GetHelpContext() const
+// Gets Help
+//
+// ---------------------------------------------------------------------------
+//
+void CGSDisplayPluginContainer::GetHelpContext( TCoeHelpContext& aContext ) const
+ {
+ aContext.iMajor = KUidGS;
+ aContext.iContext = KCP_HLP_DISPLAY;
+ }
+
+// ---------------------------------------------------------------------------
+// CGSDisplayPluginContainer::HandleResourceChange()
+//
+// Handling changing of the skin
+// ---------------------------------------------------------------------------
+//
+void CGSDisplayPluginContainer::HandleResourceChange( TInt aType )
+ {
+ CCoeControl::HandleResourceChange( aType );
+ if ( aType == KAknsMessageSkinChange ||
+ aType == KEikDynamicLayoutVariantSwitch )
+ {
+ TRAP_IGNORE
+ (
+ if( iModel->ContrastL() != KErrNotSupported )
+ {
+ MakeContrastItemL();
+ }
+ );
+
+ if ( FeatureManager::FeatureSupported( KFeatureIdBrightnessControl) )
+ {
+ TRAP_IGNORE( MakeBrightnessItemL() );
+ }
+
+ if ( FeatureManager::FeatureSupported( KFeatureIdAmbientLightSensor ) )
+ {
+ TRAP_IGNORE( MakeAmbientLightSensorItemL() );
+ }
+ }
+ if ( aType == KEikDynamicLayoutVariantSwitch )
+ {
+ TRect mainPaneRect;
+ AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane,
+ mainPaneRect);
+ SetRect( mainPaneRect );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CGSDisplayPluginContainer::MapZoomLevelToUi()
+//
+// Converts the value from Model's Avkon to setting page item index
+// ---------------------------------------------------------------------------
+//
+void CGSDisplayPluginContainer::MapZoomLevelToUi( TInt& aCurrentZoom )
+ {
+ TInt textSize = EZoomNormalInUi;
+
+ switch( aCurrentZoom )
+ {
+ case EAknUiZoomSmall:
+ textSize = EZoomSmallInUi;
+ break;
+ case EAknUiZoomLarge:
+ textSize = EZoomLargeInUi;
+ break;
+ case EAknUiZoomNormal:
+ default:
+ textSize = EZoomNormalInUi;
+ break;
+ }
+
+ aCurrentZoom = textSize;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CGSDisplayPluginContainer::MapZoomLevelFromUi()
+//
+// Converts the value from setting page item index to Model's Avkon value
+// ---------------------------------------------------------------------------
+//
+void CGSDisplayPluginContainer::MapZoomLevelFromUi ( TInt& aCurrentZoom )
+ {
+ TInt textSize = 0;
+
+ switch( aCurrentZoom )
+ {
+ case EZoomSmallInUi:
+ textSize = EAknUiZoomSmall;
+ break;
+ case EZoomLargeInUi:
+ textSize = EAknUiZoomLarge;
+ break;
+ case EZoomNormalInUi:
+ default:
+ textSize = EAknUiZoomNormal;
+ break;
+ }
+
+ aCurrentZoom = textSize;
+ }
+
+// ---------------------------------------------------------------------------
+// CGSDisplayPluginContainer::Model()
+//
+// Return its member variable iModel.
+// ---------------------------------------------------------------------------
+//
+CGSDisplayPluginModel* CGSDisplayPluginContainer::Model()
+ {
+ return iModel;
+ }
+
+void CGSDisplayPluginContainer::CloseDialog()
+ {
+ CAknViewAppUi* appUi = static_cast<CAknViewAppUi*>( CCoeEnv::Static()->AppUi() );
+ CGSDisplayPlugin* view = static_cast<CGSDisplayPlugin*>( appUi->View(KGSDisplayPluginUid) );
+ view->CloseDialog();
+ }
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+
+// End of File