browserui/browser/SettingsSrc/SettingsContainer.cpp
branchRCL_3
changeset 65 8e6fa1719340
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browserui/browser/SettingsSrc/SettingsContainer.cpp	Wed Sep 01 12:31:04 2010 +0100
@@ -0,0 +1,3829 @@
+/*
+* 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;
+const TInt KMaxTitleLength = 512;
+
+
+_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
+    #if !defined(BRDO_OCC_ENABLED_FF)
+    // Web feeds Category item
+    if (!ApiProvider().IsEmbeddedModeOn())
+        {
+        AddCategoryListBoxItemL( R_SETTINGS_CATEGORY_WEBFEEDS, *itemArray );
+        iSettingIndex->AppendL( EWmlSettingsWebFeeds );
+        }
+    #endif
+#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() )
+        {
+        //Access point setting is not required if OCC is enabled
+        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 );
+        }
+    
+    if( ApiProvider().Preferences().SearchFeature() )
+        {
+        AppendSearchProviderL( 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:
+            {
+            #if !defined(BRDO_BROWSER_50_FF)        
+                CreateItemFromTwoStringsL( 
+                R_WMLBROWSER_SETTINGS_DEFAULT_AP, 
+                R_WML_SETTINGS_ACCESS_POINT_ALWAYS_ASK, 
+                aItemText );
+            #else
+                CreateItemFromTwoStringsL( 
+                R_WMLBROWSER_SETTINGS_DEFAULT_AP, 
+                R_WML_SETTINGS_ACCESS_POINT_ASK_WHEN_NEEDED, 
+                aItemText );
+            #endif //BRDO_BROWSER_50_FF
+            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;
+                    }   
+                }
+            #if !defined(BRDO_BROWSER_50_FF)
+                HBufC* name = iCoeEnv->AllocReadResourceLC( R_WML_SETTINGS_ACCESS_POINT_ALWAYS_ASK );
+            #else
+                HBufC* name = iCoeEnv->AllocReadResourceLC( R_WML_SETTINGS_ACCESS_POINT_ASK_WHEN_NEEDED );
+            #endif // BRDO_BROWSER_50_FF
+            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
+                {
+                #if !defined(BRDO_BROWSER_50_FF)
+                    HBufC* name = iCoeEnv->AllocReadResourceLC( R_WML_SETTINGS_ACCESS_POINT_ALWAYS_ASK );
+                #else
+                    HBufC* name = iCoeEnv->AllocReadResourceLC( R_WML_SETTINGS_ACCESS_POINT_ASK_WHEN_NEEDED );
+                #endif // BRDO_BROWSER_50_FF
+                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::AppendSearchProviderL
+// -----------------------------------------------------------------------------
+void CSettingsContainer::AppendSearchProviderL(
+                                                      CDesCArray*& aItemArray,
+                                                      TBuf<KWmlSettingsItemMaxLength>& aItemText)
+    {
+    aItemText.Zero();
+    aItemText.Append( KWmlSettingsListBoxItemPrefix );
+    HBufC* settingTitle = iCoeEnv->AllocReadResourceLC( R_BROWSERS_SETT_WEB_SEARCH_PROVIDER );
+    aItemText.Append( *settingTitle );
+    CleanupStack::PopAndDestroy(); // settingTitle
+    aItemText.Append( KWmlSettingsListBoxItemPostfix );
+    
+    HBufC* searchProvider = HBufC::NewLC( KMaxTitleLength );
+    TPtr searchProviderPtr = searchProvider->Des();
+    
+    ApiProvider().Preferences().GetStringValueL( KBrowserSearchProviderTitle,
+            KMaxTitleLength , searchProviderPtr);
+    
+    if(searchProvider->Compare(KNullDesC()) == 0)
+        {
+        CleanupStack::PopAndDestroy(searchProvider);
+        searchProvider = iCoeEnv->AllocReadResourceLC( R_IS_LABEL_NOT_SELECTED );
+        }
+    
+    aItemText.Append( *searchProvider );
+    CleanupStack::PopAndDestroy( searchProvider );
+    
+    aItemArray->AppendL( aItemText );
+    iSettingIndex->AppendL( EWmlSettingsSearchProvider );
+    }
+
+// -----------------------------------------------------------------------------
+// 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 );
+    
+    if ( id == KWmlNoDefaultAccessPoint )
+        {
+        // If user hasn't selected an AP, show a blank list entry. Once user
+        // selects an AP, it will be displayed.  Note: The browser's default AP
+        // is used, until user makes a different AP selection.
+        aItemText.Append( KNullDesC );
+        }
+    else
+        {
+        // User (or configuration) has already selected an AP, display its name
+        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 EWmlSettingsSearchProvider:
+            {
+            RunSearchSettingsL();
+            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:
+                case EWmlSettingsSearchProvider:
+                {
+                    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;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::HandleListBoxEventL
+// -----------------------------------------------------------------------------
+//
+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 = EKeyEnter;
+                    keyEvent.iScanCode = EStdKeyEnter;
+                    CCoeEnv::Static()->SimulateKeyEventL( keyEvent, EEventKey );
+                    }
+                    break;
+#ifdef BRDO_SINGLE_CLICK_ENABLED_FF					
+                case MEikListBoxObserver::EEventItemSingleClicked:
+
+                    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:
+                        case EWmlSettingsSearchProvider:
+                        {
+                            ChangeItemL( ETrue );
+                            break;
+                        }
+                        default:
+                            break;
+                        }	
+#endif					
+                default:
+                    break;
+                }
+            }
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::HandleGainingForegroundL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::HandleGainingForegroundL()
+    {
+    switch(iCurrentSettingCategory)
+        {
+        case EGeneral:
+            DisplayGeneralSettingsL();
+            break;
+        default: // do nothing
+            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_temp,			R_WMLBROWSER_SETTINGS_ENCODING_ISCII);
+    AddEncodingL( KCharacterSetIdentifierEucKr,         R_WMLBROWSER_SETTINGS_ENCODING_EUC_KR );
+    AddEncodingL( KCharacterSetIdentifierKsc5601_temp,       R_WMLBROWSER_SETTINGS_ENCODING_KSC_5601 );
+    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;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CSettingsContainer::RunSearchSettingsL
+// -----------------------------------------------------------------------------
+//
+void CSettingsContainer::RunSearchSettingsL()
+    {
+    // Get Search application UID from CenRep 
+    TInt id = ApiProvider().Preferences().GetIntValue( KBrowserSearchAppUid );
+    TUid searchAppId( TUid::Uid( id ) );
+    id = ApiProvider().Preferences().GetIntValue( KBrowserSearchProviderSettingViewId );
+    TUid settingViewId( TUid::Uid( id ) );
+    TVwsViewId viewToOpen(searchAppId, settingViewId);
+    CBrowserAppUi::Static()->ActivateViewL(viewToOpen);
+    } 
+
+// End of File