diff -r 6385c4c93049 -r 8e6fa1719340 browserui/browser/SettingsInc/SettingsContainer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browserui/browser/SettingsInc/SettingsContainer.h Wed Sep 01 12:31:04 2010 +0100 @@ -0,0 +1,462 @@ +/* +* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of 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 +* +*/ + + +#ifndef SETTINGS_CONTAINER_H +#define SETTINGS_CONTAINER_H + +// INCLUDE FILES +#include +#include +#include + +// CONSTANTS +const TInt KWmlSettingsIndexNone = -1; +const TInt KWmlSettingsItemMaxLength = 100; + +// FORWARD DECLARATION +class MApiProvider; +class CAknNavigationDecorator; +class CAknSettingStyleListBox; + + +struct TEncodingStruct + { + TUint32 iSystemId; // System id of the encoding (CHARCONV.h) + TUint32 iResId; // Resource string id + }; + +// CLASS DECLARATION + +/** +* Container of the settings view +* @since 1.2 +*/ +class CSettingsContainer : public CCoeControl, public MEikListBoxObserver + { + public: // construction, destruction + + /** + * Two-phased constructor. + * @since 1.2 + * @param aRect Rectangle. + * @param aPreferences Preferences. + * @param aCommsModel Comms model. + */ + static CSettingsContainer* NewLC( + const TRect& aRect, + MApiProvider& aApiProvider, + MObjectProvider& aMopParent + ); + + /** + * Two-phased constructor. + * @since 1.2 + * @param aRect Rectangle. + * @param aPreferences Preferences. + * @param aCommsModel Comms model. + */ + static CSettingsContainer* NewL( + const TRect& aRect, + MApiProvider& aApiProvider, + MObjectProvider& aMopParent + ); + + /** + * Destructor. + */ + virtual ~CSettingsContainer(); + + private: // constructor + + /** + * Constructor. + * @param aPreferences Preferences. + * @param aCommsModel Comms model. + */ + CSettingsContainer + ( MApiProvider& aApiProvider, MObjectProvider& aMopParent ); + + /** + * By default constructor is private. + */ + void ConstructL( const TRect& aRect ); + + /** + * Inherited functions + */ + public: // from CCoeControl + + /** + * Count component controls. + * @since 1.2 + * @return Number of component controls. + */ + virtual TInt CountComponentControls() const; + + /** + * Handles focus changing + * @param aDrawNow + */ + void FocusChanged( TDrawNow aDrawNow ); + + /** + * Handle resource change. + * @param aType Event type. + */ + void HandleResourceChange( TInt aType ); + + + /** + * Get a component control by index. + * @since 1.2 + * @param aIndex Index of component control to be returned. + * @return Component control or NULL. + */ + virtual CCoeControl* ComponentControl( TInt aIndex ) const; + + /** + * Handle size change, lay out and draw components. + * @since 1.2 + */ + virtual void SizeChanged(); + + /** + * Handle key event. Forwards all key events to the listbox, if present. + * @since 1.2 + * @param aKeyEvent The key event. + * @param aType Key event type. + * @return Response (was the key event consumed?). + */ + virtual TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); + + /** + * HandleListBoxEventL + * From CCoeControl + * + */ + void HandleListBoxEventL(CEikListBox* aListBox,TListBoxEvent aEventType); + + /** + * HandleGainingForegroundL + * Handles Foreground Event. + */ + void HandleGainingForegroundL(); + + /** + * New functions + */ + public: + + /** + * Handles selection key or menu command to change value of an item. + * @since 1.2 + */ + void ChangeItemL( TBool aSelectKeyWasPressed ); + + MApiProvider& ApiProvider() { return iApiProvider; } + + /** + * Opens the appropriate setting list e.g. Page + * @since 3.1 + */ + void DisplayCorrectSettingCategoryListL(); + + /** + * Closes the current setting list, if the main list, + * then leaves settings + * @return ETrue if settings lists are closed EFalse if still open + * @since 3.1 + */ + TBool CloseSettingsListL(); + + + /** + * Checks for errors in settings values + * @return ETrue if settings values are set incorrectly + * @since 5.0 + */ + TBool SettingsError(); + + + /** + * Indicates if a setting item is modifiable + * + * @return TInt + * @since 3.1 + */ + TBool IsSettingModifiable() const; + + + /** + * Saves changes made by the user to the ini file + * @since 1.2 + */ + void SaveChangesL(); + + + + /** + * Shows the main setting categories in a list box + * @since 3.1 + */ + void DisplaySettingCategoriesL(); + + void DisplayGeneralSettingsL(); + void DisplayPageSettingsL(); + void DisplayPrivacySettingsL(); + void DisplayWebFeedsSettingsL(); + void DisplayToolbarSettingsL(); + void DisplayShortcutsSettingsL(); + + /** + * New functions + */ + private: + TInt SetToolbarButtonValues(CArrayFixFlat *values, TInt value, CArrayFixFlat *displaymap); + TInt SetShortcutKeysValues(CArrayFixFlat *values, TInt value, CArrayFixFlat *displaymap); + + void AddCategoryListBoxItemL( TInt aResourceId, CDesCArray& aList ); + void ClearListBoxContentL(); + void StoreListBoxIndexL(); + void RestoreListBoxIndexL(); + + // Methods for adding settings to the settings lists + + //--------------------------------------------------------------------- + // General Settings + void AppendDefaultAccessPointL( CDesCArray*& aItemArray, + TBuf& aItemText ); + + void AppendHomePageL( CDesCArray*& aItemArray, + TBuf& aItemText ); + + void AppendPageOverviewL( CDesCArray*& aItemArray, + TBuf& aItemText ); + + void AppendBackListL( CDesCArray*& aItemArray, + TBuf& aItemText ); + void AppendURLSuffixListL( CDesCArray*& aItemArray, + TBuf& aItemText ); + void AppendHttpSecurityWarningsL( CDesCArray*& aItemArray, + TBuf& aItemText ); + + void AppendEcmaL( CDesCArray*& aItemArray, + TBuf& aItemText ); + + void AppendScriptLogL( CDesCArray*& aItemArray, + TBuf& aItemText ); + + void AppendDownloadsOpenL( CDesCArray*& aItemArray, + TBuf& aItemText ); + + void AppendSearchProviderL( CDesCArray*& aItemArray, + TBuf& aItemText ); + //--------------------------------------------------------------------- + // Page Settings + void AppendAutoLoadContentL( CDesCArray*& aItemArray, + TBuf& aItemText ); + + void AppendAutoFullScreenL( CDesCArray*& aItemArray, + TBuf& aItemText ); + + void AppendAutoMediaVolumeL( CDesCArray*& aItemArray, + TBuf& aItemText ); + + void AppendEncodingL( CDesCArray*& aItemArray, + TBuf& aItemText ); + + void AppendPopupBlockingL( CDesCArray*& aItemArray, + TBuf& aItemText ); + + void AppendAutoRefreshL( CDesCArray*& aItemArray, + TBuf& aItemText ); + + void AppendFontSizeL( CDesCArray*& aItemArray, + TBuf& aItemText ); + + TInt GetFontSizeString(); + + + //--------------------------------------------------------------------- + // Toolbar Settings + void AppendToolbarOnOffL( CDesCArray*& aItemArray, + TBuf& aItemText ); + + void AppendToolbarButtonsL( CDesCArray*& aItemArray, + TBuf& aItemText ); + + void AppendShortcutKeysL( CDesCArray*& aItemArray, + TBuf& aItemText ); + + //--------------------------------------------------------------------- + // Privacy Settings + void AppendAdaptiveBookmarksL( CDesCArray*& aItemArray, + TBuf& aItemText ); + + void AppendFormDataSavingL( CDesCArray*& aItemArray, + TBuf& aItemText ); + + void AppendCookiesL( CDesCArray*& aItemArray, + TBuf& aItemText ); + + void AppendIMEIL( CDesCArray*& aItemArray, + TBuf& aItemText ); + + //--------------------------------------------------------------------- + // Web feeds Settings + void AppendAutomaticUpdatingAPL( CDesCArray*& aItemArray, + TBuf& aItemText ); + + void AppendAutomaticUpdatingWhileRoamingL( CDesCArray*& aItemArray, + TBuf& aItemText ); + //--------------------------------------------------------------------- + // + /** + * Pops up a custom dialog to allow user to set setting items + */ + TInt ShowRadioButtonSettingPageL( TInt aTitle, + CArrayFixFlat* aValues, + TInt aCurrentItem ); + + + /** + * Pops up a custom dialog to allow user to set setting items + */ + TBool ShowRadioButtonSettingPageBoolL( TInt aTitle, + CArrayFixFlat* aValues, + TInt* aCurrentItem ); + + /** + * Appends two text from resources to display it on lisbox + */ + void CreateItemFromTwoStringsL( + TInt aFirst, + TInt aSecond, + TBuf& aResult); + + TInt MapCurrentItem( TUint aCurrentItem ) const; + + /** + * Gets encoding information as parameters. + * Creates an encoding object and add the new object to iEncodingArray. + */ + void AddEncodingL( TUint32 aSystemId, TUint32 aResId ); + + /** + * Add encodings here. + * To add or remove encodings modify this function! + */ + void CreateEncodingArrayL(); + + /** + * Check if the added encodings are supported by the system. Removes those that are not. + */ + void RemoveUnsupportedEncodingsL(); + + /** + * Notify BrowserControl that a setting has been changed in the UI + */ + void NotifySettingChanged( TInt aSettingItem, TInt aSettingValue ); + + /** + * Query user to delete Form data plus Password data + */ + void ShowFormDataDeleteAllQueryDialogL( ); + /** + * Query user to delete Form Password data + */ + void ShowFormDataDeletePasswordQueryDialogL( ); + + /** + * Query user to select fromm user defined AP + */ + void SelectUserDefinedAPL( TUint32& id ); + + /** + * Launch Search Application Settings View. + */ + void RunSearchSettingsL(); + +#ifdef __SERIES60_HELP + /** + * Get help context for the control. + * @param aContext The context that is filled in. + * @return None. + */ + void GetHelpContext( TCoeHelpContext& aContext ) const; + +#endif // __SERIES60_HELP + + private: + + // Media Volume indices + enum TMediaVolumeIndices + { + EVolumeMute = 0, + EVolumeLevel1, + EVolumeLevel2, + EVolumeLevel3, + EVolumeLevel4 + }; + + enum TSettingCategory + { + EMain = 0, + EGeneral, + EPrivacy, + EPage, + EWebFeeds, + EToolbar, + EShortCuts, + ENone + }; + + private: // members + + MApiProvider& iApiProvider; // not owned + CAknNavigationDecorator* iNaviDecorator; // not owned + + // Settings List Box related members + CAknSettingStyleListBox* iSettingListBox; // OWNED + CArrayFixFlat* iSettingIndex; // OWNED + TInt iMainSettingCurrentIndex; // hold the most recent index in the main setting list box + TInt iMainSettingTopPosIndex; + TInt iSubSettingCurrentIndex; // hold the most recent index in the sub setting list boxes + TInt iSubSettingTopPosIndex; + TBool iActionCancelled; + TBool iPenEnabled; // stores platform pen enabled flag value + + TSettingCategory iCurrentSettingCategory; + + // The settings are only updated when we leave the settings + // view to avoid unnecessary redraws + TInt iFontSize; + TUint32 iEncoding; + TBool iTextWrap; + + // Holds a 'list' of all encodings + CArrayFixFlat* iEncodingArray; // OWNED + TBool iSelectionKeyDownPressed; + + TBool iFlashPluginPresent; + }; + +#endif // SETTINGS_CONTAINER_H + +// End of File