classicui_plat/scroller_api/inc/Aknscbut.h
author hgs
Thu, 09 Sep 2010 10:18:50 +0800
changeset 65 b959e31f70b5
parent 45 667edd0b8678
permissions -rw-r--r--
201035_2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
45
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  ?Description
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
#if !defined(__AKNSCBUT_H__)
hgs
parents:
diff changeset
    22
#define __AKNSCBUT_H__
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
//  INCLUDES
hgs
parents:
diff changeset
    25
#include <AknControl.h>
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
// FORWARD DECLARATIONS
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
class CAknScrollIndicator;
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
/**
hgs
parents:
diff changeset
    32
*  Implements a scroll buttons of a scroll bar.
hgs
parents:
diff changeset
    33
*
hgs
parents:
diff changeset
    34
*  @since Series 60 0.9
hgs
parents:
diff changeset
    35
*/
hgs
parents:
diff changeset
    36
NONSHARABLE_CLASS(CAknScrollButton) : public CAknControl
hgs
parents:
diff changeset
    37
	{
hgs
parents:
diff changeset
    38
public:
hgs
parents:
diff changeset
    39
	/**
hgs
parents:
diff changeset
    40
	* Indicates a Scroll button's type
hgs
parents:
diff changeset
    41
	*/
hgs
parents:
diff changeset
    42
	enum TType
hgs
parents:
diff changeset
    43
		{
hgs
parents:
diff changeset
    44
		/** Scroll button to move the display to the left. */
hgs
parents:
diff changeset
    45
		ENudgeLeft,
hgs
parents:
diff changeset
    46
		/** Scroll button to move the display up.  */
hgs
parents:
diff changeset
    47
		ENudgeUp, 
hgs
parents:
diff changeset
    48
		/** Scroll button to move the display to the right. */
hgs
parents:
diff changeset
    49
		ENudgeRight,
hgs
parents:
diff changeset
    50
		/** Scroll button to move the display down. */ 
hgs
parents:
diff changeset
    51
		ENudgeDown,
hgs
parents:
diff changeset
    52
		/** Scroll button to move the display page to the left. */ 
hgs
parents:
diff changeset
    53
		EPageLeft, 
hgs
parents:
diff changeset
    54
		/** Scroll button to move the display page up. */
hgs
parents:
diff changeset
    55
		EPageUp, 
hgs
parents:
diff changeset
    56
		/** Scroll button to move the display page to the right.*/
hgs
parents:
diff changeset
    57
		EPageRight,
hgs
parents:
diff changeset
    58
		/** Scroll button to move the display page down. */ 
hgs
parents:
diff changeset
    59
		EPageDown, 
hgs
parents:
diff changeset
    60
		/** Scroll button to move the display to the home position. */
hgs
parents:
diff changeset
    61
		EHome,
hgs
parents:
diff changeset
    62
		/** Scroll button to move the display to the top. */ 
hgs
parents:
diff changeset
    63
		ETop,
hgs
parents:
diff changeset
    64
		 /** Scroll button to move the display to the end position. */ 
hgs
parents:
diff changeset
    65
		EEnd,
hgs
parents:
diff changeset
    66
		/** Scroll button to move the display to the bottom. */
hgs
parents:
diff changeset
    67
		EBottom 
hgs
parents:
diff changeset
    68
		};
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
public:
hgs
parents:
diff changeset
    71
	/**
hgs
parents:
diff changeset
    72
	* Indicates a scroll bar's type.
hgs
parents:
diff changeset
    73
	*/
hgs
parents:
diff changeset
    74
	enum TTypeOfScrollBar
hgs
parents:
diff changeset
    75
		{
hgs
parents:
diff changeset
    76
		/** Normal scroll bar  */
hgs
parents:
diff changeset
    77
		ENormal		=0x00,
hgs
parents:
diff changeset
    78
		/** Arrow headed scroll bar */ 
hgs
parents:
diff changeset
    79
		EArrowHead	=0x01 
hgs
parents:
diff changeset
    80
		};
hgs
parents:
diff changeset
    81
hgs
parents:
diff changeset
    82
public: // class specific functions
hgs
parents:
diff changeset
    83
hgs
parents:
diff changeset
    84
    /**
hgs
parents:
diff changeset
    85
    * Two-phased constructor.
hgs
parents:
diff changeset
    86
    * @param aType scroll button's type.
hgs
parents:
diff changeset
    87
    * @return A fully constructed @c CAknScrollButton object.
hgs
parents:
diff changeset
    88
    */
hgs
parents:
diff changeset
    89
	IMPORT_C static CAknScrollButton* NewL(TType aType);
hgs
parents:
diff changeset
    90
	
hgs
parents:
diff changeset
    91
	/**
hgs
parents:
diff changeset
    92
    * Destructor.
hgs
parents:
diff changeset
    93
    */
hgs
parents:
diff changeset
    94
	IMPORT_C ~CAknScrollButton();
hgs
parents:
diff changeset
    95
	
hgs
parents:
diff changeset
    96
	/**
hgs
parents:
diff changeset
    97
    * Gets a scroll button's type.
hgs
parents:
diff changeset
    98
    * @return The scroll button's type.
hgs
parents:
diff changeset
    99
    */
hgs
parents:
diff changeset
   100
	IMPORT_C TType Type() const;
hgs
parents:
diff changeset
   101
	
hgs
parents:
diff changeset
   102
	/**
hgs
parents:
diff changeset
   103
    * Creates a window only for arrows. 
hgs
parents:
diff changeset
   104
    * Sets the container window to be this class.
hgs
parents:
diff changeset
   105
    * @param aParent The control to be the parent of this control.
hgs
parents:
diff changeset
   106
    */
hgs
parents:
diff changeset
   107
	IMPORT_C void CreateWindowOnlyForArrowsL(const CCoeControl* aParent);
hgs
parents:
diff changeset
   108
	
hgs
parents:
diff changeset
   109
	/**
hgs
parents:
diff changeset
   110
    * Determines whether a scroll button is owned by normal scroll bar.
hgs
parents:
diff changeset
   111
    * @return @c ETrue if a scroll button is owned by the normal scroll bar, 
hgs
parents:
diff changeset
   112
    *         @c EFalse if not
hgs
parents:
diff changeset
   113
    */
hgs
parents:
diff changeset
   114
	IMPORT_C TBool IsNormalScrollBarUsingButton() const;
hgs
parents:
diff changeset
   115
	
hgs
parents:
diff changeset
   116
	/**
hgs
parents:
diff changeset
   117
    * Sets the type of scroll bar which owns the button.
hgs
parents:
diff changeset
   118
    * @param aTypeOfScrollBar The type of the scroll bar.
hgs
parents:
diff changeset
   119
    */
hgs
parents:
diff changeset
   120
	IMPORT_C void SetTypeOfScrollBarUsingButton(TTypeOfScrollBar aTypeOfScrollBar);
hgs
parents:
diff changeset
   121
	
hgs
parents:
diff changeset
   122
	/**
hgs
parents:
diff changeset
   123
    * Sets the new focus position in the control and the span length.
hgs
parents:
diff changeset
   124
    * @param aFocusPosition The new focus position.
hgs
parents:
diff changeset
   125
    * @param aScrollSpan The new span length.
hgs
parents:
diff changeset
   126
    */
hgs
parents:
diff changeset
   127
	IMPORT_C void SetPosition(const TInt aFocusPosition, const TInt aScrollSpan);
hgs
parents:
diff changeset
   128
	
hgs
parents:
diff changeset
   129
	/**
hgs
parents:
diff changeset
   130
    * Two-phased constructor.
hgs
parents:
diff changeset
   131
    * @param aType scroll button's type.
hgs
parents:
diff changeset
   132
    * @param aTypeOfScrollBar scroll bar type, this information is needed at construction
hgs
parents:
diff changeset
   133
    *  time when creating button for double span scroll bar (ie. the parameter is ENormal)
hgs
parents:
diff changeset
   134
    * @return A fully constructed @c CAknScrollButton object.
hgs
parents:
diff changeset
   135
    */
hgs
parents:
diff changeset
   136
	IMPORT_C static CAknScrollButton* NewL(TType aType, TTypeOfScrollBar aTypeOfScrollBar);
hgs
parents:
diff changeset
   137
	
hgs
parents:
diff changeset
   138
	void SetContainerWindowL( const CCoeControl& aControl );
hgs
parents:
diff changeset
   139
	TInt CountComponentControls() const;
hgs
parents:
diff changeset
   140
	CCoeControl* ComponentControl( TInt aIndex ) const;
hgs
parents:
diff changeset
   141
	
hgs
parents:
diff changeset
   142
private: // class specific functions
hgs
parents:
diff changeset
   143
	CAknScrollButton(TType aType);
hgs
parents:
diff changeset
   144
	void ConstructL();
hgs
parents:
diff changeset
   145
	void SizeChanged();
hgs
parents:
diff changeset
   146
	void DrawIndicator() const;
hgs
parents:
diff changeset
   147
	void ConstructL(TTypeOfScrollBar aTypeOfScrollBar);
hgs
parents:
diff changeset
   148
private: // from CCoeControl
hgs
parents:
diff changeset
   149
	virtual void Draw(const TRect& aRect) const;
hgs
parents:
diff changeset
   150
private:
hgs
parents:
diff changeset
   151
	friend class CAknScrollBar;
hgs
parents:
diff changeset
   152
	TType iType;
hgs
parents:
diff changeset
   153
	TInt iFlag;
hgs
parents:
diff changeset
   154
	CAknScrollIndicator* iScrollIndicator;
hgs
parents:
diff changeset
   155
	TRect iOldRect;
hgs
parents:
diff changeset
   156
	};
hgs
parents:
diff changeset
   157
hgs
parents:
diff changeset
   158
hgs
parents:
diff changeset
   159
#endif