diff -r 6385c4c93049 -r 8e6fa1719340 pushmtm/MtmUiInc/PushSettingsDialog.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pushmtm/MtmUiInc/PushSettingsDialog.h Wed Sep 01 12:31:04 2010 +0100 @@ -0,0 +1,271 @@ +/* +* 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: Class definition of CPushSettingsDialog. +* +*/ + + + +#ifndef PUSHSETTINGSDIALOG_H +#define PUSHSETTINGSDIALOG_H + +// INCLUDES + +#include "PushMtmSettings.h" +#include +#include +#include + +// FORWARD DECLARATIONS + +class CMsvSession; +class CAknSettingStyleListBox; +class CEikImage; + +// CLASS DECLARATION + +/** +* Avkon environment is required. +* Waiting dialog. +* Usage. +* #include "PushSettingsDialog.h" +* CPushSettingsDialog* dlg = new (ELeave) CPushSettingsDialog; +* dlg->ExecuteLD( msvSession ); +* +* Note that we could use CMuiuSettingsArray defined in MuiuSettingsArray.h, +* but it seems that our PI list handling (Ignore services from) makes +* this dialog so complicated, that it is better not to use CMuiuSettingsArray, +* which would make the desing more complicated, because it does not support +* such functionality that PI list handling requires. +*/ +class CPushSettingsDialog : public CAknDialog, + public MEikListBoxObserver + { + public: // Constructors + + /** + * Constructor. + * @param aMsvSession Message Server session. + */ + CPushSettingsDialog( CMsvSession& aMsvSession ); + + public: // New functions + + /** + * Execute the dialog with this member. + * @return None. + */ + void ExecuteLD(); + + private: // New data types + + enum TSettingType + { + EServiceReception, ///< On or Off + EServiceLoadingType ///< Automatic or Manual + }; + + private: // Constructors and destructor + + /** + * Symbian OS constructor. + */ + void ConstructL(); + + /** + * Destructor. + */ + ~CPushSettingsDialog(); + + private: // New functions + + /** + * Set up title text. + * @return none + */ + void SetUpStatusPaneL(); + + /** + * Restore the previous title text. + * @return none + */ + void RestoreStatusPaneL(); + + /** + * Construct model. + * @return none + */ + void ConstructModelL(); + + /** + * Update setting page model. + * @return none + */ + void UpdateSettingListBoxModelL(); + + /** + * Update setting page view. + * @return none + */ + void UpdateSettingListBoxViewL() const; + + /** + * Apply changes of the model. + * @return None. + */ + void ApplyModelChangesL(); + + /** + * Show radio button setting page for all + * items except for EIgnoreServicesFrom. + * @return none + */ + void ShowRadioButtonSettingPageL( const TSettingType aSettingType ); + + /** + * Show the confirmation dialog about the changing of the service loading + * type from 'manual' to 'automatic'. + * @return ETrue if the user confirmed. EFalse otherwise. + */ + TBool ShowServiceLoadingTypeConfirmationL() const; + + /** + * Change current setting. No setting page usage is preferred. + * @return none + */ + void ChangeCurrentSettingWithoutSettingPageL(); + + /** + * Change current setting with the usage of setting page. + * @return none + */ + void ChangeCurrentSettingL(); + + /** + * Append an item to the list box' item text array. + * @param aSettingType Setting item type. + * @param aTitleResId Title resource id. If it is KErrNotFound, + * then aTitleText is used. + * @param aValueResId Value resource id. If it is KErrNotFound, + * then aValueText is used. + * @param aTitleText See above. + * @param aValueText See above. + * @return none + */ + void ConstructAndAppendItemTextL + ( const TSettingType aSettingType, + const TInt aTitleResId, const TInt aValueResId, + const TDesC& aTitleText = KNullDesC(), + const TDesC& aValueText = KNullDesC() ); + + /** + * Construct the title text for a setting. + * param aSettingType Type of the setting. + * @return The constructed title text. + */ + HBufC* ConstructSettingTitleL( const TSettingType aSettingType ) const; + + /** + * Get the resource ids of those strings that a given binary setting can have. + * Note. The following functions have strong relations: + * ConstructSettingValueArray, CurrentlySelectedSettingValueResId, + * ConstructSettingValueArrayL, UpdateSettingL! + * param aSettingType Type of the setting. + * param aVal1ResId The id of the first value string. + * param aVal2ResId The id of the second value string. + * @return None. + */ + void ConstructSettingValueArray + ( const TSettingType aSettingType, TInt& aVal1ResId, TInt& aVal2ResId ) const; + + /** + * Get the resource ids of the currently set value string. + * Note. The following functions have strong relations: + * ConstructSettingValueArray, CurrentlySelectedSettingValueResId, + * ConstructSettingValueArrayL, UpdateSettingL! + * param aSettingType Type of the setting. + * param aIndex The index of this currently selected value is also returned. + * @return Resource id. + */ + TInt CurrentlySelectedSettingValueResId + ( const TSettingType aSettingType, TInt& aIndex ) const; + + /** + * Get the value strings of those strings that a given binary setting can have. + * Note. The following functions have strong relations: + * ConstructSettingValueArray, CurrentlySelectedSettingValueResId, + * ConstructSettingValueArrayL, UpdateSettingL! + * param aSettingType Type of the setting. + * param aIndex The index of this currently selected value is also returned. + * @return The value array. + */ + CDesCArrayFlat* ConstructSettingValueArrayL + ( const TSettingType aSettingType, TInt& index ) const; + + /** + * Set in the model the right setting value using the given index. + * Note. The following functions have strong relations: + * ConstructSettingValueArray, CurrentlySelectedSettingValueResId, + * ConstructSettingValueArrayL, UpdateSettingL! + * param aSettingType Type of the setting. + * param aIndex The index of the selected value. + * @return None. + */ + void UpdateSettingL + ( const TSettingType aSettingType, const TInt index ) const; + + private: // Functions from base classes + + TKeyResponse OfferKeyEventL + ( const TKeyEvent& aKeyEvent, TEventCode aType ); + + void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane ); + + void PreLayoutDynInitL(); + + void ProcessCommandL( TInt aCommand ); + + TBool OkToExitL( TInt aButtonId ); + + void HandleListBoxEventL( CEikListBox* aListBox, TListBoxEvent aEventType ); + +#ifdef __SERIES60_HELP + + void GetHelpContext( TCoeHelpContext& aContext ) const; + +#endif //__SERIES60_HELP + + private: // Data members + + CPushMtmSettings* iModel; ///< Settings: the model. Has. + CMsvSession& iMsvSession; ///< Message Server session. + RConeResourceLoader iResourceLoader; ///< Resource file loader. + TFileName iResourceFile; + CAknSettingStyleListBox* iSettingListBox; ///< List box contained by the dialog. Uses. + CDesCArrayFlat* iSettingListBoxItemTextArray; ///< List box' item text array. Uses. + CArrayFixFlat* iSettingType; /**< A given array item + * determines the type of + * the item of the list + * with the same index. Has. + */ + TBool iNewTitleTextUsed; ///< Indicate if new title text is used. + HBufC* iPreviousTitleText; ///< Restore it on termination. Has. + TBool iRestoreSP; /**< EFalse, if it is not necessary + * to restore status pane. */ + TInt iPushSLEnabled; + }; + +#endif // PUSHSETTINGSDIALOG_H + +// End of file.