diff -r 6385c4c93049 -r 8e6fa1719340 browserui/browser/FavouritesInc/BrowserFavouritesListboxModel.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browserui/browser/FavouritesInc/BrowserFavouritesListboxModel.h Wed Sep 01 12:31:04 2010 +0100 @@ -0,0 +1,246 @@ +/* +* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: +* Declaration of class CBrowserFavouritesListboxModel. +* +* +*/ + + +#ifndef BROWSER_FAVOURITES_LISTBOX_MODEL_H +#define BROWSER_FAVOURITES_LISTBOX_MODEL_H + +// INCLUDE FILES +// #include +// #include +#include +#include "Browser.hrh" + +// CONSTANTS + +/** +* Buffer size for formatting listbox text. Maximum item name +* plus listbox internals (tabulators for icons etc.) must fit into it. +* The format is "\t\t\t", +* so the added length is 7. +*/ +const TInt KMaxFavouritesItemListboxName = + KFavouritesMaxBookmarkNameDefine + 7; + +// FORWARD DECLARATION + +class CFavouritesItemList; +class CBrowserFavouritesListboxModel; +class CBrowserFavouritesIconIndexArray; +// class CAknListBoxFilterItems; +// class CAknSearchField; +// class CEikListBox; + +// CLASS DECLARATION + +/** +* Item text array for the favourites view listbox; converts item data +* to format what the listbox needs. (This means the returned text includes +* listbox internals (tabulators, icon numbers). +*/ +class TBrowserFavouritesListboxItemTextArray: public MDesCArray + { + public: // from MDesCArray + + /** + * Get number of items in the array. + * @return Number of items. + */ + TInt MdcaCount() const; + + /** + * Text to be displayed for this item. + * @param aIndex Index of item. + * @return TPtrC for this item text. + */ + TPtrC MdcaPoint( TInt aIndex ) const; + + /** + * The model uses this class. + */ + friend class CBrowserFavouritesListboxModel; + + private: // data + + /** + * Pointer to real data. Not owned. + */ + const CFavouritesItemList* iItems; + + /** + * Icon indexes. Not owned. + */ + const CBrowserFavouritesIconIndexArray* iIconIndexes; + + /** + * MdcaPoint() cannot leave, so this buffer is allocated + * to allow formatting. Fortunately, doesn't have to be very + * large. + * We have to use MUTABLE CAST, as MdcaPoint is const (odd enough), + * so wouldn't allow formatting the text in a member... + */ + __MUTABLE TBuf iBuf; + }; + +/** +* Item text array for the favourites view listbox filtering; converts item data +* to format what the filter needs. (This means the returned text is what the +* user sees, and does not include listbox internals (tabulators, icon numbers). +*/ +class TBrowserFavouritesListboxFilterTextArray: public MDesCArray + { + public: // from MDesCArray + + /** + * Get number of items in the array. + * @return Number of items. + */ + TInt MdcaCount() const; + + /** + * Text to be displayed for this item. + * @param aIndex Index of item. + * @return TPtrC for this item text. + */ + TPtrC MdcaPoint( TInt aIndex ) const; + + /** + * The model uses this class. + */ + friend class CBrowserFavouritesListboxModel; + + private: // data + + /** + * Pointer to real data. Not owned. + */ + const CFavouritesItemList* iItems; + + }; + +/** +* Model for the bookmark item listbox. Contains an array of +* CBrowserFavouritesItem pointers; items are owned. +*/ +class CBrowserFavouritesListboxModel: public CAknFilteredTextListBoxModel + { + public: // Construct / destruct + + /** + * Two-phase constructor. Leaves on failure. + * The two arrays passed must have the same number of items. + * @param aItems Itemarray; not owned. + * @param aIconIndexes Icon index array, not owned. + */ + static CBrowserFavouritesListboxModel* NewL + ( + const CFavouritesItemList& aItems, + const CBrowserFavouritesIconIndexArray& aIconIndexes + ); + + /** + * Overcoming base class bugs. Need to set itemarray after the whole + * listbox has been constructed; as the listbox construction + * overwrites itemarray to NULL. To be called as part of the + * construction ("third phase constructor"), AFTER the listbox's + * ConstructL. + */ + void SetItemArray(); + + /** + * Destructor. + */ + virtual ~CBrowserFavouritesListboxModel(); + + public: // new methods + + /** + * Set new data into the model. + * The two arrays passed must have the same number of items. + * @param aItems Itemarray; not owned. + * @param aIconIndexes Icon index array, not owned. + */ + void SetData + ( + const CFavouritesItemList& aItems, + const CBrowserFavouritesIconIndexArray& aIconIndexes + ); + + /** + * Returns pointer to item list. + * @return Pointer to item list. + */ + inline const CFavouritesItemList* Items() const; + + public: // from CTextListBoxModel + + /** + * Get matchable text array (for filtering). + * @return The matchable text array. + */ + const MDesCArray* MatchableTextArray() const; + + protected: // Construct / destruct + + /** + * Constructor. + * The two arrays passed must have the same number of items. + * @param aItems Itemarray; not owned. + * @param aIconIndexes Icon index array, not owned. + */ + CBrowserFavouritesListboxModel + ( + const CFavouritesItemList& aItems, + const CBrowserFavouritesIconIndexArray& aIconIndexes + ); + + /** + * Second phase constructor. Leaves on failure. + */ + void ConstructL(); + + private: // data + + /** + * The item array (real data, array of CFavouritesItem-s). Not owned. + */ + const CFavouritesItemList* iItems; + + /** + * Icon indexes. Not owned. + */ + const CBrowserFavouritesIconIndexArray* iIconIndexes; + + /** + * The item text array (formatting for listbox). + */ + TBrowserFavouritesListboxItemTextArray iItemTexts; + + /** + * The filter text array (formatting for filtering). + */ + TBrowserFavouritesListboxFilterTextArray iFilterTexts; + + }; + +#include "BrowserFavouritesListboxModel.inl" + +#endif + +// End of file