imageeditor/plugins/DrawPlugin/src/selectionpopup.cpp
author qifeima <>
Thu, 03 Jun 2010 18:57:10 +0800
changeset 8 18b321db4884
parent 1 edfc90759b9f
permissions -rw-r--r--
*m enhance
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
     1
/*
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
     2
* Copyright (c) 2010 Ixonos Plc.
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
     3
* All rights reserved.
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
     4
* This component and the accompanying materials are made available
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
     5
* under the terms of the "Eclipse Public License v1.0"
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
     6
* which accompanies this distribution, and is available
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
     8
*
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
     9
* Initial Contributors:
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    10
* Nokia Corporation - Initial contribution
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    11
*
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    12
* Contributors:
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    13
* Ixonos Plc
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    14
*
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    15
* Description: 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    16
* Selection popup dialog.
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    17
*
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    18
*/
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    19
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    20
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    21
// INCLUDES
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    22
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    23
#include <avkon.hrh>
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    24
#include <AknLayoutScalable_Avkon.cdl.h>
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    25
#include <AknLayoutScalable_Apps.cdl.h>
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    26
#include <fbs.h>
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    27
#include <AknIconUtils.h> 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    28
#include <AknUtils.h> 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    29
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    30
#include <AknBidiTextUtils.h>
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    31
#include <BidiText.h> 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    32
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    33
#include <ImageEditorUi.mbg>
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    34
#include <ImageEditorUI.rsg>
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    35
#include <draw.rsg>
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    36
#include <drawpath.h>
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    37
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    38
#include "ResolutionUtil.h"
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    39
#include "selectionpopup.h"
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    40
#include "ImageEditorUiDefs.h"
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    41
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    42
// CONSTANTS
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    43
const TInt KGridColumnCount = 5;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    44
const TInt KGridRowCount = 1;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    45
const TInt KPenSizeOffset = 153;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    46
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    47
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    48
//=============================================================================
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    49
CSelectionPopup::CSelectionPopup(TRgb& aCurrentColor, const TRect& aImageRect)
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    50
    {    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    51
    // Set values into an array
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    52
    iItemArray.Append( 2 ); //default: 4
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    53
    iItemArray.Append( 4 );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    54
    iItemArray.Append( 8 );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    55
    iItemArray.Append( 16 );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    56
    iItemArray.Append( 32 );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    57
    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    58
    //set defalut color
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    59
    iCurrentColor = aCurrentColor;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    60
    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    61
    iImageRect = aImageRect;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    62
    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    63
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    64
//=============================================================================
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    65
CSelectionPopup::~CSelectionPopup()
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    66
    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    67
    delete iPopupCenter;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    68
    delete iPopupCenterMask;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    69
    delete iPopupCornerTL;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    70
    delete iPopupCornerTLMask;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    71
    delete iPopupCornerTR;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    72
    delete iPopupCornerTRMask;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    73
    delete iPopupCornerBL;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    74
    delete iPopupCornerBLMask;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    75
    delete iPopupCornerBR;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    76
    delete iPopupCornerBRMask;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    77
    delete iPopupSideL;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    78
    delete iPopupSideLMask;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    79
    delete iPopupSideR;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    80
    delete iPopupSideRMask;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    81
    delete iPopupSideT;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    82
    delete iPopupSideTMask;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    83
    delete iPopupSideB;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    84
    delete iPopupSideBMask;     
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    85
           
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    86
    iHighlightRectsArray.Close();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    87
    iGridRectsArray.Close();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    88
    iColorBitmapsArray.ResetAndDestroy();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    89
    iItemArray.Close();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    90
    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    91
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    92
//=============================================================================
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    93
void CSelectionPopup::ConstructL (	CCoeControl* aParent )
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    94
    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    95
	// Set parent
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    96
	SetContainerWindowL( *aParent );  
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    97
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    98
    TFileName iconFile( KImageEditorUiMifFile );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
    99
    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   100
    // Create trans popup window graphics
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   101
    // Center
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   102
    AknIconUtils::CreateIconL( iPopupCenter, iPopupCenterMask, iconFile, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   103
            EMbmImageeditoruiQgn_graf_popup_trans_center, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   104
			EMbmImageeditoruiQgn_graf_popup_trans_center_mask );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   105
	
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   106
	// Top-left corner
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   107
    AknIconUtils::CreateIconL( iPopupCornerTL, iPopupCornerTLMask, iconFile, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   108
            EMbmImageeditoruiQgn_graf_popup_trans_corner_tl, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   109
			EMbmImageeditoruiQgn_graf_popup_trans_corner_tl_mask );		
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   110
    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   111
    // Top-right corner
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   112
    AknIconUtils::CreateIconL( iPopupCornerTR, iPopupCornerTRMask, iconFile, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   113
            EMbmImageeditoruiQgn_graf_popup_trans_corner_tr, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   114
			EMbmImageeditoruiQgn_graf_popup_trans_corner_tr_mask );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   115
    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   116
    // Bottom-left corner
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   117
    AknIconUtils::CreateIconL( iPopupCornerBL, iPopupCornerBLMask, iconFile, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   118
            EMbmImageeditoruiQgn_graf_popup_trans_corner_bl, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   119
			EMbmImageeditoruiQgn_graf_popup_trans_corner_bl_mask );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   120
			
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   121
	// Bottom-right corner
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   122
    AknIconUtils::CreateIconL( iPopupCornerBR, iPopupCornerBRMask, iconFile, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   123
            EMbmImageeditoruiQgn_graf_popup_trans_corner_br, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   124
			EMbmImageeditoruiQgn_graf_popup_trans_corner_br_mask );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   125
    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   126
    // left side
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   127
    AknIconUtils::CreateIconL( iPopupSideL, iPopupSideLMask, iconFile, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   128
            EMbmImageeditoruiQgn_graf_popup_trans_side_l, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   129
			EMbmImageeditoruiQgn_graf_popup_trans_side_l_mask );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   130
			
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   131
	// left side
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   132
    AknIconUtils::CreateIconL( iPopupSideR, iPopupSideRMask, iconFile, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   133
            EMbmImageeditoruiQgn_graf_popup_trans_side_r, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   134
			EMbmImageeditoruiQgn_graf_popup_trans_side_r_mask );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   135
	
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   136
	// top side
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   137
    AknIconUtils::CreateIconL( iPopupSideT, iPopupSideTMask, iconFile, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   138
            EMbmImageeditoruiQgn_graf_popup_trans_side_t, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   139
			EMbmImageeditoruiQgn_graf_popup_trans_side_t_mask );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   140
	
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   141
	// bottom side
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   142
    AknIconUtils::CreateIconL( iPopupSideB, iPopupSideBMask, iconFile, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   143
            EMbmImageeditoruiQgn_graf_popup_trans_side_b, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   144
			EMbmImageeditoruiQgn_graf_popup_trans_side_b_mask );						                                   
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   145
                   					
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   146
	//	Activate control
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   147
    ActivateL();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   148
    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   149
    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   150
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   151
//=============================================================================
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   152
void CSelectionPopup::CreateColorBitmapsL( TSize /* aSize */ )
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   153
    {    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   154
    //TODO: to set icon here
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   155
    // Generate color bitmaps    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   156
    iColorBitmapsArray.Reset(); 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   157
    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   158
    TSize size(2,2);
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   159
    for( TInt i = iItemArray.Count(); i > 0 ; i-- )
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   160
        {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   161
        CFbsBitmap* bitmap = new ( ELeave ) CFbsBitmap;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   162
        CleanupStack::PushL( bitmap );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   163
        User::LeaveIfError ( bitmap->Create ( size, EColor64K ) );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   164
        size.iHeight*=2;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   165
        size.iWidth*=2;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   166
        //  Compute color for bitmap
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   167
        TRgb color( iCurrentColor );//iRGBArray[i] );		
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   168
         
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   169
    	//	Fill the bitmap with the correct color
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   170
    	TUint16 color_64k = ( TUint16 )
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   171
    		(0 | 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   172
    		((( TUint8 )color.Red() >> 3) << 11) | 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   173
    		((( TUint8 )color.Green() >> 2) << 5) | 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   174
    		(( TUint8 )color.Blue() >> 3));
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   175
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   176
        bitmap->LockHeapLC();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   177
    	TUint16 * pd = (TUint16 *)bitmap->DataAddress();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   178
    	TSize size = bitmap->SizeInPixels();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   179
    	TInt w = (bitmap->ScanLineLength(size.iWidth, EColor64K) >> 1) 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   180
    	                                                * size.iHeight;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   181
    	for( TInt k = w; k != 0; --k)
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   182
    	    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   183
    		*pd++ = color_64k;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   184
    	    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   185
    	
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   186
    	iColorBitmapsArray.Append( bitmap );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   187
    	
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   188
        CleanupStack::PopAndDestroy(); // LockHeapLC()
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   189
        CleanupStack::Pop(); // bitmap
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   190
                
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   191
        }    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   192
    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   193
    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   194
    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   195
//=============================================================================
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   196
void CSelectionPopup::Draw( const TRect& aRect ) const
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   197
    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   198
    const TRgb KHighlightCenterColor (229, 229, 229);
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   199
    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   200
    CWindowGc& gc = SystemGc();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   201
     
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   202
    // Change brush to null to enable transparent drawing
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   203
    gc.SetBrushStyle (CGraphicsContext::ENullBrush);
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   204
                
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   205
    // draw center of the borders
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   206
    gc.BitBltMasked( iPopupCenterRect.iTl, iPopupCenter, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   207
                     iPopupCenterRect.Size(), iPopupCenterMask, EFalse );    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   208
    // draw Top left corner
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   209
	gc.BitBltMasked( iPopupCornerTLRect.iTl, iPopupCornerTL, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   210
	                 iPopupCornerTLRect.Size(), iPopupCornerTLMask, EFalse );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   211
	// draw Top right corner		
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   212
	gc.BitBltMasked( iPopupCornerTRRect.iTl, iPopupCornerTR, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   213
	                 iPopupCornerTRRect.Size(), iPopupCornerTRMask, EFalse );			
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   214
    // draw Bottom left corner
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   215
	gc.BitBltMasked( iPopupCornerBLRect.iTl, iPopupCornerBL, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   216
	                 iPopupCornerBLRect.Size(), iPopupCornerBLMask, EFalse );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   217
	// draw Bottom right corner		
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   218
	gc.BitBltMasked( iPopupCornerBRRect.iTl, iPopupCornerBR, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   219
	                 iPopupCornerBRRect.Size(), iPopupCornerBRMask, EFalse );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   220
    // draw Left side
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   221
	gc.BitBltMasked( iPopupSideLRect.iTl, iPopupSideL, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   222
	                 iPopupSideLRect.Size(), iPopupSideLMask, EFalse );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   223
	// draw Right side		
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   224
    gc.BitBltMasked( iPopupSideRRect.iTl, iPopupSideR, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   225
                     iPopupSideRRect.Size(), iPopupSideRMask, EFalse );			
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   226
    // draw Top side
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   227
    gc.BitBltMasked( iPopupSideTRect.iTl, iPopupSideT, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   228
                     iPopupSideTRect.Size(), iPopupSideTMask, EFalse );			
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   229
    // draw Bottom side
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   230
    gc.BitBltMasked( iPopupSideBRect.iTl, iPopupSideB, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   231
                     iPopupSideBRect.Size(), iPopupSideBMask, EFalse );			
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   232
    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   233
    // Draw color items and selection indicator
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   234
    for( TInt index = 0; index < iGridRectsArray.Count(); index++ )
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   235
        {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   236
        // Draw selection indicator for current item
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   237
        if( index == iCurrentItem )
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   238
            {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   239
            gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   240
            gc.SetBrushColor( KHighlightCenterColor );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   241
            gc.SetPenColor( KRgbBlack );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   242
            gc.SetPenSize( TSize(2,2) );     
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   243
            gc.DrawRect( iHighlightRectsArray[ iCurrentItem ] );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   244
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   245
            gc.SetBrushStyle (CGraphicsContext::ENullBrush);            
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   246
            }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   247
            
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   248
        // draw color bitmap    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   249
        TRect currentRect = iGridRectsArray[index];
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   250
        currentRect.iTl.iX = currentRect.iTl.iX + (currentRect.iBr.iX - currentRect.iTl.iX)/2 - iItemArray[index]/2;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   251
        currentRect.iTl.iY = currentRect.iTl.iY + (currentRect.iBr.iY - currentRect.iTl.iY)/2 - iItemArray[index]/2;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   252
        gc.BitBlt(currentRect.iTl, iColorBitmapsArray[index]);
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   253
        }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   254
                  
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   255
     // Draw heading  
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   256
     // Convert the plug-in name to visual representation
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   257
     // (in case would be right-to-left)
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   258
     const CFont* font = NULL;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   259
     font = AknLayoutUtils::FontFromId( EAknLogicalFontPrimaryFont );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   260
     TBuf<256> visual;            
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   261
     // Text to be converted
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   262
     HBufC * heading = ControlEnv()->AllocReadResourceLC ( R_TITLE_LINE_WEIGHT );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   263
     
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   264
     AknBidiTextUtils::ConvertToVisualAndClip( 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   265
         heading->Des(), 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   266
         visual,
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   267
         *font,
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   268
         iHeadingRect.Width(),
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   269
         iHeadingRect.Width()
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   270
         );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   271
        
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   272
     CleanupStack::PopAndDestroy( heading );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   273
        
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   274
     gc.UseFont( font );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   275
     gc.SetBrushStyle ( CGraphicsContext::ENullBrush );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   276
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   277
     TInt baseline = iHeadingRect.Height() / 2 + font->AscentInPixels() / 2; 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   278
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   279
     // Check the directionality of the current language and set the alignment
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   280
     // according the directionality
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   281
     TBidiText::TDirectionality dir = TBidiText::ScriptDirectionality(User::Language());
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   282
     CGraphicsContext::TTextAlign align = CGraphicsContext::ELeft;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   283
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   284
     if (dir == TBidiText::ERightToLeft)
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   285
		{
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   286
		align = CGraphicsContext::ERight;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   287
		}
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   288
	gc.SetPenColor(KRgbWhite);
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   289
	gc.DrawText(visual, iHeadingRect, baseline, align, 0);
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   290
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   291
    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   292
    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   293
//=============================================================================    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   294
void CSelectionPopup::SizeChanged()
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   295
    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   296
    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   297
    TAknLayoutRect layoutRect;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   298
    layoutRect.LayoutRect( Rect(), AknLayoutScalable_Apps::popup_imed_trans_window(0) );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   299
    TRect parentRect = layoutRect.Rect();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   300
    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   301
    if(parentRect.iTl.iX > parentRect.iTl.iY)
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   302
    	{
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   303
    	 parentRect.SetRect(parentRect.iTl.iX-KPenSizeOffset,parentRect.iTl.iY,parentRect.iBr.iX-KPenSizeOffset,parentRect.iBr.iY);      
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   304
    	}
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   305
   
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   306
	TAknLayoutRect iconLayout;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   307
	iconLayout.LayoutRect( parentRect, AknLayoutScalable_Avkon::bg_tb_trans_pane_g1());
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   308
	iPopupCenterRect = iconLayout.Rect();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   309
	
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   310
	iconLayout.LayoutRect( parentRect, AknLayoutScalable_Avkon::bg_tb_trans_pane_g2());
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   311
	iPopupCornerTLRect = iconLayout.Rect();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   312
	
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   313
	iconLayout.LayoutRect( parentRect, AknLayoutScalable_Avkon::bg_tb_trans_pane_g3());
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   314
	iPopupCornerTRRect = iconLayout.Rect();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   315
	
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   316
	iconLayout.LayoutRect( parentRect, AknLayoutScalable_Avkon::bg_tb_trans_pane_g4());
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   317
	iPopupCornerBLRect = iconLayout.Rect();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   318
	
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   319
	iconLayout.LayoutRect( parentRect, AknLayoutScalable_Avkon::bg_tb_trans_pane_g5());
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   320
	iPopupCornerBRRect = iconLayout.Rect();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   321
	
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   322
	iconLayout.LayoutRect( parentRect, AknLayoutScalable_Avkon::bg_tb_trans_pane_g6());
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   323
	iPopupSideLRect = iconLayout.Rect();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   324
	
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   325
	iconLayout.LayoutRect( parentRect, AknLayoutScalable_Avkon::bg_tb_trans_pane_g7());
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   326
	iPopupSideRRect = iconLayout.Rect();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   327
	
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   328
	iconLayout.LayoutRect( parentRect, AknLayoutScalable_Avkon::bg_tb_trans_pane_g8());
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   329
	iPopupSideTRect = iconLayout.Rect();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   330
	
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   331
	iconLayout.LayoutRect( parentRect, AknLayoutScalable_Avkon::bg_tb_trans_pane_g9());
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   332
	iPopupSideBRect = iconLayout.Rect();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   333
		
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   334
	iconLayout.LayoutRect( parentRect, AknLayoutScalable_Apps::listscroll_imed_pane());
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   335
	TRect listscrollPaneRect = iconLayout.Rect();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   336
	
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   337
	iconLayout.LayoutRect( listscrollPaneRect, AknLayoutScalable_Apps::grid_imed_colour_35_pane( 1 ));
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   338
	TRect gridPaneRect = iconLayout.Rect();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   339
	
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   340
	iHighlightRectsArray.Reset();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   341
	iGridRectsArray.Reset();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   342
	for( TInt row = 0; row < KGridRowCount; row++ )
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   343
	    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   344
	    for( TInt column = 0; column < KGridColumnCount; column++ )
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   345
	        {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   346
	        iconLayout.LayoutRect( gridPaneRect, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   347
	                               AknLayoutScalable_Apps::cell_imed_colour_pane(0 , column, row ));
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   348
	        TRect highlightRect = iconLayout.Rect();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   349
	        iHighlightRectsArray.Append( highlightRect );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   350
	        
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   351
	        iconLayout.LayoutRect( highlightRect, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   352
	                               AknLayoutScalable_Apps::cell_imed_colour_pane_g1(0) );	       
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   353
	        
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   354
	        iGridRectsArray.Append(iconLayout.Rect());
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   355
	        }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   356
	    }	
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   357
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   358
    CreateColorBitmapsL( iconLayout.Rect().Size() );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   359
    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   360
    //Heading rect
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   361
	iconLayout.LayoutRect( parentRect, AknLayoutScalable_Apps::heading_imed_pane());
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   362
	TRect heading = iconLayout.Rect();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   363
	
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   364
    TAknLayoutText layoutText;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   365
    layoutText.LayoutText( heading, AknLayoutScalable_Apps::heading_imed_pane_t1() );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   366
    iHeadingRect = layoutText.TextRect();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   367
    iLayoutTextHeading = layoutText;            		
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   368
    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   369
    // Resize graphics to correct size
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   370
	AknIconUtils::SetSize( iPopupCenter, iPopupCenterRect.Size(), EAspectRatioNotPreserved);
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   371
	AknIconUtils::SetSize( iPopupCornerTL, iPopupCornerTLRect.Size(), EAspectRatioNotPreserved);
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   372
	AknIconUtils::SetSize( iPopupCornerTR, iPopupCornerTRRect.Size(), EAspectRatioNotPreserved);
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   373
	AknIconUtils::SetSize( iPopupCornerBL, iPopupCornerBLRect.Size(), EAspectRatioNotPreserved);
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   374
	AknIconUtils::SetSize( iPopupCornerBR, iPopupCornerBRRect.Size(), EAspectRatioNotPreserved);
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   375
	AknIconUtils::SetSize( iPopupSideL, iPopupSideLRect.Size(), EAspectRatioNotPreserved);
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   376
	AknIconUtils::SetSize( iPopupSideR, iPopupSideRRect.Size(), EAspectRatioNotPreserved);
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   377
    AknIconUtils::SetSize( iPopupSideT, iPopupSideTRect.Size(), EAspectRatioNotPreserved);
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   378
    AknIconUtils::SetSize( iPopupSideB, iPopupSideBRect.Size(), EAspectRatioNotPreserved);
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   379
	
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   380
    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   381
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   382
//=============================================================================      
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   383
TKeyResponse CSelectionPopup::OfferKeyEventL( const TKeyEvent& aKeyEvent,
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   384
                                                   TEventCode aType )
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   385
    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   386
    TKeyResponse res = EKeyWasNotConsumed;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   387
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   388
    if (aType == EEventKey) 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   389
        {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   390
        // If in landscape mode, do different mapping for the number keys.
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   391
        TUint keyCode = aKeyEvent.iCode;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   392
        TBool landscape = CResolutionUtil::Self()->GetLandscape();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   393
        if (landscape)
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   394
        	{
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   395
            switch (keyCode)
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   396
                {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   397
                case 49: // numeric keypad '1'
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   398
                    keyCode = 55;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   399
                    break;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   400
                case 50: // numeric keypad '2'
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   401
                    keyCode = 52;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   402
                    break;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   403
                case 51: // numeric keypad '3'
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   404
                    keyCode = 49;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   405
                    break;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   406
                case 52: // numeric keypad '4'
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   407
                    keyCode = 56;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   408
                    break;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   409
                case 54: // numeric keypad '6'
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   410
                    keyCode = 50;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   411
                    break;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   412
                case 55: // numeric keypad '7'
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   413
                    keyCode = 57;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   414
                    break;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   415
                case 56: // numeric keypad '8'
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   416
                    keyCode = 54;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   417
                    break;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   418
                case 57: // numeric keypad '9'
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   419
                    keyCode = 51;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   420
                    break;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   421
                default:
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   422
                    break;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   423
                }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   424
        	}
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   425
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   426
        switch (keyCode)
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   427
            {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   428
            case EKeyLeftArrow:
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   429
            case 52: // numeric keypad '4'
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   430
                {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   431
                if (iCurrentItem == 0)
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   432
                    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   433
                    iCurrentItem = iGridRectsArray.Count() - 1; 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   434
                    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   435
                else
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   436
                    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   437
                    iCurrentItem--;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   438
                    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   439
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   440
                res = EKeyWasConsumed;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   441
                break;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   442
                }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   443
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   444
            case EKeyRightArrow:
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   445
            case 54: // numeric keypad '6'
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   446
                {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   447
                iCurrentItem++;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   448
                if (iCurrentItem >= iGridRectsArray.Count())
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   449
                    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   450
                    iCurrentItem = 0; 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   451
                    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   452
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   453
                res = EKeyWasConsumed;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   454
                break;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   455
                }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   456
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   457
            case EKeyDownArrow:
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   458
            case 56: // numeric keypad '8'
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   459
                {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   460
                iCurrentItem += KGridColumnCount;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   461
                if (iCurrentItem >= iGridRectsArray.Count())
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   462
                    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   463
                    iCurrentItem = iCurrentItem - iGridRectsArray.Count();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   464
                    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   465
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   466
                res = EKeyWasConsumed;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   467
                break;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   468
                }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   469
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   470
            case EKeyUpArrow:
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   471
            case 50: // numeric keypad '2'
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   472
                {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   473
                iCurrentItem -= KGridColumnCount;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   474
                if (iCurrentItem < 0)
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   475
                    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   476
                    iCurrentItem = iGridRectsArray.Count() + iCurrentItem;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   477
                    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   478
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   479
                res = EKeyWasConsumed;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   480
                break;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   481
                }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   482
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   483
            case 49: // numeric keypad '1'
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   484
                {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   485
                // Move up and left
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   486
                iCurrentItem -= KGridColumnCount;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   487
                iCurrentItem --;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   488
                if (iCurrentItem < 0)
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   489
                    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   490
                    iCurrentItem = iGridRectsArray.Count() + iCurrentItem;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   491
                    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   492
                res = EKeyWasConsumed;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   493
                break;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   494
                }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   495
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   496
            case 51: // numeric keypad '3'
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   497
                {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   498
                // Move up and right
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   499
                iCurrentItem -= KGridColumnCount;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   500
                iCurrentItem ++;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   501
                if (iCurrentItem < 0)
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   502
                    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   503
                    iCurrentItem = iGridRectsArray.Count() + iCurrentItem;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   504
                    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   505
                res = EKeyWasConsumed;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   506
                break;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   507
                }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   508
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   509
            case 55: // numeric keypad '7'
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   510
                {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   511
                // Move down and left
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   512
                iCurrentItem += KGridColumnCount;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   513
                iCurrentItem--;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   514
                if (iCurrentItem >= iGridRectsArray.Count())
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   515
                    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   516
                    iCurrentItem = iCurrentItem - iGridRectsArray.Count();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   517
                    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   518
                res = EKeyWasConsumed;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   519
                break;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   520
                }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   521
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   522
            case 57: // numeric keypad '9'
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   523
                {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   524
                // Move down and left
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   525
                iCurrentItem += KGridColumnCount;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   526
                iCurrentItem++;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   527
                if (iCurrentItem >= iGridRectsArray.Count())
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   528
                    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   529
                    iCurrentItem = iCurrentItem - iGridRectsArray.Count();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   530
                    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   531
                res = EKeyWasConsumed;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   532
                break;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   533
                }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   534
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   535
             default:
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   536
                {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   537
                break;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   538
                }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   539
            }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   540
        }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   541
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   542
    return res;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   543
    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   544
    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   545
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   546
//=============================================================================
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   547
void CSelectionPopup::HandlePointerEventL( const TPointerEvent &aPointerEvent )
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   548
    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   549
    if( AknLayoutUtils::PenEnabled() )
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   550
		{
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   551
		switch( aPointerEvent.iType )
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   552
			{
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   553
			case TPointerEvent::EButton1Down:
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   554
			case TPointerEvent::EDrag:
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   555
				{	
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   556
				// calculate which one of the grid items was pressed by
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   557
				// by comparing item rects and pressed position						
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   558
				for (TInt i = 0; i < iHighlightRectsArray.Count(); ++i)
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   559
                    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   560
                    TRect iconRect( iHighlightRectsArray[i] );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   561
                    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   562
                    if( iconRect.Contains( aPointerEvent.iPosition ) )
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   563
                        {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   564
                        // set new highlighted item
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   565
                        iCurrentItem = i;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   566
                        break;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   567
                        }                        
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   568
                    }        
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   569
				break;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   570
				}
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   571
			case TPointerEvent::EButton1Up:
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   572
				{
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   573
				break;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   574
				}
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   575
			default:
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   576
				{
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   577
				break;	
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   578
				}	
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   579
			}
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   580
		}
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   581
    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   582
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   583
//=============================================================================    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   584
TRect CSelectionPopup::GridRect() const
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   585
    {    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   586
    return iPopupCenterRect;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   587
    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   588
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   589
//=============================================================================    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   590
TBool CSelectionPopup::HighlightedItemPressed( TPoint aPosition ) const
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   591
    {	    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   592
	TRect iconRect = iHighlightRectsArray[ iCurrentItem ];		
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   593
	                   
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   594
    if (iconRect.Contains( aPosition ))  
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   595
        {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   596
        return ETrue;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   597
        }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   598
    else 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   599
        {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   600
        return EFalse;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   601
        }       
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   602
    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   603
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   604
//=============================================================================    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   605
void CSelectionPopup::SetSelectedValue( TInt aSelected )
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   606
    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   607
    ASSERT( aSelected >= 0 );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   608
    iCurrentItem = iItemArray.Find( aSelected );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   609
    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   610
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   611
//=============================================================================    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   612
TInt CSelectionPopup::GetSelectedValue() const
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   613
    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   614
    ASSERT( iCurrentItem >= 0 && iCurrentItem < iItemArray.Count() );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   615
    return iItemArray[iCurrentItem];
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   616
    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   617
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   618
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   619
//=============================================================================
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   620
// DIALOG
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   621
//=============================================================================
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   622
TInt CSelectionDialog::RunDlgLD( const CFbsBitmap* aBitmap,
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   623
                                      const TRect& aRect, 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   624
                                      TInt& aSelection,
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   625
                                      TRgb& aCurrentColor,
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   626
                                      const TRect& aImageRect)
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   627
    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   628
    CSelectionDialog* dialog = 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   629
        new (ELeave) CSelectionDialog ( aSelection);
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   630
    dialog->ConstructL( aBitmap, aRect, aCurrentColor, aImageRect);
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   631
    return dialog->ExecuteLD( R_IMAGE_EDITOR_COLOR_DIALOG );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   632
    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   633
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   634
//=============================================================================
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   635
CSelectionDialog::CSelectionDialog( TInt& aSelection)
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   636
: iCurrentValue( aSelection )
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   637
    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   638
    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   639
    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   640
//=============================================================================
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   641
CSelectionDialog::~CSelectionDialog()
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   642
    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   643
    delete iPopup;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   644
    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   645
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   646
//=============================================================================
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   647
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   648
void CSelectionDialog::ConstructL( const CFbsBitmap* aBitmap,	
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   649
                                        const TRect& aRect,
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   650
                                        TRgb& aCurrentColor,
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   651
                                        const TRect& aImageRect)
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   652
    {    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   653
    iPopup = new ( ELeave ) CSelectionPopup(aCurrentColor, aImageRect);
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   654
    iPopup->SetSelectedValue(iCurrentValue);
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   655
    iPopup->ConstructL(this);
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   656
    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   657
    SetRect(aRect);   
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   658
    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   659
    // Not drawn correctly if calling SetRect()
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   660
    iPopup->SetSize(aRect.Size());
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   661
    iPopup->SetPosition(TPoint(0,0));
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   662
    iPopup->SetImageL( aBitmap ); // set the image which we are editing
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   663
    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   664
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   665
//=============================================================================
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   666
TBool CSelectionDialog::OkToExitL( TInt aButtonId )
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   667
    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   668
    if ( aButtonId == EAknSoftkeyOk || aButtonId == EAknSoftkeySelect)
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   669
        {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   670
        iCurrentValue = iPopup->GetSelectedValue();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   671
        return ETrue;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   672
        }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   673
    else
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   674
        {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   675
        return EFalse;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   676
        }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   677
    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   678
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   679
//=============================================================================    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   680
void CSelectionDialog::Draw(const TRect& /*aRect*/) const
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   681
    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   682
    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   683
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   684
//=============================================================================    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   685
void CSelectionDialog::SizeChanged()
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   686
    {  
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   687
    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   688
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   689
//=============================================================================    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   690
void CSelectionDialog::PreLayoutDynInitL() 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   691
    { 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   692
    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   693
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   694
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   695
//=============================================================================    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   696
TInt CSelectionDialog::CountComponentControls() const
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   697
    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   698
    return 1;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   699
    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   700
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   701
//=============================================================================    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   702
CCoeControl* CSelectionDialog::ComponentControl(TInt /*aIndex*/) const
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   703
    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   704
    return iPopup;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   705
    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   706
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   707
//=============================================================================    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   708
TKeyResponse CSelectionDialog::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   709
    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   710
    // Selection key or numeric keypad '5' close the dialog
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   711
    TKeyResponse res = EKeyWasNotConsumed;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   712
    if (aType == EEventKey && 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   713
        (aKeyEvent.iCode == EKeyOK || aKeyEvent.iCode == 53 || aKeyEvent.iScanCode == EStdKeyEnter) )
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   714
        {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   715
        TryExitL (EAknSoftkeyOk);
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   716
        res = EKeyWasConsumed;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   717
        }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   718
    else if (aType == EEventKey && aKeyEvent.iCode == EKeyNo || aKeyEvent.iCode == EKeyEscape) // Do not exit if dialog active
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   719
		{
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   720
		TryExitL (EAknSoftkeyCancel);
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   721
		res = EKeyWasNotConsumed;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   722
        }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   723
#ifdef FULLSCREEN_AVAILABLE        
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   724
    else if (aType == EEventKey && aKeyEvent.iCode == 48 ) // 0             
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   725
      {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   726
      // Switch normal screen / full screen
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   727
      if (CResolutionUtil::Self()->GetFullScreen())
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   728
          {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   729
          iEikonEnv->EikAppUi()->HandleCommandL(EImageEditorMenuCmdNormalScreen);
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   730
	      SetRect(iEikonEnv->EikAppUi()->ClientRect());
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   731
	      SizeChanged();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   732
	      DrawNow();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   733
          }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   734
      else
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   735
	      {      
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   736
	      iEikonEnv->EikAppUi()->HandleCommandL(EImageEditorMenuCmdFullScreen);			  
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   737
	      SetExtentToWholeScreen();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   738
	      SizeChanged();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   739
	      DrawNow();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   740
	      }              
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   741
      res = EKeyWasConsumed;              
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   742
      }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   743
#endif // FULLSCREEN_AVAILABLE      						 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   744
    else 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   745
        {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   746
        res = iPopup->OfferKeyEventL(aKeyEvent, aType);
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   747
        if (res == EKeyWasConsumed)
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   748
            {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   749
            DrawDeferred();
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   750
            }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   751
        }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   752
         
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   753
    return res;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   754
    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   755
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   756
//=============================================================================
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   757
void CSelectionDialog::HandlePointerEventL( 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   758
                                           const TPointerEvent &aPointerEvent )
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   759
    {    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   760
    if( AknLayoutUtils::PenEnabled() )
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   761
	    {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   762
        switch( aPointerEvent.iType )
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   763
			{
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   764
			case TPointerEvent::EButton1Down:
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   765
				{				
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   766
			    // forward event only if grid area was pressed    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   767
			    if ( iPopup->GridRect().Contains( aPointerEvent.iPosition ) )
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   768
			        {			        
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   769
			        iPopup->HandlePointerEventL( aPointerEvent );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   770
			        }    		        
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   771
				break;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   772
				}
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   773
			case TPointerEvent::EDrag:
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   774
				{
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   775
			    if ( iPopup->GridRect().Contains( aPointerEvent.iPosition ) )
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   776
			        {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   777
			        iPopup->HandlePointerEventL( aPointerEvent );
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   778
			        }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   779
				break;		
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   780
				}
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   781
			case TPointerEvent::EButton1Up:
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   782
				{
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   783
				// already highlighted item is pressed
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   784
			    if ( iPopup->HighlightedItemPressed( aPointerEvent.iPosition ) )
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   785
			        {
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   786
			        TryExitL (EAknSoftkeyOk);
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   787
			        }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   788
				break;
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   789
				}
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   790
			default:
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   791
				{
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   792
				break;	
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   793
				}	
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   794
			}
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   795
        }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   796
    }
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   797
    
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   798
// End of file 
18b321db4884 *m enhance
qifeima <>
parents: 1
diff changeset
   799