diff -r 3104fc151679 -r 9a48e301e94b imstutils/imconversationview/imcvuiapp/inc/cimcvappsmileicongrid.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imstutils/imconversationview/imcvuiapp/inc/cimcvappsmileicongrid.h Wed Sep 01 12:33:36 2010 +0100 @@ -0,0 +1,193 @@ +/* +* Copyright (c) 2007-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: Grid for smile icons. +* Description : Handles statuspane, context pane, navi pane +* +*/ + + +#ifndef CIMCVAPPSMILEICINGRID_H +#define CIMCVAPPSMILEICINGRID_H + +// INCLUDES +#include + +// FORWARD DECLARATIONS +class CEikDialog; +class CGulIcon; +class TAknLayoutRect; +class MIMCVTapEventObserver; +class MAknsSkinInstance; +class MAknsControlContext; + +// CLASS DECLARATION +/** +* CIMCVAppSmileIconGrid +* +* Grid for icons. +*/ +class CIMCVAppSmileIconGrid : public CCoeControl + { + public: // Constructors and destructor + /** + * Two-phased constructor. + * @param aParent : Parent control of grid. + * @param aIconArray : Reference to smile icon array. + */ + static CIMCVAppSmileIconGrid* NewL( CEikDialog* aParent, + const RPointerArray& aIconArray ); + + /** + * Destructor. + */ + virtual ~CIMCVAppSmileIconGrid(); + + public: // New methods + + /** + * Move cursor + * @param aKeyCode : EKeyLeftArrow | EKeyRightArrow | + * EKeyUpArrow | EKeyDownArrow + */ + void MoveCursor( TInt aKeyCode ); + + /** + * Return selected cursor position. + * @return : Selected cursor position if cursor is pointed a bitmap. + * KPinbEmptySpecialCharId if cursor is pointed empty cell. + */ + TInt SelectedBitmapId(); + + /** + * Return row count of grid. + * @return : Row count. + */ + TInt HeightInRows(); + + /** + * Set observer for handling tap events. + * Supports only single observer. + * @param aObserver observer to handle tap events + * @param aId control id which is used by the observer to + * identify this object. + */ + void SetTapObserver( MIMCVTapEventObserver* aObserver, TUint aId ); + + /** + * Calculate number of row and columns in smile grid + * aViewableWidth Width of Dialog in which smile are shown + */ + void SetViewableWindowWidth(TInt aViewableWidth); + + /** + *@return First smile icon rectangle in smile icon grid. + */ + TRect GetFirstCellRect(); + + + private: // New methods + + /** + * Set layout of identifier grid + */ + void SetLayout(); + + /** + * Drawing function + */ + void DrawItem( CWindowGc& aGc, + TBool aSkinEnabled, + MAknsSkinInstance* aSkin, + MAknsControlContext* aSkinCc, + TInt aIndex, TBool aSelected ) const; + + private: // Functions from base classes + + /** + * From CCoeControl : Return minimum size of the control. + */ + TSize MinimumSize(); + + /** + * From CCoeControl : Size of the control is set. + */ + void SizeChanged(); + + /** + * From CCoeControl : Notifier for changing layout + * @param aType : Type of resource change + */ + void HandleResourceChange( TInt aType ); + + /** + * From CCoeControl : Drawing control. + * @param aRect : Rectangle of control + */ + void Draw( const TRect& aRect ) const; + + /** + * From CCoeControl : Touch support. + */ + void HandlePointerEventL(const TPointerEvent& aPointerEvent); + + + private: // Constructors and destructor + + /** + * default constructor. + * @param aParent : Parent control of grid. + * @param aIconArray : Array of Icon + */ + CIMCVAppSmileIconGrid( CEikDialog* aParent, + const RPointerArray& aIconArray ); + + /** + * Second-phased constructor. + */ + void ConstructL(); + + private: // Data + + TInt iCursorPos; + TInt iPrevCursorPos; + TBool iDragEvent; + + CEikDialog* iParent; // Not own + + // Reference to smile icon array. + const RPointerArray& iIconArray; + + // Counts of icons and no. of rows + TInt iIconCount; + TInt iRowCount; + + //info regarding single cell + TRect iFirstCell; + TSize iIconSize; + TInt iCellWidth; + TInt iCellHeight; + + // Not owned. Pointer to observer + MIMCVTapEventObserver* iTapObserver; + + // ID which needs to be reported back to TapObserver + TUint iTapControlId; + TBool iIsMirrored ; + + TInt iMaxColumns; + }; + +#endif // CIMCVAPPSMILEICINGRID_H + +// End of File