diff -r 000000000000 -r 8466d47a6819 emailcontacts/contactactionservice/inc/CFscFieldListBoxModel.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailcontacts/contactactionservice/inc/CFscFieldListBoxModel.h Thu Dec 17 08:39:21 2009 +0200 @@ -0,0 +1,292 @@ +/* +* Copyright (c) 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: Field list box model. + * +*/ + + +#ifndef CFSCFIELDLISTBOXMODEL_H +#define CFSCFIELDLISTBOXMODEL_H + +// INCLUDES +#include +#include "TFscAppIconId.h" +#include + +// FORWARD DECLARATIONS +class CPbk2IconArray; +class CDesC16Array; +class MFscClipListBoxText; +class MFscFieldAnalyzer; +class CFscFieldFormatter; +class CVPbkContactManager; +class CFscPresentationContactField; +class CFscPresentationContactFieldCollection; +class MPbk2FieldPropertyArray; +class MVPbkFieldType; +class CFscContactFieldDynamicProperties; + +// CLASS DECLARATION + +/** + * Phonebook 2 list box model row. + * + * @internal Only Phonebook 2 internal use supported! + */ +NONSHARABLE_CLASS(CFscFieldListBoxRow) : public CBase + { +public: // Constructors and destructor + + /** + * Creates a new instance of this class. + * + * @return A new instance of this class. + */ + static CFscFieldListBoxRow* NewL(); + + /** + * Destructor. + */ + ~CFscFieldListBoxRow(); + +public: // Interface + + /** + * Returns the number of columns in this row. + * + * @return Number of columns in this row. + */ + TInt ColumnCount() const; + + /** + * Returns the descriptor at the given position. + * + * @param aColumnIndex Column index. + * @return The descriptor at the given index. + */ + TPtrC At( + TInt aColumnIndex ) const; + + /** + * Appends a given column to the row. + * + * @param aColumnText Column to append. + */ + void AppendColumnL( + const TDesC& aColumnText ); + + /** + * Returns the total descriptor length of all the columns. + * + * @return Total row length. + */ + TInt TotalLength() const; + + /** + * Returns the maximum column length of this row. + * + * @return Maximum column length. + */ + TInt MaxColumnLength() const; + +private: // Implementation + CFscFieldListBoxRow(); + +private: // Data + /// Own: Column array + RPointerArray iColumns; + }; + +/** + * Phonebook 2 field list box model. + * + * @internal Only Phonebook 2 internal use supported! + */ +NONSHARABLE_CLASS(CFscFieldListBoxModel) : public CBase, +public MDesCArray + { +public: // Types + + /** + * Column indexes. + */ + enum TColumnIndex + { + /// Icon column + EIconColumn = 0, + /// Label column + ELabelColumn, + /// Content column + EContentColumn + }; + +public: // Data structures + /** + * Construction parameters for CFscFieldListBoxModel. + */ + class TParams + { + public: // Construction + /** + * Constructor. + * + * @param aFieldCollection Array of fields to display. + * @param aContactManager Virtual Phonebook + * contact manager. + * @param aFieldProperties Field properties. + * @param aTimeFormat Time formatting string + * to use. + * @param aIconArray Icon array to use. + * @param aFieldAnalyzer Interface for + * analyzing fields. + * @param aDynamicProperties Dynamic field properties. + */ + TParams ( + const CFscPresentationContactFieldCollection& + aFieldCollection, + const CVPbkContactManager& aContactManager, + const MPbk2FieldPropertyArray& aFieldProperties, + const TDesC& aTimeFormat, + const CPbk2IconArray& aIconArray, + const MFscFieldAnalyzer* aFieldAnalyzer, + const CFscContactFieldDynamicProperties* aDynamicProperties ): + iFields( aFieldCollection ), + iContactManager( aContactManager ), + iFieldProperties( aFieldProperties ), + iTimeFormat( aTimeFormat ), + iIconArray( aIconArray ), + iDefaultIconId( EPbk2qgn_prop_nrtyp_empty ), + iFieldAnalyzer( aFieldAnalyzer ), + iDynamicProperties( aDynamicProperties ) + { + } + + public: // Data + /// Ref: Array of fields to display + const CFscPresentationContactFieldCollection& iFields; + /// Ref: Virtual Phonebook contact manager + const CVPbkContactManager& iContactManager; + /// Ref: Field properties + const MPbk2FieldPropertyArray& iFieldProperties; + /// Ref: Time formatting string + const TDesC& iTimeFormat; + /// Ref: Icon array + const CPbk2IconArray& iIconArray; + /// Own: Default icon id + TFscAppIconId iDefaultIconId; + /// Ref: Interface for analyzing field + const MFscFieldAnalyzer* iFieldAnalyzer; + /// Own: Dynamic properties for contact fields + const CFscContactFieldDynamicProperties* iDynamicProperties; + }; + +public: // Constructors and destructor + + /** + * Creates a new instance of this class. + * + * @param aParams List box model parameters. + * @return A new instance of this class. + */ + static CFscFieldListBoxModel* NewL( + TParams& aParams ); + + /** + * Destructor. + */ + ~CFscFieldListBoxModel(); + +public: // Interface + + /** + * Appends a given row to the end of the model. + * + * @param aLine The row to append. + */ + void AppendRowL( + CFscFieldListBoxRow* aLine ); + + /** + * Sets the text clipper to given clipper. + * + * @param aTextClipper The clipper to set. + */ + void SetClipper( + MFscClipListBoxText& aTextClipper ); + + /** + * Formats fields. Needs to be call after construction. + */ + void FormatFieldsL(); + +public: // From MDesCArray + TInt MdcaCount() const; + TPtrC16 MdcaPoint( + TInt aIndex ) const; + +private: // Implementation + CFscFieldListBoxModel( + TParams& aParams ); + void ConstructL( + TParams& aParams ); + void FormatFieldL( + const CFscPresentationContactField& aField, + TParams& aParams ); + void ExpandBuffersL( + const CFscFieldListBoxRow& aRow ); + TPtr ExpandColumnBufferL( + TInt aRequiredLength ); + void ClipTextL( + const CFscPresentationContactField& aField, + TInt aIndex, + TPtr& aColumnText, + TInt aColumnIndex ) const; + void AppendFieldLabelL( + const CFscPresentationContactField& aField, + CFscFieldListBoxRow& aRow, + TPtr& aColumnBuf ); + void AppendFieldContentL( + const CFscPresentationContactField& aField, + const MVPbkFieldType& aFieldType, + CFscFieldListBoxRow& aRow, + TPtr& aColumnBuf ); + void AppendIconsToBeginningL( + const CFscPresentationContactField& aField, + const MVPbkFieldType& aFieldType, + CFscFieldListBoxRow& aRow, + TParams& aParams ); + void AppendIconsToEndL( + const CFscPresentationContactField& aField, + CFscFieldListBoxRow& aRow, + TParams& aParams ); + +private: // Data + /// Own: Text row array + CArrayPtrFlat iRows; + /// Own: Buffer storing one formatted listbox row + HBufC* iLineBuf; + /// Own: Buffer for storing one formatted listbox column + HBufC* iColumnBuf; + /// Own: Field content formatter + CFscFieldFormatter* iFieldFormatter; + /// Ref: Object for clipping text + MFscClipListBoxText* iTextClipper; + /// Own: Dynamic field properties + const CFscContactFieldDynamicProperties* iDynamicProperties; + /// Own: Parameters + TParams iParams; + }; + +#endif // CFscFieldListBoxModel_H +// End of File