diff -r 6465d5bb863a -r 13e71d907dc3 gssettingsuis/Gs/GSNetworkPlugin/Inc/GSNetworkPlugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gssettingsuis/Gs/GSNetworkPlugin/Inc/GSNetworkPlugin.h Thu Nov 04 13:38:47 2010 +0800 @@ -0,0 +1,519 @@ +/* +* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "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: View for Network settings. +* +*/ + + +#ifndef GSNETWORKPLUGIN_H +#define GSNETWORKPLUGIN_H + +// INCLUDES +#include +#include +#include +#include +#include +#include +#include //for base class +#include +#include +//For listening BT SAP events +#include +#include +#include + +#include "GSPhoneSettingConstants.h" +#include "GSNetworkPluginContainer.h" +#include "GsNetworkPlugin.hrh" +#include "MGsFWMSKLabelObserver.h" + +#include +#include + +#include + +// CONSTANTS +const TUid KGSNetworkPluginUid = { 0x102824A8 }; +// Resource file name +_LIT( KGSNetworkPluginResourceFileName, "z:gsnetworkpluginrsc.rsc" ); +// Icon file name +_LIT( KGSNetworkPluginIconDirAndName, "z:GSNetworkPlugin.mbm"); + +// MACROS + +// DATA TYPES + +// FUNCTION PROTOTYPES + +// FORWARD CLASS DECLARATION +class CAknViewAppUi; +class CGSNetworkPluginContainer; +class CPsetNetwork; +class CAknWaitDialog; +class CPsetContainer; +class CAknRadioButtonSettingPage; +class CAknPopupList; +class MSSSettingsRefreshObserver; +class CPSetRefreshHandler; + +class CNWSession; +class TNWInfo; +class CGSParentPlugin; + +// CLASS DECLARATION +/** +* CGSNetworkPlugin view class +* +* Plugin implementation for Network settings +* @lib GSNetworkPlugin.lib +* @since Series 60_3.1 +*/ +#ifdef FF_POWER_SAVE + class CGSNetworkPluginAO; +#endif // FF_POWER_SAVE + +class CGSNetworkPlugin : public CGSBaseView, + public MPsetNetworkInfoObserver, + public MSSSettingsRefreshObserver, + public MGsFWMSKObserver, + public MGSSettingPSObserver, + public MNWMessageObserver + { + public: // Constructors and destructor + + /** C++ Constructor */ + CGSNetworkPlugin(); + + /** + * Symbian OS two-phased constructor + * @return GS connection view. + */ + static CGSNetworkPlugin* NewL( TAny* aInitParams ); + + static CGSNetworkPlugin* NewLC(); + + /** + * Destructor. + */ + ~CGSNetworkPlugin(); + + public: // from base classes + + /** + * Returns view id. + * @return TUid + */ + TUid Id() const; + + /** + * Handles commands. + * @param aCommand Command to be handled. + * + */ + void HandleCommandL( TInt aCommand ); + + /** + * From MEikCommandObserver, handles the commands. + * + * @param aCommand identifies the command given. + */ + void ProcessCommandL( TInt aCommand ); + + public: // From CGSPluginInterface + + /** + * @see CGSPluginInterface header file. + */ + void GetCaptionL( TDes& aCaption ) const; + + /** + * @see CGSPluginInterface header file. + */ + void GetValue( const TGSPluginValueKeys aKey, + TDes& aValue ); + + /** + * @see CGSPluginInterface header file. + */ + TInt PluginProviderCategory() const; + + /** + * See base class. + */ + CGulIcon* CreateIconL( const TUid aIconType ); + + /** + * @see CGSPluginInterface header file. + */ + TBool Visible() const; + + public: //new + + /** + * Get CGSNetworkPlugin's ccontainer. + */ + CGSNetworkPluginContainer* Container(); + + /** + * Checks if the MSK label needs to be adjusted. + */ + void CheckMiddleSoftkeyLabelL(); + + /** + * Remove command and label from MSK. + */ + void RemoveCommandFromMSK( const TBool flag); + + /** + * Adds given resource text as MSK to CBA. + * + * @param aResourceId middle softkey label. + * @param aCommandId command that should be performed when MSK + * is pressed. + * @since S60 v3.1 + */ + void SetMiddleSoftKeyLabelL( const TInt aResourceId,const TInt aCommandId ); + + /** + * Shows a requested note. + * @param aResourceId reource ID for note text + * @param aType type of note + */ + void ShowNoteL( TInt aResourceId, TInt aType ); + + public: // from base class MPsetNetworkInfoObserver + + /** + * @@see MPsetNetworkInfoObserver::HandleNetworkInfoReceivedL + */ + void HandleNetworkInfoReceivedL( + const CNetworkInfoArray* aInfoArray, const TInt aResult ); + + /** + * @@see MPsetNetworkInfoObserver::HandleCurrentNetworkInfoL - not used + */ + inline void HandleCurrentNetworkInfoL( + const MPsetNetworkSelect::TCurrentNetworkInfo& /* aCurrentInfo */, + const TInt /* aResult */ ) {} + + /** + * DEPRECATED in MPsetNetworkInfoObserver. + * + * @@see MPsetNetworkInfoObserver::HandleNetworkChangedL + */ + void HandleNetworkChangedL( + const MPsetNetworkSelect::TNetworkInfo& aCurrentInfo, + const MPsetNetworkSelect::TCurrentNetworkStatus aStatus, + const TInt aResult ); + + /** + * @@see MPsetNetworkInfoObserver::HandleNetworkChangedL + */ + void HandleNetworkChangedL( + const MPsetNetworkSelect::TNetworkInfo& aCurrentInfo, + const RMobilePhone::TMobilePhoneRegistrationStatus& aStatus, + const TInt aResult ); + + + /** + * @@see MPsetNetworkInfoObserver::HandleSearchingNetworksL + */ + void HandleSearchingNetworksL( TServiceRequest aRequest ); + + /** + * @@see MPsetNetworkInfoObserver::HandleRequestingSelectedNetworkL + */ + void HandleRequestingSelectedNetworkL( TBool aOngoing ); + + /** + * @@see MPsetNetworkInfoObserver::HandleCallActivatedL + */ + void HandleCallActivatedL(); + + /** + * @@see MPsetNetworkInfoObserver::HandleNetworkErrorL + */ + void HandleNetworkErrorL( const TServiceRequest aRequest, + const TInt aError ); + + public: //from base class MSSSettingsRefreshObserver + /** + * @@see MSSSettingsRefreshObserver::AllowRefresh + */ + TBool AllowRefresh( + const TSatRefreshType aType, + const TSatElementaryFiles aFiles ); + + /** + * @@see MSSSettingsRefreshObserver::Refresh + */ + void Refresh( + const TSatRefreshType aType, + const TSatElementaryFiles aFiles ); + + public: // From MNWMessageObserver + + /** + * Offers message interface to the client + * @param aMessage + * This methods execute time must be short,since code + * starting to run from RunL. + * + * Function updates data into iNWInfo. + */ + void HandleNetworkMessage( const TNWMessages aMessage ); + + /** + * Offers error message interface to the client + * @param aOperation operation which failed + * @param aErrorCode returned Symbian OS error code + * + */ + void HandleNetworkError( const TNWOperation aOperation, TInt aErrorCode ); + + /** + * Updates network setting page in case it is visible. This is needed in + * case network mode is change while setting page is oppen. + */ + void UpdateNetworkSettingPageL(); + public: +#ifdef FF_POWER_SAVE + /* + * Update network plugin view when PSM mode has changed + */ + void UpdateOnPsmChangedL(); +#endif + + protected: // From CAknView + void DoActivateL( const TVwsViewId& aPrevViewId, + TUid aCustomMessageId, + const TDesC8& aCustomMessage ); + void DoDeactivate(); + + protected: // From MEikMenuObserver + + void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane ); + + protected: + + /** + * C++ default constructor. + */ +/* CGSNetworkPlugin();*/ + + /** + * Symbian OS default constructor. + * + */ + void ConstructL(); + + void HandleClientRectChange(); + + private: // from CGSBaseView + + void NewContainerL(); + void HandleListBoxSelectionL(); + + private: // From MGSSettingPSObserver + /** + * Callback from MGSSettingPSObserver + */ + void HandleNotifyPSL( const TUid aUid, const TInt& aKey, + const TRequestStatus& aStatus ); + + private: //new methods + + /** + * Check if calls are active. Show note if Nw-menu is tried to open. + * @param aItemId list item ID in network view + */ + void CheckCallActiveL( TGSNetworkItemIds aItemId ); + + /** + * Provides the network operator list. + */ + void NetworkListL(); + + /** + * Displays setting page for highlighted setting. + * + * @param aPage identifies the page that will be displayed. + */ + void ShowSettingPageL( TGSNetworkItemIds aPage ); + + /** + * Sets title to a popup list. + * @param aList pointer to list + * @param aTitleID resource ID of the title + */ + void SetTitleToPopupL( CAknPopupList& aList, TInt aTitleID ); + + /** + * Adds item to a list. + * @param aList pointer to a list + * @param aItem resource ID of the item to be added + */ + void AppendItemL( CDesCArrayFlat& aList, TInt aItem ); + + /** + * Sets title to a settings page. + * @param aDlg setting page + * @param aTitleID resource ID of the title + */ + void SetTitleToSettingsL( CAknRadioButtonSettingPage& aDlg, + TInt aTitleID ); + + /** + * Shows a note if GPRS is active, when MCN is turned on. + * @param aCurrentItem value of setting currently + */ + void CheckGPRSConnectionL( TInt aCurrentItem ); + + /** + * Switches between shared data and setting page values (0 > 1, 1 > 0). + * @param aValue value to switch + */ + void SwitchOnOffValue( TInt& aValue ); + + /** + * Makes a Network/MCN Ss operation. + * @param aIndex currently active list item. + * @param aPage which setting page is open + */ + void CreateNetworkSsCallL( TInt aIndex, TGSNetworkItemIds aPage ); + + /** + * Creates a waiting note (member variable). + * @param aDelayOff is the note shown immediately or not + */ + void CheckAndCreateDlgL( TBool aDelayOff ); + + /** + * Empties fetched network provider's list. + */ + void PurgeNetworkList(); + + /** + * Updates listbox in container + */ + void UpdateListBoxL( const TInt& aListItem, const TInt aValue = -1 ); + + /** + * Activate the Phone Idle view. + */ + void PhoneIdle(); + + /** + * To verify if the phone is in the offline mode. (or mostly if mode is supported???) + */ + TBool IsPhoneOfflineL() const; + + /** + * Actually checks from telephone server cached data (iNWInfo) if phone + * is online. + * + * @return ETrue if phone is online. + */ + TBool PhoneOnline(); + + /** + * Updates iNetworkText from the iNWInfo values. + */ + void UpdateNetworkTextL(); + + /** + * Easy access to parent plugin. Casts view from AppUI. + */ + CGSParentPlugin* Parent(); + + /** + * Convert TInt to TGSNetworkModeItems. + * Will panic in case TInt is of wrong value. + */ + TGSNetworkModeItems CGSNetworkPlugin::IntToEnumL( TInt aFeatureId ); + + /** + * Closes dialog (iSettingDlg) if it is open. + */ + void CloseDialog(); + +#ifdef FF_POWER_SAVE + /** + * Displays blocking note. Used if PSM is on. + */ + void DisplayBlockNoteL(); +#endif // FF_POWER_SAVE + + public: //enumerations + + enum TGSNetworkList + { + EAutomaticMode, + EManualMode + }; + + protected: + + // for load wait dialog + CAknWaitDialog* iWaitDialog; + + private: + + //Requesting note + CAknWaitDialog* iDlg; + //PhoneSettings container + CPsetContainer* iSettingsContainer; + //PhoneSettings engine object + CPsetNetwork* iPhoneSettingsEngine; + //Array of networks + CNetworkInfoArray* iNetworkArray; + //Network selection list + CAknPopupList* iNetworkPopupList; + //Setting page + CAknRadioButtonSettingPage* iSettingDlg; + //Value of MCN setting item + TInt iMCN; + //Has the user selected a valid network + TBool iApprovedNetwork; + //PhoneSettings refresh handler + CPSetRefreshHandler* iPSRefreshHandler; + //Previous network selection state + TBool iPreviousState; + // check if which command MSK is set during destruction + TBool iMskCommandFlag; + //PubSub object for BT SAP state + CGSPubSubsListener* iBtSapListener; + TBool iSearchForNetworksActive; + + // Session to network handling engine. Owned. + CNWSession* iNWSession; + + // Cached network info structure. Will be updated by iNWSession in a + // callback. + TNWInfo iNWInfo; + + // Cached network text read by GetValue(). When network handling engine + // updates data, this buffer is re-created accordingly. + HBufC* iNetworkText; +#ifdef FF_POWER_SAVE + // Active object for handling PSM realted CenRep events. + CGSNetworkPluginAO* iPsmActive; +#endif // FF_POWER_SAVE + + }; + +#endif // GSNETWORKPLUGIN_H + +//End of File