--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/browserui/browser/FavouritesInc/BrowserFavouritesListboxModel.h Mon Mar 30 12:49:49 2009 +0300
@@ -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 <e32base.h>
+// #include <eiktxlbm.h>
+#include <calslbs.h>
+#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 "<icon index max 3 char>\t<name>\t<mark 1 char>\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<KMaxFavouritesItemListboxName> 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