diff -r a3a1ae9acec6 -r da5135c61bad meetingrequest/mrgui/inc/cmrfieldcontainer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/meetingrequest/mrgui/inc/cmrfieldcontainer.h Wed Mar 31 21:08:33 2010 +0300 @@ -0,0 +1,119 @@ +/* +* Copyright (c) 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: Interface for field container +* +*/ + +#ifndef CMRFIELDCONTAINER_H +#define CMRFIELDCONTAINER_H + +// INCLUDES +#include +#include "mesmrlistobserver.h" + +// FORWARD DECLARATIONS +class MESMRFieldStorage; +class MMRFieldContainerObserver; + +// CLASS DECLARATIONS +NONSHARABLE_CLASS( CMRFieldContainer ) : + public CCoeControl, + public MESMRListObserver + { + public: // Creation and destruction + /** + * Static constructor. + * + * @return New instance of this class + */ + static CMRFieldContainer* NewL( + MESMRFieldStorage& aFactory, + const CCoeControl& aParent ); + /** + * Destructor + */ + ~CMRFieldContainer(); + + public: // Interface + + /** + * Return focused field. + * @return Focused list item or NULL if no focused item + */ + CESMRField* FocusedField() const; + + /** + * Moves focus up one step. + * + * @param aHiddenFocus, in case of hidden focus use case, ETrue. + * @return TKeyResponse, if key response was used or not + */ + TKeyResponse MoveFocusUpL( TBool aHiddenFocus ); + + /** + * Moves focus down one step. + * + * @param aHiddenFocus, in case of hidden focus use case, ETrue. + * @return TKeyResponse, if key response was used or not + */ + TKeyResponse MoveFocusDownL( TBool aHiddenFocus ); + + /** + * Moves focus visible if it is partly or completely out of + * viewable area. + */ + void SetFieldContainerObserver( MMRFieldContainerObserver* aObserver ); + + public: // From MESMRListObserver + void ControlSizeChanged( CESMRField* aField ); + void ShowControl( TESMREntryFieldId aFieldId ); + void HideControl( TESMREntryFieldId aFieldId ); + TBool IsControlVisible( TESMREntryFieldId aFieldId ); + void SetControlFocusedL( TESMREntryFieldId aFieldId ); + TInt ListHeight(); + TBool IsFocusedControlsBottomVisible(); + void ScrollControlVisible( TInt aInd ); + void RePositionFields( TInt aAmount ); + TRect ViewableAreaRect(); + + public: // From CCoeControl + TSize MinimumSize(); + + private: // From CCoeControl + TInt CountComponentControls() const; + CCoeControl* ComponentControl( TInt aIndex ) const; + void SizeChanged(); + + private: // Implementation + CMRFieldContainer( MESMRFieldStorage& aFactory ); + void ConstructL( const CCoeControl& aParent ); + void MoveFields( TInt aIndex, TPoint& aTl ); + void LayoutField( CESMRField& aField, const TPoint& aTl ); + TInt LastVisibleField( TESMREntryFieldId aFieldId ); + void DoSetFocusL( TInt aNewFocusIndex ); + TKeyResponse MoveFocusVisibleL(); + + private: // Data + // Own: Informs listapane about needed position changes + MMRFieldContainerObserver* iObserver; + /// Ref: Storage for list items. + MESMRFieldStorage& iFactory; + /// Own: Current focus index + TInt iFocusedFieldIndex; + + }; + +#endif // CMRFIELDCONTAINER_H + +// End of file