|
1 /* |
|
2 * Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: Implementation of LAF manager. |
|
15 * |
|
16 */ |
|
17 |
|
18 |
|
19 // INCLUDES |
|
20 #include <aknlayoutscalable_avkon.cdl.h> |
|
21 #include <aknlayoutscalable_apps.cdl.h> |
|
22 #include <AknUtils.h> |
|
23 |
|
24 #include "peninputfingerhwrarlafmanager.h" |
|
25 #include "peninputfingerhwrarcontrolid.h" |
|
26 |
|
27 #define LAF_MODIFY 1 |
|
28 #define HackerVersion |
|
29 |
|
30 // --------------------------------------------------------------------------- |
|
31 // Symbian Constructor |
|
32 // --------------------------------------------------------------------------- |
|
33 // |
|
34 CPeninputFingerHwrArLafManager* CPeninputFingerHwrArLafManager::NewL() |
|
35 { |
|
36 CPeninputFingerHwrArLafManager* self = CPeninputFingerHwrArLafManager::NewLC(); |
|
37 CleanupStack::Pop(); // self; |
|
38 return self; |
|
39 } |
|
40 |
|
41 // --------------------------------------------------------------------------- |
|
42 // Symbian Constructor |
|
43 // --------------------------------------------------------------------------- |
|
44 // |
|
45 CPeninputFingerHwrArLafManager* CPeninputFingerHwrArLafManager::NewLC() |
|
46 { |
|
47 CPeninputFingerHwrArLafManager* self = new( ELeave ) CPeninputFingerHwrArLafManager(); |
|
48 CleanupStack::PushL( self ); |
|
49 self->ConstructL(); |
|
50 return self; |
|
51 } |
|
52 |
|
53 // --------------------------------------------------------------------------- |
|
54 // c++ destructor |
|
55 // --------------------------------------------------------------------------- |
|
56 // |
|
57 CPeninputFingerHwrArLafManager::~CPeninputFingerHwrArLafManager() |
|
58 { |
|
59 //nothing |
|
60 iSCTrectArray.Reset(); |
|
61 iSCTrectArray.Close(); |
|
62 } |
|
63 |
|
64 |
|
65 // --------------------------------------------------------------------------- |
|
66 // read laf data. |
|
67 // --------------------------------------------------------------------------- |
|
68 // |
|
69 void CPeninputFingerHwrArLafManager::ReadLafInfo() |
|
70 { |
|
71 // Screen |
|
72 TRect rect; |
|
73 AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EScreen, rect); |
|
74 iScreenSize = rect.Size(); |
|
75 |
|
76 iIsLandscape = iScreenSize.iWidth < iScreenSize.iHeight ? EFalse : ETrue; |
|
77 |
|
78 AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EApplicationWindow, rect); |
|
79 |
|
80 // finger Layout |
|
81 TAknWindowLineLayout fshwrlayout; |
|
82 TAknLayoutRect fshwrRect; |
|
83 |
|
84 fshwrlayout = AknLayoutScalable_Avkon::main_fep_fshwr2_pane(0).LayoutLine(); |
|
85 fshwrRect.LayoutRect(rect, fshwrlayout); |
|
86 |
|
87 iLayoutRect = fshwrRect.Rect(); |
|
88 iLayoutOffset = iLayoutRect.iTl; |
|
89 |
|
90 // ICF & Keypad |
|
91 TAknWindowLineLayout icflayoutcn,icflayoutbgcn; |
|
92 TAknTextLineLayout icflefttext; |
|
93 TAknTextLineLayout icflefttext1, icflefttext2, icflefttext3; |
|
94 TAknLayoutRect icfrectlatin, icfrectcn; |
|
95 |
|
96 if (iIsLandscape) |
|
97 { |
|
98 icflayoutcn = AknLayoutScalable_Avkon::fshwr2_icf_pane(1).LayoutLine(); |
|
99 } |
|
100 else |
|
101 { |
|
102 icflayoutcn = AknLayoutScalable_Avkon::fshwr2_icf_pane(0).LayoutLine(); |
|
103 } |
|
104 |
|
105 icfrectcn.LayoutRect(fshwrRect.Rect(), icflayoutcn); |
|
106 |
|
107 TAknLayoutScalableParameterLimits entryPaneVariety = |
|
108 AknLayoutScalable_Avkon::fshwr2_icf_pane_t1_ParamLimits(0); |
|
109 TInt maxRow = entryPaneVariety.LastRow(); |
|
110 |
|
111 icflefttext = AknLayoutScalable_Avkon::fshwr2_icf_pane_t1(0, 0, 0).LayoutLine(); |
|
112 |
|
113 icflefttext1 = AknLayoutScalable_Avkon::fshwr2_icf_pane_t1(0, 0, 1).LayoutLine(); |
|
114 icflefttext2 = AknLayoutScalable_Avkon::fshwr2_icf_pane_t1(0, 0, 2).LayoutLine(); |
|
115 icflefttext3 = AknLayoutScalable_Avkon::fshwr2_icf_pane_t1(0, 0, maxRow).LayoutLine(); |
|
116 iIcfTextLeftMarginCn = icflefttext.il; |
|
117 iIcfTextRightMarginCn = iIcfTextLeftMarginCn; |
|
118 |
|
119 TAknLayoutText ctxt, ctxt1, ctxt2, ctxt3; |
|
120 ctxt.LayoutText( icfrectcn.Rect(), icflefttext ); |
|
121 ctxt1.LayoutText( icfrectcn.Rect(), icflefttext1 ); |
|
122 ctxt2.LayoutText( icfrectcn.Rect(), icflefttext2 ); |
|
123 ctxt3.LayoutText( icfrectcn.Rect(), icflefttext3 ); |
|
124 |
|
125 iIcfTextTopMarginCn = ctxt.TextRect().iTl.iY - icfrectcn.Rect().iTl.iY; |
|
126 iIcfTextLineSpaceMarginCn = ctxt1.TextRect().iTl.iY - ctxt.TextRect().iBr.iY; |
|
127 iIcfTextBottomMarginCn = icfrectcn.Rect().iBr.iY - ctxt3.TextRect().iBr.iY |
|
128 - iIcfTextLineSpaceMarginCn; |
|
129 iIcfTextHeightCn = ctxt.TextRect().Height(); |
|
130 |
|
131 iIcfFont = const_cast<CFont*>(AknLayoutUtils::FontFromId(icflefttext.iFont, NULL)); |
|
132 |
|
133 iRectIcf = icfrectcn.Rect(); |
|
134 |
|
135 // candidate list |
|
136 TAknWindowLineLayout candrowpane, candrowpane2, candlistpane, cellpane, candbgpane; |
|
137 TAknLayoutRect candpaneRect, candrowpaneRect, candrowpaneRect2, cellpaneRect1, cellpaneRect2; |
|
138 TAknLayoutRect cellpaneRect3, cellpaneRect; |
|
139 |
|
140 if (iIsLandscape) |
|
141 { |
|
142 candlistpane = AknLayoutScalable_Avkon::fshwr2_func_candi_pane(1). |
|
143 LayoutLine(); |
|
144 } |
|
145 else |
|
146 { |
|
147 candlistpane = AknLayoutScalable_Avkon::fshwr2_func_candi_pane(0). |
|
148 LayoutLine(); |
|
149 } |
|
150 candpaneRect.LayoutRect( fshwrRect.Rect(), candlistpane ); |
|
151 rect = candpaneRect.Rect(); |
|
152 candrowpane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, 1). |
|
153 LayoutLine(); |
|
154 candrowpaneRect.LayoutRect( rect, candrowpane ); |
|
155 |
|
156 candrowpane2 = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, 2). |
|
157 LayoutLine(); |
|
158 candrowpaneRect2.LayoutRect( rect, candrowpane2 ); |
|
159 |
|
160 |
|
161 cellpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 3 , 0 , 0 ). |
|
162 LayoutLine(); |
|
163 cellpaneRect.LayoutRect( candrowpaneRect.Rect(), cellpane ); |
|
164 |
|
165 candbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(3).LayoutLine(); |
|
166 cellpaneRect1.LayoutRect( cellpaneRect.Rect(), candbgpane ); |
|
167 |
|
168 cellpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 3 , 1 , 0 ). |
|
169 LayoutLine(); |
|
170 cellpaneRect.LayoutRect( candrowpaneRect.Rect(), cellpane ); |
|
171 |
|
172 candbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(3).LayoutLine(); |
|
173 cellpaneRect2.LayoutRect( cellpaneRect.Rect(), candbgpane ); |
|
174 |
|
175 |
|
176 |
|
177 cellpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 3 , 0 , 1 ). |
|
178 LayoutLine(); |
|
179 cellpaneRect.LayoutRect( candrowpaneRect2.Rect(), cellpane ); |
|
180 |
|
181 candbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(3).LayoutLine(); |
|
182 cellpaneRect3.LayoutRect( cellpaneRect.Rect(), candbgpane ); |
|
183 |
|
184 |
|
185 iCandsHorizontalMargin = cellpaneRect2.Rect().iTl.iX - cellpaneRect1.Rect().iBr.iX; |
|
186 iCandsVerticalMargin = cellpaneRect3.Rect().iTl.iY - cellpaneRect1.Rect().iBr.iY; |
|
187 |
|
188 iCandsUnitWidth = cellpaneRect1.Rect().Width(); |
|
189 iCandsUnitHeight = cellpaneRect1.Rect().Height() ; |
|
190 |
|
191 iCandsNaviHeight = cellpaneRect1.Rect().Height(); |
|
192 iCandidateLTPos = candrowpaneRect.Rect().iTl; |
|
193 iPredictiveLTPos = candrowpaneRect2.Rect().iTl; |
|
194 |
|
195 TAknTextLineLayout candstxtlayout = |
|
196 AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane_t1(3).LayoutLine(); |
|
197 TAknLayoutText candstxt; |
|
198 candstxt.LayoutText( cellpaneRect1.Rect(), candstxtlayout ); |
|
199 iCandsFont = const_cast<CFont*>( AknLayoutUtils::FontFromId( candstxtlayout.iFont, NULL ) ); |
|
200 iCandsTextMargin = candstxt.TextRect().iTl.iX - cellpaneRect1.Rect().iTl.iX; |
|
201 |
|
202 |
|
203 TAknWindowLineLayout btnrowpane, btnpane, btnbgpane; |
|
204 TAknLayoutRect btnrowRect, btnRect, btnbgRect; |
|
205 |
|
206 // Get the first row rect ************************************************* |
|
207 btnrowpane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, 0). |
|
208 LayoutLine(); |
|
209 btnrowRect.LayoutRect(candpaneRect.Rect(), btnrowpane); |
|
210 // Close Button |
|
211 btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 2 , 0 , 0 ). |
|
212 LayoutLine(); |
|
213 btnRect.LayoutRect(btnrowRect.Rect(), btnpane); |
|
214 btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(2). |
|
215 LayoutLine(); |
|
216 btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); |
|
217 iRectBtnClose = btnbgRect.Rect(); |
|
218 |
|
219 // Range Button with mark |
|
220 btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 2 , 1 , 0 ). |
|
221 LayoutLine(); |
|
222 btnRect.LayoutRect(btnrowRect.Rect(), btnpane); |
|
223 btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(2). |
|
224 LayoutLine(); |
|
225 btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); |
|
226 iRectBtnRangeChn = btnbgRect.Rect(); |
|
227 iRectBtnRangeEng = iRectBtnRangeChn; |
|
228 iRectBtnRangeNum = iRectBtnRangeEng; |
|
229 |
|
230 // SCT button |
|
231 btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 2 , 2 , 0 ). |
|
232 LayoutLine(); |
|
233 btnRect.LayoutRect(btnrowRect.Rect(), btnpane); |
|
234 btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(2). |
|
235 LayoutLine(); |
|
236 btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); |
|
237 iRectBtnRangeSmb = btnbgRect.Rect(); |
|
238 |
|
239 // Backspace button |
|
240 btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 2 , 3 , 0 ). |
|
241 LayoutLine(); |
|
242 btnRect.LayoutRect(btnrowRect.Rect(), btnpane); |
|
243 btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(2). |
|
244 LayoutLine(); |
|
245 btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); |
|
246 iRectBtnBackspace = btnbgRect.Rect(); |
|
247 |
|
248 // Get the second row rect ************************************************** |
|
249 btnrowpane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, 1). |
|
250 LayoutLine(); |
|
251 btnrowRect.LayoutRect(candpaneRect.Rect(), btnrowpane); |
|
252 |
|
253 // Option button |
|
254 btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 1 , 0 , 0 ). |
|
255 LayoutLine(); |
|
256 btnRect.LayoutRect(btnrowRect.Rect(), btnpane); |
|
257 btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1). |
|
258 LayoutLine(); |
|
259 btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); |
|
260 iRectBtnOption = btnbgRect.Rect(); |
|
261 |
|
262 // Switch mode button |
|
263 btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 1 , 1 , 0 ). |
|
264 LayoutLine(); |
|
265 btnRect.LayoutRect(btnrowRect.Rect(), btnpane); |
|
266 btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1). |
|
267 LayoutLine(); |
|
268 btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); |
|
269 iRectBtnImeSwitch = btnbgRect.Rect(); |
|
270 |
|
271 // Arrow up button |
|
272 btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 1 , 2 , 0 ). |
|
273 LayoutLine(); |
|
274 btnRect.LayoutRect(btnrowRect.Rect(), btnpane); |
|
275 btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1). |
|
276 LayoutLine(); |
|
277 btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); |
|
278 iRectBtnArrowUp = btnbgRect.Rect(); |
|
279 iRectBtnSctPage = iRectBtnArrowUp; |
|
280 |
|
281 |
|
282 // Get the third row rect ************************************************** |
|
283 btnrowpane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, 2). |
|
284 LayoutLine(); |
|
285 btnrowRect.LayoutRect(candpaneRect.Rect(), btnrowpane); |
|
286 |
|
287 // Arrow left button |
|
288 btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 1 , 0 , 0 ). |
|
289 LayoutLine(); |
|
290 btnRect.LayoutRect(btnrowRect.Rect(), btnpane); |
|
291 btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1). |
|
292 LayoutLine(); |
|
293 btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); |
|
294 iRectBtnArrowLeft = btnbgRect.Rect(); |
|
295 |
|
296 // Arrow right button |
|
297 btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 1 , 1 , 0 ). |
|
298 LayoutLine(); |
|
299 btnRect.LayoutRect(btnrowRect.Rect(), btnpane); |
|
300 btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1). |
|
301 LayoutLine(); |
|
302 btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); |
|
303 iRectBtnArrowRight = btnbgRect.Rect(); |
|
304 |
|
305 // Arrow down button |
|
306 btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 1 , 2 , 0 ). |
|
307 LayoutLine(); |
|
308 btnRect.LayoutRect(btnrowRect.Rect(), btnpane); |
|
309 btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1). |
|
310 LayoutLine(); |
|
311 btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); |
|
312 iRectBtnArrowDown = btnbgRect.Rect(); |
|
313 |
|
314 // Space button |
|
315 btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 0 , 0 , 0 ). |
|
316 LayoutLine(); |
|
317 btnRect.LayoutRect(btnrowRect.Rect(), btnpane); |
|
318 btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(0). |
|
319 LayoutLine(); |
|
320 btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); |
|
321 |
|
322 iRectFixSctpad = btnrowRect.Rect(); |
|
323 iSizeFixSctpadCell = btnRect.Rect().Size(); |
|
324 iRectSpase = btnbgRect.Rect(); |
|
325 iRectSpase.Move(-iRectFixSctpad.iTl ); |
|
326 |
|
327 // Enter button |
|
328 btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 0 , 1 , 0 ). |
|
329 LayoutLine(); |
|
330 btnRect.LayoutRect(btnrowRect.Rect(), btnpane); |
|
331 btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(0). |
|
332 LayoutLine(); |
|
333 btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); |
|
334 |
|
335 iRectEnter = btnbgRect.Rect(); |
|
336 iRectEnter.Move(-iRectFixSctpad.iTl); |
|
337 |
|
338 |
|
339 // Writing box |
|
340 TAknWindowLineLayout writingboxpane; |
|
341 TAknLayoutRect boxRect; |
|
342 writingboxpane = AknLayoutScalable_Avkon::fshwr2_hwr_syb_pane(0).LayoutLine(); |
|
343 boxRect.LayoutRect(fshwrRect.Rect(), writingboxpane); |
|
344 iRectWritingBox = boxRect.Rect(); |
|
345 iRectNumpad = iRectWritingBox; |
|
346 iRectSctpad = iRectWritingBox; |
|
347 |
|
348 // virtual key size |
|
349 TAknWindowLineLayout keypane, keybgpane; |
|
350 TAknLayoutRect keyRect, keybgRect; |
|
351 |
|
352 TAknLayoutScalableParameterLimits sctPaneVariety = |
|
353 AknLayoutScalable_Avkon::cell_fshwr2_syb_pane_ParamLimits(0); |
|
354 |
|
355 iSctpadRowCount = sctPaneVariety.LastRow() + 1; |
|
356 iSctpadColCount = sctPaneVariety.LastColumn() + 1; |
|
357 |
|
358 iSizeBtnPadding = TSize(6, 6); |
|
359 |
|
360 iSCTrectArray.Reset(); |
|
361 for(TInt i = 0; i < iSctpadRowCount; i++) |
|
362 { |
|
363 for ( TInt j = 0; j < iSctpadColCount; j++ ) |
|
364 { |
|
365 keypane = AknLayoutScalable_Avkon::cell_fshwr2_syb_pane(0, j, i).LayoutLine(); |
|
366 keyRect.LayoutRect(boxRect.Rect(), keypane); |
|
367 keybgpane = AknLayoutScalable_Avkon::cell_fshwr2_syb_bg_pane(0).LayoutLine(); |
|
368 keybgRect.LayoutRect(keyRect.Rect(), keybgpane); |
|
369 iSCTrectArray.Append( keybgRect.Rect()); |
|
370 } |
|
371 } |
|
372 iSizeNumpadCell = keybgRect.Rect().Size(); |
|
373 iSizeSctpadCell = iSizeNumpadCell; |
|
374 |
|
375 // preview popup window |
|
376 TAknWindowLineLayout previewWnd, previewWndInner; |
|
377 TAknLayoutRect previewWndRect, previewWndInnerRect; |
|
378 TAknLayoutText previewWndText; |
|
379 previewWnd = AknLayoutScalable_Avkon::popup_fep_char_preview_window(0).LayoutLine(); |
|
380 previewWndRect.LayoutRect( TRect(0,0,50,50), previewWnd ); |
|
381 previewWndInner = AknLayoutScalable_Avkon::bg_popup_fep_char_preview_window_g9().LayoutLine(); |
|
382 previewWndInnerRect.LayoutRect( previewWndRect.Rect(), previewWndInner ); |
|
383 iPreviewWndRect = previewWndRect.Rect(); |
|
384 iPreviewWndInnerRect = previewWndInnerRect.Rect(); |
|
385 iPreviewWndText = |
|
386 AknLayoutScalable_Avkon::popup_fep_char_preview_window_t1(0).LayoutLine(); |
|
387 previewWndText.LayoutText(previewWndRect.Rect(), iPreviewWndText); |
|
388 iBubbleFont = previewWndText.Font(); |
|
389 //========================================================================== |
|
390 // going to be removed if the LAF data is ready |
|
391 // |
|
392 #ifdef HackerVersion |
|
393 |
|
394 // hardcode those and remove them after the laf data is ready |
|
395 // do we really need to read ui data from laf system? |
|
396 // icf margins |
|
397 iIcfTextLeftMarginCn = 14; |
|
398 iIcfTextRightMarginCn = 14; |
|
399 iIcfTextTopMarginCn = 14; |
|
400 iIcfTextBottomMarginCn = 20; |
|
401 iIcfTextLineSpaceMarginCn = 5; |
|
402 |
|
403 // candiate margin |
|
404 iCandsHorizontalMargin = 1; |
|
405 iCandsVerticalMargin = 1; |
|
406 |
|
407 if(iIsLandscape) |
|
408 { |
|
409 TInt buttonHight = (iLayoutRect.Height()-20)/6;//-6; // 1mm ~= 6 pixls |
|
410 TInt buttonWidth = (iLayoutRect.Width()-20)/8;//-8; |
|
411 |
|
412 iRectBtnClose = TRect(iLayoutRect.iTl+TPoint(10,10),TPoint(buttonWidth+10,buttonHight+10)); |
|
413 |
|
414 iRectBtnOption = iRectBtnClose; |
|
415 iRectBtnOption.Move(TPoint(buttonWidth,0)); |
|
416 |
|
417 iRectBtnRangeSmb = iRectBtnOption; |
|
418 iRectBtnRangeSmb.Move(TPoint(buttonWidth,0)); |
|
419 |
|
420 iRectBtnBackspace = iRectBtnRangeSmb; |
|
421 iRectBtnBackspace.Move(TPoint(buttonWidth,0)); |
|
422 |
|
423 // button on second row |
|
424 iRectBtnArrowUp = iRectBtnClose; |
|
425 iRectBtnArrowUp.Move(TPoint(0,buttonHight)); |
|
426 |
|
427 iRectBtnArrowDown = iRectBtnArrowUp; |
|
428 iRectBtnArrowDown.Move(TPoint(buttonWidth,0)); |
|
429 |
|
430 iRectBtnArrowLeft = iRectBtnArrowDown; |
|
431 iRectBtnArrowLeft.Move(TPoint(buttonWidth,0)); |
|
432 |
|
433 iRectBtnArrowRight = iRectBtnArrowLeft; |
|
434 iRectBtnArrowRight.Move(TPoint(buttonWidth,0)); |
|
435 |
|
436 // fix symbol table |
|
437 TPoint fixSctTl = iRectBtnClose.iTl+TPoint(0,buttonHight); |
|
438 iRectFixSctpad = TRect(fixSctTl,fixSctTl+TPoint(4*buttonWidth,buttonHight)); |
|
439 |
|
440 iRectSpase = iRectBtnClose; |
|
441 iRectSpase.Move(TPoint(0,buttonHight)); |
|
442 |
|
443 iRectEnter = iRectSpase; |
|
444 iRectEnter.Move(TPoint(buttonWidth,0)); |
|
445 |
|
446 iRectSpase.Move(-iRectFixSctpad.iTl ); |
|
447 iRectEnter.Move(-iRectFixSctpad.iTl ); |
|
448 |
|
449 iSizeFixSctpadCell = iRectSpase.Size(); |
|
450 |
|
451 // candate position |
|
452 iCandidateLTPos = iRectBtnClose.iTl + TPoint(0,buttonHight); |
|
453 iCandsUnitWidth = buttonWidth-iCandsVerticalMargin; |
|
454 iCandsUnitHeight = buttonHight; |
|
455 |
|
456 // icf editor rect |
|
457 iRectIcf = TRect(TPoint(4*buttonWidth+10,10),TPoint(iLayoutRect.iBr.iX-10,2*buttonHight+10)); |
|
458 |
|
459 // iwriting box |
|
460 iRectWritingBox = TRect(TPoint(10,2*buttonHight+10),iLayoutRect.iBr-TPoint(10,10)); |
|
461 |
|
462 // construct symbol table |
|
463 iRectOfSymbolTable = iRectWritingBox; |
|
464 iRectOfSymbolTable.Move(TPoint(buttonWidth,-buttonHight)); |
|
465 iRectOfSymbolTable.SetHeight(5*buttonHight); |
|
466 iRectOfSymbolTable.SetWidth(6*buttonWidth); |
|
467 |
|
468 iRectSctpad = iRectOfSymbolTable; |
|
469 iRectSctpad.Move(TPoint(0,buttonHight)); |
|
470 iRectSctpad.SetHeight(4*buttonHight); |
|
471 iRectSctpad.SetWidth(6*buttonWidth); |
|
472 |
|
473 // the button size for symbol table control |
|
474 iSymButtonSize = TSize(2*buttonWidth,buttonHight); |
|
475 iSctpadRowCount = 4; |
|
476 iSctpadColCount = 6; |
|
477 |
|
478 iSCTrectArray.Reset(); |
|
479 for(TInt i = 0; i < iSctpadRowCount; i++) |
|
480 { |
|
481 for(TInt j = 0; j < iSctpadColCount; j++) |
|
482 { |
|
483 TPoint rectTl = iRectSctpad.iTl+TPoint(j*buttonWidth,i*buttonHight); |
|
484 TPoint rectBr = rectTl+ TPoint(buttonWidth,buttonHight); |
|
485 iSCTrectArray.Append(TRect(rectTl,rectBr)); |
|
486 } |
|
487 } |
|
488 } |
|
489 else |
|
490 { |
|
491 // icf rect |
|
492 iRectIcf = TRect(iLayoutRect.iTl+TPoint(10,10),TPoint(iLayoutRect.iBr.iX-10,22.5*9)); |
|
493 TPoint backSpaceTl = iRectIcf.iTl+TPoint(0,iRectIcf.Height()); |
|
494 |
|
495 TInt buttonHight = (iLayoutRect.Height()-iRectIcf.Height()-20)/6;//(15*9)/2; // 1mm ~= 9pixls |
|
496 TInt buttonWidth = (iLayoutRect.Width()-20)/4; |
|
497 |
|
498 // the button on second row |
|
499 iRectBtnBackspace = TRect(backSpaceTl,backSpaceTl+TPoint(buttonWidth,buttonHight)); |
|
500 iRectBtnOption = iRectBtnBackspace; |
|
501 iRectBtnOption.Move(TPoint(buttonWidth,0)); |
|
502 iRectBtnRangeSmb = iRectBtnOption; |
|
503 iRectBtnRangeSmb.Move(TPoint(buttonWidth,0)); |
|
504 iRectBtnClose = iRectBtnRangeSmb; |
|
505 iRectBtnClose.Move(TPoint(buttonWidth,0)); |
|
506 |
|
507 // arrow button: on third row |
|
508 iRectBtnArrowUp = iRectBtnBackspace; |
|
509 iRectBtnArrowUp.Move(TPoint(0,buttonHight)); |
|
510 |
|
511 iRectBtnArrowDown = iRectBtnArrowUp; |
|
512 iRectBtnArrowDown.Move(TPoint(buttonWidth,0)); |
|
513 |
|
514 iRectBtnArrowLeft = iRectBtnArrowDown; |
|
515 iRectBtnArrowLeft.Move(TPoint(buttonWidth,0)); |
|
516 |
|
517 iRectBtnArrowRight = iRectBtnArrowLeft; |
|
518 iRectBtnArrowRight.Move(TPoint(buttonWidth,0)); |
|
519 |
|
520 // candate position |
|
521 iCandidateLTPos = iRectBtnBackspace.iTl + TPoint(0,buttonHight); |
|
522 iCandsUnitWidth = buttonWidth-iCandsVerticalMargin; |
|
523 iCandsUnitHeight = buttonHight; |
|
524 |
|
525 // HWR Box Rect |
|
526 iRectWritingBox = TRect(TPoint(iRectBtnArrowUp.iTl.iX,iRectBtnArrowUp.iBr.iY),iLayoutRect.iBr-TPoint(10,10)); |
|
527 |
|
528 // construct symbol table |
|
529 iRectOfSymbolTable = iRectWritingBox; |
|
530 iRectOfSymbolTable.Move(TPoint(0,-buttonHight)); |
|
531 iRectOfSymbolTable.SetHeight(5*buttonHight); |
|
532 iRectOfSymbolTable.SetWidth(4*buttonWidth); |
|
533 |
|
534 iRectSctpad = iRectOfSymbolTable; |
|
535 iRectSctpad.Move(TPoint(0,buttonHight)); |
|
536 iRectSctpad.SetHeight(4*buttonHight); |
|
537 iRectSctpad.SetWidth(4*buttonWidth); |
|
538 |
|
539 // the button size for symbol table control |
|
540 iSymButtonSize = TSize((4*buttonWidth)/3,buttonHight); |
|
541 |
|
542 iSctpadRowCount = 4; |
|
543 iSctpadColCount = 4; |
|
544 iSCTrectArray.Reset(); |
|
545 for(TInt i = 0; i < iSctpadRowCount; i++) |
|
546 { |
|
547 for(TInt j = 0; j < iSctpadColCount; j++) |
|
548 { |
|
549 TPoint rectTl = iRectSctpad.iTl+TPoint(j*buttonWidth,i*buttonHight); |
|
550 TPoint rectBr = rectTl+ TPoint(buttonWidth,buttonHight); |
|
551 iSCTrectArray.Append(TRect(rectTl,rectBr)); |
|
552 } |
|
553 } |
|
554 } |
|
555 #endif |
|
556 // |
|
557 //========================================================================== |
|
558 |
|
559 } |
|
560 |
|
561 |
|
562 // --------------------------------------------------------------------------- |
|
563 // get screen orientation. |
|
564 // --------------------------------------------------------------------------- |
|
565 // |
|
566 TBool CPeninputFingerHwrArLafManager::IsLandscape() |
|
567 { |
|
568 return iIsLandscape; |
|
569 } |
|
570 |
|
571 |
|
572 // --------------------------------------------------------------------------- |
|
573 // get rect of layout. |
|
574 // --------------------------------------------------------------------------- |
|
575 // |
|
576 TRect CPeninputFingerHwrArLafManager::LayoutRect() |
|
577 { |
|
578 return iLayoutRect; |
|
579 } |
|
580 |
|
581 |
|
582 // --------------------------------------------------------------------------- |
|
583 // get rect of specified control. |
|
584 // --------------------------------------------------------------------------- |
|
585 // |
|
586 TRect CPeninputFingerHwrArLafManager::CtrlRect( TInt aCtrlId ) |
|
587 { |
|
588 switch ( aCtrlId ) |
|
589 { |
|
590 case EHwrCtrlIdInputContextField: |
|
591 { |
|
592 return iRectIcf; |
|
593 } |
|
594 case EHwrCtrlIdWritingBox: |
|
595 { |
|
596 return iRectWritingBox; |
|
597 } |
|
598 case EHwrCtrlIdSymbolTableVkbGroup: |
|
599 { |
|
600 return iRectOfSymbolTable; |
|
601 } |
|
602 case EHwrCtrlIdClose: |
|
603 { |
|
604 return iRectBtnClose; |
|
605 } |
|
606 case EHwrCtrlIdSymbolButton: |
|
607 { |
|
608 return iRectBtnRangeSmb; |
|
609 } |
|
610 case EHwrCtrlIdBackspace: |
|
611 { |
|
612 return iRectBtnBackspace; |
|
613 } |
|
614 case EHwrCtrlIdArrowUp: |
|
615 { |
|
616 return iRectBtnArrowUp; |
|
617 } |
|
618 case EHwrCtrlIdArrowDown: |
|
619 { |
|
620 return iRectBtnArrowDown; |
|
621 } |
|
622 case EHwrCtrlIdArrowLeft: |
|
623 { |
|
624 return iRectBtnArrowLeft; |
|
625 } |
|
626 case EHwrCtrlIdArrowRight: |
|
627 { |
|
628 return iRectBtnArrowRight; |
|
629 } |
|
630 case EHwrCtrlIdLanguageOption: |
|
631 { |
|
632 return iRectBtnOption; |
|
633 } |
|
634 case EHwrCtrlIdVkbSwitcher: |
|
635 { |
|
636 return iRectBtnImeSwitch; |
|
637 } |
|
638 case EHwrCtrlId3Page1Btn: |
|
639 case EHwrCtrlId3Page2Btn: |
|
640 case EHwrCtrlId3Page3Btn: |
|
641 case EHwrCtrlId2Page1Btn: |
|
642 case EHwrCtrlId2Page2Btn: |
|
643 { |
|
644 return iRectBtnSctPage; |
|
645 } |
|
646 } |
|
647 return TRect(); |
|
648 } |
|
649 |
|
650 // --------------------------------------------------------------------------- |
|
651 // get rect of ICF control. |
|
652 // --------------------------------------------------------------------------- |
|
653 // |
|
654 TRect CPeninputFingerHwrArLafManager::IcfRect() |
|
655 { |
|
656 return iRectIcf; |
|
657 } |
|
658 |
|
659 // --------------------------------------------------------------------------- |
|
660 // get left margin of icf. |
|
661 // --------------------------------------------------------------------------- |
|
662 // |
|
663 TInt CPeninputFingerHwrArLafManager::IcfLeftMargin() |
|
664 { |
|
665 return iIcfTextLeftMarginCn; |
|
666 } |
|
667 |
|
668 // --------------------------------------------------------------------------- |
|
669 // get right margin of icf. |
|
670 // --------------------------------------------------------------------------- |
|
671 // |
|
672 TInt CPeninputFingerHwrArLafManager::IcfRightMargin() |
|
673 { |
|
674 return iIcfTextRightMarginCn; |
|
675 } |
|
676 |
|
677 // --------------------------------------------------------------------------- |
|
678 // get top margin of icf. |
|
679 // --------------------------------------------------------------------------- |
|
680 // |
|
681 TInt CPeninputFingerHwrArLafManager::IcfTopMargin() |
|
682 { |
|
683 return iIcfTextTopMarginCn; |
|
684 } |
|
685 |
|
686 // --------------------------------------------------------------------------- |
|
687 // get bottom margin of icf. |
|
688 // --------------------------------------------------------------------------- |
|
689 // |
|
690 TInt CPeninputFingerHwrArLafManager::IcfBottomMargin() |
|
691 { |
|
692 return iIcfTextBottomMarginCn; |
|
693 } |
|
694 |
|
695 // --------------------------------------------------------------------------- |
|
696 // get line spacing of icf. |
|
697 // --------------------------------------------------------------------------- |
|
698 // |
|
699 TInt CPeninputFingerHwrArLafManager::IcfLineSpaceMargin() |
|
700 { |
|
701 return iIcfTextLineSpaceMarginCn; |
|
702 } |
|
703 |
|
704 // --------------------------------------------------------------------------- |
|
705 // get font of icf. |
|
706 // --------------------------------------------------------------------------- |
|
707 // |
|
708 CFont* CPeninputFingerHwrArLafManager::IcfFont() |
|
709 { |
|
710 // //workaround |
|
711 // TAknTextLineLayout textPaneTextLayout; |
|
712 // TAknLayoutText txt; |
|
713 // textPaneTextLayout = |
|
714 // AknLayoutScalable_Avkon::fep_hwr_top_text_pane_t1().LayoutLine(); |
|
715 // const CFont* icffont = AknLayoutUtils::FontFromId( textPaneTextLayout.iFont, NULL ); |
|
716 // |
|
717 // return const_cast<CFont*>(icffont); |
|
718 return iIcfFont; |
|
719 } |
|
720 |
|
721 // --------------------------------------------------------------------------- |
|
722 // get text height of icf. |
|
723 // --------------------------------------------------------------------------- |
|
724 // |
|
725 TInt CPeninputFingerHwrArLafManager::IcfTextHeight() |
|
726 { |
|
727 return iIcfTextHeightCn; |
|
728 } |
|
729 |
|
730 |
|
731 // --------------------------------------------------------------------------- |
|
732 // get inner padding of buttons. |
|
733 // --------------------------------------------------------------------------- |
|
734 // |
|
735 TSize CPeninputFingerHwrArLafManager::ButtonInnerPadding() |
|
736 { |
|
737 return iSizeBtnPadding; |
|
738 } |
|
739 |
|
740 |
|
741 // --------------------------------------------------------------------------- |
|
742 // get cell size of virtual numpad. |
|
743 // --------------------------------------------------------------------------- |
|
744 // |
|
745 TRect CPeninputFingerHwrArLafManager::VirtualNumpadCellSize() |
|
746 { |
|
747 return iSizeNumpadCell; |
|
748 } |
|
749 |
|
750 |
|
751 // --------------------------------------------------------------------------- |
|
752 // get text layout of virtual numpad. |
|
753 // --------------------------------------------------------------------------- |
|
754 // |
|
755 TAknTextLineLayout CPeninputFingerHwrArLafManager::NumpadKeyTxtLayout() |
|
756 { |
|
757 TAknTextLineLayout layout = AknLayoutScalable_Avkon:: |
|
758 cell_fshwr2_syb_bg_pane_t1(0).LayoutLine(); |
|
759 return layout; |
|
760 } |
|
761 |
|
762 // --------------------------------------------------------------------------- |
|
763 // get row count of virtual sctpad. |
|
764 // --------------------------------------------------------------------------- |
|
765 // |
|
766 TInt CPeninputFingerHwrArLafManager::VirtualSctpadRowCount() |
|
767 { |
|
768 return iSctpadRowCount; |
|
769 } |
|
770 |
|
771 // --------------------------------------------------------------------------- |
|
772 // get column count of virtual sctpad. |
|
773 // --------------------------------------------------------------------------- |
|
774 // |
|
775 TInt CPeninputFingerHwrArLafManager::VirtualSctpadColCount() |
|
776 { |
|
777 return iSctpadColCount; |
|
778 } |
|
779 |
|
780 // --------------------------------------------------------------------------- |
|
781 // get cell size of virtual sctpad. |
|
782 // --------------------------------------------------------------------------- |
|
783 // |
|
784 TRect CPeninputFingerHwrArLafManager::VirtualSctpadCellSize() |
|
785 { |
|
786 return iSizeSctpadCell; |
|
787 } |
|
788 |
|
789 // --------------------------------------------------------------------------- |
|
790 // get cell size of virtual sctpad. |
|
791 // --------------------------------------------------------------------------- |
|
792 // |
|
793 TRect CPeninputFingerHwrArLafManager::FixVirtualSctpadCellSize() |
|
794 { |
|
795 return iSizeFixSctpadCell; |
|
796 } |
|
797 |
|
798 |
|
799 // --------------------------------------------------------------------------- |
|
800 // get preview bubble rect. |
|
801 // --------------------------------------------------------------------------- |
|
802 // |
|
803 TRect CPeninputFingerHwrArLafManager::PreviewBubbleRect() |
|
804 { |
|
805 return iPreviewWndRect; |
|
806 } |
|
807 |
|
808 // --------------------------------------------------------------------------- |
|
809 // get preview bubble inner rect |
|
810 // --------------------------------------------------------------------------- |
|
811 // |
|
812 TRect CPeninputFingerHwrArLafManager::PreviewBubbleInnerRect() |
|
813 { |
|
814 return iPreviewWndInnerRect; |
|
815 } |
|
816 |
|
817 // --------------------------------------------------------------------------- |
|
818 // get preview bubble font |
|
819 // --------------------------------------------------------------------------- |
|
820 // |
|
821 const CFont* CPeninputFingerHwrArLafManager::PreviewBubbleFont() |
|
822 { |
|
823 return iBubbleFont; |
|
824 } |
|
825 |
|
826 // --------------------------------------------------------------------------- |
|
827 // get preview bubble text layout |
|
828 // --------------------------------------------------------------------------- |
|
829 // |
|
830 TAknTextLineLayout CPeninputFingerHwrArLafManager::PreviewBubbleTextLayout() |
|
831 { |
|
832 return iPreviewWndText; |
|
833 } |
|
834 |
|
835 // --------------------------------------------------------------------------- |
|
836 // get cell rect of virtual sctpad. |
|
837 // --------------------------------------------------------------------------- |
|
838 // |
|
839 void CPeninputFingerHwrArLafManager::GetVirtualKeyRects( RArray<TRect>& aArrayRects ) |
|
840 { |
|
841 aArrayRects.Reset(); |
|
842 |
|
843 for(TInt i = 0; i < iSCTrectArray.Count(); i++) |
|
844 { |
|
845 TRect absoluteRect = iSCTrectArray[i]; |
|
846 absoluteRect.Move(-iRectSctpad.iTl.iX, -iRectSctpad.iTl.iY); |
|
847 aArrayRects.Append(absoluteRect); |
|
848 } |
|
849 } |
|
850 |
|
851 // --------------------------------------------------------------------------- |
|
852 // get space and enter key rect. |
|
853 // --------------------------------------------------------------------------- |
|
854 // |
|
855 void CPeninputFingerHwrArLafManager::GetFixVirtualKeyRects( RArray<TRect>& aArrayRects ) |
|
856 { |
|
857 aArrayRects.Reset(); |
|
858 aArrayRects.Append( iRectSpase ); |
|
859 aArrayRects.Append( iRectEnter ); |
|
860 } |
|
861 |
|
862 // --------------------------------------------------------------------------- |
|
863 // get text layout of virtual sctpad. |
|
864 // --------------------------------------------------------------------------- |
|
865 // |
|
866 TAknTextLineLayout CPeninputFingerHwrArLafManager::SctpadKeyTxtLayout() |
|
867 { |
|
868 TAknTextLineLayout layout = AknLayoutScalable_Avkon:: |
|
869 cell_fshwr2_syb_bg_pane_t1(0).LayoutLine(); |
|
870 return layout; |
|
871 } |
|
872 |
|
873 // --------------------------------------------------------------------------- |
|
874 // get text layout of space and enter. |
|
875 // --------------------------------------------------------------------------- |
|
876 // |
|
877 TAknTextLineLayout CPeninputFingerHwrArLafManager::FixSctpadKeyTxtLayout() |
|
878 { |
|
879 TAknTextLineLayout layout = AknLayoutScalable_Avkon:: |
|
880 cell_fshwr2_syb_bg_pane_t1(0).LayoutLine(); |
|
881 return layout; |
|
882 } |
|
883 |
|
884 // --------------------------------------------------------------------------- |
|
885 // get width unit of candidate list. |
|
886 // --------------------------------------------------------------------------- |
|
887 // |
|
888 TInt CPeninputFingerHwrArLafManager::CandidateUnitWidth() |
|
889 { |
|
890 return iCandsUnitWidth; |
|
891 } |
|
892 |
|
893 // --------------------------------------------------------------------------- |
|
894 // get height unit of candidate list. |
|
895 // --------------------------------------------------------------------------- |
|
896 // |
|
897 TInt CPeninputFingerHwrArLafManager::CandidateUnitHeight() |
|
898 { |
|
899 return iCandsUnitHeight; |
|
900 } |
|
901 |
|
902 // --------------------------------------------------------------------------- |
|
903 // get horizontal margin of candidate list. |
|
904 // --------------------------------------------------------------------------- |
|
905 // |
|
906 TInt CPeninputFingerHwrArLafManager::CandidateHorizontalMargin() |
|
907 { |
|
908 return iCandsHorizontalMargin; |
|
909 } |
|
910 |
|
911 // --------------------------------------------------------------------------- |
|
912 // get vertical margin of candidate list. |
|
913 // --------------------------------------------------------------------------- |
|
914 // |
|
915 TInt CPeninputFingerHwrArLafManager::CandidateVerticalMargin() |
|
916 { |
|
917 return iCandsVerticalMargin; |
|
918 } |
|
919 |
|
920 // --------------------------------------------------------------------------- |
|
921 // get top-left position of candidate list. |
|
922 // --------------------------------------------------------------------------- |
|
923 // |
|
924 TPoint CPeninputFingerHwrArLafManager::CandidateLTPos() |
|
925 { |
|
926 return iCandidateLTPos; |
|
927 } |
|
928 |
|
929 // --------------------------------------------------------------------------- |
|
930 // get top-left position of predictive list. |
|
931 // --------------------------------------------------------------------------- |
|
932 // |
|
933 TPoint CPeninputFingerHwrArLafManager::PredictiveLTPos() |
|
934 { |
|
935 return iPredictiveLTPos; |
|
936 } |
|
937 |
|
938 // --------------------------------------------------------------------------- |
|
939 // get font of candidate list. |
|
940 // --------------------------------------------------------------------------- |
|
941 // |
|
942 const CFont* CPeninputFingerHwrArLafManager::CandidateFont() |
|
943 { |
|
944 return iCandsFont; |
|
945 } |
|
946 |
|
947 |
|
948 // --------------------------------------------------------------------------- |
|
949 // get text layout of sct paging button. |
|
950 // --------------------------------------------------------------------------- |
|
951 // |
|
952 TAknTextLineLayout CPeninputFingerHwrArLafManager::SctPageBtnTxtLayout() |
|
953 { |
|
954 TAknTextLineLayout layout = AknLayoutScalable_Apps:: |
|
955 field_vitu2_entry_pane_t1(0, 0, 0).LayoutLine(); |
|
956 return layout; |
|
957 } |
|
958 |
|
959 // --------------------------------------------------------------------------- |
|
960 // c++ constructor |
|
961 // --------------------------------------------------------------------------- |
|
962 // |
|
963 CPeninputFingerHwrArLafManager::CPeninputFingerHwrArLafManager() |
|
964 { |
|
965 |
|
966 } |
|
967 |
|
968 // --------------------------------------------------------------------------- |
|
969 // Symbian second-phase constructor |
|
970 // --------------------------------------------------------------------------- |
|
971 // |
|
972 void CPeninputFingerHwrArLafManager::ConstructL() |
|
973 { |
|
974 } |
|
975 |
|
976 TSize CPeninputFingerHwrArLafManager::SymbolGroupButtonSize() |
|
977 { |
|
978 return iSymButtonSize; |
|
979 } |
|
980 // End Of File |