browserui/browser/FavouritesInc/BrowserFavouritesListboxModel.h
changeset 0 84ad3b177aa3
--- /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