066e61808892da9bc7db5037ca819d5553fd4442
[apps/osp/Call.git] / src / CallDtmfKeypadPanel.cpp
1 //
2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
3 //
4 // Licensed under the Flora License, Version 1.0 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //     http://floralicense.org/license/
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an AS IS BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16
17 /**
18  * @file    CallDtmfKeypadPanel.cpp
19  * @brief       Dtmf keypad implementation class
20  */
21 #include <FApp.h>
22 #include <FMedia.h>
23 #include "CallAppUtility.h"
24 #include "CallCommonUtils.h"
25 #include "CallDtmfKeypadPanel.h"
26 #include "CallTypes.h"
27
28 using namespace Tizen::App;
29 using namespace Tizen::Base;
30 using namespace Tizen::Graphics;
31 using namespace Tizen::Media;
32 using namespace Tizen::Ui;
33 using namespace Tizen::Ui::Controls;
34 using namespace Tizen::Ui::Scenes;
35
36 const int W_VOICE_CALL_ICON = 70;
37 const int H_VOICE_CALL_ICON = 36;
38 const int INITIAL_X_OFFSET = 13;
39 const int LEFT_X_OFFSET = 77;
40 const int RIGHT_X_OFFSET = 121;
41 const int INITIAL_TEXT_X_OFFSET = 24;
42 const int LEFT_TEXT_X_OFFSET = 64;
43 const int LEFT_TEXT_X_MARGIN = 18;
44 const int RIGHT_TEXT_X_OFFSET = 94;
45 const int W_DTMF_BTN = 212;
46 const int H_DTMF_BTN = 134;
47 const Color COLOR_KEYPAD_BG(0, 0, 0, 100);
48 const wchar_t* IDC_TEXTBOX = L"IDC_NUM_EDITFIELD";
49 const wchar_t* IDC_BUTTON = L"IDC_BUTTON";
50 const wchar_t* IDC_DTMF_KEY_BG_LABEL = L"IDC_DTMF_KEY_BG_LABEL";
51
52 DtmfKeyPadPanel::DtmfKeyPadPanel(void)
53 {
54         __pActionListener = null;
55 }
56
57 DtmfKeyPadPanel::~DtmfKeyPadPanel(void)
58 {
59 }
60
61 bool
62 DtmfKeyPadPanel::Initialize(IActionEventListener* pEventListener, Rectangle& boundsRect)
63 {
64         result r = Construct(IDL_DTMF_PANEL);
65         if (IsFailed(r))
66         {
67                 return false;
68         }
69
70         r = SetBounds(boundsRect);
71         if (IsFailed(r))
72         {
73                 return false;
74         }
75
76         //disable auto link detection
77         EditField* pTextBox = static_cast<EditField*>(GetControl(IDC_TEXTBOX));
78         if (pTextBox != null)
79         {
80                 pTextBox->SetAutoLinkMask(0);
81                 pTextBox->SetFocus();
82         }
83         __pActionListener = pEventListener;
84         return true;
85 }
86
87 result
88 DtmfKeyPadPanel::OnInitializing(void)
89 {
90         RelativeLayout* pRelativeLayout = dynamic_cast<RelativeLayout*>(GetParent()->GetPortraitLayoutN());
91         if (pRelativeLayout != null)
92         {
93                 pRelativeLayout->Update();
94                 delete pRelativeLayout;
95         }
96
97         pRelativeLayout = dynamic_cast<RelativeLayout*>(GetParent()->GetLandscapeLayoutN());
98         if (pRelativeLayout != null)
99         {
100                 pRelativeLayout->Update();
101                 delete pRelativeLayout;
102         }
103
104         //Set background bitmap
105         Label* pKeyBgLbl = static_cast<Label*>(GetControl(IDC_DTMF_KEY_BG_LABEL, true));
106         Bitmap* pKeyBgBitmap = AppUtility::GetBitmapFromResourcesN(IDB_KEYPAD_BG, pKeyBgLbl->GetWidth(), pKeyBgLbl->GetHeight());
107         if (pKeyBgBitmap != null)
108         {
109                 pKeyBgLbl->SetBackgroundBitmap(*pKeyBgBitmap);
110                 delete pKeyBgBitmap;
111                 pKeyBgBitmap = null;
112         }
113
114         //DTMF Keys panel
115         Panel* pKeysPanel = new (std::nothrow) Panel();
116         pKeysPanel->Construct(IDL_DTMF_KEYS_PANEL);
117         pKeysPanel->SetBounds(pKeyBgLbl->GetBounds());
118         AddControl(*pKeysPanel);
119
120         //Add action listener and bg to buttons.
121         AddListenersToButtons();
122         result r = SetBackgroundtoButton();
123         return r;
124 }
125
126 void
127 DtmfKeyPadPanel::AddListenersToButtons()
128 {
129         for (int i = NUM_KEY1; i <= HASH_KEY; ++i)
130         {
131                 String buttonName(IDC_BUTTON);
132                 buttonName.Append(i);
133                 Button* pButton = static_cast<Button*>(GetControl(buttonName, true));
134                 if(pButton == null)
135                 {
136                         continue;
137                 }
138                 pButton->SetActionId(i);
139                 SetControlAlwaysOnTop(*pButton,true);
140                 //Add Listeners
141                 if(__pActionListener != null)
142                 {
143                         pButton->AddActionEventListener(*__pActionListener);
144                 }
145         }
146 }
147
148 result
149 DtmfKeyPadPanel::SetBackgroundtoButton()
150 {
151         AppLogDebug("ENTER");
152         result r = E_FAILURE;
153         for (int i = 1; i <= 12; i++)
154         {
155                 String buttonName(IDC_BUTTON);
156                 buttonName.Append(i);
157                 Button* pButton = static_cast<Button*>(GetControl(buttonName,true));
158                 if(pButton == null)
159                 {
160                         continue;
161                 }
162
163                 //normal bg bitmap
164                 Rectangle canvasRect(0, 0, W_DTMF_BTN, H_DTMF_BTN);
165                 Canvas canvasNormal;
166                 canvasNormal.Construct(canvasRect);
167                 canvasNormal.SetBackgroundColor(Color(255,255,255,0));
168                 canvasNormal.Clear();
169                 //pressed bg bitmap
170                 Canvas canvasPressed;
171                 canvasPressed.Construct(canvasRect);
172
173                 String number(DialUtil::ConvertDialedNumberToString(pButton->GetActionId()));
174                 switch (pButton->GetActionId())
175                 {
176                 case NUM_KEY1:
177                 {
178                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
179                         DrawImageToCanvas(IDB_KEYPAD_NUM1_ICON, Dimension(W_VOICE_CALL_ICON, H_VOICE_CALL_ICON), canvasNormal, POSITION_RIGHT);
180
181                         //Set canvas for pressed state of the button
182                         r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS);
183                         TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed");
184                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
185                         DrawImageToCanvas(IDB_KEYPAD_NUM1_ICON, Dimension(W_VOICE_CALL_ICON, H_VOICE_CALL_ICON), canvasPressed, POSITION_RIGHT);
186                 }
187                 break;
188
189                 case NUM_KEY2:
190                 {
191                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
192                         DrawTextToCanvas(IDI_KEY2_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
193
194                         //Set canvas for pressed state of the button
195                         r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS);
196                         TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed");
197                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
198                         DrawTextToCanvas(IDI_KEY2_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
199                 }
200                 break;
201
202                 case NUM_KEY3:
203                 {
204                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
205                         DrawTextToCanvas(IDI_KEY3_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
206
207                         r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS);
208                         TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed");
209                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
210                         DrawTextToCanvas(IDI_KEY3_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
211                 }
212                 break;
213
214                 case NUM_KEY4:
215                 {
216                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
217                         DrawTextToCanvas(IDI_KEY4_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
218
219                         r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS);
220                         TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed");
221                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
222                         DrawTextToCanvas(IDI_KEY4_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
223                 }
224                 break;
225
226                 case NUM_KEY5:
227                 {
228                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
229                         DrawTextToCanvas(IDI_KEY5_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
230
231                         r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS);
232                         TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed");
233                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
234                         DrawTextToCanvas(IDI_KEY5_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
235                 }
236                 break;
237
238                 case NUM_KEY6:
239                 {
240                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
241                         DrawTextToCanvas(IDI_KEY6_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
242
243                         r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS);
244                         TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed");
245                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
246                         DrawTextToCanvas(IDI_KEY6_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
247                 }
248                 break;
249
250                 case NUM_KEY7:
251                 {
252                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
253                         DrawTextToCanvas(IDI_KEY7_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
254
255                         r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS);
256                         TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed");
257                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
258                         DrawTextToCanvas(IDI_KEY7_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
259                 }
260                 break;
261
262                 case NUM_KEY8:
263                 {
264                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
265                         DrawTextToCanvas(IDI_KEY8_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
266
267                         r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS);
268                         TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed");
269                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
270                         DrawTextToCanvas(IDI_KEY8_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
271                 }
272                 break;
273
274                 case NUM_KEY9:
275                 {
276                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
277                         DrawTextToCanvas(IDI_KEY9_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
278
279                         r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS);
280                         TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed");
281                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
282                         DrawTextToCanvas(IDI_KEY9_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
283                 }
284                 break;
285
286                 case PAUSE_KEY:
287                 {
288                         DrawTextToCanvas(L"*", FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
289                         DrawTextToCanvas(L"P", FONT_KEYPAD_P, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
290                         r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS);
291                         TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed");
292                         DrawTextToCanvas(L"*", FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
293                         DrawTextToCanvas(L"P", FONT_KEYPAD_P, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
294         }
295                 break;
296
297                 case NUM_KEY0:
298                 {
299                         DrawTextToCanvas(L"0", FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
300                         DrawTextToCanvas(L"+", FONT_KEYPAD_PLUS, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
301
302                         r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS);
303                         TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed");
304                         DrawTextToCanvas(L"0", FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
305                         DrawTextToCanvas(L"+", FONT_KEYPAD_PLUS, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
306                 }
307                 break;
308
309                 case HASH_KEY:
310                 {
311                         DrawTextToCanvas(L"#", FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
312
313                         r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS);
314                         TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed");
315                         DrawTextToCanvas(L"#", FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
316                 }
317
318                 break;
319                 }
320                 //Set the final Bitmap to Button
321                 DialUtil::DrawCanvasToButton(&canvasNormal, &canvasPressed, pButton);
322         }
323
324         AppLogDebug("EXIT");
325         return E_SUCCESS;
326
327 CATCH:
328         //RemoveAllControls();
329         return r;
330 }
331
332 result
333 DtmfKeyPadPanel::SetPressedBgToCanvas(Canvas& canvas, const String& bgImg)
334 {
335         //Construct a canvas
336         AppResource* pAppResource = AppResource::GetInstance();
337         Bitmap* pBitmap = pAppResource->GetBitmapN(bgImg);
338         if (pBitmap == null)
339         {
340                 return E_FAILURE;
341         }
342
343         if (pBitmap->IsNinePatchedBitmap())
344         {
345                 canvas.DrawNinePatchedBitmap(canvas.GetBounds(), *pBitmap);
346         }
347         else
348         {
349                 pBitmap->SetScalingQuality(BITMAP_SCALING_QUALITY_MID);
350                 pBitmap->Scale(Dimension(canvas.GetBounds().width, canvas.GetBounds().height));
351                 canvas.DrawBitmap(Point(0,0), *pBitmap);
352         }
353         delete pBitmap;
354         return E_SUCCESS;
355 }
356
357 void
358 DtmfKeyPadPanel::DrawImageToCanvas(const String& image, Dimension imageDimention, Canvas& canvas, int pos)
359 {
360         //create and scale bitmap
361         AppResource* pAppResource = AppResource::GetInstance();
362         Bitmap* pBitmap = pAppResource->GetBitmapN(image);
363         pBitmap->SetScalingQuality(BITMAP_SCALING_QUALITY_MID);
364         pBitmap->Scale(imageDimention);
365
366         //Find position to draw bitmap
367         Point bitmapPos(0, 0);
368         switch (pos)
369         {
370         case POSITION_LEFT:
371         {
372                 bitmapPos.SetPosition(INITIAL_X_OFFSET + (LEFT_X_OFFSET - pBitmap->GetWidth()) / 2, (canvas.GetBounds().height - pBitmap->GetHeight()) / 2);
373         }
374         break;
375
376         case POSITION_RIGHT:
377         {
378                 bitmapPos.SetPosition(INITIAL_X_OFFSET + LEFT_X_OFFSET + ((RIGHT_X_OFFSET - pBitmap->GetWidth()) / 2), (canvas.GetBounds().height - pBitmap->GetHeight()) / 2);
379         }
380         break;
381
382         case POSITION_CENTER:
383         {
384                 bitmapPos.SetPosition((canvas.GetBounds().width - pBitmap->GetWidth()) / 2, (canvas.GetBounds().height - pBitmap->GetHeight()) / 2);
385         }
386         break;
387         }
388
389         //draw bitmap
390         canvas.DrawBitmap(Rectangle(bitmapPos, Dimension(pBitmap->GetWidth(), pBitmap->GetHeight())), *pBitmap);
391         delete pBitmap;
392         pBitmap = null;
393 }
394
395 void
396 DtmfKeyPadPanel::DrawTextToCanvas(const String& buttonText, int textFontStyle, Canvas& canvas, int pos, int buttonStatus)
397 {
398         if (buttonText == null)
399         {
400                 return;
401         }
402
403         //get text font
404         Font* font = GetTextFontN(textFontStyle);
405
406         //get text color
407         Color* textColor = GetTextColorN(textFontStyle, buttonStatus);
408
409         //create text element
410         TextElement* pTextElement = new (std::nothrow) TextElement();
411         pTextElement->Construct(buttonText);
412         pTextElement->SetTextColor(*textColor);
413         pTextElement->SetFont(*font);
414
415         //get dimensions of the text
416         Dimension textDimension;
417         font->GetTextExtent(buttonText, buttonText.GetLength(), textDimension);
418         textDimension.height = textDimension.height + font->GetDescender();
419         //create enriched text
420         EnrichedText* pEnrichedText = new (std::nothrow) EnrichedText();
421         pEnrichedText->Construct(textDimension);
422         pEnrichedText->Add(*pTextElement);
423
424         //set the position of the text in canvas
425         Point textPos(0, 0);
426         switch (pos)
427         {
428         case POSITION_LEFT:
429         {
430                 textPos.SetPosition(INITIAL_TEXT_X_OFFSET + ((LEFT_TEXT_X_OFFSET - pEnrichedText->GetWidth()) / 2), (canvas.GetBounds().height - pEnrichedText->GetHeight()) / 2);
431         }
432         break;
433
434         case POSITION_RIGHT:
435         {
436                 textPos.SetPosition(INITIAL_TEXT_X_OFFSET + LEFT_TEXT_X_OFFSET + LEFT_TEXT_X_MARGIN + ((RIGHT_TEXT_X_OFFSET - pEnrichedText->GetWidth()) / 2), (canvas.GetBounds().height - pEnrichedText->GetHeight()) / 2);
437         }
438         break;
439
440         case POSITION_CENTER:
441         {
442                 textPos.SetPosition((canvas.GetBounds().width - pEnrichedText->GetWidth()) / 2, (canvas.GetBounds().height - pEnrichedText->GetHeight()) / 2);
443         }
444         break;
445         }
446
447         //Draw EnrichedText to canvas
448         canvas.DrawText(textPos, *pEnrichedText);
449
450         // Cleans up
451         pEnrichedText->RemoveAll(true);
452         delete pEnrichedText;
453         delete textColor;
454         delete font;
455 }
456
457 Font*
458 DtmfKeyPadPanel::GetTextFontN(int textFontStyle)
459 {
460         Font* font = new (std::nothrow) Font();
461
462         switch (textFontStyle)
463         {
464         case FONT_KEYPAD_NUMBER:
465         {
466                 font->Construct(FONT_STYLE_PLAIN, 112);
467         }
468         break;
469
470         case FONT_KEYPAD_TEXT:
471         {
472                 font->Construct(FONT_STYLE_PLAIN, 30);
473         }
474         break;
475
476         case FONT_KEYPAD_P:
477         {
478                 font->Construct(FONT_STYLE_PLAIN, 60);
479         }
480         break;
481
482         case FONT_KEYPAD_PLUS:
483         {
484                 font->Construct(FONT_STYLE_PLAIN, 64);
485         }
486         break;
487         }
488         return font;
489 }
490
491 Color*
492 DtmfKeyPadPanel::GetTextColorN(int textColor, int buttonStatus)
493 {
494         Color* color = new (std::nothrow) Color();
495
496         if (buttonStatus == BUTTON_STATUS_PRESSED)
497         {
498                 color->SetColorComponents(255, 255, 255);
499                 return color;
500         }
501
502         switch (textColor)
503         {
504         case FONT_KEYPAD_NUMBER:
505         {
506                 color->SetColorComponents(242, 242, 242);
507         }
508         break;
509
510         case FONT_KEYPAD_TEXT:
511         {
512                 color->SetColorComponents(197, 197, 197);
513         }
514         break;
515
516         case FONT_KEYPAD_P:
517         case FONT_KEYPAD_PLUS:
518         {
519                 color->SetColorComponents(218, 218, 218);
520         }
521         break;
522         }
523         return color;
524 }
525
526 result
527 DtmfKeyPadPanel::OnTerminating(void)
528 {
529         result r = E_SUCCESS;
530         //RemoveAllControls();
531         return r;
532 }