--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pushmtm/MtmUiInc/PushSettingsDialog.h Mon Mar 30 12:49:49 2009 +0300
@@ -0,0 +1,270 @@
+/*
+* 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 <AknForm.h>
+#include <eiklbo.h>
+#include <ConeResLoader.h>
+
+// 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<TSettingType>* 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. */
+ };
+
+#endif // PUSHSETTINGSDIALOG_H
+
+// End of file.