diff -r 000000000000 -r 2e3d3ce01487 systemsettings/GSAccessoryPlugin/inc/gsaccbaseview.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/systemsettings/GSAccessoryPlugin/inc/gsaccbaseview.h Tue Feb 02 10:12:00 2010 +0200 @@ -0,0 +1,205 @@ +/* +* Copyright (c) 2005-2008 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: Declaration of CGSAccBaseView class +* +*/ + + +#ifndef CGSACCBASEVIEW_H +#define CGSACCBASEVIEW_H + +#include +#include +#include + +class CGSAccBaseContainer; +class CGSAccessoryPluginModel; + +/** +* Base class for GS Accessory settings views. +* +* @since S60 3.1 +*/ +class CGSAccBaseView : public CAknView, public MEikListBoxObserver + { + +public: + + /** + * Destructor. + */ + virtual ~CGSAccBaseView(); + +protected: // From CAknView + + /** + * @see class CAknView. + */ + void HandleCommandL( TInt aCommand ); + + /** + * @see class CAknView. + */ + void DoActivateL( + const TVwsViewId& aPrevViewId, + TUid aCustomMessageId, + const TDesC8& aCustomMessage ); + + /** + * @see class CAknView. + */ + void DoDeactivate(); + +protected: // From MEikMenuObserver + + /** + * @see class MEikMenuObserver. + */ + void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane ); + +protected: // From MEikListBoxObserver + + /** + * @see class MEikListBoxObserver. + */ + void HandleListBoxEventL( + CEikListBox* aListBox, + TListBoxEvent aEventType ); + +protected: + + /** + * First phase constructor. + * + * @param aModel Data model for reading and writing settings. + */ + CGSAccBaseView( CGSAccessoryPluginModel& aModel ); + + /** + * Updates listbox items value. + * + * @param aItemId Item which is updated. + */ + void UpdateListBoxL( TInt aItemId ); + + /** + * Show a selection dialog with content specified in resources. + * + * @param aDlgResourceID Resource id for the dialog resource. + * @param aItemsResourceID Resource id for the list of available items. + * @param aCurrentSelectionIndex Index of the item which should be selected + * initially. On return, contains the selection made by the user. + * @return ETrue if the new value should be saved. + */ + TBool ShowRadioButtonSettingsPageL( + TInt aDlgResourceID, + TInt aItemsResourceID, + TInt& aCurrentSelectionIndex ) const; + + /** + * Show a selection dialog with content given as parameter. + * + * @param aDlgResourceID Resource id for the dialog resource. + * @param aItemArray Array of available items. + * @param aCurrentSelectionIndex Index of the item which should be selected + * initially. On return, contains the selection made by the user. + * @return ETrue if the new value should be saved. + */ + TBool ShowRadioButtonSettingsPageL( + TInt aDlgResourceID, + const MDesCArray& aItemArray, + TInt& aCurrentSelectionIndex ) const; + + /** + * Show the default profile selection dialog and store user selection. + * + * @param aProfileIdKey Cenrep key where the default profile is stored. + * @param aListBoxId Identifies list box to update if profile is changed. + */ + void ChangeDefaultProfileL( + TInt aProfileKey, + TInt aListBoxId ); + + /** + * Change automatic answer mode setting. + * + * @param aAutoAnswerKey Cenrep key where the auto answer mode is stored. + * @param aListBoxId Identifies list box to update if mode is changed. + * @param aSettingPage Show the setting page if ETrue, otherwise just flip + * the value. + */ + void ChangeAutoAnswerModeSettingL( + TInt aAutoAnswerKey, + TInt aListBoxId, + TBool aUseSettingPage ); + + /** + * Change lights mode setting. + * + * @param aAccMode Identifies the accessory mode to change the light + * setting for. + * @param aAccSetting Identifies the light setting to change. + * @param aListBoxId Identifies list box to update if mode is changed. + * @param aSettingPage Show the setting page if ETrue, otherwise just flip + * the value. + */ + void ChangeLightModeSettingL( + TAccMode aAccMode, + TInt aAccSetting, + TInt aListBoxId, + TBool aUseSettingPage ); + +protected: + + /** + * Functionality for creating a container. Called by DoActivateL(). + * Implemented by sub-class. + */ + virtual void NewContainerL() = 0; + + /** + * Handle selection of list box. + * Called by HandleListBoxEventL + * + * @param aSelectedItem Currently selected item. + */ + virtual void HandleListBoxSelectionL( TInt aSelectedItem ) = 0; + +private: + + /** + * Basic idea behind General Settings plugin framework is that view objects + * stay alive even when they are not active, but container objects do not. + * Create new container. + */ + void CreateContainerL(); + + /** + * Delele the container. + */ + void DestroyContainer(); + +protected: // data + + /** Data model. */ + CGSAccessoryPluginModel& iModel; + + /** + * Container. Own. + * Sub-classes are responsible for creating object of correct type. + */ + CGSAccBaseContainer* iContainer; + }; + +#endif // CGSACCBASEVIEW_H