diff -r 000000000000 -r 8466d47a6819 meetingrequest/mrgui/inc/cesmrview.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/meetingrequest/mrgui/inc/cesmrview.h Thu Dec 17 08:39:21 2009 +0200 @@ -0,0 +1,201 @@ +/* +* Copyright (c) 2007-2009 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: ESMR container for the title label and list component +* +*/ + +#ifndef CESMRVIEW_H +#define CESMRVIEW_H + +#include +#include + +#include "cesmrlistcomponent.h" +#include "mesmrtitlepaneobserver.h" +#include "mesmrfontsizeobserver.h" + +class CESMRTitlePane; +class MESMRCalEntry; +class MESMRFieldStorage; +class MAgnEntryUiCallback; +class CESMRLayoutManager; +class CAknsBasicBackgroundControlContext; + +/** + * Container for the meeting request title and list control. + * This class is deleted by framework + */ +NONSHARABLE_CLASS( CESMRView ): + public CCoeControl, + public MCoeControlBackground, + public MESMRFontSizeObserver, + public MESMRTitlePaneObserver + { +public: + /** + * Two-phased constructor. + * + * @param aStorage - interface to storage that has all the fileds + * @param aEntry - interface to entry information. + * @param aRect - rect for this view + * @return Pointer to created and initialized esmr view object. + */ + static CESMRView* NewL( + MESMRFieldStorage* aStorage, + MESMRCalEntry& aEntry, + const TRect& aRect ); + + /** + * Destructor. + */ + ~CESMRView(); + +public: + + /** + * Externalize the list component items. Data in list items + * is stored to iEntry member variable. + * + * @param TBool ETrue if force validation should be used + */ + void ExternalizeL( TBool aForceValidation = EFalse ); + + /** + * Internalize the list component items. Data from iEntry is updated + * to all fields. + */ + void InternalizeL(); + + /** + * Checks if the command can be processed + * be handled by CESMRView. + * + * @param aCommand + * @return ETrue if command can be processed + */ + TBool CanProcessEditorCommandL( TInt aCommand ); + + /** + * Process commands. Dialog forwards the commands that must + * be handled by CESMRView. + * + * @param aCommand + */ + void ProcessEditorCommandL( TInt aCommand ); + + /** + * Query if a component with given id is currently visible + * + * @param aField Field Id which visibility we are interested in. + * @return True if component is currently visible + */ + TBool IsComponentVisible( TESMREntryFieldId aField ) const; + + /** + * Title can be changed by calling this method + * + * @param aTitle New title for the view + * @param aDefault + */ + void SetTitleL( const TDesC& aTitle, TBool aDefault = EFalse ); + + /** + * Focused field in the list can be changed by calling this method + * + * @param aField Field id of the field that needs to be focused + */ + void SetControlFocusedL( TESMREntryFieldId aField ); + + /** + * Launches editor help + */ + void LaunchEditorHelpL(); + + /** + * Launches viewer help + */ + void LaunchViewerHelpL(); + + /** + * Query if a component with given id is currently focused + * + * @param aField Field Id which focus we are interested in. + * @return True if component is currently focused + */ + TBool IsComponentFocused( TESMREntryFieldId aField ) const; + + /** + * Returns the the currently focused field id. + */ + TESMREntryFieldId FocusedField() const; + +public: // From CAknDialog + void DynInitMenuPaneL( /*TInt aResourceId,*/ + CEikMenuPane* aMenuPane ); + +public: // MESMRTitlePaneObserver + void UpdateTitlePaneTextL( const TDesC& aText ); + void UpdateTitlePanePriorityIconL( TUint aPriority ); + +private: // implementation + void ConstructL( const TRect& aRect ); + CESMRView( MESMRFieldStorage* aStorage, MESMRCalEntry& aEntry ); + +private: + void LaunchHelpL( const TDesC& aContext ); + +public: // From CCoeControl + void SetContainerWindowL(const CCoeControl& aContainer); + TInt CountComponentControls() const; + CCoeControl* ComponentControl( TInt aInd ) const; + void SizeChanged(); + TSize MinimumSize(); + TKeyResponse OfferKeyEventL(const TKeyEvent &aKeyEvent, TEventCode aType); + void HandleResourceChange( TInt aType ); + TTypeUid::Ptr MopSupplyObject( TTypeUid aId ); + + // + void FocusChanged(TDrawNow aDrawNow); + // + +private: // From CCoeControl + void Draw( const TRect& aRect ) const; + +protected: // FromMESMRFontSizeObserver + void FontSizeSettingsChanged(); + +public: // From MCoeControlBackground + void Draw(CWindowGc& aGc, + const CCoeControl& aControl, + const TRect& aRect) const; + void GetTextDrawer( + CCoeTextDrawerBase*& aText, + const CCoeControl* aControl) const; + +private: + /// Own: Priority icon + CESMRTitlePane* iTitle; + /// Own: Meeting Requst list component + CESMRListComponent* iList; + /// Ref: List item storage + MESMRFieldStorage* iStorage; + /// Ref: Current MR entry + MESMRCalEntry& iEntry; + /// Own: Pointer to layout manager + CESMRLayoutManager* iLayout; + /// Own: To enable skin as background for the iTitle + CAknsBasicBackgroundControlContext* iBgContext; + }; + +#endif //CESMRVIEW_H