--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/browserui/browser/SettingsSrc/SettingsContainer.cpp Mon Mar 30 12:49:49 2009 +0300
@@ -0,0 +1,3647 @@
+/*
+* 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:
+* Container of the information about the active settings
+*
+*/
+
+
+// INCLUDE FILES
+#include <bldvariant.hrh>
+#include <charconv.h>
+#include <aknkeys.h>
+#include <AknTabGrp.h>
+#include <AknViewAppUi.h>
+#include <AknTitle.h>
+#include <aknutils.h>
+#include <BrowserNG.rsg>
+#include <AKNLISTS.H>
+#include <AknRadioButtonSettingPage.h>
+#include <akntextsettingpage.h>
+#include <barsread.h> // for TResourceReader
+#include <gulicon.h>
+#include <aknnavi.h>
+#include <aknnavide.h>
+#include <FeatMgr.h>
+#include <ApSettingsHandlerUi.h>
+#include <ApEngineConsts.h>
+#include <aputils.h>
+#include <commdb.h>
+#include <StringLoader.h>
+#include <DownloadMgrClient.h>
+#include <VpnApItem.h>
+#include <aknnotewrappers.h>
+
+#include "ApiProvider.h"
+#include "SettingsContainer.h"
+#include "BrowserPreferences.h"
+#include "Display.h"
+#include "CommsModel.h"
+#include "Browser.hrh"
+#include "CommonConstants.h"
+#include "BrowserAppUi.h"
+#include "BrowserAppViewBase.h"
+#include "BrowserUtil.h"
+#include "BrowserUiVariant.hrh"
+#include "BrowserDialogs.h"
+#include "Logger.h"
+
+#include "BrowserWindowManager.h"
+#include "BrowserWindow.h"
+// Browser as a plugin
+#include <BrCtlInterface.h>
+#include <BrCtlDefs.h>
+
+#include <BrowserPluginInterface.h>
+//Zsolt
+#include <cmmanager.h>
+#include <cmdestination.h>
+#include <cmapplicationsettingsui.h>
+
+
+#ifdef __SERIES60_HELP
+// Context-Sensitve Help File
+#include "BrowserApplication.h"
+#include <csxhelp/browser.hlp.hrh>
+#endif // __SERIES60_HELP
+
+// CONSTANTS
+const TInt KSettingCategoryMaxLength = 50;
+_LIT( KSettingsCategoryListBoxItemNoIcon, " " );
+const TInt KDoesntExist = -1;
+const TInt KGranularity = 1;
+
+
+_LIT( KWmlSettingsListBoxItemPrefix, " \t" );
+_LIT( KWmlSettingsListBoxItemPostfix, "\t\t" );
+
+// ========================= MEMBER FUNCTIONS ================================
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::CSettingsContainer
+// -----------------------------------------------------------------------------
+//
+CSettingsContainer::CSettingsContainer( MApiProvider& aApiProvider,
+ MObjectProvider& aMopParent )
+ : iApiProvider( aApiProvider ),
+ iMainSettingCurrentIndex( KWmlSettingsIndexNone ),
+ iSubSettingCurrentIndex( KWmlSettingsIndexNone )
+ {
+ SetMopParent( &aMopParent );
+ }
+
+// ----------------------------------------------------------------------------
+// CSettingsContainer::NewLC
+// ----------------------------------------------------------------------------
+//
+CSettingsContainer* CSettingsContainer::NewLC ( const TRect& aRect,
+ MApiProvider& aApiProvider,
+ MObjectProvider& aMopParent )
+ {
+ CSettingsContainer* result;
+ result = new (ELeave) CSettingsContainer( aApiProvider, aMopParent );
+ CleanupStack::PushL( result );
+ result->ConstructL( aRect );
+ return result;
+ }
+
+
+// ----------------------------------------------------------------------------
+// CSettingsContainer::NewL
+// ----------------------------------------------------------------------------
+//
+CSettingsContainer* CSettingsContainer::NewL ( const TRect &aRect,
+ MApiProvider& aApiProvider,
+ MObjectProvider& aMopParent )
+ {
+ CSettingsContainer* result;
+ result = CSettingsContainer::NewLC( aRect, aApiProvider, aMopParent );
+ CleanupStack::Pop(); // result
+ return result;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::~CSettingsContainer
+// -----------------------------------------------------------------------------
+//
+CSettingsContainer::~CSettingsContainer()
+ {
+ delete iNaviDecorator; // This pops off the Navi Pane (if pushed).
+ delete iSettingListBox;
+ delete iSettingIndex;
+ delete iEncodingArray;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::ConstructL( const TRect& aRect )
+ {
+ ApiProvider().Display().SetTitleL( R_WMLBROWSER_SETTINGS_TITLE );
+ // Push empty Navi Pane. Do not use PushDefault; that must be popped and
+ // that is problematic on exit (MDisplay may not be available).
+ // Create a blank navi pane control, its destructor handles it safely.
+ CAknNavigationControlContainer* naviPane =
+ ApiProvider().Display().NaviPaneL();
+ iNaviDecorator = naviPane->CreateNavigationLabelL();
+ naviPane->PushL( *iNaviDecorator );
+
+ iSettingIndex = new (ELeave) CArrayFixFlat<TUint>( 4 );
+
+ // construct listbox from resources
+ TResourceReader rr;
+
+ iEikonEnv->CreateResourceReaderLC( rr, R_BROWSER_SETTING_CATEGORIES_LISTBOX );
+
+ CreateWindowL();
+ iSettingListBox = new( ELeave )CAknSettingStyleListBox;
+ iSettingListBox->SetContainerWindowL( *this ) ;
+ iSettingListBox->ConstructFromResourceL( rr );
+ iPenEnabled = AknLayoutUtils::PenEnabled();
+ if (iPenEnabled)
+ {
+ iSettingListBox->SetListBoxObserver( this );
+ }
+ CleanupStack::PopAndDestroy(); // resource reader
+ iSettingListBox->CreateScrollBarFrameL( ETrue );
+ iSettingListBox->ScrollBarFrame()->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );
+
+ iEncodingArray = new(ELeave) CArrayFixFlat<TEncodingStruct>( KGranularity );
+ CreateEncodingArrayL();
+ RemoveUnsupportedEncodingsL();
+
+ // Add Unicode
+ AddEncodingL( KCharacterSetIdentifierUCS2, R_WMLBROWSER_SETTINGS_ENCODING_UCS_2 );
+
+ // Preferences becomes active, WindowsManager is an observer,
+ // it provides some local settings
+ ApiProvider().Preferences().NotifyObserversL( EPreferencesActivate, TBrCtlDefs::ESettingsUnknown );
+
+ // These settings cause page relayouts and should only be
+ // updated upon leaving the settings page, this is why they are stored as
+ // member data rather than getting the values from CBrowserPreferences
+ iFontSize = ApiProvider().Preferences().FontSize();
+ iEncoding = ApiProvider().Preferences().Encoding();
+ iTextWrap = ApiProvider().Preferences().TextWrap();
+
+ // Check if flash plugin is present and set variable
+ iFlashPluginPresent = ApiProvider().FlashPresent();
+
+ // Updating listbox content
+ DisplaySettingCategoriesL();
+
+ SetRect( aRect );
+ ActivateL();
+ iSettingListBox->ScrollBarFrame()->MoveVertThumbTo( iSettingListBox->CurrentItemIndex() );
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::DisplaySettingCategoriesL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::DisplaySettingCategoriesL()
+ {
+ StoreListBoxIndexL();
+ // Flag which setting category we are entering
+ iCurrentSettingCategory = EMain;
+
+ ApiProvider().Display().SetTitleL( R_WMLBROWSER_SETTINGS_TITLE );
+
+ ClearListBoxContentL();
+
+ MDesCArray* itemList = iSettingListBox->Model()->ItemTextArray();
+ CDesCArray* itemArray = ( CDesCArray* ) itemList;
+ TBuf<KSettingCategoryMaxLength> itemText;
+
+ // General Category item
+ AddCategoryListBoxItemL( R_SETTINGS_CATEGORY_GENERAL, *itemArray );
+ iSettingIndex->AppendL( EWmlSettingsGeneral );
+
+ // Page Category item
+ AddCategoryListBoxItemL( R_SETTINGS_CATEGORY_PAGE, *itemArray );
+ iSettingIndex->AppendL( EWmlSettingsPage );
+
+ // Privacy Category item
+ AddCategoryListBoxItemL( R_SETTINGS_CATEGORY_PRIVACY, *itemArray );
+ iSettingIndex->AppendL( EWmlSettingsPrivacy );
+
+#ifdef __RSS_FEEDS
+ // Web feeds Category item
+ if (!ApiProvider().IsEmbeddedModeOn())
+ {
+ AddCategoryListBoxItemL( R_SETTINGS_CATEGORY_WEBFEEDS, *itemArray );
+ iSettingIndex->AppendL( EWmlSettingsWebFeeds );
+ }
+#endif // __RSS_FEEDS
+
+
+ if (!iPenEnabled)
+ {
+ // Toolbar Category item
+ AddCategoryListBoxItemL( R_SETTINGS_CATEGORY_TOOLBAR, *itemArray );
+ iSettingIndex->AppendL( EWmlSettingsToolbar );
+
+ // Shortcut Keys Category item
+ if(!ApiProvider().Preferences().ShortcutKeysForQwerty())
+ {
+ AddCategoryListBoxItemL( R_SETTINGS_CATEGORY_SHORTCUTS, *itemArray );
+ iSettingIndex->AppendL( EWmlSettingsShortcuts );
+ }
+ }
+
+
+ RestoreListBoxIndexL();
+
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::DisplayCorrectSettingCategoryListL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::DisplayCorrectSettingCategoryListL()
+ {
+ switch ( iSettingIndex->At( iSettingListBox->CurrentItemIndex() ) )
+ {
+ // Open General Browser Settings
+ case EWmlSettingsGeneral:
+ {
+ DisplayGeneralSettingsL();
+ break;
+ }
+ // Open Privacy Browser Settings
+ case EWmlSettingsPrivacy:
+ {
+ DisplayPrivacySettingsL();
+ break;
+ }
+
+ // Open Page Browser Settings
+ case EWmlSettingsPage:
+ {
+ DisplayPageSettingsL();
+ break;
+ }
+
+ // Open Web Feeds Settings
+ case EWmlSettingsWebFeeds:
+ {
+ DisplayWebFeedsSettingsL();
+ break;
+ }
+
+ // Open Toolbar Settings
+ case EWmlSettingsToolbar:
+ {
+ DisplayToolbarSettingsL();
+ break;
+ }
+
+ // Open Shortcuts Settings
+ case EWmlSettingsShortcuts:
+ {
+ DisplayShortcutsSettingsL();
+ break;
+ }
+
+ default:
+ {
+ DisplaySettingCategoriesL();
+ break;
+ }
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::AddCategoryListBoxItemL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::AddCategoryListBoxItemL( TInt aResourceId, CDesCArray& aItemArray )
+ {
+ TBuf<KSettingCategoryMaxLength> itemText;
+ itemText.Zero();
+ itemText.Append( KSettingsCategoryListBoxItemNoIcon );
+ itemText.Append(KWmlSettingsListBoxItemPrefix);
+ HBufC* listItemText = iCoeEnv->AllocReadResourceLC( aResourceId );
+ itemText.Append( *listItemText );
+ CleanupStack::PopAndDestroy(); // listItemText
+ aItemArray.AppendL( itemText );
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::DisplayGeneralSettingsL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::DisplayGeneralSettingsL()
+ {
+ StoreListBoxIndexL();
+ // Flag which setting category we are entering
+ iCurrentSettingCategory = EGeneral;
+
+ ApiProvider().Display().SetTitleL( R_WMLBROWSER_SETTINGS_TITLE_GENERAL );
+
+ ClearListBoxContentL();
+
+ CDesCArray* itemArray =
+ ( CDesCArray* ) ( iSettingListBox->Model()->ItemTextArray() );
+
+ TBuf<KWmlSettingsItemMaxLength> itemText;
+
+ //=========================================================================
+ // Add individual settings belonging to the 'General' Settings Category
+ //
+
+ // Default Access Point
+ if ( !ApiProvider().Preferences().CustomAccessPointDefined() )
+ {
+ AppendDefaultAccessPointL( itemArray, itemText );
+ }
+
+ // Home Page
+ if( ApiProvider().Preferences().
+ UiLocalFeatureSupported( KBrowserUiHomePageSetting ) &&
+ !ApiProvider().IsEmbeddedModeOn() )
+ {
+ AppendHomePageL( itemArray, itemText );
+ }
+
+ // Minimap not supported on touch devices
+ if (!iPenEnabled)
+ {
+ //MiniMap feature is determined by the PageScaler dll, not by the preference setting.
+ //We should query webkit for the feature.
+ if(ApiProvider().WindowMgr().CurrentWindow()->IsPageOverviewSupportedL())
+ {
+ // Page Overview
+ AppendPageOverviewL( itemArray, itemText );
+ }
+ }
+
+
+ if( iApiProvider.Preferences().UiLocalFeatureSupported( KBrowserGraphicalHistory ))
+ {
+ // Back List
+ AppendBackListL( itemArray, itemText );
+ }
+
+ if (!ApiProvider().IsEmbeddedModeOn())
+ {
+ AppendURLSuffixListL(itemArray, itemText);
+ }
+ // Http Security Warnings
+ if ( !ApiProvider().Preferences().HttpSecurityWarningsStatSupressed() )
+ {
+ AppendHttpSecurityWarningsL( itemArray, itemText );
+ }
+
+ // Ecma
+ AppendEcmaL( itemArray, itemText );
+
+ // Script Logging
+ AppendScriptLogL( itemArray, itemText );
+
+ // Downloads open settings
+ if( PROGRESSIVE_DOWNLOAD )
+ {
+ AppendDownloadsOpenL( itemArray, itemText );
+ }
+
+ RestoreListBoxIndexL();
+ iSettingListBox->DrawNow();
+ ActivateL();
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::DisplayPageSettingsL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::DisplayPageSettingsL()
+ {
+ StoreListBoxIndexL();
+ // Flag which setting category we are entering
+ iCurrentSettingCategory = EPage;
+
+ ApiProvider().Display().SetTitleL( R_WMLBROWSER_SETTINGS_TITLE_PAGE );
+
+ ClearListBoxContentL();
+
+ CDesCArray* itemArray =
+ ( CDesCArray* ) ( iSettingListBox->Model()->ItemTextArray() );
+
+ TBuf<KWmlSettingsItemMaxLength> itemText;
+
+ //=========================================================================
+ // Add individual settings belonging to the 'General' Settings Category
+ //
+
+ // AutoLoad Content
+ AppendAutoLoadContentL( itemArray, itemText );
+
+ // Media Volume
+ if( !HAS_SIDE_VOLUME_KEYS ) //some phones don't have side volume keys
+ {
+ AppendAutoMediaVolumeL( itemArray, itemText );
+ }
+
+ // Encoding
+ AppendEncodingL( itemArray, itemText );
+
+ // Pop-up Blocking
+ if ( ApiProvider().Preferences().UiLocalFeatureSupported(
+ KBrowserMultipleWindows ) &&
+ !ApiProvider().IsEmbeddedModeOn() )
+ {
+ AppendPopupBlockingL( itemArray, itemText );
+ }
+
+ // Auto Refresh
+ AppendAutoRefreshL( itemArray, itemText );
+
+ // Font Size
+ AppendFontSizeL( itemArray, itemText );
+
+ RestoreListBoxIndexL();
+ iSettingListBox->DrawNow();
+ ActivateL();
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::DisplayPrivacySettingsL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::DisplayPrivacySettingsL()
+ {
+ StoreListBoxIndexL();
+ // Flag which setting category we are entering
+ iCurrentSettingCategory = EPrivacy;
+
+ ApiProvider().Display().SetTitleL( R_WMLBROWSER_SETTINGS_TITLE_PRIVACY );
+
+ ClearListBoxContentL();
+
+ CDesCArray* itemArray =
+ ( CDesCArray* ) ( iSettingListBox->Model()->ItemTextArray() );
+
+ TBuf<KWmlSettingsItemMaxLength> itemText;
+
+ //=========================================================================
+ // Add individual settings belonging to the 'General' Settings Category
+ //
+
+ // Adaptive Bookmarks
+ if ( ADAPTIVEBOOKMARKS )
+ {
+ AppendAdaptiveBookmarksL( itemArray, itemText );
+ }
+
+ if (iApiProvider.Preferences().UiLocalFeatureSupported(KBrowserAutoFormFill) )
+ {
+ // Form Data Saving
+ AppendFormDataSavingL( itemArray, itemText );
+ }
+
+ // Cookies
+ AppendCookiesL( itemArray, itemText );
+
+ // IMEI
+ if ( IMEI_NOTIFICATION && !ApiProvider().IsEmbeddedModeOn() )
+ {
+ AppendIMEIL( itemArray, itemText );
+ }
+
+ RestoreListBoxIndexL();
+ iSettingListBox->DrawNow();
+ ActivateL();
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::DisplayWebFeedsSettingsL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::DisplayWebFeedsSettingsL()
+ {
+ MPreferences& preferences = ApiProvider().Preferences();
+
+ StoreListBoxIndexL();
+ // Flag which setting category we are entering
+ iCurrentSettingCategory = EWebFeeds;
+ ApiProvider().Display().SetTitleL( R_SETTINGS_CATEGORY_WEBFEEDS );
+ ClearListBoxContentL();
+
+ CDesCArray* itemArray =
+ ( CDesCArray* ) ( iSettingListBox->Model()->ItemTextArray() );
+ TBuf<KWmlSettingsItemMaxLength> itemText;
+
+ // Add setting items
+ // Show the "Auto Update AP" option
+ AppendAutomaticUpdatingAPL( itemArray, itemText );
+
+ // Show the "Automatic update while roaming" option
+ AppendAutomaticUpdatingWhileRoamingL( itemArray, itemText );
+
+ RestoreListBoxIndexL();
+ iSettingListBox->DrawNow();
+ ActivateL();
+ }
+
+// CSettingsContainer::DisplayToolbarSettingsL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::DisplayToolbarSettingsL()
+ {
+ MPreferences& preferences = ApiProvider().Preferences();
+
+ StoreListBoxIndexL();
+ // Flag which setting category we are entering
+ iCurrentSettingCategory = EToolbar;
+ ApiProvider().Display().SetTitleL( R_SETTINGS_CATEGORY_TOOLBAR );
+ ClearListBoxContentL();
+
+ CDesCArray* itemArray =
+ ( CDesCArray* ) ( iSettingListBox->Model()->ItemTextArray() );
+ TBuf<KWmlSettingsItemMaxLength> itemText;
+
+ // Toolbar On/Off Setting
+ AppendToolbarOnOffL(itemArray, itemText );
+
+ // Toolbar Buttons
+ AppendToolbarButtonsL(itemArray, itemText );
+
+ RestoreListBoxIndexL();
+ iSettingListBox->DrawNow();
+ ActivateL();
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::DisplayShortcutsSettingsL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::DisplayShortcutsSettingsL()
+ {
+ MPreferences& preferences = ApiProvider().Preferences();
+
+ StoreListBoxIndexL();
+ // Flag which setting category we are entering
+ iCurrentSettingCategory = EShortCuts;
+ ApiProvider().Display().SetTitleL( R_SETTINGS_CATEGORY_SHORTCUTS);
+ ClearListBoxContentL();
+
+ CDesCArray* itemArray =
+ ( CDesCArray* ) ( iSettingListBox->Model()->ItemTextArray() );
+ TBuf<KWmlSettingsItemMaxLength> itemText;
+
+ // Shortcut Keys
+ AppendShortcutKeysL (itemArray, itemText );
+
+ RestoreListBoxIndexL();
+ iSettingListBox->DrawNow();
+ ActivateL();
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::CloseSettingsListL
+// -----------------------------------------------------------------------------
+//
+TBool CSettingsContainer::CloseSettingsListL()
+ {
+ TBool ret( EFalse );
+ // Check which list we are in
+ switch ( iCurrentSettingCategory )
+ {
+ // About to leave
+ case EMain:
+ {
+ SaveChangesL();
+ ret = ETrue;
+ break;
+ }
+ // Return to Setting Category List
+ case EGeneral:
+ case EPrivacy:
+ case EWebFeeds:
+ case EPage:
+ case EToolbar:
+ case EShortCuts:
+ {
+ DisplaySettingCategoriesL();
+ ret = EFalse;
+ break;
+ }
+ default:
+ break;
+ }
+ return ret;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::SettingsError
+// -----------------------------------------------------------------------------
+//
+TBool CSettingsContainer::SettingsError()
+ {
+ TBool ret( EFalse );
+ if ( iCurrentSettingCategory == EToolbar )
+ {
+ // Return true is all toolbar buttons set to None for command (which is 0 in value)
+ MPreferences& preferences = ApiProvider().Preferences();
+ if ((preferences.ShowToolbarButton1Cmd() +
+ preferences.ShowToolbarButton2Cmd() +
+ preferences.ShowToolbarButton3Cmd() +
+ preferences.ShowToolbarButton4Cmd() +
+ preferences.ShowToolbarButton5Cmd() +
+ preferences.ShowToolbarButton6Cmd() +
+ preferences.ShowToolbarButton7Cmd() ) == 0 )
+ {
+ ret = ETrue;
+ }
+ }
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::AppendDefaultAccessPointL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::AppendDefaultAccessPointL( CDesCArray*& aItemArray,
+ TBuf<KWmlSettingsItemMaxLength>& aItemText )
+ {
+ //get the connection identifier based on the connection type
+ switch (ApiProvider().Preferences().AccessPointSelectionMode())
+ {
+ case EAlwaysAsk:
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_DEFAULT_AP,
+ R_WML_SETTINGS_ACCESS_POINT_ALWAYS_ASK,
+ aItemText );
+
+ break;
+ }
+
+ //get the destination identifyer based on the snap Id
+ case EDestination:
+ {
+ aItemText.Zero();
+ aItemText.Append( KWmlSettingsListBoxItemPrefix );
+ HBufC* defaultAp = iCoeEnv->AllocReadResourceLC(
+ R_WMLBROWSER_SETTINGS_DEFAULT_AP );
+ aItemText.Append( *defaultAp );
+ CleanupStack::PopAndDestroy(); // defaultAp
+ aItemText.Append( KWmlSettingsListBoxItemPostfix );
+
+ RCmManager cmManager;
+ cmManager.OpenL();
+
+ TInt snapId = ApiProvider().Preferences().DefaultSnapId();
+ if (snapId != KWmlNoDefaultSnapId)
+ {
+ TRAPD(err, RCmDestination dest = cmManager.DestinationL( snapId ));
+ if (err == KErrNone)
+ {
+ RCmDestination dest = cmManager.DestinationL( snapId );
+ CleanupClosePushL( dest );
+ HBufC* destName = dest.NameLC();
+ aItemText.Append(*destName);
+ CleanupStack::PopAndDestroy( 2 ); // destName, dest
+ cmManager.Close();
+ break;
+ }
+ }
+
+ HBufC* name = iCoeEnv->AllocReadResourceLC( R_WML_SETTINGS_ACCESS_POINT_ALWAYS_ASK );
+ aItemText.Append( *name );
+ CleanupStack::PopAndDestroy(); // name
+
+ ApiProvider().Preferences().SetAccessPointSelectionModeL( EAlwaysAsk );
+ cmManager.Close();
+
+ break;
+ }
+
+ //if connecting with Iap Id
+ case EConnectionMethod:
+ {
+ aItemText.Zero();
+ aItemText.Append( KWmlSettingsListBoxItemPrefix );
+ HBufC* defaultAp = iCoeEnv->AllocReadResourceLC(
+ R_WMLBROWSER_SETTINGS_DEFAULT_AP );
+ aItemText.Append( *defaultAp );
+ CleanupStack::PopAndDestroy(); // defaultAp
+ aItemText.Append( KWmlSettingsListBoxItemPostfix );
+
+ TUint id = ApiProvider().Preferences().DefaultAccessPoint();
+ if ( id != KWmlNoDefaultAccessPoint )
+ {
+ TBuf< KCommsDbSvrMaxFieldLength > name;
+ CApUtils* au = CApUtils::NewLC( ApiProvider().CommsModel().CommsDb() );
+ au->NameL( id, name );
+ aItemText.Append( name );
+ CleanupStack::PopAndDestroy(); // au
+ }
+ else
+ {
+ HBufC* name = iCoeEnv->AllocReadResourceLC( R_WML_SETTINGS_ACCESS_POINT_ALWAYS_ASK );
+ aItemText.Append( *name );
+ CleanupStack::PopAndDestroy(); // name
+
+ ApiProvider().Preferences().SetAccessPointSelectionModeL( EAlwaysAsk );
+ }
+
+ break;
+ }
+
+ default:
+ {
+ User::Leave( KErrNotSupported);
+ }
+ }
+
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsAccesspoint );
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::AppendHomePageL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::AppendHomePageL( CDesCArray*& aItemArray,
+ TBuf<KWmlSettingsItemMaxLength>& aItemText)
+ {
+LOG_ENTERFN( "CSettingsContainer::AppendHomePageL" );
+ aItemText.Zero();
+ aItemText.Append( KWmlSettingsListBoxItemPrefix );
+ HBufC* first = iCoeEnv->AllocReadResourceLC(
+ R_WMLBROWSER_SETTINGS_HOMEPAGE );
+ aItemText.Append( first->Des() );
+ CleanupStack::PopAndDestroy(); // first
+ aItemText.Append( KWmlSettingsListBoxItemPostfix );
+
+ TWmlSettingsHomePage homepageType = ApiProvider().Preferences().HomePageType();
+BROWSER_LOG( ( _L( " pgtype: %d" ), homepageType ) );
+ if( homepageType == EWmlSettingsHomePageBookmarks )
+ {
+ HBufC* second = iCoeEnv->AllocReadResourceLC(
+ R_WMLBROWSER_SETTINGS_HOMEPAGE_BOOKMARKS );
+ aItemText.Append( second->Des() );
+ CleanupStack::PopAndDestroy(); // second
+ }
+ else
+ {
+ HBufC* second = HBufC::NewLC( KMaxHomePgUrlLength );
+ TPtr ptr( second->Des() );
+ if( ApiProvider().Preferences().HomePageUrlL( ptr ) == KErrNone )
+ {
+ TInt itemLength( KWmlSettingsItemMaxLength - aItemText.Length() );
+ if( ptr.Length() > itemLength )
+ {
+ aItemText.Append( ptr.Left( itemLength ) );
+ }
+ else
+ {
+ aItemText.Append( ptr );
+ }
+ }
+ else
+ {
+ // If access point homepage is to be used, but no homepage URL is
+ // defined, then display the bookmarks view instead.
+ if( homepageType == EWmlSettingsHomePageAccessPoint )
+ {
+ iCoeEnv->ReadResourceL( ptr,
+ R_WMLBROWSER_SETTINGS_HOMEPAGE_BOOKMARKS );
+ aItemText.Append( ptr );
+ }
+ else
+ {
+ aItemText.Append( KWmlSettingsListBoxItemPostfix );
+ }
+ }
+ CleanupStack::PopAndDestroy(); // second
+ }
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsHomePage );
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::AppendPageOverviewL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::AppendPageOverviewL( CDesCArray*& aItemArray,
+ TBuf<KWmlSettingsItemMaxLength>& aItemText)
+ {
+ if ( iApiProvider.Preferences().PageOverview() )
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_PAGEOVERVIEW,
+ R_WMLBROWSER_SETTINGS_PAGEOVERVIEW_ON,
+ aItemText );
+ }
+ else
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_PAGEOVERVIEW,
+ R_WMLBROWSER_SETTINGS_PAGEOVERVIEW_OFF,
+ aItemText );
+ }
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsPageOverview );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::AppendToolbarOnOffL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::AppendToolbarOnOffL( CDesCArray*& aItemArray,
+ TBuf<KWmlSettingsItemMaxLength>& aItemText)
+ {
+ if ( iApiProvider.Preferences().ShowToolbarOnOff() )
+ {
+ CreateItemFromTwoStringsL(
+ R_BROWSER_SETTING_TOOLBAR_ON_OFF,
+ R_BROWSER_SETTING_TOOLBAR_ON,
+ aItemText );
+ }
+ else
+ {
+ CreateItemFromTwoStringsL(
+ R_BROWSER_SETTING_TOOLBAR_ON_OFF,
+ R_BROWSER_SETTING_TOOLBAR_OFF,
+ aItemText );
+ }
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsToolbarOnOff );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::AppendBackListL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::AppendBackListL( CDesCArray*& aItemArray,
+ TBuf<KWmlSettingsItemMaxLength>& aItemText)
+ {
+ //-------------------------------------------------------------------------
+ // BackList
+ if ( iApiProvider.Preferences().BackList() )
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_BACK_LIST,
+ R_WMLBROWSER_SETTINGS_BACK_LIST_ON,
+ aItemText );
+ }
+ else
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_BACK_LIST,
+ R_WMLBROWSER_SETTINGS_BACK_LIST_OFF,
+ aItemText );
+ }
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsBackList );
+ }
+
+void CSettingsContainer::AppendURLSuffixListL( CDesCArray*& aItemArray,
+ TBuf<KWmlSettingsItemMaxLength>& aItemText)
+ {
+ aItemText.Zero();
+ aItemText.Append( KWmlSettingsListBoxItemPrefix );
+ HBufC* first = iCoeEnv->AllocReadResourceLC( R_WMLBROWSER_SETTINGS_URL_SUFFIX );
+ aItemText.Append( first->Des() );
+ CleanupStack::PopAndDestroy(); // first
+ aItemText.Append( KWmlSettingsListBoxItemPostfix );
+
+ HBufC* buf = iApiProvider.Preferences().URLSuffixList();
+ TPtrC suffix(buf->Des());
+
+ if ( !suffix.Length() )
+ {
+ // leave line empty
+ aItemText.Append( KWmlSettingsListBoxItemPostfix );
+ }
+ else
+ {
+ TInt itemLength( KWmlSettingsItemMaxLength - aItemText.Length() );
+ if( suffix.Length() > itemLength )
+ {
+ aItemText.Append( suffix.Left( itemLength ) );
+ }
+ else
+ {
+ aItemText.Append( suffix );
+ }
+ }
+
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsUrlSuffix );
+ }
+// -----------------------------------------------------------------------------
+// CSettingsContainer::AppendHttpSecurityWarningsL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::AppendHttpSecurityWarningsL(
+ CDesCArray*& aItemArray,
+ TBuf<KWmlSettingsItemMaxLength>& aItemText)
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_HTTP_SEC_WRNS,
+ ApiProvider().Preferences().HttpSecurityWarnings() ?
+ R_WMLBROWSER_SETTINGS_WRN_VALUE_SHOW :
+ R_WMLBROWSER_SETTINGS_WRN_VALUE_HIDE,
+ aItemText );
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsHttpSecurityWarnings );
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::AppendEcmaL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::AppendEcmaL(
+ CDesCArray*& aItemArray,
+ TBuf<KWmlSettingsItemMaxLength>& aItemText)
+ {
+ // Add Ecma
+ switch ( ApiProvider().Preferences().Ecma() )
+ {
+ case EWmlSettingsECMAEnable:
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_ECMA,
+ R_WMLBROWSER_SETTINGS_ECMA_VALUE_ENABLE,
+ aItemText );
+ break;
+ }
+ case EWmlSettingsECMADisable:
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_ECMA,
+ R_WMLBROWSER_SETTINGS_ECMA_VALUE_DISABLE,
+ aItemText );
+ break;
+ }
+ default:
+ break;
+ }
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsEcma );
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::AppendScriptLogL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::AppendScriptLogL(
+ CDesCArray*& aItemArray,
+ TBuf<KWmlSettingsItemMaxLength>& aItemText)
+ {
+ TInt scriptLog = ApiProvider().Preferences().ScriptLog();
+ CRepository* repo = CRepository::NewLC( KCRUidBrowser );
+ TInt newVal;
+ if ( repo )
+ {
+ if ( ( repo->Get( KBrowserNGScriptLog, newVal ) == KErrNone ) &&
+ newVal != scriptLog )
+ {
+ ApiProvider().Preferences().SetScriptLogL( newVal );
+ scriptLog = newVal;
+ }
+ }
+ CleanupStack::PopAndDestroy( repo );
+
+ switch ( scriptLog )
+ {
+ case EWmlSettingsScriptLogDisable:
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_SCRIPTLOG,
+ R_WMLBROWSER_SETTINGS_SCRIPTLOG_VALUE_DISABLE,
+ aItemText );
+ break;
+ }
+ case EWmlSettingsScriptLogToFile:
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_SCRIPTLOG,
+ R_WMLBROWSER_SETTINGS_SCRIPTLOG_VALUE_TO_FILE,
+ aItemText );
+ break;
+ }
+ case EWmlSettingsScriptLogToConsole:
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_SCRIPTLOG,
+ R_WMLBROWSER_SETTINGS_SCRIPTLOG_VALUE_TO_CONSOLE,
+ aItemText );
+ break;
+ }
+ case EWmlSettingsScriptLogToConsoleFile:
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_SCRIPTLOG,
+ R_WMLBROWSER_SETTINGS_SCRIPTLOG_VALUE_TO_CONSOLE_FILE,
+ aItemText );
+ break;
+ }
+ default:
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_SCRIPTLOG,
+ R_WMLBROWSER_SETTINGS_SCRIPTLOG_VALUE_DISABLE,
+ aItemText );
+ break;
+ }
+
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsScriptLog );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::AppendDownloadsOpenL
+// -----------------------------------------------------------------------------
+void CSettingsContainer::AppendDownloadsOpenL(
+ CDesCArray*& aItemArray,
+ TBuf<KWmlSettingsItemMaxLength>& aItemText)
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_DOWNLOAD_OPEN,
+ ApiProvider().Preferences().DownloadsOpen() ?
+ R_WMLBROWSER_SETTINGS_DOWNLOAD_OPEN_YES :
+ R_WMLBROWSER_SETTINGS_DOWNLOAD_OPEN_NO,
+ aItemText );
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsDownloadsOpen );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::AppendAutoLoadContentL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::AppendAutoLoadContentL(
+ CDesCArray*& aItemArray,
+ TBuf<KWmlSettingsItemMaxLength>& aItemText)
+ {
+
+ TInt autoLoadContent = ApiProvider().Preferences().AutoLoadContent();
+
+ switch ( autoLoadContent )
+ {
+ case EWmlSettingsAutoloadText:
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_AUTOLOAD_CONTENT,
+ R_WMLBROWSER_SETTINGS_AUTOLOAD_TEXT,
+ aItemText );
+ break;
+ }
+ case EWmlSettingsAutoloadImagesNoFlash:
+ {
+ if (iFlashPluginPresent)
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_AUTOLOAD_CONTENT,
+ R_WMLBROWSER_SETTINGS_AUTOLOAD_IMAGES_NO_FLASH,
+ aItemText );
+ }
+ else
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_AUTOLOAD_CONTENT,
+ R_WMLBROWSER_SETTINGS_AUTOLOAD_ALL,
+ aItemText );
+ }
+ break;
+ }
+ case EWmlSettingsAutoloadAll:
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_AUTOLOAD_CONTENT,
+ R_WMLBROWSER_SETTINGS_AUTOLOAD_ALL,
+ aItemText );
+ break;
+ }
+ default:
+ break;
+ }
+
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsAutoLoadContent );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::AppendAutoFullScreenL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::AppendAutoFullScreenL(CDesCArray*& aItemArray,
+ TBuf<KWmlSettingsItemMaxLength>& aItemText)
+ {
+ switch ( ApiProvider().Preferences().FullScreen() )
+ {
+ case EWmlSettingsFullScreenSoftkeysOnly:
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_SOFTKEYS,
+ R_WMLBROWSER_SETTINGS_SOFTKEYS_ON,
+ aItemText );
+ break;
+ }
+ case EWmlSettingsFullScreenFullScreen:
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_SOFTKEYS,
+ R_WMLBROWSER_SETTINGS_SOFTKEYS_OFF,
+ aItemText );
+ break;
+ }
+ default:
+ break;
+ }
+
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsFullScreen );
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::AppendAutomaticUpdatingAPL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::AppendAutomaticUpdatingAPL(
+ CDesCArray*& aItemArray,
+ TBuf<KWmlSettingsItemMaxLength>& aItemText)
+ {
+ TUint id = ApiProvider().Preferences().AutomaticUpdatingAP();
+ aItemText.Zero();
+ aItemText.Append( KWmlSettingsListBoxItemPrefix );
+ HBufC* defaultAp = iCoeEnv->AllocReadResourceLC(
+ R_WMLBROWSER_SETTINGS_AUTOUPDATING_AP );
+ aItemText.Append( *defaultAp );
+ CleanupStack::PopAndDestroy(); // defaultAp
+ aItemText.Append( KWmlSettingsListBoxItemPostfix );
+
+ TBuf< KCommsDbSvrMaxFieldLength > name;
+ CApUtils* au = CApUtils::NewLC( ApiProvider().CommsModel().CommsDb() );
+ TRAP_IGNORE(au->NameL( id, name ));
+ aItemText.Append( name );
+ CleanupStack::PopAndDestroy(); // au
+
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsAutomaticUpdatingAP );
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::AppendAutomaticUpdatingWhileRoamingL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::AppendAutomaticUpdatingWhileRoamingL(
+ CDesCArray*& aItemArray,
+ TBuf<KWmlSettingsItemMaxLength>& aItemText)
+ {
+
+ if ( iApiProvider.Preferences().AutomaticUpdatingWhileRoaming() )
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_AUTOUPDATING_ROAMING,
+ R_WMLBROWSER_SETTINGS_AUTOUPDATING_ROAMING_ON,
+ aItemText );
+ }
+ else
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_AUTOUPDATING_ROAMING,
+ R_WMLBROWSER_SETTINGS_AUTOUPDATING_ROAMING_OFF,
+ aItemText );
+ }
+ aItemArray->AppendL( aItemText );
+
+ iSettingIndex->AppendL( EWmlSettingsAutomaticUpdatingWhileRoaming );
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::AppendAutoMediaVolumeL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::AppendAutoMediaVolumeL(
+ CDesCArray*& aItemArray,
+ TBuf<KWmlSettingsItemMaxLength>& aItemText)
+ {
+ TInt volumeLevel = ApiProvider().Preferences().MediaVolume();
+
+ switch ( volumeLevel )
+ {
+ case EWmlSettingsVolumeMuted:
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_MEDIA_VOLUME,
+ R_WMLBROWSER_SETTINGS_MEDIA_VOLUME_MUTED,
+ aItemText );
+ break;
+ }
+ case EWmlSettingsVolume1:
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_MEDIA_VOLUME,
+ R_WMLBROWSER_SETTINGS_MEDIA_VOLUME_1,
+ aItemText );
+ break;
+ }
+ case EWmlSettingsVolume2:
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_MEDIA_VOLUME,
+ R_WMLBROWSER_SETTINGS_MEDIA_VOLUME_2,
+ aItemText );
+ break;
+ }
+ case EWmlSettingsVolume3:
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_MEDIA_VOLUME,
+ R_WMLBROWSER_SETTINGS_MEDIA_VOLUME_3,
+ aItemText );
+ break;
+ }
+ case EWmlSettingsVolume4:
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_MEDIA_VOLUME,
+ R_WMLBROWSER_SETTINGS_MEDIA_VOLUME_4,
+ aItemText );
+ break;
+ }
+ default:
+ break;
+ }
+
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsMediaVolume );
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::AppendEncodingL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::AppendEncodingL(
+ CDesCArray*& aItemArray,
+ TBuf<KWmlSettingsItemMaxLength>& aItemText)
+ {
+ TBool currentEncodingFound = EFalse;
+ for( int i = 0; i < iEncodingArray->Count(); i++ )
+ {
+ if( iEncodingArray->At(i).iSystemId == iEncoding )
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_ENCODING,
+ iEncodingArray->At(i).iResId,
+ aItemText );
+ currentEncodingFound = ETrue;
+ break;
+ }
+ }
+
+ if( !currentEncodingFound )
+ {
+ __ASSERT_DEBUG( EFalse, Util::Panic( Util::EOutOfRange ));
+ }
+
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsEncoding );
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::AppendPopupBlockingL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::AppendPopupBlockingL(
+ CDesCArray*& aItemArray,
+ TBuf<KWmlSettingsItemMaxLength>& aItemText)
+ {
+ if ( ApiProvider().Preferences().PopupBlocking() )
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_POPUP_BLOCKING,
+ R_WMLBROWSER_SETTINGS_POPUP_BLOCKING_ON,
+ aItemText );
+ }
+ else
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_POPUP_BLOCKING,
+ R_WMLBROWSER_SETTINGS_POPUP_BLOCKING_OFF,
+ aItemText );
+ }
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsPopupBlocking );
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::AppendAutoRefreshL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::AppendAutoRefreshL(
+ CDesCArray*& aItemArray,
+ TBuf<KWmlSettingsItemMaxLength>& aItemText)
+ {
+ if ( iApiProvider.Preferences().AutoRefresh() )
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_AUTO_REFRESH,
+ R_WMLBROWSER_SETTINGS_AUTO_REFRESH_ON,
+ aItemText );
+ }
+ else
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_AUTO_REFRESH,
+ R_WMLBROWSER_SETTINGS_AUTO_REFRESH_OFF,
+ aItemText );
+ }
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsAutoRefresh );
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::AppendAdaptiveBookmarksL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::AppendAdaptiveBookmarksL(
+ CDesCArray*& aItemArray,
+ TBuf<KWmlSettingsItemMaxLength>& aItemText)
+ {
+ switch ( ApiProvider().Preferences().AdaptiveBookmarks() )
+ {
+ case EWmlSettingsAdaptiveBookmarksOn:
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_ADAPTIVE_BOOKMARKS,
+ R_WMLBROWSER_SETTINGS_ADAPTIVE_BOOKMARKS_VALUE_ON,
+ aItemText );
+ break;
+ }
+ case EWmlSettingsAdaptiveBookmarksHideFolder:
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_ADAPTIVE_BOOKMARKS,
+ R_WMLBROWSER_SETTINGS_ADAPTIVE_BOOKMARKS_VALUE_HIDE_FOLDER,
+ aItemText );
+ break;
+ }
+ case EWmlSettingsAdaptiveBookmarksOff:
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_ADAPTIVE_BOOKMARKS,
+ R_WMLBROWSER_SETTINGS_ADAPTIVE_BOOKMARKS_VALUE_OFF,
+ aItemText );
+ break;
+ }
+ default:
+ break;
+ }
+
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsAdaptiveBookmarks );
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::AppendFormDataSavingL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::AppendFormDataSavingL(
+ CDesCArray*& aItemArray,
+ TBuf<KWmlSettingsItemMaxLength>& aItemText)
+ {
+ switch ( ApiProvider().Preferences().FormDataSaving() )
+ {
+ case EWmlSettingsFormDataPlusPassword:
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_FORM_DATA_SAVING,
+ R_WMLBROWSER_SETTINGS_FORM_DATA_SAVING_ON,
+ aItemText );
+ break;
+ }
+ case EWmlSettingsFormDataOnly:
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_FORM_DATA_SAVING,
+ R_WMLBROWSER_SETTINGS_FORM_DATA_SAVING_ONLY,
+ aItemText );
+ break;
+ }
+ case EWmlSettingsFormDataOff:
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_FORM_DATA_SAVING,
+ R_WMLBROWSER_SETTINGS_FORM_DATA_SAVING_OFF,
+ aItemText );
+ break;
+ }
+
+ default:
+ break;
+ }
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsFormDataSaving );
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::AppendCookiesL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::AppendCookiesL(
+ CDesCArray*& aItemArray,
+ TBuf<KWmlSettingsItemMaxLength>& aItemText)
+ {
+ switch ( ApiProvider().Preferences().Cookies() )
+ {
+ case EWmlSettingsCookieAllow:
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_COOKIES,
+ R_WMLBROWSER_SETTINGS_C_VALUE_ALLOW,
+ aItemText );
+ break;
+ }
+ case EWmlSettingsCookieReject:
+ {
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_COOKIES,
+ R_WMLBROWSER_SETTINGS_C_VALUE_REJECT,
+ aItemText );
+ break;
+ }
+ default:
+ break;
+ }
+
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsCookies );
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::AppendIMEIL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::AppendIMEIL(
+ CDesCArray*& aItemArray,
+ TBuf<KWmlSettingsItemMaxLength>& aItemText)
+ {
+ switch ( ApiProvider().Preferences().IMEINotification() )
+ {
+ case EWmlSettingsIMEIEnable:
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_IMEI,
+ R_WMLBROWSER_SETTINGS_IMEI_VALUE_ENABLED,
+ aItemText );
+ break;
+ case EWmlSettingsIMEIDisable:
+ CreateItemFromTwoStringsL(
+ R_WMLBROWSER_SETTINGS_IMEI,
+ R_WMLBROWSER_SETTINGS_IMEI_VALUE_DISABLED,
+ aItemText );
+ break;
+ default:
+ break;
+ }
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsIMEINotification );
+
+ }
+// -----------------------------------------------------------------------------
+// CSettingsContainer::AppendFontSize
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::AppendFontSizeL( CDesCArray*& aItemArray,
+ TBuf<KWmlSettingsItemMaxLength>& aItemText)
+ {
+ CreateItemFromTwoStringsL(R_WMLBROWSER_SETTINGS_FONT_SIZE,
+ GetFontSizeString(),
+ aItemText );
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsFontSize );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::GetFontSizeString
+// Convenience utility. Note that many of the settings duplicate the
+// code to generate this sort od string. This pattern could be applied
+// to many of the settings to reduce the code size. A side effect of this
+// code is that the iFontSize variable may be modified in the Chinese
+// Build case. This code is in one place now and not duplicated.
+// -----------------------------------------------------------------------------
+//
+TInt CSettingsContainer::GetFontSizeString()
+ {
+ // China build (__AVKON_APAC__) has only three font sizes.
+ // If for some reason smaller/larger is selected, display it as "normal"
+ if (!AVKONAPAC)
+ {
+ switch (iFontSize)
+ {
+ case 0:
+ return R_WMLBROWSER_SETTINGS_FS_VALUE_ALL_SMALL;
+ case 1:
+ return R_WMLBROWSER_SETTINGS_FS_VALUE_SMALLER;
+ case 2:
+ return R_WMLBROWSER_SETTINGS_FS_VALUE_NORMAL;
+ case 3:
+ return R_WMLBROWSER_SETTINGS_FS_VALUE_LARGER;
+ case 4:
+ return R_WMLBROWSER_SETTINGS_FS_VALUE_ALL_LARGE;
+ default:
+ return R_WMLBROWSER_SETTINGS_FS_VALUE_NORMAL;
+ }
+ }
+ else
+ {
+ switch (iFontSize)
+ {
+ case 0:
+ return R_WMLBROWSER_SETTINGS_FS_VALUE_ALL_SMALL;
+ case 1:
+ case 2:
+ case 3:
+ //These three map to same size.
+ iFontSize = 2;
+ return R_WMLBROWSER_SETTINGS_FS_VALUE_NORMAL;
+ case 4:
+ return R_WMLBROWSER_SETTINGS_FS_VALUE_ALL_LARGE;
+ default:
+ return R_WMLBROWSER_SETTINGS_FS_VALUE_NORMAL;
+ }
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::AppendToolbarButtonsL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::AppendToolbarButtonsL( CDesCArray*& aItemArray,
+ TBuf<KWmlSettingsItemMaxLength>& aItemText)
+ {
+
+ CreateItemFromTwoStringsL(
+ R_BROWSER_SETTING_TOOLBAR_BUTTON1,
+ ToolbarCommandDecodeMatrix[iApiProvider.Preferences().ShowToolbarButton1Cmd()][KToolbarCommandDecodeMatrixStringId],
+ aItemText );
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsToolbarButton1Cmd );
+
+ CreateItemFromTwoStringsL(
+ R_BROWSER_SETTING_TOOLBAR_BUTTON2,
+ ToolbarCommandDecodeMatrix[iApiProvider.Preferences().ShowToolbarButton2Cmd()][KToolbarCommandDecodeMatrixStringId],
+ aItemText );
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsToolbarButton2Cmd );
+
+ CreateItemFromTwoStringsL(
+ R_BROWSER_SETTING_TOOLBAR_BUTTON3,
+ ToolbarCommandDecodeMatrix[iApiProvider.Preferences().ShowToolbarButton3Cmd()][KToolbarCommandDecodeMatrixStringId],
+ aItemText );
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsToolbarButton3Cmd );
+
+ CreateItemFromTwoStringsL(
+ R_BROWSER_SETTING_TOOLBAR_BUTTON4,
+ ToolbarCommandDecodeMatrix[iApiProvider.Preferences().ShowToolbarButton4Cmd()][KToolbarCommandDecodeMatrixStringId],
+ aItemText );
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsToolbarButton4Cmd );
+
+ CreateItemFromTwoStringsL(
+ R_BROWSER_SETTING_TOOLBAR_BUTTON5,
+ ToolbarCommandDecodeMatrix[iApiProvider.Preferences().ShowToolbarButton5Cmd()][KToolbarCommandDecodeMatrixStringId],
+ aItemText );
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsToolbarButton5Cmd );
+
+
+ CreateItemFromTwoStringsL(
+ R_BROWSER_SETTING_TOOLBAR_BUTTON6,
+ ToolbarCommandDecodeMatrix[iApiProvider.Preferences().ShowToolbarButton6Cmd()][KToolbarCommandDecodeMatrixStringId],
+ aItemText );
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsToolbarButton6Cmd );
+
+
+ CreateItemFromTwoStringsL(
+ R_BROWSER_SETTING_TOOLBAR_BUTTON7,
+ ToolbarCommandDecodeMatrix[iApiProvider.Preferences().ShowToolbarButton7Cmd()][KToolbarCommandDecodeMatrixStringId],
+ aItemText );
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsToolbarButton7Cmd );
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::AppendShortcutKeysL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::AppendShortcutKeysL( CDesCArray*& aItemArray,
+ TBuf<KWmlSettingsItemMaxLength>& aItemText)
+ {
+
+ CreateItemFromTwoStringsL(
+ R_BROWSER_SETTING_SHORTCUT_KEY1,
+ ShortcutsCommandDecodeMatrix[iApiProvider.Preferences().ShortcutKey1Cmd()][KShortcutsCommandDecodeMatrixStringId],
+ aItemText );
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsShortCutKey1Cmd );
+
+
+ CreateItemFromTwoStringsL(
+ R_BROWSER_SETTING_SHORTCUT_KEY2,
+ ShortcutsCommandDecodeMatrix[iApiProvider.Preferences().ShortcutKey2Cmd()][KShortcutsCommandDecodeMatrixStringId],
+ aItemText );
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsShortCutKey2Cmd );
+
+
+ CreateItemFromTwoStringsL(
+ R_BROWSER_SETTING_SHORTCUT_KEY3,
+ ShortcutsCommandDecodeMatrix[iApiProvider.Preferences().ShortcutKey3Cmd()][KShortcutsCommandDecodeMatrixStringId],
+ aItemText );
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsShortCutKey3Cmd );
+
+ CreateItemFromTwoStringsL(
+ R_BROWSER_SETTING_SHORTCUT_KEY4,
+ ShortcutsCommandDecodeMatrix[iApiProvider.Preferences().ShortcutKey4Cmd()][KShortcutsCommandDecodeMatrixStringId],
+ aItemText );
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsShortCutKey4Cmd );
+
+ CreateItemFromTwoStringsL(
+ R_BROWSER_SETTING_SHORTCUT_KEY5,
+ ShortcutsCommandDecodeMatrix[iApiProvider.Preferences().ShortcutKey5Cmd()][KShortcutsCommandDecodeMatrixStringId],
+ aItemText );
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsShortCutKey5Cmd );
+
+
+ CreateItemFromTwoStringsL(
+ R_BROWSER_SETTING_SHORTCUT_KEY6,
+ ShortcutsCommandDecodeMatrix[iApiProvider.Preferences().ShortcutKey6Cmd()][KShortcutsCommandDecodeMatrixStringId],
+ aItemText );
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsShortCutKey6Cmd );
+
+ CreateItemFromTwoStringsL(
+ R_BROWSER_SETTING_SHORTCUT_KEY7,
+ ShortcutsCommandDecodeMatrix[iApiProvider.Preferences().ShortcutKey7Cmd()][KShortcutsCommandDecodeMatrixStringId],
+ aItemText );
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsShortCutKey7Cmd );
+
+ CreateItemFromTwoStringsL(
+ R_BROWSER_SETTING_SHORTCUT_KEY8,
+ ShortcutsCommandDecodeMatrix[iApiProvider.Preferences().ShortcutKey8Cmd()][KShortcutsCommandDecodeMatrixStringId],
+ aItemText );
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsShortCutKey8Cmd );
+
+ CreateItemFromTwoStringsL(
+ R_BROWSER_SETTING_SHORTCUT_KEY9,
+ ShortcutsCommandDecodeMatrix[iApiProvider.Preferences().ShortcutKey9Cmd()][KShortcutsCommandDecodeMatrixStringId],
+ aItemText );
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsShortCutKey9Cmd );
+
+ CreateItemFromTwoStringsL(
+ R_BROWSER_SETTING_SHORTCUT_KEY0,
+ ShortcutsCommandDecodeMatrix[iApiProvider.Preferences().ShortcutKey0Cmd()][KShortcutsCommandDecodeMatrixStringId],
+ aItemText );
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsShortCutKey0Cmd );
+
+ CreateItemFromTwoStringsL(
+ R_BROWSER_SETTING_SHORTCUT_KEYSTAR,
+ ShortcutsCommandDecodeMatrix[iApiProvider.Preferences().ShortcutKeyStarCmd()][KShortcutsCommandDecodeMatrixStringId],
+ aItemText );
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsShortCutKeyStarCmd );
+
+ CreateItemFromTwoStringsL(
+ R_BROWSER_SETTING_SHORTCUT_KEYHASH,
+ ShortcutsCommandDecodeMatrix[iApiProvider.Preferences().ShortcutKeyHashCmd()][KShortcutsCommandDecodeMatrixStringId],
+ aItemText );
+ aItemArray->AppendL( aItemText );
+ iSettingIndex->AppendL( EWmlSettingsShortCutKeyHashCmd );
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::ClearListBoxContentL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::ClearListBoxContentL()
+ {
+ CDesCArray* itemArray =
+ ( CDesCArray* ) ( iSettingListBox->Model()->ItemTextArray() );
+
+ // Clear out the listbox content - it is reusable
+ while ( itemArray->Count() )
+ {
+ itemArray->Delete( 0 );
+ }
+ while ( iSettingIndex->Count() )
+ {
+ iSettingIndex->Delete( 0 );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::StoreListBoxIndexL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::StoreListBoxIndexL()
+ {
+ // We only use one list box for all of the lists in the Settings,
+ // we need to keep track of the current & top indices so that focus
+ // is updated correctly
+
+ if ( iCurrentSettingCategory == EMain )
+ {
+ iMainSettingCurrentIndex = iSettingListBox->CurrentItemIndex();
+ iMainSettingTopPosIndex = iSettingListBox->TopItemIndex();
+
+ // Reinitialise the subsetting indices
+ iSubSettingCurrentIndex = KWmlSettingsIndexNone;
+ iSubSettingTopPosIndex = 0;
+ }
+ else
+ {
+ iSubSettingCurrentIndex = iSettingListBox->CurrentItemIndex();
+ iSubSettingTopPosIndex = iSettingListBox->TopItemIndex();
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::RestoreListBoxIndexL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::RestoreListBoxIndexL()
+ {
+ iSettingListBox->Reset();
+
+ // Listbox might not have index
+ if ( iCurrentSettingCategory == EMain )
+ {
+ if ( iMainSettingCurrentIndex != KWmlSettingsIndexNone )
+ {
+ iSettingListBox->SetCurrentItemIndex( iMainSettingCurrentIndex );
+ iSettingListBox->SetTopItemIndex( iMainSettingTopPosIndex );
+ }
+ }
+ else
+ {
+ if ( iSubSettingCurrentIndex != KWmlSettingsIndexNone )
+ {
+ iSettingListBox->SetCurrentItemIndex( iSubSettingCurrentIndex );
+ iSettingListBox->SetTopItemIndex( iSubSettingTopPosIndex );
+ }
+ }
+ iSettingListBox->HandleItemAdditionL();
+ iSettingListBox->DrawNow();
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::ChangeItemL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::ChangeItemL( TBool aSelectKeyWasPressed )
+ {
+ LOG_ENTERFN("CSettingsContainer::ChangeItemL");
+ // item is selected for modification
+ TInt currentItem( iSettingListBox->CurrentItemIndex() );
+
+
+
+ // creating array to hold resource ids of options
+ CArrayFixFlat<TInt> *values=new(ELeave)CArrayFixFlat<TInt>( 4 );
+
+ // creating an array to hold mapping between displayed choices and resource ids
+ // in the case of Toolbar/Shortcut key assignments
+ // where some commands (like ROTATE) are not visible.
+ CArrayFixFlat<TInt> *valueDisplayMapping=new(ELeave)CArrayFixFlat<TInt>(4);
+
+
+ CleanupStack::PushL( values );
+ CleanupStack::PushL( valueDisplayMapping );
+ TInt value;
+ MPreferences& preferences = ApiProvider().Preferences();
+ TInt settingsItem = MapCurrentItem( currentItem );
+ switch ( settingsItem )
+ {
+ case EWmlSettingsAccesspoint:
+ {
+ TInt err(KErrNone);
+ TInt retVal( KErrNone );
+ //start the connection dialog
+ CCmApplicationSettingsUi* settings = CCmApplicationSettingsUi::NewL();
+ CleanupStack::PushL( settings );
+
+ TCmSettingSelection selection;
+
+ //
+ // In Avkon tradition,
+ // set the id of selection from the existing setting in preferences
+ // so it is shown that way in the selection dialog box.
+ //
+ // Note the CCmApplicationSettingsUi API should ensure that if
+ // "Connection Method" was previously selected, it should show up as
+ // "Uncategorized" being shown selected
+ //
+ switch (preferences.AccessPointSelectionMode())
+ {
+ case EAlwaysAsk:
+ {
+ selection.iResult = EAlwaysAsk;
+ selection.iId = preferences.DefaultSnapId();
+ break;
+ }
+ case EDestination:
+ {
+ selection.iResult = EDestination;
+ selection.iId = preferences.DefaultSnapId();
+ break;
+ }
+ case EConnectionMethod:
+ {
+ selection.iResult = EConnectionMethod;
+ selection.iId = Util::IapIdFromWapIdL( ApiProvider(), preferences.DefaultAccessPoint() );
+ break;
+ }
+ default:
+ // default case, set it to nothing
+ selection.iResult = EDefaultConnection;
+ break;
+ }
+
+ // empty filter array because no filtering is wanted
+ TBearerFilterArray filterArray;
+ TRAP ( err, retVal = settings->RunApplicationSettingsL( selection,
+ EShowAlwaysAsk | EShowDestinations | EShowConnectionMethods,
+ // turn off SNAP
+// EShowAlwaysAsk | EShowConnectionMethods,
+ filterArray ) );
+ CleanupStack::PopAndDestroy();//settings
+
+ //if something has been selected
+ if (retVal)
+ {
+ //set the selection mode
+ preferences.SetAccessPointSelectionModeL(
+ STATIC_CAST( TCmSettingSelectionMode, selection.iResult ) );
+
+ //based on the chosen connection type, store the connection identifier(iapid, snap id, always ask)
+ //in the preferences list
+ switch (preferences.AccessPointSelectionMode())
+ {
+ case EConnectionMethod:
+ {
+ BROWSER_LOG( ( _L( "CSettingsContainer::ChangeItemL CApSettingsHandler" ) ) );
+
+ TUint32 id = preferences.DefaultAccessPoint();
+ // CMManager gives us IAPid, need to translate to WAPid
+ if (selection.iId != 0)
+ {
+ id = Util::WapIdFromIapIdL( ApiProvider(), selection.iId );
+ }
+ preferences.SetDefaultAccessPointL( id );
+ BROWSER_LOG( ( _L( " SetDefaultAccessPointL OK" ) ) );
+ // Requested AP is preset for PushMtm
+ ApiProvider().SetRequestedAP( preferences.DefaultAccessPoint() );
+ break;
+ }
+
+ case EDestination:
+ {
+ TUint32 snapId = preferences.DefaultSnapId();
+ if (selection.iId != 0)
+ {
+ snapId = selection.iId;
+ }
+ preferences.SetDefaultSnapId( snapId );
+
+ break;
+ }
+
+ case EAlwaysAsk:
+ {
+ break;
+ }
+
+ default:
+ {
+ LOG_ENTERFN(" Wrong value in CSettingsContainer::ChangeItemL");
+ }
+ }
+ }
+
+ DisplayGeneralSettingsL();
+ BROWSER_LOG( ( _L( "DisplayGeneralSettingsL OK" ) ) );
+
+ break;
+ }
+
+ case EWmlSettingsAutoLoadContent:
+ {
+ if(iFlashPluginPresent)
+ {
+ value = 2 - preferences.AutoLoadContent();
+
+ values->AppendL( R_WMLBROWSER_SETTINGS_AUTOLOAD_ALL ); // 2
+ values->AppendL( R_WMLBROWSER_SETTINGS_AUTOLOAD_IMAGES_NO_FLASH ); // 1
+ values->AppendL( R_WMLBROWSER_SETTINGS_AUTOLOAD_TEXT ); // 0
+
+ value = 2 - (ShowRadioButtonSettingPageL(R_WMLBROWSER_SETTINGS_AUTOLOAD_CONTENT,
+ values,
+ value ));
+ }
+ else
+ {
+ // Below is cenrep values for Load Content for cenrep key KBrowserNGImagesEnabled
+ // Load Content
+ // Valid values:
+ // If flash plugin is present: 0 = Text only, 1 = Images,No flash, 2 = All
+ // If flash plugin is not present 0 = Text only, 1 = All
+
+ // Based on this we have to manually translate the value of 1 from Images,No flash to All
+ // in case where the flash plugin is not present.
+
+
+ value = 1 - preferences.AutoLoadContent();
+
+ if ( value < 0 )
+ {
+ // for case of EWmlSettingsAutoloadAll value would be negative ;
+ // reset to 0 to prevent crash later
+ value = 0;
+ }
+
+ values->AppendL( R_WMLBROWSER_SETTINGS_AUTOLOAD_ALL ); // 1 (translated from 2 when flash plugin is present)
+ values->AppendL( R_WMLBROWSER_SETTINGS_AUTOLOAD_TEXT ); // 0
+
+ value = 1 - (ShowRadioButtonSettingPageL(R_WMLBROWSER_SETTINGS_AUTOLOAD_CONTENT,
+ values,
+ value ));
+
+ if (value == EWmlSettingsAutoloadImagesNoFlash)
+ // Flash plugin not present so reset value from 1 to 2
+ {
+ value = EWmlSettingsAutoloadAll;
+ }
+ }
+
+ preferences.SetAutoLoadContentL( value );
+ DisplayPageSettingsL();
+ break;
+ }
+
+ case EWmlSettingsFontSize:
+ {
+ //The relationship between index and fontsize is awkward because
+ //the radio buttons reverse the order and the routine called tries
+ //to straighten that out.
+ TInt fontIndex = 4 - iFontSize; // (0,1,2,3,4 >> 4,3,2,1,0)
+ if (!AVKONAPAC)
+ {
+ values->AppendL( R_WMLBROWSER_SETTINGS_FS_VALUE_ALL_LARGE );
+ values->AppendL( R_WMLBROWSER_SETTINGS_FS_VALUE_LARGER );
+ values->AppendL( R_WMLBROWSER_SETTINGS_FS_VALUE_NORMAL );
+ values->AppendL( R_WMLBROWSER_SETTINGS_FS_VALUE_SMALLER );
+ values->AppendL( R_WMLBROWSER_SETTINGS_FS_VALUE_ALL_SMALL );
+ //Convert result to (4,3,2,1,0 >> 0,1,2,3,4)
+ iFontSize = 4 - (ShowRadioButtonSettingPageL(R_WMLBROWSER_SETTINGS_FONT_SIZE,
+ values,
+ fontIndex ));
+ }
+ else
+ {
+ // China build has only three font sizes. Radio button
+ // indices are 0, 1, 2. Map these to 0, 2, 4 (all small,
+ // normal, all large) for preferences.
+ values->AppendL( R_WMLBROWSER_SETTINGS_FS_VALUE_ALL_LARGE );
+ values->AppendL( R_WMLBROWSER_SETTINGS_FS_VALUE_NORMAL );
+ values->AppendL( R_WMLBROWSER_SETTINGS_FS_VALUE_ALL_SMALL );
+ //Convert result to (4,3,2,1,0 >> 0,1,2,3,4)
+ iFontSize = 4 - (ShowRadioButtonSettingPageL(R_WMLBROWSER_SETTINGS_FONT_SIZE,
+ values,
+ fontIndex >> 1 ) << 1);
+ }
+ preferences.SetFontSizeL( iFontSize );
+ DisplayPageSettingsL();
+ break;
+ }
+
+ case EWmlSettingsPageOverview:
+ {
+ if( ApiProvider().WindowMgr().CurrentWindow()->IsPageOverviewSupportedL() )
+ {
+ values->AppendL( R_WMLBROWSER_SETTINGS_PAGEOVERVIEW_OFF );
+ values->AppendL( R_WMLBROWSER_SETTINGS_PAGEOVERVIEW_ON );
+ value = preferences.PageOverview();
+ value = aSelectKeyWasPressed ?
+ 1 - value :
+ ShowRadioButtonSettingPageL(
+ R_WMLBROWSER_SETTINGS_PAGEOVERVIEW,
+ values,
+ value );
+ preferences.SetPageOverviewL( value );
+ DisplayGeneralSettingsL();
+ }
+ break;
+ }
+
+ case EWmlSettingsBackList:
+ {
+ values->AppendL( R_WMLBROWSER_SETTINGS_BACK_LIST_OFF );
+ values->AppendL( R_WMLBROWSER_SETTINGS_BACK_LIST_ON );
+ value = preferences.BackList();
+ value = aSelectKeyWasPressed ?
+ 1 - value :
+ ShowRadioButtonSettingPageL(
+ R_WMLBROWSER_SETTINGS_BACK_LIST,
+ values,
+ value );
+ preferences.SetBackListL( value );
+ DisplayGeneralSettingsL();
+ break;
+ }
+ case EWmlSettingsUrlSuffix:
+ {
+ TInt ret;
+
+ HBufC* suffixBuf = iApiProvider.Preferences().URLSuffixList();
+ HBufC* suffixToPass = HBufC::NewLC( KMaxSearchPgUrlLength );
+ suffixToPass = suffixBuf;
+ TPtr ptr = suffixToPass->Des();
+
+ TInt resource = R_URL_SUFFIX_PAGE;
+
+ CAknSettingPage* dlg = new ( ELeave ) CAknTextSettingPage(
+ resource, ptr, CAknTextSettingPage::EZeroLengthAllowed );
+
+ ret = dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged );
+
+ if ( ret )
+ {
+ iApiProvider.Preferences().SetURLSuffixList(suffixToPass);
+ }
+
+ CleanupStack::PopAndDestroy(); // suffixToPass
+ DisplayGeneralSettingsL();
+ break;
+ }
+ case EWmlSettingsAutoRefresh:
+ {
+ values->AppendL( R_WMLBROWSER_SETTINGS_AUTO_REFRESH_OFF );
+ values->AppendL( R_WMLBROWSER_SETTINGS_AUTO_REFRESH_ON );
+ value = preferences.AutoRefresh();
+ value = aSelectKeyWasPressed ?
+ 1 - value :
+ ShowRadioButtonSettingPageL(
+ R_WMLBROWSER_SETTINGS_AUTO_REFRESH,
+ values,
+ value );
+ preferences.SetAutoRefreshL( value );
+ DisplayPageSettingsL();
+ break;
+ }
+
+ case EWmlSettingsEncoding:
+ {
+ TInt highlightedItemIndex = KDoesntExist;
+ TInt lathinIndex = KDoesntExist;
+ for( int i = iEncodingArray->Count() - 1; i >= 0; i-- )
+ {
+ TEncodingStruct encoding = iEncodingArray->At(i);
+
+ if ( encoding.iSystemId == KCharacterSetIdentifierIso88591 )
+ {
+ lathinIndex = i;
+ }
+
+ values->AppendL( encoding.iResId );
+
+ if ( encoding.iSystemId == iEncoding )
+ {
+ highlightedItemIndex = i;
+ }
+ }
+
+ if( highlightedItemIndex == KDoesntExist )
+ {
+ if( lathinIndex != KDoesntExist )
+ {
+ highlightedItemIndex = lathinIndex;
+ }
+ else
+ {
+ highlightedItemIndex = 0;
+ }
+ }
+
+ TInt selectedIndex =
+ iEncodingArray->Count() - 1 -
+ ShowRadioButtonSettingPageL(
+ R_WMLBROWSER_SETTINGS_ENCODING,
+ values,
+ iEncodingArray->Count() - 1 - highlightedItemIndex );
+
+ TEncodingStruct selectedEncoding =
+ iEncodingArray->At( selectedIndex );
+
+ iEncoding = selectedEncoding.iSystemId;
+ DisplayPageSettingsL();
+ break;
+ }
+
+ case EWmlSettingsAdaptiveBookmarks:
+ {
+ values->AppendL(
+ R_WMLBROWSER_SETTINGS_ADAPTIVE_BOOKMARKS_VALUE_OFF );
+ values->AppendL(
+ R_WMLBROWSER_SETTINGS_ADAPTIVE_BOOKMARKS_VALUE_HIDE_FOLDER );
+ values->AppendL(
+ R_WMLBROWSER_SETTINGS_ADAPTIVE_BOOKMARKS_VALUE_ON );
+
+ value = 2-preferences.AdaptiveBookmarks();
+ value = ShowRadioButtonSettingPageL(
+ R_WMLBROWSER_SETTINGS_ADAPTIVE_BOOKMARKS,
+ values,
+ value );
+ preferences.SetAdaptiveBookmarksL(
+ ( TWmlSettingsAdaptiveBookmarks )(2-value) );
+ DisplayPrivacySettingsL();
+ break;
+ }
+
+ case EWmlSettingsFormDataSaving:
+ {
+ values->AppendL( R_WMLBROWSER_SETTINGS_FORM_DATA_SAVING_OFF );
+ values->AppendL( R_WMLBROWSER_SETTINGS_FORM_DATA_SAVING_ONLY );
+ values->AppendL( R_WMLBROWSER_SETTINGS_FORM_DATA_SAVING_ON );
+
+ value = preferences.FormDataSaving();
+ TInt origValue(value);
+ value = ShowRadioButtonSettingPageL(
+ R_WMLBROWSER_SETTINGS_FORM_DATA_SAVING,
+ values,
+ value );
+ preferences.SetFormDataSavingL( (TWmlSettingsFormData) value );
+
+ if (origValue > value)
+ {
+ // query to see if we need to delete stored form data
+ if (origValue == EWmlSettingsFormDataPlusPassword && value == EWmlSettingsFormDataOnly)
+ {
+ // delete password data?
+ ShowFormDataDeletePasswordQueryDialogL();
+ }
+ else if (origValue == EWmlSettingsFormDataPlusPassword && value == EWmlSettingsFormDataOff)
+ {
+ // delete password and form data
+ ShowFormDataDeleteAllQueryDialogL();
+ }
+ else if (origValue == EWmlSettingsFormDataOnly && value == EWmlSettingsFormDataOff)
+ {
+ // delete form data
+ ShowFormDataDeleteAllQueryDialogL();
+ }
+ }
+
+ DisplayPrivacySettingsL();
+ break;
+ }
+
+ case EWmlSettingsFullScreen:
+ {
+
+ values->AppendL( R_WMLBROWSER_SETTINGS_SOFTKEYS_OFF );
+ values->AppendL( R_WMLBROWSER_SETTINGS_SOFTKEYS_ON );
+ value = preferences.FullScreen();
+ value = aSelectKeyWasPressed ?
+ 1 - value :
+ ShowRadioButtonSettingPageL(
+ R_WMLBROWSER_SETTINGS_SOFTKEYS,
+ values,
+ value );
+ preferences.SetFullScreenL( ( TWmlSettingsFullScreen )( value ) );
+ DisplayPageSettingsL();
+ break;
+ }
+
+ case EWmlSettingsHomePage:
+ {
+ values->AppendL( R_WMLBROWSER_SETTINGS_HOMEPAGE_BOOKMARKS );
+
+ // "Use current page" is available only if a page is loaded.
+ // so there might be a hole in the array!
+ HBufC *url = CBrowserAppUi::Static()->BrCtlInterface().PageInfoLC(
+ TBrCtlDefs::EPageInfoUrl );
+
+ TInt useCurrent( 0 );
+ if( url && url->Length() )
+ {
+ values->AppendL( R_WMLBROWSER_SETTINGS_HOMEPAGE_USE_CURRENT );
+ ++useCurrent;
+ }
+
+ values->AppendL( R_WMLBROWSER_SETTINGS_HOMEPAGE_NEW_ADDRESS );
+ values->AppendL( R_WMLBROWSER_SETTINGS_HOMEPAGE_ACCESS_POINT );
+ TBool dialogCancel( ETrue );
+ while( dialogCancel )
+ {
+ value = preferences.HomePageType();
+ if( !useCurrent )
+ {
+ // 'Use current' is not shown as current item
+ if( (TWmlSettingsHomePage)value == EWmlSettingsHomePageUseCurrent )
+ {
+ value = EWmlSettingsHomePageAddress;
+ }
+ // items behind UseCurrent must be shifted below
+ else if( (TWmlSettingsHomePage)value > EWmlSettingsHomePageUseCurrent )
+ {
+ --value;
+ }
+ }
+ // sanity check
+ if( value >= 7 + useCurrent )
+ {
+ value = 7 + useCurrent;
+ }
+ if( ShowRadioButtonSettingPageBoolL(
+ R_WMLBROWSER_SETTINGS_STARTPAGE, values, &value ) )
+ { // OK was pressed on RadioSetting
+ // shift value if needed
+ if( !useCurrent &&
+ ( (TWmlSettingsHomePage)value >= EWmlSettingsHomePageUseCurrent) )
+ {
+ ++value;
+ }
+ if( (TWmlSettingsHomePage)value == EWmlSettingsHomePageAddress )
+ {
+ HBufC* prompt = StringLoader::LoadLC( R_BROWSER_PROMPT_HOMEPAGE_URL );
+ HBufC* retBuf = HBufC::NewL( KMaxHomePgUrlLength );
+ TPtr retString = retBuf->Des();
+ retString.Copy( KNullDesC );
+
+ if( preferences.HomePageUrlL( retString, ETrue ) != KErrNone )
+ {
+ retString.Zero();
+ retString.Copy( KNullDesC );
+ }
+ TInt result = TBrowserDialogs::DialogPromptReqL(
+ prompt->Des(),
+ &retString,
+ ETrue,
+ KMaxHomePgUrlLength );
+ CleanupStack::PopAndDestroy(); // prompt
+ if( result ) // URL was accepted
+ {
+ preferences.SetHomePageUrlL( retString );
+ preferences.SetHomePageTypeL( (TWmlSettingsHomePage) value );
+ dialogCancel = EFalse;
+ }
+ if( retBuf )
+ {
+ delete retBuf;
+ }
+ // else URL was cancelled! one more round
+ }
+ else if( (TWmlSettingsHomePage)value == EWmlSettingsHomePageAccessPoint )
+ {
+ preferences.SetHomePageTypeL( (TWmlSettingsHomePage) value );
+ dialogCancel = EFalse;
+ }
+ else if( (TWmlSettingsHomePage)value == EWmlSettingsHomePageUseCurrent )
+ {
+ // url was already checked. it exists.
+ TPtr urlPtr = url->Des();
+ preferences.SetHomePageUrlL( urlPtr );
+ preferences.SetHomePageTypeL( (TWmlSettingsHomePage) value );
+ dialogCancel = EFalse;
+ }
+ else if( (TWmlSettingsHomePage)value == EWmlSettingsHomePageBookmarks )
+ {
+ preferences.SetHomePageTypeL( (TWmlSettingsHomePage) value );
+ dialogCancel = EFalse;
+ }
+ }
+ else // Cancel was pressed on RadioSetting, nothing to do
+ {
+ dialogCancel = EFalse;
+ }
+ DisplayGeneralSettingsL();
+ }
+ CleanupStack::PopAndDestroy( url ); // url
+ break;
+ }
+
+ case EWmlSettingsAutomaticUpdatingAP:
+ {
+ TUint32 id = preferences.AutomaticUpdatingAP();
+ SelectUserDefinedAPL( id );
+
+ preferences.SetAutomaticUpdatingApL( id );
+ BROWSER_LOG( ( _L( "EWmlSettingsAutomaticUpdatingAP SetAutomaticUpdatingApL()" ) ) );
+
+ DisplayWebFeedsSettingsL();
+ BROWSER_LOG( ( _L( "EWmlSettingsAutomaticUpdatingAP DisplayWebFeedsSettingsL()" ) ) );
+ break;
+ }
+
+ case EWmlSettingsMediaVolume:
+ {
+ // Add option list items
+ values->AppendL( R_WMLBROWSER_SETTINGS_MEDIA_VOLUME_4 );
+ values->AppendL( R_WMLBROWSER_SETTINGS_MEDIA_VOLUME_3 );
+ values->AppendL( R_WMLBROWSER_SETTINGS_MEDIA_VOLUME_2 );
+ values->AppendL( R_WMLBROWSER_SETTINGS_MEDIA_VOLUME_1 );
+ values->AppendL( R_WMLBROWSER_SETTINGS_MEDIA_VOLUME_MUTED );
+
+ TInt itemcount = values->Count();
+
+ // Get Media Volume Value
+ value = preferences.MediaVolume();
+
+ // Convert volume to list index
+ switch ( value )
+ {
+ case EWmlSettingsVolumeMuted:
+ value = EVolumeMute;
+ break;
+ case EWmlSettingsVolume1:
+ value = EVolumeLevel1;
+ break;
+ case EWmlSettingsVolume2:
+ value = EVolumeLevel2;
+ break;
+ case EWmlSettingsVolume3:
+ value = EVolumeLevel3;
+ break;
+ case EWmlSettingsVolume4:
+ value = EVolumeLevel4;
+ break;
+ default:
+ break;
+ }
+
+ // Open Volume Option List Page
+ value = ShowRadioButtonSettingPageL(
+ R_WMLBROWSER_SETTINGS_MEDIA_VOLUME, values,
+ ( itemcount - 1 ) - value );
+
+ // Reconvert list index to volume
+ value = ( itemcount - 1 ) - value;
+ switch ( value )
+ {
+ case EVolumeMute:
+ value = EWmlSettingsVolumeMuted;
+ break;
+ case EVolumeLevel1:
+ value = EWmlSettingsVolume1;
+ break;
+ case EVolumeLevel2:
+ value = EWmlSettingsVolume2;
+ break;
+ case EVolumeLevel3:
+ value = EWmlSettingsVolume3;
+ break;
+ case EVolumeLevel4:
+ value = EWmlSettingsVolume4;
+ break;
+ default:
+ break;
+ }
+
+ // Save Media Volume Value
+ preferences.SetMediaVolumeL( value );
+ DisplayPageSettingsL();
+ break;
+ }
+
+ case EWmlSettingsCookies:
+ {
+ values->AppendL( R_WMLBROWSER_SETTINGS_C_VALUE_REJECT );
+ values->AppendL( R_WMLBROWSER_SETTINGS_C_VALUE_ALLOW );
+ value = preferences.Cookies();
+ value = aSelectKeyWasPressed ? 1 - value : ShowRadioButtonSettingPageL(
+ R_WMLBROWSER_SETTINGS_COOKIES,
+ values,
+ value );
+ preferences.SetCookiesL( ( TWmlSettingsCookies )value );
+ DisplayPrivacySettingsL();
+ break;
+ }
+
+ case EWmlSettingsEcma:
+ {
+ values->AppendL( R_WMLBROWSER_SETTINGS_ECMA_VALUE_DISABLE );
+ values->AppendL( R_WMLBROWSER_SETTINGS_ECMA_VALUE_ENABLE );
+ value = preferences.Ecma();//items need to be appended in reverse order
+ value = aSelectKeyWasPressed ? 1 - value : ShowRadioButtonSettingPageL(
+ R_WMLBROWSER_SETTINGS_ECMA,
+ values,
+ value );
+ preferences.SetEcmaL( ( TWmlSettingsECMA ) value );
+ DisplayGeneralSettingsL();
+ break;
+ }
+
+ case EWmlSettingsScriptLog:
+ {
+ value = 3 - preferences.ScriptLog();
+
+ values->AppendL( R_WMLBROWSER_SETTINGS_SCRIPTLOG_VALUE_TO_CONSOLE_FILE );
+ values->AppendL( R_WMLBROWSER_SETTINGS_SCRIPTLOG_VALUE_TO_CONSOLE );
+ values->AppendL( R_WMLBROWSER_SETTINGS_SCRIPTLOG_VALUE_TO_FILE );
+ values->AppendL( R_WMLBROWSER_SETTINGS_SCRIPTLOG_VALUE_DISABLE );
+
+ value = 3 - (ShowRadioButtonSettingPageL(R_WMLBROWSER_SETTINGS_SCRIPTLOG,
+ values,
+ value ));
+ preferences.SetScriptLogL( value );
+ DisplayGeneralSettingsL();
+
+ break;
+ }
+
+ case EWmlSettingsDownloadsOpen:
+ {
+ values->AppendL( R_WMLBROWSER_SETTINGS_DOWNLOAD_OPEN_YES );
+ values->AppendL( R_WMLBROWSER_SETTINGS_DOWNLOAD_OPEN_NO );
+ value = preferences.DownloadsOpen();
+ value = aSelectKeyWasPressed ? value :
+ ShowRadioButtonSettingPageL(
+ R_WMLBROWSER_SETTINGS_DOWNLOAD_OPEN,
+ values,
+ 1 - value );
+ preferences.SetDownloadsOpenL( 1 - value );
+ DisplayGeneralSettingsL();
+ break;
+ }
+
+ case EWmlSettingsHttpSecurityWarnings:
+ {
+ values->AppendL( R_WMLBROWSER_SETTINGS_WRN_VALUE_SHOW );
+ values->AppendL( R_WMLBROWSER_SETTINGS_WRN_VALUE_HIDE );
+ value = preferences.HttpSecurityWarnings();
+ value = aSelectKeyWasPressed ? value :
+ ShowRadioButtonSettingPageL(
+ R_WMLBROWSER_SETTINGS_HTTP_SEC_WRNS,
+ values,
+ 1 - value );
+ preferences.SetHttpSecurityWarningsL( 1 - value ); // show=1, hide=0 in preferences
+ DisplayGeneralSettingsL();
+ break;
+ }
+
+
+
+ case EWmlSettingsIMEINotification:
+ {
+ if ( IMEI_NOTIFICATION )
+ {
+ values->AppendL( R_WMLBROWSER_SETTINGS_IMEI_VALUE_DISABLED );
+ values->AppendL( R_WMLBROWSER_SETTINGS_IMEI_VALUE_ENABLED );
+ value = preferences.IMEINotification();
+ //items need to be appended in reverse order
+ value = aSelectKeyWasPressed ? 1 - value :
+ ShowRadioButtonSettingPageL(
+ R_WMLBROWSER_SETTINGS_IMEI,
+ values,
+ value );
+ preferences.SetIMEINotificationL( ( TWmlSettingsIMEI ) value );
+ DisplayPrivacySettingsL();
+ }
+ break;
+ }
+
+ case EWmlSettingsSendReferrer:
+ {
+ values->AppendL( R_WMLBROWSER_SETTINGS_SEND_REFERRER_OFF );
+ values->AppendL( R_WMLBROWSER_SETTINGS_SEND_REFERRER_ON );
+ value = preferences.SendReferrer();
+ value = aSelectKeyWasPressed ? 1 - value : ShowRadioButtonSettingPageL(
+ R_WMLBROWSER_SETTINGS_SEND_REFERRER,
+ values,
+ value );
+ DisplayPrivacySettingsL();
+ break;
+ }
+
+ case EWmlSettingsPopupBlocking:
+ {
+ values->AppendL( R_WMLBROWSER_SETTINGS_POPUP_BLOCKING_OFF );
+ values->AppendL( R_WMLBROWSER_SETTINGS_POPUP_BLOCKING_ON );
+ value = preferences.PopupBlocking();
+ value = aSelectKeyWasPressed ? 1 - value : ShowRadioButtonSettingPageL(
+ R_WMLBROWSER_SETTINGS_POPUP_BLOCKING,
+ values,
+ value );
+ preferences.SetPopupBlockingL( value );
+ DisplayPageSettingsL();
+ break;
+ }
+
+
+ case EWmlSettingsAutomaticUpdatingWhileRoaming:
+ {
+ values->AppendL( R_WMLBROWSER_SETTINGS_AUTOUPDATING_ROAMING_OFF );
+ values->AppendL( R_WMLBROWSER_SETTINGS_AUTOUPDATING_ROAMING_ON );
+
+ value = preferences.AutomaticUpdatingWhileRoaming();
+ value = aSelectKeyWasPressed ?
+ 1 - value :
+ ShowRadioButtonSettingPageL(
+ R_WMLBROWSER_SETTINGS_AUTOUPDATING_ROAMING,
+ values,
+ value );
+ preferences.SetAutomaticUpdatingWhileRoamingL( value );
+
+ DisplayWebFeedsSettingsL();
+ break;
+ }
+
+
+ case EWmlSettingsToolbarOnOff:
+ {
+ values->AppendL( R_BROWSER_SETTING_TOOLBAR_OFF );
+ values->AppendL( R_BROWSER_SETTING_TOOLBAR_ON );
+
+ value = preferences.ShowToolbarOnOff();
+ value = aSelectKeyWasPressed ?
+ 1 - value :
+ ShowRadioButtonSettingPageL(
+ R_BROWSER_SETTING_TOOLBAR_ON_OFF,
+ values,
+ value );
+ preferences.SetToolbarOnOffL( value );
+
+ DisplayToolbarSettingsL();
+ break;
+ }
+
+
+ case EWmlSettingsToolbarButton1Cmd:
+ {
+ value = preferences.ShowToolbarButton1Cmd();
+ // set toolbar values will build values into an array to be displayed to the user
+ // this may mean filtering out some items, so we have to know the mapping between our
+ // fixed array of commands as well as the current value from settings
+ value = SetToolbarButtonValues(values, value, valueDisplayMapping);
+ value = ShowRadioButtonSettingPageL( R_BROWSER_SETTING_TOOLBAR_BUTTON1,
+ values,
+ value );
+
+ preferences.SetToolbarButton1CmdL( valueDisplayMapping->At(value) );
+ DisplayToolbarSettingsL();
+ break;
+ }
+
+ case EWmlSettingsToolbarButton2Cmd:
+ {
+ value = preferences.ShowToolbarButton2Cmd();
+ // set toolbar values will build values into an array to be displayed to the user
+ // this may mean filtering out some items, so we have to know the mapping between our
+ // fixed array of commands as well as the current value from settings
+ value = SetToolbarButtonValues(values, value, valueDisplayMapping);
+ value = ShowRadioButtonSettingPageL( R_BROWSER_SETTING_TOOLBAR_BUTTON2,
+ values,
+ value );
+
+ preferences.SetToolbarButton2CmdL( valueDisplayMapping->At(value) );
+ DisplayToolbarSettingsL();
+ break;
+ }
+
+ case EWmlSettingsToolbarButton3Cmd:
+ {
+ value = preferences.ShowToolbarButton3Cmd();
+ // set toolbar values will build values into an array to be displayed to the user
+ // this may mean filtering out some items, so we have to know the mapping between our
+ // fixed array of commands as well as the current value from settings
+ value = SetToolbarButtonValues(values, value, valueDisplayMapping);
+ value = ShowRadioButtonSettingPageL( R_BROWSER_SETTING_TOOLBAR_BUTTON3,
+ values,
+ value );
+
+ preferences.SetToolbarButton3CmdL( valueDisplayMapping->At(value) );
+ DisplayToolbarSettingsL();
+ break;
+ }
+
+ case EWmlSettingsToolbarButton4Cmd:
+ {
+ value = preferences.ShowToolbarButton4Cmd();
+ // set toolbar values will build values into an array to be displayed to the user
+ // this may mean filtering out some items, so we have to know the mapping between our
+ // fixed array of commands as well as the current value from settings
+ value = SetToolbarButtonValues(values, value, valueDisplayMapping);
+ value = ShowRadioButtonSettingPageL( R_BROWSER_SETTING_TOOLBAR_BUTTON4,
+ values,
+ value );
+
+ preferences.SetToolbarButton4CmdL( valueDisplayMapping->At(value) );
+ DisplayToolbarSettingsL();
+ break;
+ }
+
+ case EWmlSettingsToolbarButton5Cmd:
+ {
+ value = preferences.ShowToolbarButton5Cmd();
+ // set toolbar values will build values into an array to be displayed to the user
+ // this may mean filtering out some items, so we have to know the mapping between our
+ // fixed array of commands as well as the current value from settings
+ value = SetToolbarButtonValues(values, value, valueDisplayMapping);
+
+ value = ShowRadioButtonSettingPageL( R_BROWSER_SETTING_TOOLBAR_BUTTON5,
+ values,
+ value );
+
+ preferences.SetToolbarButton5CmdL( valueDisplayMapping->At(value) );
+ DisplayToolbarSettingsL();
+ break;
+ }
+
+ case EWmlSettingsToolbarButton6Cmd:
+ {
+ value = preferences.ShowToolbarButton6Cmd();
+ // set toolbar values will build values into an array to be displayed to the user
+ // this may mean filtering out some items, so we have to know the mapping between our
+ // fixed array of commands as well as the current value from settings
+ value = SetToolbarButtonValues(values, value, valueDisplayMapping);
+
+ value = ShowRadioButtonSettingPageL( R_BROWSER_SETTING_TOOLBAR_BUTTON6,
+ values,
+ value );
+
+ preferences.SetToolbarButton6CmdL( valueDisplayMapping->At(value) );
+ DisplayToolbarSettingsL();
+ break;
+ }
+
+ case EWmlSettingsToolbarButton7Cmd:
+ {
+ value = preferences.ShowToolbarButton7Cmd();
+ // set toolbar values will build values into an array to be displayed to the user
+ // this may mean filtering out some items, so we have to know the mapping between our
+ // fixed array of commands as well as the current value from settings
+ value = SetToolbarButtonValues(values, value, valueDisplayMapping);
+
+ value = ShowRadioButtonSettingPageL( R_BROWSER_SETTING_TOOLBAR_BUTTON7,
+ values,
+ value );
+
+ preferences.SetToolbarButton7CmdL( valueDisplayMapping->At(value) );
+ DisplayToolbarSettingsL();
+ break;
+ }
+
+ case EWmlSettingsShortCutKey1Cmd:
+ {
+ value = preferences.ShortcutKey1Cmd();
+ // set toolbar values will build values into an array to be displayed to the user
+ // this may mean filtering out some items, so we have to know the mapping between our
+ // fixed array of commands as well as the current value from settings
+ value = SetShortcutKeysValues(values, value, valueDisplayMapping);
+ value = ShowRadioButtonSettingPageL( R_BROWSER_SETTING_SHORTCUT_KEY1,
+ values,
+ value );
+ preferences.SetShortcutKey1CmdL( valueDisplayMapping->At(value) );
+ DisplayShortcutsSettingsL();
+ break;
+ }
+
+ case EWmlSettingsShortCutKey2Cmd:
+ {
+ value = preferences.ShortcutKey2Cmd();
+ // set toolbar values will build values into an array to be displayed to the user
+ // this may mean filtering out some items, so we have to know the mapping between our
+ // fixed array of commands as well as the current value from settings
+ value = SetShortcutKeysValues(values, value, valueDisplayMapping);
+ value = ShowRadioButtonSettingPageL( R_BROWSER_SETTING_SHORTCUT_KEY2,
+ values,
+ value );
+ preferences.SetShortcutKey2CmdL( valueDisplayMapping->At(value) );
+ DisplayShortcutsSettingsL();
+ break;
+ }
+
+ case EWmlSettingsShortCutKey3Cmd:
+ {
+ value = preferences.ShortcutKey3Cmd();
+ // set toolbar values will build values into an array to be displayed to the user
+ // this may mean filtering out some items, so we have to know the mapping between our
+ // fixed array of commands as well as the current value from settings
+ value = SetShortcutKeysValues(values, value, valueDisplayMapping);
+ value = ShowRadioButtonSettingPageL( R_BROWSER_SETTING_SHORTCUT_KEY3,
+ values,
+ value );
+ preferences.SetShortcutKey3CmdL( valueDisplayMapping->At(value) );
+ DisplayShortcutsSettingsL();
+ break;
+ }
+
+ case EWmlSettingsShortCutKey4Cmd:
+ {
+ value = preferences.ShortcutKey4Cmd();
+ // set toolbar values will build values into an array to be displayed to the user
+ // this may mean filtering out some items, so we have to know the mapping between our
+ // fixed array of commands as well as the current value from settings
+ value = SetShortcutKeysValues(values, value, valueDisplayMapping);
+ value = ShowRadioButtonSettingPageL( R_BROWSER_SETTING_SHORTCUT_KEY4,
+ values,
+ value );
+ preferences.SetShortcutKey4CmdL( valueDisplayMapping->At(value) );
+ DisplayShortcutsSettingsL();
+ break;
+ }
+
+ case EWmlSettingsShortCutKey5Cmd:
+ {
+ value = preferences.ShortcutKey5Cmd();
+ // set toolbar values will build values into an array to be displayed to the user
+ // this may mean filtering out some items, so we have to know the mapping between our
+ // fixed array of commands as well as the current value from settings
+ value = SetShortcutKeysValues(values, value, valueDisplayMapping);
+ value = ShowRadioButtonSettingPageL( R_BROWSER_SETTING_SHORTCUT_KEY5,
+ values,
+ value );
+ preferences.SetShortcutKey5CmdL( valueDisplayMapping->At(value) );
+ DisplayShortcutsSettingsL();
+ break;
+ }
+
+ case EWmlSettingsShortCutKey6Cmd:
+ {
+ value = preferences.ShortcutKey6Cmd();
+ // set toolbar values will build values into an array to be displayed to the user
+ // this may mean filtering out some items, so we have to know the mapping between our
+ // fixed array of commands as well as the current value from settings
+ value = SetShortcutKeysValues(values, value, valueDisplayMapping);
+ value = ShowRadioButtonSettingPageL( R_BROWSER_SETTING_SHORTCUT_KEY6,
+ values,
+ value );
+ preferences.SetShortcutKey6CmdL( valueDisplayMapping->At(value) );
+ DisplayShortcutsSettingsL();
+ break;
+ }
+
+ case EWmlSettingsShortCutKey7Cmd:
+ {
+ value = preferences.ShortcutKey7Cmd();
+ // set toolbar values will build values into an array to be displayed to the user
+ // this may mean filtering out some items, so we have to know the mapping between our
+ // fixed array of commands as well as the current value from settings
+ value = SetShortcutKeysValues(values, value, valueDisplayMapping);
+ value = ShowRadioButtonSettingPageL( R_BROWSER_SETTING_SHORTCUT_KEY7,
+ values,
+ value );
+ preferences.SetShortcutKey7CmdL( valueDisplayMapping->At(value) );
+ DisplayShortcutsSettingsL();
+ break;
+ }
+
+ case EWmlSettingsShortCutKey8Cmd:
+ {
+ value = preferences.ShortcutKey8Cmd();
+ // set toolbar values will build values into an array to be displayed to the user
+ // this may mean filtering out some items, so we have to know the mapping between our
+ // fixed array of commands as well as the current value from settings
+ value = SetShortcutKeysValues(values, value, valueDisplayMapping);
+ value = ShowRadioButtonSettingPageL( R_BROWSER_SETTING_SHORTCUT_KEY8,
+ values,
+ value );
+ preferences.SetShortcutKey8CmdL( valueDisplayMapping->At(value) );
+ DisplayShortcutsSettingsL();
+ break;
+ }
+
+ case EWmlSettingsShortCutKey9Cmd:
+ {
+ value = preferences.ShortcutKey9Cmd();
+ // set toolbar values will build values into an array to be displayed to the user
+ // this may mean filtering out some items, so we have to know the mapping between our
+ // fixed array of commands as well as the current value from settings
+ value = SetShortcutKeysValues(values, value, valueDisplayMapping);
+ value = ShowRadioButtonSettingPageL( R_BROWSER_SETTING_SHORTCUT_KEY9,
+ values,
+ value );
+ preferences.SetShortcutKey9CmdL( valueDisplayMapping->At(value) );
+ DisplayShortcutsSettingsL();
+ break;
+ }
+
+ case EWmlSettingsShortCutKey0Cmd:
+ {
+ value = preferences.ShortcutKey0Cmd();
+ // set toolbar values will build values into an array to be displayed to the user
+ // this may mean filtering out some items, so we have to know the mapping between our
+ // fixed array of commands as well as the current value from settings
+ value = SetShortcutKeysValues(values, value, valueDisplayMapping);
+ value = ShowRadioButtonSettingPageL( R_BROWSER_SETTING_SHORTCUT_KEY0,
+ values,
+ value );
+ preferences.SetShortcutKey0CmdL( valueDisplayMapping->At(value) );
+ DisplayShortcutsSettingsL();
+ break;
+ }
+
+ case EWmlSettingsShortCutKeyStarCmd:
+ {
+ value = preferences.ShortcutKeyStarCmd();
+ // set toolbar values will build values into an array to be displayed to the user
+ // this may mean filtering out some items, so we have to know the mapping between our
+ // fixed array of commands as well as the current value from settings
+ value = SetShortcutKeysValues(values, value, valueDisplayMapping);
+ value = ShowRadioButtonSettingPageL( R_BROWSER_SETTING_SHORTCUT_KEYSTAR,
+ values,
+ value );
+ preferences.SetShortcutKeyStarCmdL( valueDisplayMapping->At(value) );
+ DisplayShortcutsSettingsL();
+ break;
+ }
+
+ case EWmlSettingsShortCutKeyHashCmd:
+ {
+ value = preferences.ShortcutKeyHashCmd();
+ // set toolbar values will build values into an array to be displayed to the user
+ // this may mean filtering out some items, so we have to know the mapping between our
+ // fixed array of commands as well as the current value from settings
+ value = SetShortcutKeysValues(values, value, valueDisplayMapping);
+ value = ShowRadioButtonSettingPageL( R_BROWSER_SETTING_SHORTCUT_KEYHASH,
+ values,
+ value );
+ preferences.SetShortcutKeyHashCmdL( valueDisplayMapping->At(value) );
+ DisplayShortcutsSettingsL();
+ break;
+ }
+
+ default:
+ break;
+ }
+ CleanupStack::PopAndDestroy(2); // values, valueDisplayMapping
+ }
+
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::SetToolbarButtonValues
+// -----------------------------------------------------------------------------
+//
+TInt CSettingsContainer::SetToolbarButtonValues(CArrayFixFlat<TInt> *values, TInt value, CArrayFixFlat<TInt> *displaymap)
+ {
+ TInt valueNewMapping = 0;
+
+ for ( TInt i=0 ; i < KToolbarCommandDecodeMatrixCount ; i++ )
+ {
+ TInt stringId = ToolbarCommandDecodeMatrix[i][KToolbarCommandDecodeMatrixStringId];
+
+ if ((stringId == R_BROWSER_SETTING_ROTATE_SCREEN) && (!ApiProvider().Preferences().RotateDisplay()) )
+ { // Rotate Display is not available so don't show it as a toolbar button command
+ continue;
+ }
+
+#ifndef __RSS_FEEDS
+ if (stringId == R_BROWSER_SETTING_SUBSCRIBE_TO_FEEDS)
+ { // Subscribe to Feeds is not available so don't show it as a toolbar button command
+ continue;
+ }
+#endif
+
+ // Disable save page until it's officially supported
+ if (stringId == R_BROWSER_SETTING_SAVE_PAGE )
+ {
+ continue;
+ }
+
+ // make a note at the index within the new array that the current value is at
+ // before appending (Count will then correspond to the index, rather than needing to use
+ // Count() - 1 AFTER we add it
+ if(i == value)
+ {
+ valueNewMapping = displaymap->Count();
+ }
+ displaymap->AppendL( i );
+ values->AppendL( stringId );
+ }
+
+ return valueNewMapping;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::SetShortcutKeysValues
+// -----------------------------------------------------------------------------
+//
+TInt CSettingsContainer::SetShortcutKeysValues(CArrayFixFlat<TInt> *values, TInt value, CArrayFixFlat<TInt> *displaymap)
+ {
+ TInt valueNewMapping = 0;
+
+ for ( TInt i=0 ; i < KShortcutsCommandDecodeMatrixCount ; i++ )
+ {
+
+ TInt stringId = ShortcutsCommandDecodeMatrix[i][KShortcutsCommandDecodeMatrixStringId];
+
+ if ((stringId == R_BROWSER_SETTING_ROTATE_SCREEN) && (!ApiProvider().Preferences().RotateDisplay()) )
+ { // Rotate Display is not available so don't show it as a shortcut key command
+ continue;
+ }
+
+#ifndef __RSS_FEEDS
+ if (stringId == R_BROWSER_SETTING_SUBSCRIBE_TO_FEEDS)
+ { // Subscribe to Feeds is not available so don't show it as a shortcut key command
+ continue;
+ }
+#endif
+
+
+ // Disable save page until it's officially supported
+ if (stringId == R_BROWSER_SETTING_SAVE_PAGE )
+ {
+ continue;
+ }
+
+ // make a note at the index within the new array that the current value is at
+ // before appending (Count will then correspond to the index, rather than needing to use
+ // Count() - 1 AFTER we add it
+ if(i == value)
+ {
+ valueNewMapping = displaymap->Count();
+ }
+
+ displaymap->AppendL( i );
+ values->AppendL(stringId );
+ }
+
+ return valueNewMapping;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::IsSettingModifiable
+// -----------------------------------------------------------------------------
+//
+TBool CSettingsContainer::IsSettingModifiable() const
+ {
+ TBool ret( EFalse );
+
+ switch ( iCurrentSettingCategory )
+ {
+ // Only these setting lists contain items which can be modified
+ case EGeneral:
+ case EPage:
+ case EWebFeeds:
+ case EPrivacy:
+ case EToolbar:
+ case EShortCuts:
+ {
+ ret = ETrue;
+ break;
+ }
+ default:
+ break;
+ }
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::ShowRadioButtonSettingPageL
+// -----------------------------------------------------------------------------
+//
+TInt CSettingsContainer::ShowRadioButtonSettingPageL(
+ TInt aTitle,
+ CArrayFixFlat<TInt>* aValues,
+ TInt aCurrentItem )
+ {
+ // title of the dialog
+ HBufC* title = iCoeEnv->AllocReadResourceLC( aTitle );
+
+ __ASSERT_DEBUG( (aValues != NULL), Util::Panic( Util::EUninitializedData ));
+
+
+ // options array
+ CDesCArrayFlat* values = new( ELeave )CDesCArrayFlat(1);
+ CleanupStack::PushL( values );
+
+ for ( TInt i = aValues->Count() - 1; i >= 0; i-- )
+ {
+ HBufC* value = iCoeEnv->AllocReadResourceLC( aValues->At( i ) );
+ values->AppendL( *value );
+ CleanupStack::PopAndDestroy(); // value
+ }
+
+ // index must be turned upside down, because options list is upside down
+ TInt newItem = aCurrentItem = aValues->Count() - 1 - aCurrentItem;
+
+ // We have everything to create dialog
+ CAknRadioButtonSettingPage* dlg = new ( ELeave )CAknRadioButtonSettingPage(
+ R_RADIO_BUTTON_SETTING_PAGE, newItem, values );
+
+ CleanupStack::PushL( dlg );
+ dlg->SetSettingTextL( *title );
+ //dlg->ConstructL();
+ //dlg->ListBoxControl()->SetCurrentItemIndex( newItem );
+ CleanupStack::Pop(); // dlg
+ iActionCancelled = EFalse;
+ if ( !dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
+ {
+ // Changes confirmed
+ newItem = aCurrentItem;
+ iActionCancelled = ETrue;
+ }
+
+ CleanupStack::PopAndDestroy( 2 ); // title, values
+
+ // index must be re-turned upside down, because options list is upside down
+ return aValues->Count() - 1 - newItem;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::ShowRadioButtonSettingPageL
+// -----------------------------------------------------------------------------
+//
+TBool CSettingsContainer::ShowRadioButtonSettingPageBoolL(
+ TInt aTitle,
+ CArrayFixFlat<TInt>* aValues,
+ TInt* aCurrentItem )
+ {
+ // title of the dialog
+ HBufC* title = iCoeEnv->AllocReadResourceLC( aTitle );
+
+ __ASSERT_DEBUG( (aValues != NULL), Util::Panic( Util::EUninitializedData ));
+ __ASSERT_DEBUG( (aCurrentItem != NULL), Util::Panic( Util::EUninitializedData ));
+
+
+ // options array
+ CDesCArrayFlat* values = new( ELeave )CDesCArrayFlat(1);
+ CleanupStack::PushL( values );
+
+ for ( TInt i = aValues->Count() - 1; i >= 0; i-- )
+ {
+ HBufC* value = iCoeEnv->AllocReadResourceLC( aValues->At( i ) );
+ values->AppendL( *value );
+ CleanupStack::PopAndDestroy(); // value
+ }
+
+ TInt newItem = *aCurrentItem;
+ CAknRadioButtonSettingPage* dlg = new ( ELeave )CAknRadioButtonSettingPage(
+ R_RADIO_BUTTON_SETTING_PAGE, newItem, values );
+
+ CleanupStack::PushL( dlg );
+ dlg->SetSettingTextL( *title );
+ CleanupStack::Pop(); // dlg
+
+ TBool retval = dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged );
+
+ if ( retval ) // OK was selected, store new value
+ {
+ *aCurrentItem = newItem;
+ }
+ CleanupStack::PopAndDestroy( 2 ); // title, values
+ return retval;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::SaveChangesL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::SaveChangesL()
+ {
+ // These settings result in page layout changes, and changes to these
+ // settings should only be relayed once the settings page is closed
+ MPreferences& preferences = ApiProvider().Preferences();
+
+ if ( iFontSize != preferences.FontSize() )
+ {
+ preferences.SetFontSizeL( iFontSize );
+ }
+
+ if ( iEncoding != preferences.Encoding() )
+ {
+ preferences.SetEncodingL( iEncoding );
+ }
+
+ if ( iTextWrap != preferences.TextWrap() )
+ {
+ preferences.SetTextWrapL( iTextWrap );
+ }
+ preferences.FlushSD();
+
+ preferences.NotifyObserversL( EPreferencesDeactivate, TBrCtlDefs::ESettingsUnknown );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::OfferKeyEventL
+// -----------------------------------------------------------------------------
+//
+TKeyResponse CSettingsContainer::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType )
+ {
+ TKeyResponse ret = EKeyWasNotConsumed;
+ TKeyEvent keyEvent(aKeyEvent);
+
+ // Special case for MSK enabled mode - turn MSK KeyUp to MSK KeyEvent to process Settings toggle function
+ // This is what is done in BookmarksContainer::OfferKeyEventL
+ if (( keyEvent.iScanCode == EStdKeyDevice3 ) || (keyEvent.iScanCode == EStdKeyEnter))
+ {
+ if( aType == EEventKeyDown )
+ {
+ iSelectionKeyDownPressed = ETrue;
+ ret = EKeyWasConsumed;
+ }
+ else if( aType == EEventKeyUp )
+ {
+ if( iSelectionKeyDownPressed )
+ {
+ keyEvent.iCode = EKeyOK;
+ ret = EKeyWasNotConsumed;
+ iSelectionKeyDownPressed = EFalse;
+ }
+ else
+ {
+ // long press of Selection key was already processed
+ ret = EKeyWasConsumed;
+ }
+ }
+ }
+
+
+ switch ( keyEvent.iCode )
+ {
+ // Open List Box item
+ case EKeyEnter:
+ {
+ switch ( iSettingIndex->At( iSettingListBox->CurrentItemIndex() ) )
+ {
+ case EWmlSettingsGeneral:
+ case EWmlSettingsPrivacy:
+ case EWmlSettingsPage:
+ case EWmlSettingsWebFeeds:
+ case EWmlSettingsToolbar:
+ case EWmlSettingsShortcuts:
+ {
+ DisplayCorrectSettingCategoryListL();
+ break;
+ }
+
+ // Individual Settings
+ case EWmlSettingsAccesspoint:
+ case EWmlSettingsHomePage:
+ case EWmlSettingsBackList:
+ case EWmlSettingsHttpSecurityWarnings:
+ case EWmlSettingsEcma:
+ case EWmlSettingsScriptLog:
+ case EWmlSettingsDownloadsOpen:
+ case EWmlSettingsAutoLoadContent:
+ case EWmlSettingsFullScreen:
+ case EWmlSettingsPageOverview:
+ case EWmlSettingsMediaVolume:
+ case EWmlSettingsEncoding:
+ case EWmlSettingsPopupBlocking:
+ case EWmlSettingsAutoRefresh:
+ case EWmlSettingsAdaptiveBookmarks:
+ case EWmlSettingsFormDataSaving:
+#ifdef __WIM
+ case EWmlSettingsSaveReceipt:
+#endif
+ case EWmlSettingsCookies:
+ case EWmlSettingsIMEINotification:
+ case EWmlSettingsAutomaticUpdatingAP:
+ case EWmlSettingsAutomaticUpdatingWhileRoaming:
+ case EWmlSettingsUrlSuffix:
+ case EWmlSettingsFontSize:
+ case EWmlSettingsToolbarButton1Cmd:
+ case EWmlSettingsToolbarButton2Cmd:
+ case EWmlSettingsToolbarButton3Cmd:
+ case EWmlSettingsToolbarButton4Cmd:
+ case EWmlSettingsToolbarButton5Cmd:
+ case EWmlSettingsToolbarButton6Cmd:
+ case EWmlSettingsToolbarButton7Cmd:
+ case EWmlSettingsShortCutKey1Cmd:
+ case EWmlSettingsShortCutKey2Cmd:
+ case EWmlSettingsShortCutKey3Cmd:
+ case EWmlSettingsShortCutKey4Cmd:
+ case EWmlSettingsShortCutKey5Cmd:
+ case EWmlSettingsShortCutKey6Cmd:
+ case EWmlSettingsShortCutKey7Cmd:
+ case EWmlSettingsShortCutKey8Cmd:
+ case EWmlSettingsShortCutKey9Cmd:
+ case EWmlSettingsShortCutKey0Cmd:
+ case EWmlSettingsShortCutKeyStarCmd:
+ case EWmlSettingsShortCutKeyHashCmd:
+ {
+ ChangeItemL( ETrue );
+ ret = EKeyWasConsumed;
+ break;
+ }
+ default:
+ break;
+ }
+ break;
+ }
+
+ case EKeyOK:
+ {
+ // MSK command handles the commands - no need for key handling
+ ret = EKeyWasConsumed;
+ break;
+ }
+
+ default:
+ break;
+ }
+
+ if ( iSettingListBox && ( ret == EKeyWasNotConsumed || iSettingListBox ) )
+ {
+ ret = iSettingListBox->OfferKeyEventL( keyEvent, aType );
+ }
+ return ret;
+ }
+
+void CSettingsContainer::HandleListBoxEventL(CEikListBox* aListBox,TListBoxEvent aEventType)
+ {
+ if (iPenEnabled)
+ {
+ if (iSettingListBox && aListBox == iSettingListBox)
+ {
+ switch (aEventType)
+ {
+ //case MEikListBoxObserver::EEventEnterKeyPressed:
+ case MEikListBoxObserver::EEventItemClicked:
+ break;
+ case MEikListBoxObserver::EEventItemDoubleClicked:
+ {
+ TKeyEvent keyEvent;
+ keyEvent.iModifiers = 0;
+ keyEvent.iRepeats = 0;
+ keyEvent.iCode = EKeyDevice3;
+ keyEvent.iScanCode = EStdKeyDevice3;
+ CCoeEnv::Static()->SimulateKeyEventL( keyEvent, EEventKey );
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::CreateItemFromTwoStringsL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::CreateItemFromTwoStringsL(
+ TInt aFirst,
+ TInt aSecond,
+ TBuf<KWmlSettingsItemMaxLength>& aResult )
+ {
+ // Appends two text from resources next to each other
+ aResult.Zero();
+ aResult.Append( KWmlSettingsListBoxItemPrefix );
+ HBufC* first = iCoeEnv->AllocReadResourceLC( aFirst );
+ aResult.Append( first->Des() );
+ CleanupStack::PopAndDestroy(); // first
+ aResult.Append( KWmlSettingsListBoxItemPostfix );
+ HBufC* second = iCoeEnv->AllocReadResourceLC( aSecond );
+ aResult.Append( second->Des() );
+ CleanupStack::PopAndDestroy(); //second
+ }
+
+
+// ----------------------------------------------------------------------------
+// CSettingsContainer::AddEncodingL()
+// ----------------------------------------------------------------------------
+//
+void CSettingsContainer::AddEncodingL( TUint32 aSystemId, TUint32 aResId )
+ {
+ TEncodingStruct encoding;
+
+ encoding.iSystemId = aSystemId;
+ encoding.iResId = aResId;
+
+ iEncodingArray->AppendL( encoding );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::RemoveUnsupportedEncodingsL()
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::RemoveUnsupportedEncodingsL()
+ {
+ RFs fsSession;
+ User::LeaveIfError( fsSession.Connect() );
+ CleanupClosePushL<RFs>( fsSession );
+
+ CCnvCharacterSetConverter* charConv;
+ charConv = CCnvCharacterSetConverter::NewLC();
+
+ CArrayFix<CCnvCharacterSetConverter::SCharacterSet>* charSets;
+ charSets = charConv->CreateArrayOfCharacterSetsAvailableLC(fsSession);
+
+ TInt lastIndex = iEncodingArray->Count()-1;
+
+ for ( int i = lastIndex; i >= 0; i-- )
+ {
+ TBool remove = ETrue;
+ TEncodingStruct encoding = iEncodingArray->At(i);
+ for ( int j = 0; j < charSets->Count(); j++ )
+ {
+ TUint32 identifier = charSets->At(j).Identifier();
+
+ if ( identifier == encoding.iSystemId )
+ {
+ remove = EFalse;
+ break;
+ }
+ }
+
+ if ( remove &&
+ ( encoding.iSystemId != KCharacterSetIdentifierAutomatic ) )
+ {
+ iEncodingArray->Delete(i);
+ }
+ }
+
+ fsSession.Close();
+ CleanupStack::PopAndDestroy(3); // charConv, charSets, fsSession
+ }
+
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::CreateEncodingArrayL()
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::CreateEncodingArrayL()
+ {
+ AddEncodingL( KCharacterSetIdentifierGb2312, R_WMLBROWSER_SETTINGS_ENCODING_GB2312 );
+ AddEncodingL( KCharacterSetIdentifierIso88591, R_WMLBROWSER_SETTINGS_ENCODING_ISO8859_1 );
+ AddEncodingL( KCharacterSetIdentifierBig5, R_WMLBROWSER_SETTINGS_ENCODING_BIG5 );
+ AddEncodingL( KCharacterSetIdentifierUtf8, R_WMLBROWSER_SETTINGS_ENCODING_UTF8 );
+ AddEncodingL( KCharacterSetIdentifierIso88592, R_WMLBROWSER_SETTINGS_ENCODING_ISO8859_2 );
+ AddEncodingL( KCharacterSetIdentifierIso88594, R_WMLBROWSER_SETTINGS_ENCODING_ISO8859_4 );
+ AddEncodingL( KCharacterSetIdentifierIso88595, R_WMLBROWSER_SETTINGS_ENCODING_ISO8859_5 );
+ AddEncodingL( KCharacterSetIdentifierIso88597, R_WMLBROWSER_SETTINGS_ENCODING_ISO8859_7 );
+ AddEncodingL( KCharacterSetIdentifierIso88599, R_WMLBROWSER_SETTINGS_ENCODING_ISO8859_9 );
+ AddEncodingL( KCharacterSetIdentifierIso88598, R_WMLBROWSER_SETTINGS_ENCODING_ISO8859_8 );
+ AddEncodingL( KCharacterSetIdentifierIso88596, R_WMLBROWSER_SETTINGS_ENCODING_ISO8859_6 );
+ AddEncodingL( KCharacterSetIdentifierWindows1256, R_WMLBROWSER_SETTINGS_ENCODING_WINDOWS_1256 );
+ AddEncodingL( KCharacterSetIdentifierWindows1255, R_WMLBROWSER_SETTINGS_ENCODING_WINDOWS_1255 );
+ AddEncodingL( KCharacterSetIdentifierWindows1250, R_WMLBROWSER_SETTINGS_ENCODING_WINDOWS_1250 );
+ AddEncodingL( KCharacterSetIdentifierWindows1251, R_WMLBROWSER_SETTINGS_ENCODING_WINDOWS_1251 );
+ AddEncodingL( KCharacterSetIdentifierWindows1253, R_WMLBROWSER_SETTINGS_ENCODING_WINDOWS_1253 );
+ AddEncodingL( KCharacterSetIdentifierWindows1254, R_WMLBROWSER_SETTINGS_ENCODING_WINDOWS_1254 );
+ AddEncodingL( KCharacterSetIdentifierWindows1257, R_WMLBROWSER_SETTINGS_ENCODING_WINDOWS_1257 );
+ AddEncodingL( KCharacterSetIdentifierWindows1258, R_WMLBROWSER_SETTINGS_ENCODING_WINDOWS_1258 );
+ AddEncodingL( KCharacterSetIdentifierTis620, R_WMLBROWSER_SETTINGS_ENCODING_TIS_620 ); // Thai
+ AddEncodingL( KCharacterSetIdentifierWindows874, R_WMLBROWSER_SETTINGS_ENCODING_WINDOWS_874 ); // Thai
+ AddEncodingL( KCharacterSetIdentifierEucJpPacked, R_WMLBROWSER_SETTINGS_ENCODING_EUC_JP );
+ AddEncodingL( KCharacterSetIdentifierJis, R_WMLBROWSER_SETTINGS_ENCODING_ISO_2022_JP );
+ AddEncodingL( KCharacterSetIdentifierShiftJis, R_WMLBROWSER_SETTINGS_ENCODING_SHIFT_JIS );
+ AddEncodingL( KCharacterSetIdentifierKoi8_r, R_WMLBROWSER_SETTINGS_ENCODING_KOI8_R );
+ AddEncodingL( KCharacterSetIdentifierKoi8_u, R_WMLBROWSER_SETTINGS_ENCODING_KOI8_U );
+ AddEncodingL( KCharacterSetIdentifierIscii, R_WMLBROWSER_SETTINGS_ENCODING_ISCII);
+ AddEncodingL( KCharacterSetIdentifierAutomatic, R_WMLBROWSER_SETTINGS_ENCODING_AUTOMATIC );
+ }
+
+#ifdef __SERIES60_HELP
+// -----------------------------------------------------------------------------
+// CSettingsContainer::GetHelpContext()
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::GetHelpContext( TCoeHelpContext& aContext ) const
+ {
+ aContext.iMajor = KUidBrowserApplication;
+ /*
+ context is dependent on what Category we are in
+ enum TSettingCategory
+ {
+ EMain = 0,
+ EGeneral,
+ EPrivacy,
+ EPage,
+ EWebFeeds,
+ EToolbar,
+ EShortCuts,
+ ENone
+ };
+ */
+ switch ( iCurrentSettingCategory )
+ {
+ case EMain:
+ aContext.iContext = KOSS_HLP_SETTINGS_FOLDERS;
+ break;
+ case EGeneral:
+ aContext.iContext = KOSS_HLP_SETTINGS_GENERAL;
+ break;
+ case EPrivacy:
+ aContext.iContext = KOSS_HLP_SETTINGS_PRIVACY;
+ break;
+ case EPage:
+ aContext.iContext = KOSS_HLP_SETTINGS_PAGE;
+ break;
+ case EWebFeeds:
+ aContext.iContext = KOSS_HLP_SETTINGS_RSS;
+ break;
+ case ENone:
+ aContext.iContext = KOSS_HLP_SETTINGS_FOLDERS;
+ break;
+ default:
+ aContext.iContext = KOSS_HLP_SETTINGS_FOLDERS;
+ break;
+
+
+ }
+
+ }
+#endif // __SERIES60_HELP
+
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::MapCurrentItem
+// -----------------------------------------------------------------------------
+//
+TInt CSettingsContainer::MapCurrentItem( TUint aCurrentItem ) const
+ {
+ return iSettingIndex->At( aCurrentItem );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::CountComponentControls
+// -----------------------------------------------------------------------------
+//
+TInt CSettingsContainer::CountComponentControls() const
+ {
+ return iSettingListBox ? 1 : 0;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::ComponentControl
+// -----------------------------------------------------------------------------
+//
+CCoeControl* CSettingsContainer::ComponentControl( TInt aIndex ) const
+ {
+ return ( aIndex ? NULL : iSettingListBox );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::SizeChanged
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::SizeChanged()
+ {
+ if ( iSettingListBox )
+ {
+ iSettingListBox->SetRect( Rect() );
+ }
+ }
+
+
+// ----------------------------------------------------------------------------
+// CSettingsContainer::FocusChanged
+// ----------------------------------------------------------------------------
+//
+void CSettingsContainer::FocusChanged( TDrawNow aDrawNow )
+ {
+ if ( iSettingListBox && iSettingListBox->IsVisible() )
+ {
+ iSettingListBox->SetFocus( IsFocused(), aDrawNow );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::HandleResourceChange
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::HandleResourceChange( TInt aType )
+ {
+ if ( iSettingListBox )
+ {
+ iSettingListBox->HandleResourceChange( aType );
+ }
+
+ if (aType == KEikDynamicLayoutVariantSwitch)
+ {
+ TRect rect;
+ if (AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, rect))
+ {
+ SetRect(rect);
+ }
+ DrawDeferred();
+ }
+
+ }
+
+// ---------------------------------------------------------
+// CSettingsContainer::ShowFormDataDeleteAllQueryDialogL
+// ---------------------------------------------------------
+//
+void CSettingsContainer::ShowFormDataDeleteAllQueryDialogL( )
+ {
+ CAknQueryDialog* dlg = new (ELeave) CAknQueryDialog(CAknQueryDialog::EConfirmationTone);
+ HBufC* deleteQuery = StringLoader::LoadLC(R_WMLBROWSER_SETTINGS_FORM_DATA_DELETE_ALL);
+ dlg->SetPromptL(*deleteQuery);
+ dlg->PrepareLC( R_SETTINGS_QUERY_LINES);
+ TInt ret = dlg->RunLD();
+ if( ret == EAknSoftkeyYes )
+ {
+ // call brctl to clear data
+ CBrowserAppUi::Static()->BrCtlInterface().HandleCommandL((TInt)TBrCtlDefs::ECommandIdBase + (TInt)TBrCtlDefs::ECommandClearAutoFormFillData);
+ CBrowserAppUi::Static()->BrCtlInterface().HandleCommandL((TInt)TBrCtlDefs::ECommandIdBase + (TInt)TBrCtlDefs::ECommandClearAutoFormFillPasswordData);
+ }
+ CleanupStack::PopAndDestroy(1); // deleteQuery
+ }
+
+// ---------------------------------------------------------
+// CSettingsContainer::ShowFormDataDeletePasswordQueryDialogL
+// ---------------------------------------------------------
+//
+void CSettingsContainer::ShowFormDataDeletePasswordQueryDialogL( )
+ {
+ CAknQueryDialog* dlg = new (ELeave) CAknQueryDialog(CAknQueryDialog::EConfirmationTone);
+ HBufC* deleteQuery = StringLoader::LoadLC(R_WMLBROWSER_SETTINGS_FORM_DATA_DELETE_PASSWORD);
+ dlg->SetPromptL(*deleteQuery);
+ dlg->PrepareLC( R_SETTINGS_QUERY_LINES);
+ TInt ret = dlg->RunLD();
+ if( ret == EAknSoftkeyYes )
+ {
+ // call brctl to clear data
+ CBrowserAppUi::Static()->BrCtlInterface().HandleCommandL((TInt)TBrCtlDefs::ECommandIdBase + (TInt)TBrCtlDefs::ECommandClearAutoFormFillPasswordData);
+ }
+ CleanupStack::PopAndDestroy(1); // deleteQuery
+ }
+
+// ---------------------------------------------------------
+// CSettingsContainer::SelectUserDefinedAPL
+// ---------------------------------------------------------
+//
+void CSettingsContainer::SelectUserDefinedAPL( TUint32& id )
+ {
+ LOG_ENTERFN( "CSettingsContainer::SelectUserDefinedAPL" );
+
+ BROWSER_LOG( ( _L( "CApSettingsHandler()" ) ) );
+ CApSettingsHandler *ApUi = CApSettingsHandler::NewLC(
+ ETrue,
+ EApSettingsSelListIsPopUp,
+ EApSettingsSelMenuSelectNormal,
+ KEApIspTypeAll,
+ EApBearerTypeAll,
+ KEApSortNameAscending,
+ EIPv4 | EIPv6
+ );
+ BROWSER_LOG( ( _L( "EWmlSettingsAutomaticUpdatingAP RunSettingsL()" ) ) );
+ TInt ret = ApUi->RunSettingsL( id, id );
+ CleanupStack::PopAndDestroy( ApUi ); //ApUi
+ if ( ret & KApUiEventExitRequested ) // & because it is a bit-mask...
+ {
+ CBrowserAppUi::Static()->ExitBrowser( EFalse );
+ }
+
+ CApSelect* ApSel = CApSelect::NewLC(
+ iApiProvider.CommsModel().CommsDb(),
+ KEApIspTypeAll, //KEApIspTypeWAPMandatory,
+ EApBearerTypeAll,
+ KEApSortNameAscending,
+ EIPv4 | EIPv6 );
+ TInt apSelCount = ApSel->Count();
+ BROWSER_LOG( ( _L( " ApSel->Count(): %d" ), apSelCount ) );
+ CleanupStack::PopAndDestroy( ApSel ); //ApSel
+
+ CApUtils* au = CApUtils::NewLC( iApiProvider.CommsModel().CommsDb() );
+ TBool apExist = au->WapApExistsL( id );
+ CleanupStack::PopAndDestroy( au ); // au
+
+ if( ( 0 == apSelCount ) || ( EFalse == apExist ) )
+ {
+ id = KWmlNoDefaultAccessPoint;
+ }
+ }
+
+// End of File