menufw/menufwui/mmwidgets/inc/mmlistboxview.h
branchRCL_3
changeset 34 5456b4e8b3a8
child 35 3321d3e205b6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/menufw/menufwui/mmwidgets/inc/mmlistboxview.h	Wed Sep 01 12:32:46 2010 +0100
@@ -0,0 +1,241 @@
+/*
+* Copyright (c) 2007 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:
+*  Version     : %version: MM_12.1.9 % << Don't touch! Updated by Synergy at check-out.
+*
+*/
+
+
+#ifndef MMLISTBOXVIEW_H
+#define MMLISTBOXVIEW_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <eikfrlb.h>
+
+// CLASS DECLARATION
+
+/**
+ *  Multimedia Menu Listbox view.
+ *
+ *  @code
+ *  @endcode
+ *  @lib mmwidgets
+ *  @since S60 v3.0
+ *  @ingroup group_mmwidgets
+ */
+NONSHARABLE_CLASS( CMmListBoxView ) : public CFormattedCellListBoxView
+    {
+public:
+    // Constructors and destructor
+
+    /**
+     * Destructor.
+     */
+    ~CMmListBoxView();
+
+    /**
+     * Two-phased constructor.
+     */
+    static CMmListBoxView* NewL();
+
+    /**
+     * Two-phased constructor.
+     */
+    static CMmListBoxView* NewLC();
+
+  /**
+   * Calculate the bottom item index.
+   *
+   * @since S60 v3.0
+   */
+    void CalcBottomItemIndex();
+
+  /**
+   * Draw the view.
+   *
+   * @since S60 v3.0
+   * @param clipRect Clipping rectangle.
+   */
+    void Draw(const TRect* clipRect) const;
+
+  /**
+   * Draws the listbox within the given clipping rect.
+   *
+   * @since S60 v3.0
+   * @param clipRect Clipping rectangle.
+   */
+    void DoDraw(const TRect* aClipRect) const;
+
+  /**
+   * Draw item in view. It is possible that it
+   * calls drawing of more than one item.
+   *
+   * @since S60 v3.0
+   * @param aItemIndex Item index.
+   */
+    void DrawItem(TInt aItemIndex) const;
+
+  /**
+   * Draw a single item in view.
+   *
+   * @since S60 v3.0
+   * @param aItemIndex Item index.
+   */
+    void DrawSingleItem (TInt aItemIndex) const;
+
+  /**
+   * Sets aItemIndex to the index of the item whose bounding box contains aPosition.
+   *
+   * @since S60 v3.0
+   * @param aPosition Item position.
+   * @param aItemIndex Item index.
+   * @return Was item found.
+   */
+    TBool XYPosToItemIndex(TPoint aPosition, TInt& aItemIndex) const;
+
+  /**
+   * Gets item position.
+   *
+   * @since S60 v3.0
+   * @param aItemIndex Item index.
+   * @return Item position.
+   */
+    TPoint ItemPos(TInt aItemIndex) const;
+
+  /**
+   * Sets item height.
+   *
+   * @since S60 v3.0
+   * @param aItemHeight Item height.
+   */
+    void SetItemHeight(TInt aItemHeight);
+
+  /**
+   * Calculates new top item index so item is visible.
+   *
+   * @since S60 v3.0
+   * @param aItemIndex Item to be visible.
+   * @return New top item index.
+   */
+    TInt CalcNewTopItemIndexSoItemIsVisible(TInt aItemIndex) const;
+
+  /**
+   * Draw background between rects.
+   *
+   * @since S60 v3.0
+   * @param aUsedPortionOfViewRect Inner rect.
+   * @param aSmallerViewRect Outer rect.
+   */
+    void RedrawBackground( TRect aUsedPortionOfViewRect, TRect aSmallerViewRect) const;
+
+  /**
+   * Draws background in list which is not covered by vivible items.
+   *
+   * @since S60 v3.0
+   */
+    void RedrawBackground() const;
+
+  /**
+   * Gets total height of items within range.
+   *
+   * @since S60 v3.0
+   * @param aStartIndex Start item index.
+   * @param aEndIndex End item index.
+   * @return Total height of items starting from aStartIndex, ending with aEndIndex.
+   */
+    TInt GetTotalHeight( TInt aStartIndex, TInt aEndIndex ) const;
+
+    /**
+     * Gets the current widget vertical item offset.
+     *
+     * @since S60 v5.0
+     * @return The current widget vertical item offset.
+     */
+    TInt VerticalItemOffset() const;
+
+    /**
+     * Overridden to allow for disabling this method in certain situations.
+     *
+     * @param aItemIndex Item index.
+     */
+    TBool ScrollToMakeItemVisible(TInt aItemIndex);
+
+    /**
+     * Disables ScrollToMakeItemVisible.
+     * When disabled, ScrollToMakeItemVisible does nothing.
+     *
+     * @param aDisable Self-explanatory.
+     */
+    void DisableScrollToItem( TBool aDisable );
+
+    /**
+     * Gets number of items in model.
+     *
+     * @return
+     */
+    TInt ModelItemsCount();
+
+private:
+
+    /**
+     * Constructor for performing 1st stage construction.
+     */
+    CMmListBoxView();
+
+    /**
+     * Default symbian 2nd stage constructor.
+     */
+    void ConstructL();
+
+  /**
+   * Updates average item height.
+   *
+   * @since S60 v3.0
+   */
+     void UpdateAverageItemHeight();
+
+  /**
+   * Gets last item index depending on height.
+   *
+   * @since S60 v3.0
+   * @param aStartIndex Start item index.
+   * @param aHeight Height of area.
+   * @return Last item index.
+   */
+    TInt GetLastIndexInHeight( const TInt aStartIndex, TInt aHeight ) const;
+
+  /**
+   * Sets the previously drawn current item index.
+   *
+   * @since S60 v3.0
+   * @param aIndex Current Item index.
+   */
+    void SetPreviouslyDrawnCurrentItemIndex( TBool aIndex );
+
+private:
+
+  /**
+   * iCurrentItemIndex
+   */
+  TInt iPreviouslyDrawnCurrentItemIndex;
+
+  /**
+   * When ETrue, disables ScrollToMakeItemVisible method.
+   */
+  TBool iScrollToItemDisabled;
+    };
+
+#endif // MMLISTBOXVIEW_H