williamr@2: /* williamr@2: * Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@2: * under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: * which accompanies this distribution, and is available williamr@2: * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: #if !defined(__EIKCAPCA_H__) williamr@2: #define __EIKCAPCA_H__ williamr@2: williamr@2: #include williamr@2: williamr@2: class CEikCaptionedControl; williamr@2: class CCoeControl; williamr@2: class CEikCapCArrayExtension; williamr@2: williamr@2: class CEikCapCArray : public CArrayPtrFlat williamr@2: { williamr@2: public: williamr@2: /** Constructor williamr@2: * williamr@2: * Creates CEikCapCArray with a granilarity. williamr@2: * williamr@2: * @param aGranularity how many items will be allocated each time allocation happens williamr@2: */ williamr@2: IMPORT_C CEikCapCArray(TInt aGranularity); williamr@2: williamr@2: /** Destructor williamr@2: * williamr@2: * Destroys CEikCapCArray williamr@2: */ williamr@2: IMPORT_C ~CEikCapCArray(); williamr@2: williamr@2: /** MinimumSize() returns minimum size for the array williamr@2: * williamr@2: * MinimumSize calculates minimum possible size for williamr@2: * the captioned control array. williamr@2: * williamr@2: * @return size in pixels williamr@2: */ williamr@2: IMPORT_C TSize MinimumSize(); williamr@2: williamr@2: /** SetRect() sets the rectangle of the captionedcontrolarray williamr@2: * williamr@2: * SetRect layouts the captionedcontrolarray. Captioned williamr@2: * control rectangles are calculated based on provided rectangle williamr@2: * and sizes of the captioned controls. williamr@2: * williamr@2: * @param aRect Rectangle for the whole array williamr@2: */ williamr@2: IMPORT_C void SetRect(const TRect& aRect); williamr@2: williamr@2: /** ResetMinimumSizes() clears size information williamr@2: * williamr@2: * ResetMinimumSizes goes through all captionedcontrols williamr@2: * and resets the minimum size information of the williamr@2: * captionedcontrols williamr@2: */ williamr@2: IMPORT_C void ResetMinimumSizes(); williamr@2: williamr@2: /** LineIndexFromId() provides line index in array based on id number williamr@2: * williamr@2: * Every captionedcontrol has iId and based on the id, williamr@2: * LineIndexFromId goes through the captionedcontrolarray williamr@2: * and finds the captionedcontrol's position in the array williamr@2: * based on the id provided williamr@2: * williamr@2: * @param aControlId captionedcontrol's iId. williamr@2: */ williamr@2: IMPORT_C TInt LineIndexFromId(TInt aControlId) const; williamr@2: williamr@2: /** FindLineIndex() finds line index based on control williamr@2: * williamr@2: * Every captionedcontrol has iControl CCoeControl which williamr@2: * implements the control for the DLG_LINE. FindLineIndex williamr@2: * goes through all captionedcontrols and finds the one williamr@2: * which has aControl as it's control. williamr@2: * williamr@2: * @param aControl control to be found williamr@2: */ williamr@2: IMPORT_C TInt FindLineIndex(const CCoeControl* aControl) const; williamr@2: williamr@2: /** DeleteLine() removes line from captionedcontrolarray williamr@2: * williamr@2: * Elements from CaptionedControlArray can be removed williamr@2: * by calling DeleteLine method. williamr@2: * williamr@2: * @param aIndex index of the line to be removed williamr@2: */ williamr@2: IMPORT_C void DeleteLine(TInt aIndex); williamr@2: williamr@2: /** AdjustAllIds() modified iId fields of the captionedcontrols williamr@2: * williamr@2: * @param aControlIdDelta how much to increase or decrease control id's williamr@2: */ williamr@2: IMPORT_C void AdjustAllIds(TInt aControlIdDelta); williamr@2: williamr@2: /** SetDensePacking() sets dense packing flag williamr@2: * williamr@2: * @param aDensePacking whether dense packing flag is on williamr@2: */ williamr@2: IMPORT_C void SetDensePacking(TBool aDensePacking); williamr@2: TBool CalcItemIndexes(TInt &aTopItemIndex, TInt &aMiddleItems, TInt &aBottomItemIndex, TSize aAreaSize); williamr@2: TInt NumberOfTextLines() const; // for scrollbar williamr@2: TInt NumberOfTextLinesBeforeLine(TInt aLine) const; williamr@2: TInt FindItemFromTextLine(TInt aTextLine) const; williamr@2: TRect Rect() const; williamr@2: void SetRect(const TRect& aRect, TInt aTop, TInt aMiddle, TInt aBottom); williamr@2: TInt YPosToLine(const TRect &aRect, TInt aTop, TInt aMiddle, TInt aBottom, TInt aYCoord); williamr@2: void CreateExtensionL(); williamr@2: CEikCapCArrayExtension *ExtensionOrNull() const; williamr@2: williamr@2: /** williamr@2: * Scrolls each item by aDelta pixels in y direction. williamr@2: */ williamr@2: TInt ScrollByPixels( TInt aDelta ); williamr@2: williamr@2: /** williamr@2: * Return the index of the line at aYPos. williamr@2: */ williamr@2: TInt YPositionToLineIndex( TInt aYPos ) const; williamr@2: williamr@2: /** williamr@2: * Returns line's top y coordinate. williamr@2: */ williamr@2: TInt LineIndexToYPosition( TInt aLine, TInt aTopY ) const; williamr@2: williamr@2: /** williamr@2: * Moves aLine to the visible screen area or out of it. williamr@2: */ williamr@2: void MoveLineToScreen( TInt aLine, TInt aTopY, TBool aVisible ); williamr@2: williamr@2: private: williamr@2: /** williamr@2: * Positions controls in real locations. williamr@2: */ williamr@2: void SetRealRect( const TRect& aRect, TInt aTop, TInt aBottom ); williamr@2: williamr@2: private: williamr@2: //TInt iCaptionWidth; williamr@2: CEikCapCArrayExtension *iExtension; williamr@2: TBool iDensePacking; williamr@2: //TRect iRect; williamr@2: }; williamr@2: williamr@2: #endif