classicui_plat/grids_api/inc/AknGMSStyleGrid.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 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: 
hgs
parents:
diff changeset
    15
*       Contains the View and the Component of the photoalbum picture grid
hgs
parents:
diff changeset
    16
*       component.
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
hgs
parents:
diff changeset
    22
#ifndef __CAknGMSStyleGrid_h
hgs
parents:
diff changeset
    23
#define __CAknGMSStyleGrid_h
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
#include <AknGrid.h>
hgs
parents:
diff changeset
    26
#include <aknPopup.h>
hgs
parents:
diff changeset
    27
#include <aknlists.h>
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
class CGulIcon;
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
// ============================================================================
hgs
parents:
diff changeset
    32
// CAknGMSStyleGridView
hgs
parents:
diff changeset
    33
// ============================================================================
hgs
parents:
diff changeset
    34
hgs
parents:
diff changeset
    35
/**
hgs
parents:
diff changeset
    36
	 the view for the grid component.
hgs
parents:
diff changeset
    37
*/
hgs
parents:
diff changeset
    38
class CAknGMSStyleGridView : public CAknGridView
hgs
parents:
diff changeset
    39
	{
hgs
parents:
diff changeset
    40
public: // from CAknGridView
hgs
parents:
diff changeset
    41
	IMPORT_C CAknGMSStyleGridView();
hgs
parents:
diff changeset
    42
public: // from	CAknGridView
hgs
parents:
diff changeset
    43
	/**
hgs
parents:
diff changeset
    44
		draws the hor. and vert. lines.
hgs
parents:
diff changeset
    45
	*/
hgs
parents:
diff changeset
    46
	IMPORT_C void Draw(const TRect* aClipRect = NULL) const;
hgs
parents:
diff changeset
    47
public: // new methods
hgs
parents:
diff changeset
    48
	/**
hgs
parents:
diff changeset
    49
	 sets the rectangle for the drawing operations.
hgs
parents:
diff changeset
    50
	 This method is called when the grid is constructed.
hgs
parents:
diff changeset
    51
	 */
hgs
parents:
diff changeset
    52
	IMPORT_C void SetupLayout(const TRect& aRect, TBool aIsPopup = EFalse, TInt aNum = -1);
hgs
parents:
diff changeset
    53
private: // overridden from CListBoxView
hgs
parents:
diff changeset
    54
	IMPORT_C virtual TAny* Reserved_1();
hgs
parents:
diff changeset
    55
hgs
parents:
diff changeset
    56
private: // new methods
hgs
parents:
diff changeset
    57
    /**
hgs
parents:
diff changeset
    58
     Calculate maximum number of horizontal lines
hgs
parents:
diff changeset
    59
     */
hgs
parents:
diff changeset
    60
    TInt MaxNumOfHorLines() const;
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
    /**
hgs
parents:
diff changeset
    63
     Calculate maximum number of vertical lines
hgs
parents:
diff changeset
    64
     */
hgs
parents:
diff changeset
    65
    TInt MaxNumOfVerLines() const;
hgs
parents:
diff changeset
    66
hgs
parents:
diff changeset
    67
private: // data
hgs
parents:
diff changeset
    68
	TAknLayoutRect iHorLine[5];
hgs
parents:
diff changeset
    69
	TAknLayoutRect iVerLine[3];
hgs
parents:
diff changeset
    70
	const TRect* iRect;
hgs
parents:
diff changeset
    71
	};
hgs
parents:
diff changeset
    72
hgs
parents:
diff changeset
    73
hgs
parents:
diff changeset
    74
// ============================================================================
hgs
parents:
diff changeset
    75
// CAknGMSStyleGrid
hgs
parents:
diff changeset
    76
// ============================================================================
hgs
parents:
diff changeset
    77
/**
hgs
parents:
diff changeset
    78
	implements the grid for the PhotoAlbum
hgs
parents:
diff changeset
    79
	A markable grid_large_graphic_pane, with 2 columns. The cell displays
hgs
parents:
diff changeset
    80
	80x32 bitmaps.
hgs
parents:
diff changeset
    81
*/
hgs
parents:
diff changeset
    82
hgs
parents:
diff changeset
    83
