/*
* 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 == -1 )
{
// 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)
{
TKeyResponse ret = EKeyWasNotConsumed;
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 );
ret = EKeyWasConsumed;
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