c3bfcf4ce7daa15cb533ac6712f29ac1f986e5ff
[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_TEXTBOX";
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         TextBox* pTextBox = static_cast<TextBox*>(GetControl(IDC_TEXTBOX));
78         if (pTextBox != null)
79         {
80                 pTextBox->SetAutoLinkMask(0);
81         }
82         __pActionListener = pEventListener;
83         return true;
84 }
85
86 result
87 DtmfKeyPadPanel::OnInitializing(void)
88 {
89         RelativeLayout* pRelativeLayout = dynamic_cast<RelativeLayout*>(GetParent()->GetPortraitLayoutN());
90         if (pRelativeLayout != null)
91         {
92                 pRelativeLayout->Update();
93                 delete pRelativeLayout;
94         }
95
96         pRelativeLayout = dynamic_cast<RelativeLayout*>(GetParent()->GetLandscapeLayoutN());
97         if (pRelativeLayout != null)
98         {
99                 pRelativeLayout->Update();
100                 delete pRelativeLayout;
101         }
102
103         //Set background bitmap
104         Label* pKeyBgLbl = static_cast<Label*>(GetControl(IDC_DTMF_KEY_BG_LABEL, true));
105         Bitmap* pKeyBgBitmap = AppUtility::GetBitmapFromResourcesN(IDB_KEYPAD_BG, pKeyBgLbl->GetWidth(), pKeyBgLbl->GetHeight());
106         if (pKeyBgBitmap != null)
107         {
108                 pKeyBgLbl->SetBackgroundBitmap(*pKeyBgBitmap);
109                 delete pKeyBgBitmap;
110                 pKeyBgBitmap = null;
111         }
112
113         //DTMF Keys panel
114         Panel* pKeysPanel = new (std::nothrow) Panel();
115         pKeysPanel->Construct(IDL_DTMF_KEYS_PANEL);
116         pKeysPanel->SetBounds(pKeyBgLbl->GetBounds());
117         AddControl(*pKeysPanel);
118
119         //Add action listener and bg to buttons.
120         AddListenersToButtons();
121         result r = SetBackgroundtoButton();
122         return r;
123 }
124
125 void
126 DtmfKeyPadPanel::AddListenersToButtons()
127 {
128         for (int i = NUM_KEY1; i <= HASH_KEY; ++i)
129         {
130                 String buttonName(IDC_BUTTON);
131                 buttonName.Append(i);
132                 Button* pButton = static_cast<Button*>(GetControl(buttonName, true));
133                 if(pButton == null)
134                 {
135                         continue;
136                 }
137                 pButton->SetActionId(i);
138                 SetControlAlwaysOnTop(*pButton,true);
139                 //Add Listeners
140                 if(__pActionListener != null)
141                 {
142                         pButton->AddActionEventListener(*__pActionListener);
143                 }
144         }
145 }
146
147 result
148 DtmfKeyPadPanel::SetBackgroundtoButton()
149 {
150         AppLogDebug("ENTER");
151         result r = E_FAILURE;
152         for (int i = 1; i <= 12; i++)
153         {
154                 String buttonName(IDC_BUTTON);
155                 buttonName.Append(i);
156                 Button* pButton = static_cast<Button*>(GetControl(buttonName,true));
157                 if(pButton == null)
158                 {
159                         continue;
160                 }
161
162                 //normal bg bitmap
163                 Rectangle canvasRect(0, 0, W_DTMF_BTN, H_DTMF_BTN);
164                 Canvas canvasNormal;
165                 canvasNormal.Construct(canvasRect);
166                 canvasNormal.SetBackgroundColor(Color(255,255,255,0));
167                 canvasNormal.Clear();
168                 //pressed bg bitmap
169                 Canvas canvasPressed;
170                 canvasPressed.Construct(canvasRect);
171
172                 String number(DialUtil::ConvertDialedNumberToString(pButton->GetActionId()));
173                 switch (pButton->GetActionId())
174                 {
175                 case NUM_KEY1:
176                 {
177                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
178                         DrawImageToCanvas(IDB_KEYPAD_NUM1_ICON, Dimension(W_VOICE_CALL_ICON, H_VOICE_CALL_ICON), canvasNormal, POSITION_RIGHT);
179
180                         //Set canvas for pressed state of the button
181                         r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS);
182                         TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed");
183                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
184                         DrawImageToCanvas(IDB_KEYPAD_NUM1_ICON, Dimension(W_VOICE_CALL_ICON, H_VOICE_CALL_ICON), canvasPressed, POSITION_RIGHT);
185                 }
186                 break;
187
188                 case NUM_KEY2:
189                 {
190                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
191                         DrawTextToCanvas(IDI_KEY2_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
192
193                         //Set canvas for pressed state of the button
194                         r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS);
195                         TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed");
196                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
197                         DrawTextToCanvas(IDI_KEY2_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
198                 }
199                 break;
200
201                 case NUM_KEY3:
202                 {
203                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
204                         DrawTextToCanvas(IDI_KEY3_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
205
206                         r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS);
207                         TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed");
208                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
209                         DrawTextToCanvas(IDI_KEY3_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
210                 }
211                 break;
212
213                 case NUM_KEY4:
214                 {
215                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
216                         DrawTextToCanvas(IDI_KEY4_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
217
218                         r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS);
219                         TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed");
220                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
221                         DrawTextToCanvas(IDI_KEY4_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
222                 }
223                 break;
224
225                 case NUM_KEY5:
226                 {
227                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
228                         DrawTextToCanvas(IDI_KEY5_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
229
230                         r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS);
231                         TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed");
232                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
233                         DrawTextToCanvas(IDI_KEY5_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
234                 }
235                 break;
236
237                 case NUM_KEY6:
238                 {
239                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
240                         DrawTextToCanvas(IDI_KEY6_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
241
242                         r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS);
243                         TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed");
244                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
245                         DrawTextToCanvas(IDI_KEY6_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
246                 }
247                 break;
248
249                 case NUM_KEY7:
250                 {
251                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
252                         DrawTextToCanvas(IDI_KEY7_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
253
254                         r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS);
255                         TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed");
256                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
257                         DrawTextToCanvas(IDI_KEY7_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
258                 }
259                 break;
260
261                 case NUM_KEY8:
262                 {
263                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
264                         DrawTextToCanvas(IDI_KEY8_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
265
266                         r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS);
267                         TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed");
268                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
269                         DrawTextToCanvas(IDI_KEY8_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
270                 }
271                 break;
272
273                 case NUM_KEY9:
274                 {
275                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
276                         DrawTextToCanvas(IDI_KEY9_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
277
278                         r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS);
279                         TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed");
280                         DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
281                         DrawTextToCanvas(IDI_KEY9_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
282                 }
283                 break;
284
285                 case PAUSE_KEY:
286                 {
287                         DrawImageToCanvas(IDB_DIALER_STAR_ICON, Dimension(75, 36), canvasNormal, POSITION_LEFT);
288                         DrawTextToCanvas(L"P", FONT_KEYPAD_P, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
289
290                         r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS);
291                         TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed");
292                         DrawImageToCanvas(IDB_DIALER_STAR_ICON, Dimension(75, 36), canvasPressed, POSITION_LEFT);
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 }