class CAknGMSStyleGrid : public CAknSelectionGridTypedef
hgs
parents:
diff changeset
    84
    {
hgs
parents:
diff changeset
    85
public:
hgs
parents:
diff changeset
    86
    /**
hgs
parents:
diff changeset
    87
     * Creates a gms grid
hgs
parents:
diff changeset
    88
     * @param aParent A parent used to find a window for the grid.
hgs
parents:
diff changeset
    89
     * @param aIsPopup Whether a popup layout or main pane layout is used
hgs
parents:
diff changeset
    90
     */
hgs
parents:
diff changeset
    91
    IMPORT_C static CAknGMSStyleGrid* NewL(const CCoeControl* aParent, TBool aIsPopup = EFalse);
hgs
parents:
diff changeset
    92
    /**
hgs
parents:
diff changeset
    93
       do not use this, use NewL
hgs
parents:
diff changeset
    94
       aIsPopup = EFalse is default.
hgs
parents:
diff changeset
    95
    */
hgs
parents:
diff changeset
    96
    IMPORT_C CAknGMSStyleGrid(); 
hgs
parents:
diff changeset
    97
    /**
hgs
parents:
diff changeset
    98
     * @param aIsPopup Whether a popup layout is used or not
hgs
parents:
diff changeset
    99
     */
hgs
parents:
diff changeset
   100
    IMPORT_C CAknGMSStyleGrid(TBool aIsPopup);
hgs
parents:
diff changeset
   101
    /**
hgs
parents:
diff changeset
   102
	 * 2nd phase of construction.
hgs
parents:
diff changeset
   103
	 * @param aParent the parent compound control
hgs
parents:
diff changeset
   104
	 * @param aRows desired rows of grid
hgs
parents:
diff changeset
   105
	 * @param aCols desired cols of grid
hgs
parents:
diff changeset
   106
	*/
hgs
parents:
diff changeset
   107
	IMPORT_C void ConstructL(const CCoeControl* aParent, TInt aRows=4, TInt aCols=2);
hgs
parents:
diff changeset
   108
hgs
parents:
diff changeset
   109
	/**
hgs
parents:
diff changeset
   110
		the destructor
hgs
parents:
diff changeset
   111
	*/
hgs
parents:
diff changeset
   112
	IMPORT_C ~CAknGMSStyleGrid();
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
    /**
hgs
parents:
diff changeset
   115
     * Sets the layout of the grid view
hgs
parents:
diff changeset
   116
     */
hgs
parents:
diff changeset
   117
    IMPORT_C void SetupLayout();
hgs
parents:
diff changeset
   118
hgs
parents:
diff changeset
   119
    /**
hgs
parents:
diff changeset
   120
     * From CCoeControl.     
hgs
parents:
diff changeset
   121
     * Handles pointer events
hgs
parents:
diff changeset
   122
     */
hgs
parents:
diff changeset
   123
    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 
hgs
parents:
diff changeset
   124
hgs
parents:
diff changeset
   125
public: // from CAknGrid
hgs
parents:
diff changeset
   126
	/**
hgs
parents:
diff changeset
   127
	 *	layouts and repaints the grid
hgs
parents:
diff changeset
   128
	 */
hgs
parents:
diff changeset
   129
	IMPORT_C void SizeChanged();
hgs
parents:
diff changeset
   130
         
hgs
parents:
diff changeset
   131
        /**
hgs
parents:
diff changeset
   132
         * Decides size of the grid for dialogs.
hgs
parents:
diff changeset
   133
         */
hgs
parents:
diff changeset
   134
        IMPORT_C TSize MinimumSize();
hgs
parents:
diff changeset
   135
hgs
parents:
diff changeset
   136
	/**
hgs
parents:
diff changeset
   137
	 * Offers key events to parent class.
hgs
parents:
diff changeset
   138
	 * @param aKeyEvent kind of key event
hgs
parents:
diff changeset
   139
	 * @param aType key typed
hgs
parents:
diff changeset
   140
	 */
hgs
parents:
diff changeset
   141
	IMPORT_C TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
hgs
parents:
diff changeset
   142
hgs
parents:
diff changeset
   143
	/**
hgs
parents:
diff changeset
   144
	 * Defines a grid cell size
hgs
parents:
diff changeset
   145
	 * @return size of a grid cell
hgs
parents:
diff changeset
   146
	 */
hgs
parents:
diff changeset
   147
    static TSize KCELL_SIZE();
hgs
parents:
diff changeset
   148
hgs
parents:
diff changeset
   149
	/**
hgs
parents:
diff changeset
   150
	 * Redraw the grid.
hgs
parents:
diff changeset
   151
	 * @param aRect the rectangle to draw.
hgs
parents:
diff changeset
   152
	 */
hgs
parents:
diff changeset
   153
	IMPORT_C void Draw(const TRect& aRect) const;
hgs
parents:
diff changeset
   154
	
hgs
parents:
diff changeset
   155
	/**
hgs
parents:
diff changeset
   156
	 * Overriden from CAknGrid. Create the grid view for thus grid class.
hgs
parents:
diff changeset
   157
	 * @ return the grid view
hgs
parents:
diff changeset
   158
	 */ 
hgs
parents:
diff changeset
   159
        IMPORT_C CListBoxView* MakeViewClassInstanceL();
hgs
parents:
diff changeset
   160
hgs
parents:
diff changeset
   161
protected:
hgs
parents:
diff changeset
   162
    /**
hgs
parents:
diff changeset
   163
     * Are we a popup window or main pane window, ETrue = popup window.
hgs
parents:
diff changeset
   164
     */
hgs
parents:
diff changeset
   165
    TBool iIsPopup;
hgs
parents:
diff changeset
   166
    
hgs
parents:
diff changeset
   167
private:
hgs
parents:
diff changeset
   168
    /**
hgs
parents:
diff changeset
   169
    * From CAknControl
hgs
parents:
diff changeset
   170
    */
hgs
parents:
diff changeset
   171
    IMPORT_C void* ExtensionInterface( TUid aInterface );
hgs
parents:
diff changeset
   172
hgs
parents:
diff changeset
   173
private:
hgs
parents:
diff changeset
   174
	/**
hgs
parents:
diff changeset
   175
	 *	a helper method for logging calls
hgs
parents:
diff changeset
   176
	 */	
hgs
parents:
diff changeset
   177
	static void _LOG(const TDesC& aText);
hgs
parents:
diff changeset
   178
hgs
parents:
diff changeset
   179
private: // data
hgs
parents:
diff changeset
   180
hgs
parents:
diff changeset
   181
};
hgs
parents:
diff changeset
   182
