diff -r 000000000000 -r 307788aac0a8 sipplugins/sippsipsettingsui/inc/sipsettingsplugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sipplugins/sippsipsettingsui/inc/sipsettingsplugin.h Tue Feb 02 01:03:15 2010 +0200 @@ -0,0 +1,228 @@ +/* +* 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 "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: +* SIPSettings plugin implementation +* +*/ + + +#ifndef SIP_SETTINGS_PLUGIN_H +#define SIP_SETTINGS_PLUGIN_H + +// System includes +#include +#include +#include +#include "MGsFWMSKLabelObserver.h" + +// Classes referenced +class CSIPSettingsContainer; +class CAknNavigationDecorator; +class CAknViewAppUi; +class CEikFormattedCellListBox; +class CAknPopupList; +class CSIPSettingsModel; +class CGSSIPModel; + +// Constants +const TUid KGSSIPSettingsPluginUID = { 0x101FD6D0 }; //SIP Settings ECom plug-in uid +//const TUid KUidGS = { 0x100058EC }; // GS uid, needed in help handling +_LIT( KSIPSettingsResourceFileName, "z:GSSIPSettingsPluginRsc.rsc" ); +_LIT( KGSDefaultSIPIconFileName, "Z:\\resource\\apps\\GSSIPSettingsplugin.mbm"); +_LIT( KSIPluginIconFileName, "\\resource\\apps\\GSSIPSettingsplugin.mif"); + + + +// CLASS DECLARATION + +/** +* CPacketDataPlugin view class. +* +* This class handles state and application logic of SIP settings. +* +* +*/ +class CSIPSettingsPlugin + : public CGSPluginInterface, + public MEikListBoxObserver, + public MGsFWMSKObserver + + { + public: // Constructors and destructor + /** + * Symbian OS two-phased constructor + * @return + */ + static CSIPSettingsPlugin* NewL( TAny* aAppUi ); + + /** + * Destructor. + */ + ~CSIPSettingsPlugin(); + + /** + * 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. + */ + void SetMiddleSoftKeyLabelL( const TInt aResourceId, + const TInt aCommandId ); + + public: // From CAknView + TUid Id() const; + void HandleCommandL( TInt aCommand ); + + protected: // From CAknView + void HandleClientRectChange(); + void DoActivateL( const TVwsViewId& aPrevViewId, + TUid aCustomMessageId, + const TDesC8& aCustomMessage ); + void DoDeactivate(); + + protected: + + /** + * C++ default constructor. + */ + CSIPSettingsPlugin( ); + + /** + * Symbian OS default constructor. + */ + void ConstructL(); + + public: // From CGSPluginInterface + + /** + * Method for getting caption of this plugin. This should be the + * localized name of the settings view to be shown in parent view. + * + * @param aCaption pointer to Caption variable + */ + void GetCaptionL( TDes& aCaption ) const; + + /** + * Method for reading the ID of the plugin provider category. See + * TGSPluginProviderCategory. PluginProviderCategory can be used for + * sorting plugins. + * + * Default value is EGSPluginProvider3rdParty. Override this function + * to change the category. + * + * @return Plugin provider category ID defined by + * TGSPluginProviderCategory + */ + TInt PluginProviderCategory() const; + + /** + * @see CGSPluginInterface header file. + */ + CGulIcon* CreateIconL( const TUid aIconType ); + + /** + * Shows the pop-up list for user to change the default profile + */ + void ChangeDefaultProfileL(); + + /** + * Confirms from the user and then deletes the profile + */ + void DeleteProfileL(); + + /** + * Starts editing an existing profile + */ + void EditProfileL(); + + protected: // From MEikListBoxObserver + + /** + * Handles listbox events. + * @param aListBox Listbox where the event occurred. + * @param aEventType Event type. + * + */ + void HandleListBoxEventL( CEikListBox* aListBox, + TListBoxEvent aEventType ); + + protected: // New functions + + /** + * Shows user a pop-up list, where s/he can choose the profile, + * which parameters are copied to a new profile + */ + void CreateFromExisitingProfileL(); + + /** + * Creates pop-up list for choosing the cloned profile + * @param aListBox List box used in the pop-up list + * @return Initialized pop-up list and list box + */ + CAknPopupList* CreatePopupListL( CEikFormattedCellListBox* aListBox ); + + /** + * Creates a new profile and moves to profile edit view (deactivates + * this view + * @param aIndex index to point the cloned profile + */ + void CreateNewProfileL( TInt aIndex ); + + private: // Functions from base classes + + /** + * From CAknView (MEikMenuObserver) + * Dynamically initializes the contents of the menu list + */ + void DynInitMenuPaneL( TInt aResourceId, + CEikMenuPane* aMenuPane ); + + private: // New + void HandleListBoxSelectionL(); + void ShowSIPProfilesSettingPageL(); + + protected: //Data + RConeResourceLoader iResourceLoader; // resource loader + + //check if which command MSK is set during destruction + TBool iMskCommandFlag; + + CSIPSettingsContainer* iContainer; // pointer to the container + CAknNavigationDecorator* iNaviPaneContext; // navi pane + + CGSSIPModel* iHandler; // pointer to SIP profile handler + CSIPSettingsModel* iModel; + TInt iActiveIndex; // Active index number + + TInt iCurrentItem; // currently selected listbox item + TInt iTopItemIndex; // first item in the listbox + TBool iElaf; + + TVwsViewId iPrevViewId; // Previous view + + TBool iListBoxEventPenDown; // Check the ListBoxEvent + }; + +#endif