hgs
parents:
diff changeset
   183
/** 
hgs
parents:
diff changeset
   184
 * The window part of a gms grid.
hgs
parents:
diff changeset
   185
 */
hgs
parents:
diff changeset
   186
class CAknGMSPopupGrid : public CAknPopupList
hgs
parents:
diff changeset
   187
    {
hgs
parents:
diff changeset
   188
public:
hgs
parents:
diff changeset
   189
    /**
hgs
parents:
diff changeset
   190
     * Creates a window for the grid.
hgs
parents:
diff changeset
   191
     * @param aListBox The grid used.
hgs
parents:
diff changeset
   192
     * @param aCbaResource The softkeys used.
hgs
parents:
diff changeset
   193
     * @param aType The layout used
hgs
parents:
diff changeset
   194
     */
hgs
parents:
diff changeset
   195
    IMPORT_C static CAknGMSPopupGrid* NewL(CEikListBox* aListBox, TInt aCbaResource, AknPopupLayouts::TAknPopupLayouts aType=AknPopupLayouts::EMenuWindow);
hgs
parents:
diff changeset
   196
public:
hgs
parents:
diff changeset
   197
    /**
hgs
parents:
diff changeset
   198
     * Setup the whole window layout; window position, grid and heading position, shadow for the window.
hgs
parents:
diff changeset
   199
     * @param aLayoutId A choice of layout -- not used by the implementation.
hgs
parents:
diff changeset
   200
     */
hgs
parents:
diff changeset
   201
    IMPORT_C void SetupWindowLayout(AknPopupLayouts::TAknPopupLayouts);
hgs
parents:
diff changeset
   202
    /**
hgs
parents:
diff changeset
   203
     * Calculate grid window position
hgs
parents:
diff changeset
   204
     */
hgs
parents:
diff changeset
   205
    IMPORT_C static void CalcPopupGridLargeGraphicWindow(TAknPopupWindowLayoutDef &aDef, TRect aClientRect, TInt aNumberOfLinesInListBox);
hgs
parents:
diff changeset
   206
    /**
hgs
parents:
diff changeset
   207
     * Calculate grid and heading position
hgs
parents:
diff changeset
   208
     */
hgs
parents:
diff changeset
   209
    IMPORT_C static void SetupPopupGridLargeGraphicWindow(TAknPopupWindowLayoutDef &aDef, 
hgs
parents:
diff changeset
   210
				     TInt aNumberOfLinesInListBox, 
hgs
parents:
diff changeset
   211
				     TBool aHeading);
hgs
parents:
diff changeset
   212
    /**
hgs
parents:
diff changeset
   213
     * Setup shadow for the window.
hgs
parents:
diff changeset
   214
     */
hgs
parents:
diff changeset
   215
    IMPORT_C static void PopupGridLargeGraphicGraphics(TAknPopupWindowLayoutDef &aDef);
hgs
parents:
diff changeset
   216
hgs
parents:
diff changeset
   217
    /**
hgs
parents:
diff changeset
   218
     * From CCoeControl.     
hgs
parents:
diff changeset
   219
     * Handles pointer events
hgs
parents:
diff changeset
   220
     */
hgs
parents:
diff changeset
   221
    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);    
hgs
parents:
diff changeset
   222
hgs
parents:
diff changeset
   223
private:
hgs
parents:
diff changeset
   224
    /**
hgs
parents:
diff changeset
   225
    * From CAknControl
hgs
parents:
diff changeset
   226
    */
hgs
parents:
diff changeset
   227
    IMPORT_C void* ExtensionInterface( TUid aInterface );
hgs
parents:
diff changeset
   228
    };
hgs
parents:
diff changeset
   229
hgs
parents:
diff changeset
   230
#endif // __CAknGMSStyleGrid_h