2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0/
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
18 * @file FUiCtrl_CheckButtonPresenter.cpp
19 * @brief This is the implementation file for the _CheckButtonPresenter class.
22 #include <FBaseErrorDefine.h>
23 #include <FBaseSysLog.h>
24 #include <FGrp_BitmapImpl.h>
25 #include <FGrp_CanvasImpl.h>
26 #include <FGrp_FontImpl.h>
27 #include <FGrp_TextTextObject.h>
28 #include <FGrp_TextTextSimple.h>
29 #include "FUi_CoordinateSystemUtils.h"
30 #include "FUi_ResourceManager.h"
31 #include "FUi_UiTouchEvent.h"
32 #include "FUiAnim_VisualElement.h"
33 #include "FUiCtrl_CheckButtonPresenter.h"
34 #include "FUiCtrl_CheckButtonModel.h"
36 using namespace Tizen::Base;
37 using namespace Tizen::Graphics;
38 using namespace Tizen::Graphics::_Text;
39 using namespace Tizen::Base::Runtime;
41 namespace Tizen { namespace Ui { namespace Controls
44 _CheckButtonPresenter::_CheckButtonPresenter(void)
45 : __pCheckButton(null)
46 , __pCheckButtonModel(null)
47 , __previousEnabledState(false)
48 , __touchMoveHandled(false)
50 , __pTitleTextFont(null)
52 , __pTitleTextObject(null)
53 , __titleTextBounds(FloatRectangle())
54 , __textBounds(FloatRectangle())
55 , __defaultButtonBounds(FloatRectangle())
56 , __onOffSlidingButtonBounds(FloatRectangle())
57 , __detailedButtonBounds(FloatRectangle())
60 , __pCheckAnimationTimer(null)
62 , __onOffHandlerPosition(0.0f)
63 , __onOffHandlerPressed(false)
64 , __onOffHandlerMoved(false)
65 , __highlightedIndex(0)
66 , __detailedPressed(false)
71 _CheckButtonPresenter::~_CheckButtonPresenter(void)
73 if (__pCheckButtonModel)
75 delete __pCheckButtonModel;
76 __pCheckButtonModel = null;
85 if (__pTitleTextObject)
87 delete __pTitleTextObject;
88 __pTitleTextObject = null;
91 if (__pCheckAnimationTimer)
93 delete __pCheckAnimationTimer;
94 __pCheckAnimationTimer = null;
99 _CheckButtonPresenter::Construct(const _CheckButton& checkButton)
101 result r = E_SUCCESS;
103 __pCheckButton = const_cast <_CheckButton*>(&checkButton);
105 __fontStyle = FONT_STYLE_PLAIN;
107 __pTextObject = new (std::nothrow) TextObject();
108 SysTryCatch(NID_UI_CTRL, __pTextObject != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
110 __pTitleTextObject = new (std::nothrow) TextObject();
111 SysTryCatch(NID_UI_CTRL, __pTitleTextObject != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
113 __pTextObject->Construct();
114 __pTextObject->SetWrap(TEXT_OBJECT_WRAP_TYPE_WORD);
115 __pTextObject->SetAction(TEXT_OBJECT_ACTION_TYPE_ABBREV);
117 __pTitleTextObject->Construct();
118 __pTitleTextObject->SetWrap(TEXT_OBJECT_WRAP_TYPE_WORD);
119 __pTitleTextObject->SetAction(TEXT_OBJECT_ACTION_TYPE_ABBREV);
121 CalculateTextBounds();
122 CalculateTitleTextBounds();
123 CalculateButtonBounds();
129 delete __pTextObject;
130 __pTextObject = null;
132 delete __pTitleTextObject;
133 __pTitleTextObject = null;
139 _CheckButtonPresenter::Install(void)
141 result r = E_SUCCESS;
143 _CheckButtonModel* pModel = new (std::nothrow) _CheckButtonModel();
144 SysTryReturn(NID_UI_CTRL, pModel, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
146 r = SetModel(*pModel);
147 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error occurred.");
149 r = pModel->Construct();
150 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error occurred.");
160 _CheckButtonPresenter::SetModel(const _CheckButtonModel& checkButtonModel)
162 __pCheckButtonModel = const_cast <_CheckButtonModel*>(&checkButtonModel);
168 _CheckButtonPresenter::OnFontChanged(Font* pFont)
171 __pTitleTextFont = pFont;
177 _CheckButtonPresenter::OnFontInfoRequested(unsigned long& style, int& size)
180 size = _CoordinateSystemUtils::ConvertToInteger(__fontSize);
186 _CheckButtonPresenter::OnFontInfoRequested(unsigned long& style, float& size)
195 _CheckButtonPresenter::SetFontInfo(unsigned long style, float size)
204 _CheckButtonPresenter::Draw(void)
214 _CheckButtonPresenter::DrawBackground(void)
216 Canvas* pCanvas = __pCheckButton->GetCanvasN();
219 SysLog(NID_UI_CTRL, "Cannot get a canvas.");
224 Bitmap* pBgBitmap = null;
225 Bitmap* pReColorBgBitmap = null;
227 Bitmap* pHighlightedBgBitmap = null;
228 Bitmap* pHighlightedReColorBgBitmap = null;
230 FloatDimension minDimension(0.0f, 0.0f);
231 FloatDimension minDimensionWithAnnex(0.0f, 0.0f);
233 GET_DIMENSION_CONFIG(CHECKBUTTON::MIN_DIMENSION, __pCheckButton->GetOrientation(), minDimension);
234 GET_DIMENSION_CONFIG(CHECKBUTTON::MIN_DIMENSION_WITH_ANNEX, __pCheckButton->GetOrientation(), minDimensionWithAnnex);
236 FloatRectangle bounds(0.0f, 0.0f, __pCheckButton->GetBoundsF().width, __pCheckButton->GetBoundsF().height);
238 _CheckButtonStatus checkStatus = __pCheckButton->GetCheckButtonStatus();
239 BackgroundStyle backgroundStyle = __pCheckButton->GetBackgroundStyle();
240 CheckButtonStyle checkStyle = __pCheckButton->GetCheckButtonStyle();
242 if (checkStyle == CHECK_BUTTON_STYLE_MARK || checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_ONOFF
243 || checkStyle == CHECK_BUTTON_STYLE_ONOFF_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_RADIO || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DIVIDER)
245 if (bounds.width < minDimension.width )
247 bounds.width = minDimension.width;
250 if (bounds.height < minDimension.height )
252 bounds.height = minDimension.height;
257 if (bounds.width < minDimensionWithAnnex.width )
259 bounds.width = minDimensionWithAnnex.width;
262 if (bounds.height < minDimensionWithAnnex.height )
264 bounds.height = minDimensionWithAnnex.height;
268 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
271 if (checkStatus == _CHECK_BUTTON_STATUS_NORMAL)
273 if (backgroundStyle == BACKGROUND_STYLE_NONE)
275 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
280 pBgBitmap = __pCheckButton->GetBackgroundBitmap(__pCheckButton->GetGroupStyle(), _CHECK_BUTTON_STATUS_NORMAL);
282 if (pBgBitmap && _BitmapImpl::CheckNinePatchedBitmapStrictly(*pBgBitmap))
284 pReColorBgBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBgBitmap, Color::GetColor(COLOR_ID_MAGENTA),
285 __pCheckButton->GetColor(_CHECK_BUTTON_STATUS_NORMAL));
286 if (pReColorBgBitmap)
288 pCanvas->DrawNinePatchedBitmap(bounds, *pReColorBgBitmap);
291 bool themeBgBitmap = false;
293 if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_SINGLE)
295 themeBgBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_SINGLE_BG_NORMAL);
297 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_TOP)
299 themeBgBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_TOP_BG_NORMAL);
301 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_MIDDLE)
303 themeBgBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_MIDDLE_BG_NORMAL);
305 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_BOTTOM)
307 themeBgBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_BOTTOM_BG_NORMAL);
310 if (themeBgBitmap == false)
312 Bitmap* pBgNormalEffectBitmap = __pCheckButton->GetBackgroundNormalEffectBitmap(__pCheckButton->GetGroupStyle());
314 if (pBgNormalEffectBitmap)
316 pCanvas->DrawNinePatchedBitmap(bounds, *pBgNormalEffectBitmap);
324 pCanvas->DrawBitmap(FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height), *pBgBitmap);
329 else if (checkStatus == _CHECK_BUTTON_STATUS_DISABLED)
331 if (backgroundStyle == BACKGROUND_STYLE_NONE)
333 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
338 pBgBitmap = __pCheckButton->GetBackgroundBitmap(__pCheckButton->GetGroupStyle(), _CHECK_BUTTON_STATUS_DISABLED);
340 if (pBgBitmap && _BitmapImpl::CheckNinePatchedBitmapStrictly(*pBgBitmap))
342 pReColorBgBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBgBitmap, Color::GetColor(COLOR_ID_MAGENTA),
343 __pCheckButton->GetColor(_CHECK_BUTTON_STATUS_DISABLED));
344 if (pReColorBgBitmap)
346 pCanvas->DrawNinePatchedBitmap(bounds, *pReColorBgBitmap);
349 bool themeBgBitmap = false;
351 if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_SINGLE)
353 themeBgBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_SINGLE_BG_DISABLED);
355 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_TOP)
357 themeBgBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_TOP_BG_DISABLED);
359 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_MIDDLE)
361 themeBgBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_MIDDLE_BG_DISABLED);
363 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_BOTTOM)
365 themeBgBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_BOTTOM_BG_DISABLED);
368 if (themeBgBitmap == false)
370 Bitmap* pBgNormalEffectBitmap = __pCheckButton->GetBackgroundNormalEffectBitmap(__pCheckButton->GetGroupStyle());
372 if (pBgNormalEffectBitmap)
374 pCanvas->DrawNinePatchedBitmap(bounds, *pBgNormalEffectBitmap);
382 pCanvas->DrawBitmap(FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height), *pBgBitmap);
387 else if (checkStatus == _CHECK_BUTTON_STATUS_PRESSED)
389 if (backgroundStyle == BACKGROUND_STYLE_NONE)
391 pCanvas->SetBackgroundColor(__pCheckButton->GetColor(_CHECK_BUTTON_STATUS_PRESSED));
396 pBgBitmap = __pCheckButton->GetBackgroundBitmap(__pCheckButton->GetGroupStyle(), _CHECK_BUTTON_STATUS_PRESSED);
398 if (pBgBitmap && _BitmapImpl::CheckNinePatchedBitmapStrictly(*pBgBitmap))
400 pReColorBgBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBgBitmap, Color::GetColor(COLOR_ID_MAGENTA),
401 __pCheckButton->GetColor(_CHECK_BUTTON_STATUS_PRESSED));
402 if (pReColorBgBitmap)
404 pCanvas->DrawNinePatchedBitmap(bounds, *pReColorBgBitmap);
407 bool themeBgBitmap = false;
409 if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_SINGLE)
411 themeBgBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_SINGLE_BG_PRESSED);
413 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_TOP)
415 themeBgBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_TOP_BG_PRESSED);
417 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_MIDDLE)
419 themeBgBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_MIDDLE_BG_PRESSED);
421 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_BOTTOM)
423 themeBgBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_BOTTOM_BG_PRESSED);
426 if (themeBgBitmap == false)
428 Bitmap* pBgPressedEffectBitmap = __pCheckButton->GetBackgroundPressedEffectBitmap(__pCheckButton->GetGroupStyle());
430 if (pBgPressedEffectBitmap)
432 pCanvas->DrawNinePatchedBitmap(bounds, *pBgPressedEffectBitmap);
440 pCanvas->DrawBitmap(FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height), *pBgBitmap);
445 else if (checkStatus == _CHECK_BUTTON_STATUS_HIGHLIGHTED)
447 if (backgroundStyle == BACKGROUND_STYLE_NONE)
449 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
454 pBgBitmap = __pCheckButton->GetBackgroundBitmap(__pCheckButton->GetGroupStyle(), _CHECK_BUTTON_STATUS_NORMAL);
456 if (pBgBitmap && _BitmapImpl::CheckNinePatchedBitmapStrictly(*pBgBitmap))
458 pReColorBgBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBgBitmap, Color::GetColor(COLOR_ID_MAGENTA),
459 __pCheckButton->GetColor(_CHECK_BUTTON_STATUS_NORMAL));
460 if (pReColorBgBitmap)
462 pCanvas->DrawNinePatchedBitmap(bounds, *pReColorBgBitmap);
465 bool themeBgBitmap = false;
467 if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_SINGLE)
469 themeBgBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_SINGLE_BG_HIGHLIGHTED);
471 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_TOP)
473 themeBgBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_TOP_BG_HIGHLIGHTED);
475 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_MIDDLE)
477 themeBgBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_MIDDLE_BG_HIGHLIGHTED);
479 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_BOTTOM)
481 themeBgBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_BOTTOM_BG_HIGHLIGHTED);
484 if (themeBgBitmap == false)
486 Bitmap* pBgPressedEffectBitmap = __pCheckButton->GetBackgroundPressedEffectBitmap(__pCheckButton->GetGroupStyle());
488 if (pBgPressedEffectBitmap)
490 pCanvas->DrawNinePatchedBitmap(bounds, *pBgPressedEffectBitmap);
498 pCanvas->DrawBitmap(FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height), *pBgBitmap);
502 pHighlightedBgBitmap = __pCheckButton->GetBackgroundBitmap(__pCheckButton->GetGroupStyle(), _CHECK_BUTTON_STATUS_HIGHLIGHTED);
504 pHighlightedReColorBgBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pHighlightedBgBitmap,
505 Color::GetColor(COLOR_ID_MAGENTA), __pCheckButton->GetColor(_CHECK_BUTTON_STATUS_HIGHLIGHTED));
507 if (pHighlightedReColorBgBitmap && __highlightedIndex == 0)
509 if (_BitmapImpl::CheckNinePatchedBitmapStrictly(*pHighlightedReColorBgBitmap))
511 pCanvas->DrawNinePatchedBitmap(bounds, *pHighlightedReColorBgBitmap);
515 pCanvas->DrawBitmap(bounds, *pHighlightedReColorBgBitmap,
516 FloatRectangle(0.0f, 0.0f, pHighlightedReColorBgBitmap->GetWidthF(), pHighlightedReColorBgBitmap->GetHeightF()));
523 if (backgroundStyle == BACKGROUND_STYLE_NONE)
525 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
530 pBgBitmap = __pCheckButton->GetBackgroundBitmap(__pCheckButton->GetGroupStyle(), __pCheckButton->GetCheckButtonStatus());
532 if (pBgBitmap && _BitmapImpl::CheckNinePatchedBitmapStrictly(*pBgBitmap))
534 pReColorBgBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBgBitmap, Color::GetColor(COLOR_ID_MAGENTA),
535 __pCheckButton->GetColor(_CHECK_BUTTON_STATUS_SELECTED));
536 if (pReColorBgBitmap)
538 pCanvas->DrawNinePatchedBitmap(bounds, *pReColorBgBitmap);
541 bool themeBgBitmap = false;
543 if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_SINGLE)
545 themeBgBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_SINGLE_BG_SELECTED);
547 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_TOP)
549 themeBgBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_TOP_BG_SELECTED);
551 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_MIDDLE)
553 themeBgBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_MIDDLE_BG_SELECTED);
555 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_BOTTOM)
557 themeBgBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_BOTTOM_BG_SELECTED);
560 if (themeBgBitmap == false)
562 Bitmap* pBgNormalEffectBitmap = __pCheckButton->GetBackgroundNormalEffectBitmap(__pCheckButton->GetGroupStyle());
564 if (pBgNormalEffectBitmap)
566 pCanvas->DrawNinePatchedBitmap(bounds, *pBgNormalEffectBitmap);
574 pCanvas->DrawBitmap(FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height), *pBgBitmap);
581 delete pReColorBgBitmap;
582 delete pHighlightedReColorBgBitmap;
588 _CheckButtonPresenter::DrawCheckBitmap(void)
590 Canvas* pCanvas = __pCheckButton->GetCanvasN();
593 SysLog(NID_UI_CTRL, "Cannot get a canvas.");
598 Color detailedNormalBgColor;
599 Color detailedDisabledBgColor;
600 Color detailedPressedBgColor;
601 Color detailedHighlightedBgColor;
602 Color detailedSelectedBgColor;
604 Color detailedRightNormalColor;
605 Color detailedRightDisabledColor;
606 Color detailedRightPressedColor;
607 Color detailedRightHighlightedColor;
608 Color detailedRightSelectedColor;
610 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_BG_NORMAL, detailedNormalBgColor);
611 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_BG_DISABLED, detailedDisabledBgColor);
612 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_BG_PRESSED, detailedPressedBgColor);
613 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_BG_HIGHLIGHTED, detailedHighlightedBgColor);
614 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_BG_SELECTED, detailedSelectedBgColor);
616 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_TEXT_NORMAL, detailedRightNormalColor);
617 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_TEXT_DISABLED, detailedRightDisabledColor);
618 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_TEXT_PRESSED, detailedRightPressedColor);
619 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_TEXT_HIGHLIGHTED, detailedRightHighlightedColor);
620 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_TEXT_SELECTED, detailedRightSelectedColor);
622 Bitmap* pReColorCircleBitmap = null;
623 Bitmap* pReColorRightBitmap = null;
625 _CheckButtonStatus checkStatus = __pCheckButton->GetCheckButtonStatus();
626 CheckButtonStyle checkStyle = __pCheckButton->GetCheckButtonStyle();
628 CalculateButtonBounds();
630 if (checkStyle == CHECK_BUTTON_STYLE_MARK || checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON)
632 if (checkStatus == _CHECK_BUTTON_STATUS_NORMAL)
634 Bitmap* pMarkBgNormalBitmap = __pCheckButton->GetMarkBgBitmap(_CHECK_BUTTON_STATUS_NORMAL);
636 if (pMarkBgNormalBitmap)
638 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pMarkBgNormalBitmap);
641 if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON)
643 Bitmap* pCircleNormalBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_NORMAL);
644 Bitmap* pDetailedRightNormalBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_NORMAL);
646 if (__detailedPressed == true)
648 if (pCircleNormalBitmap)
650 pReColorCircleBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedPressedBgColor);
653 if (pDetailedRightNormalBitmap)
655 pReColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightPressedColor);
660 if (pCircleNormalBitmap)
662 pReColorCircleBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedNormalBgColor);
665 if (pDetailedRightNormalBitmap)
667 pReColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightNormalColor);
671 if (pReColorCircleBitmap)
673 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReColorCircleBitmap);
676 if (pReColorRightBitmap)
678 float arrowWidth = pReColorRightBitmap->GetWidthF();
679 float arrowHeight = pReColorRightBitmap->GetHeightF();
681 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
682 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReColorRightBitmap);
685 bool themeBgBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_NORMAL);
687 if (themeBgBitmap == false)
689 Bitmap* pCircleNormalEffectBitmap = __pCheckButton->GetCircleNormalEffectBitmap();
691 if (pCircleNormalEffectBitmap)
693 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCircleNormalEffectBitmap);
698 else if (checkStatus == _CHECK_BUTTON_STATUS_DISABLED)
700 Bitmap* pMarkBgDisabledBitmap = __pCheckButton->GetMarkBgBitmap(_CHECK_BUTTON_STATUS_DISABLED);
702 if (pMarkBgDisabledBitmap)
704 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pMarkBgDisabledBitmap);
707 if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON)
709 Bitmap* pCircleDisabledBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_DISABLED);
710 Bitmap* pDetailedRightDisabledBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_DISABLED);
712 if (pCircleDisabledBitmap)
714 pReColorCircleBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleDisabledBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedDisabledBgColor);
717 if (pDetailedRightDisabledBitmap)
719 pReColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightDisabledBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightDisabledColor);
722 if (pReColorCircleBitmap)
724 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReColorCircleBitmap);
727 if (pReColorRightBitmap)
729 float arrowWidth = pReColorRightBitmap->GetWidthF();
730 float arrowHeight = pReColorRightBitmap->GetHeightF();
732 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
733 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReColorRightBitmap);
736 bool themeBgBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_DISABLED);
738 if (themeBgBitmap == false)
740 Bitmap* pCircleNormalEffectBitmap = __pCheckButton->GetCircleNormalEffectBitmap();
742 if (pCircleNormalEffectBitmap)
744 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCircleNormalEffectBitmap);
749 else if (checkStatus == _CHECK_BUTTON_STATUS_PRESSED)
751 Bitmap* pMarkBgPressedBitmap = __pCheckButton->GetMarkBgBitmap(_CHECK_BUTTON_STATUS_PRESSED);
753 if (pMarkBgPressedBitmap)
755 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pMarkBgPressedBitmap);
758 if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON)
760 Bitmap* pCirclePressedBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_PRESSED);
761 Bitmap* pDetailedRightPressedBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_PRESSED);
763 if (__detailedPressed == true)
765 if (pCirclePressedBitmap)
767 pReColorCircleBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCirclePressedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedPressedBgColor);
770 if (pDetailedRightPressedBitmap)
772 pReColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightPressedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightPressedColor);
777 if (pCirclePressedBitmap)
779 pReColorCircleBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCirclePressedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedNormalBgColor);
782 if (pDetailedRightPressedBitmap)
784 pReColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightPressedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightNormalColor);
788 if (pReColorCircleBitmap)
790 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReColorCircleBitmap);
793 if (pReColorRightBitmap)
795 float arrowWidth = pReColorRightBitmap->GetWidthF();
796 float arrowHeight = pReColorRightBitmap->GetHeightF();
798 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
799 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReColorRightBitmap);
802 bool themeBgBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_PRESSED);
804 if (themeBgBitmap == false)
806 Bitmap* pCirclePressedEffectBitmap = __pCheckButton->GetCirclePressedEffectBitmap();
808 if (pCirclePressedEffectBitmap)
810 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCirclePressedEffectBitmap);
815 else if (checkStatus == _CHECK_BUTTON_STATUS_HIGHLIGHTED)
817 Bitmap* pMarkBgNormalBitmap = __pCheckButton->GetMarkBgBitmap(_CHECK_BUTTON_STATUS_NORMAL);
818 Bitmap* pMarkBgHighlightedBitmap = __pCheckButton->GetMarkBgBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
820 if (pMarkBgNormalBitmap)
822 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pMarkBgNormalBitmap);
825 Bitmap* pReColorMarkBgHighlightedBitmap = null;
827 if (pMarkBgHighlightedBitmap)
829 pReColorMarkBgHighlightedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pMarkBgHighlightedBitmap,
830 Color::GetColor(COLOR_ID_MAGENTA), detailedHighlightedBgColor);
833 if (pReColorMarkBgHighlightedBitmap && __highlightedIndex == 1)
835 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pReColorMarkBgHighlightedBitmap);
838 delete pReColorMarkBgHighlightedBitmap;
840 if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON)
842 Bitmap* pCircleNormalBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_NORMAL);
843 Bitmap* pCircleHighlightedBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
844 Bitmap* pDetailedRightHighlightedBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
846 if (__detailedPressed == true)
848 if (pCircleNormalBitmap)
850 pReColorCircleBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedPressedBgColor);
853 if (pDetailedRightHighlightedBitmap)
855 pReColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightPressedColor);
860 if (pCircleNormalBitmap)
862 pReColorCircleBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedNormalBgColor);
865 if (pDetailedRightHighlightedBitmap)
867 pReColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightHighlightedColor);
871 if (pReColorCircleBitmap)
873 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReColorCircleBitmap);
876 if (pReColorRightBitmap)
878 float arrowWidth = pReColorRightBitmap->GetWidthF();
879 float arrowHeight = pReColorRightBitmap->GetHeightF();
881 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
882 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReColorRightBitmap);
885 bool themeBgBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_HIGHLIGHTED);
887 if (themeBgBitmap == false)
889 Bitmap* pCirclePressedEffectBitmap = __pCheckButton->GetCirclePressedEffectBitmap();
891 if (pCirclePressedEffectBitmap)
893 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCirclePressedEffectBitmap);
897 Bitmap* pReColorCircleHighlightedBitmap = null;
899 if (pCircleHighlightedBitmap)
901 pReColorCircleHighlightedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedHighlightedBgColor);
904 if (pReColorCircleHighlightedBitmap && __highlightedIndex == 2)
906 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReColorCircleHighlightedBitmap);
909 delete pReColorCircleHighlightedBitmap;
912 else if (checkStatus == _CHECK_BUTTON_STATUS_SELECTED)
914 Bitmap* pMarkBgSelectedBitmap = __pCheckButton->GetMarkBgBitmap(_CHECK_BUTTON_STATUS_SELECTED);
916 if (pMarkBgSelectedBitmap)
918 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pMarkBgSelectedBitmap);
921 if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON)
923 Bitmap* pCircleSelectedBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_SELECTED);
924 Bitmap* pDetailedRightSelectedBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_SELECTED);
926 if (__detailedPressed == true)
928 if (pCircleSelectedBitmap)
930 pReColorCircleBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleSelectedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedPressedBgColor);
933 if (pDetailedRightSelectedBitmap)
935 pReColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightSelectedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightPressedColor);
940 if (pCircleSelectedBitmap)
942 pReColorCircleBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleSelectedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedSelectedBgColor);
945 if (pDetailedRightSelectedBitmap)
947 pReColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightSelectedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightSelectedColor);
951 if (pReColorCircleBitmap)
953 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReColorCircleBitmap);
956 if (pReColorRightBitmap)
958 float arrowWidth = pReColorRightBitmap->GetWidthF();
959 float arrowHeight = pReColorRightBitmap->GetHeightF();
961 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
962 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReColorRightBitmap);
965 bool themeBgBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_SELECTED);
967 if (themeBgBitmap == false)
969 Bitmap* pCircleNormalEffectBitmap = __pCheckButton->GetCircleNormalEffectBitmap();
971 if (pCircleNormalEffectBitmap)
973 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCircleNormalEffectBitmap);
981 else if (checkStyle == CHECK_BUTTON_STYLE_RADIO || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
983 if (checkStatus == _CHECK_BUTTON_STATUS_NORMAL)
985 if (checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
987 Bitmap* pCircleNormalBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_NORMAL);
988 Bitmap* pDetailedRightNormalBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_NORMAL);
990 if (__detailedPressed == true)
992 if (pCircleNormalBitmap)
994 pReColorCircleBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedPressedBgColor);
997 if (pDetailedRightNormalBitmap)
999 pReColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightPressedColor);
1004 if (pCircleNormalBitmap)
1006 pReColorCircleBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedNormalBgColor);
1009 if (pDetailedRightNormalBitmap)
1011 pReColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightNormalColor);
1015 if (pReColorCircleBitmap)
1017 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReColorCircleBitmap);
1020 if (pReColorRightBitmap)
1022 float arrowWidth = pReColorRightBitmap->GetWidthF();
1023 float arrowHeight = pReColorRightBitmap->GetHeightF();
1025 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
1026 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReColorRightBitmap);
1029 bool themeBgBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_NORMAL);
1031 if (themeBgBitmap == false)
1033 Bitmap* pCircleNormalEffectBitmap = __pCheckButton->GetCircleNormalEffectBitmap();
1035 if (pCircleNormalEffectBitmap)
1037 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCircleNormalEffectBitmap);
1042 else if (checkStatus == _CHECK_BUTTON_STATUS_DISABLED)
1044 if (checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
1046 Bitmap* pCircleDisabledBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_DISABLED);
1047 Bitmap* pDetailedRightDisabledBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_DISABLED);
1049 if (pCircleDisabledBitmap)
1051 pReColorCircleBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleDisabledBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedDisabledBgColor);
1054 if (pDetailedRightDisabledBitmap)
1056 pReColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightDisabledBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightDisabledColor);
1059 if (pReColorCircleBitmap)
1061 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReColorCircleBitmap);
1064 if (pReColorRightBitmap)
1066 float arrowWidth = pReColorRightBitmap->GetWidthF();
1067 float arrowHeight = pReColorRightBitmap->GetHeightF();
1069 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
1070 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReColorRightBitmap);
1073 bool themeBgBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_DISABLED);
1075 if (themeBgBitmap == false)
1077 Bitmap* pCircleNormalEffectBitmap = __pCheckButton->GetCircleNormalEffectBitmap();
1079 if (pCircleNormalEffectBitmap)
1081 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCircleNormalEffectBitmap);
1086 else if (checkStatus == _CHECK_BUTTON_STATUS_PRESSED)
1088 if (checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
1090 Bitmap* pCirclePressedBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_PRESSED);
1091 Bitmap* pDetailedRightPressedBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_PRESSED);
1093 if (__detailedPressed == true)
1095 if (pCirclePressedBitmap)
1097 pReColorCircleBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCirclePressedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedPressedBgColor);
1100 if (pDetailedRightPressedBitmap)
1102 pReColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightPressedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightPressedColor);
1107 if (pCirclePressedBitmap)
1109 pReColorCircleBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCirclePressedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedNormalBgColor);
1112 if (pDetailedRightPressedBitmap)
1114 pReColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightPressedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightNormalColor);
1118 if (pReColorCircleBitmap)
1120 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReColorCircleBitmap);
1123 if (pReColorRightBitmap)
1125 float arrowWidth = pReColorRightBitmap->GetWidthF();
1126 float arrowHeight = pReColorRightBitmap->GetHeightF();
1128 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
1129 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReColorRightBitmap);
1132 bool themeBgBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_PRESSED);
1134 if (themeBgBitmap == false)
1136 Bitmap* pCirclePressedEffectBitmap = __pCheckButton->GetCirclePressedEffectBitmap();
1138 if (pCirclePressedEffectBitmap)
1140 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCirclePressedEffectBitmap);
1145 else if (checkStatus == _CHECK_BUTTON_STATUS_HIGHLIGHTED)
1147 if (checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
1149 Bitmap* pCircleNormalBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_NORMAL);
1150 Bitmap* pCircleHighlightedBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
1151 Bitmap* pDetailedRightHighlightedBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
1153 if (__detailedPressed == true)
1155 if (pCircleNormalBitmap)
1157 pReColorCircleBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedPressedBgColor);
1160 if (pDetailedRightHighlightedBitmap)
1162 pReColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightPressedColor);
1167 if (pCircleNormalBitmap)
1169 pReColorCircleBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedNormalBgColor);
1172 if (pDetailedRightHighlightedBitmap)
1174 pReColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightHighlightedColor);
1178 if (pReColorCircleBitmap)
1180 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReColorCircleBitmap);
1183 if (pReColorRightBitmap)
1185 float arrowWidth = pReColorRightBitmap->GetWidthF();
1186 float arrowHeight = pReColorRightBitmap->GetHeightF();
1188 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
1189 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReColorRightBitmap);
1192 bool themeBgBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_HIGHLIGHTED);
1194 if (themeBgBitmap == false)
1196 Bitmap* pCirclePressedEffectBitmap = __pCheckButton->GetCirclePressedEffectBitmap();
1198 if (pCirclePressedEffectBitmap)
1200 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCirclePressedEffectBitmap);
1204 Bitmap* pReColorCircleHighlightedBitmap = null;
1206 if (pCircleHighlightedBitmap)
1208 pReColorCircleHighlightedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedHighlightedBgColor);
1211 if (pReColorCircleHighlightedBitmap && __highlightedIndex == 1)
1213 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReColorCircleHighlightedBitmap);
1216 delete pReColorCircleHighlightedBitmap;
1219 else if (checkStatus == _CHECK_BUTTON_STATUS_SELECTED)
1221 if (checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
1223 Bitmap* pCircleSelectedBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_SELECTED);
1224 Bitmap* pDetailedRightSelectedBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_SELECTED);
1226 if (__detailedPressed == true)
1228 if (pCircleSelectedBitmap)
1230 pReColorCircleBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleSelectedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedPressedBgColor);
1233 if (pDetailedRightSelectedBitmap)
1235 pReColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightSelectedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightPressedColor);
1240 if (pCircleSelectedBitmap)
1242 pReColorCircleBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleSelectedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedSelectedBgColor);
1245 if (pDetailedRightSelectedBitmap)
1247 pReColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightSelectedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightSelectedColor);
1251 if (pReColorCircleBitmap)
1253 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReColorCircleBitmap);
1256 if (pReColorRightBitmap)
1258 float arrowWidth = pReColorRightBitmap->GetWidthF();
1259 float arrowHeight = pReColorRightBitmap->GetHeightF();
1261 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
1262 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReColorRightBitmap);
1265 bool themeBgBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_SELECTED);
1267 if (themeBgBitmap == false)
1269 Bitmap* pCircleNormalEffectBitmap = __pCheckButton->GetCircleNormalEffectBitmap();
1271 if (pCircleNormalEffectBitmap)
1273 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCircleNormalEffectBitmap);
1279 DrawMarkAnimation();
1281 else if (checkStyle == CHECK_BUTTON_STYLE_ONOFF || checkStyle == CHECK_BUTTON_STYLE_ONOFF_WITH_DIVIDER)
1283 if (checkStatus == _CHECK_BUTTON_STATUS_NORMAL)
1285 Bitmap* pOnOffBgNormalBitmap = __pCheckButton->GetOnOffBgBitmap(_CHECK_BUTTON_STATUS_NORMAL);
1287 if (pOnOffBgNormalBitmap)
1289 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffBgNormalBitmap);
1292 Bitmap* pOnOffNormalBitmap = __pCheckButton->GetOnOffBitmap(_CHECK_BUTTON_STATUS_NORMAL);
1294 if (__pCheckButton->IsSelected() && pOnOffNormalBitmap)
1296 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffNormalBitmap);
1299 else if (checkStatus == _CHECK_BUTTON_STATUS_DISABLED)
1301 Bitmap* pOnOffBgDisabledBitmap = __pCheckButton->GetOnOffBgBitmap(_CHECK_BUTTON_STATUS_DISABLED);
1303 if (pOnOffBgDisabledBitmap)
1305 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffBgDisabledBitmap);
1308 Bitmap* pOnOffDisabledBitmap = __pCheckButton->GetOnOffBitmap(_CHECK_BUTTON_STATUS_DISABLED);
1310 if (__pCheckButton->IsSelected() && pOnOffDisabledBitmap)
1312 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffDisabledBitmap);
1315 else if (checkStatus == _CHECK_BUTTON_STATUS_PRESSED)
1317 Bitmap* pOnOffBgPressedBitmap = __pCheckButton->GetOnOffBgBitmap(_CHECK_BUTTON_STATUS_PRESSED);
1319 if (pOnOffBgPressedBitmap)
1321 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffBgPressedBitmap);
1324 Bitmap* pOnOffPressedBitmap = __pCheckButton->GetOnOffBitmap(_CHECK_BUTTON_STATUS_PRESSED);
1326 if (__pCheckButton->IsSelected() && pOnOffPressedBitmap)
1328 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffPressedBitmap);
1331 else if (checkStatus == _CHECK_BUTTON_STATUS_HIGHLIGHTED)
1333 Bitmap* pOnOffBgNormalBitmap = __pCheckButton->GetOnOffBgBitmap(_CHECK_BUTTON_STATUS_NORMAL);
1334 Bitmap* pOnOffBgHighlightedBitmap = __pCheckButton->GetOnOffBgBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
1336 if (pOnOffBgNormalBitmap)
1338 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffBgNormalBitmap);
1341 Bitmap* pOnOffHighlightedBitmap = __pCheckButton->GetOnOffBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
1343 if (__pCheckButton->IsSelected() && pOnOffHighlightedBitmap)
1345 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffHighlightedBitmap);
1348 Bitmap* pReColorOnOffBgHighlightedBitmap = null;
1350 if (pOnOffBgHighlightedBitmap)
1352 pReColorOnOffBgHighlightedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pOnOffBgHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedHighlightedBgColor);
1355 if (pReColorOnOffBgHighlightedBitmap && __highlightedIndex == 1)
1357 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pReColorOnOffBgHighlightedBitmap);
1360 delete pReColorOnOffBgHighlightedBitmap;
1362 else if (checkStatus == _CHECK_BUTTON_STATUS_SELECTED)
1364 Bitmap* pOnOffBgSelectedBitmap = __pCheckButton->GetOnOffBgBitmap(_CHECK_BUTTON_STATUS_SELECTED);
1366 if (pOnOffBgSelectedBitmap)
1368 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffBgSelectedBitmap);
1371 Bitmap* pOnOffSelectedBitmap = __pCheckButton->GetOnOffBitmap(_CHECK_BUTTON_STATUS_SELECTED);
1373 if (__pCheckButton->IsSelected() && pOnOffSelectedBitmap)
1375 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffSelectedBitmap);
1379 else if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING || checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
1381 float handlerWidth = 0.0f;
1382 GET_SHAPE_CONFIG(CHECKBUTTON::ONOFF_SLIDING_HANDLER_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, handlerWidth);
1383 DrawOnOffSlidingHandler(__onOffHandlerPosition - (handlerWidth / 2.0f));
1385 float dividerWidth = 0.0f;
1386 float dividerTopMargin = 0.0f;
1387 float dividerRightMargin = 0.0f;
1389 Color dividerLeftColor;
1390 //Color dividerRightColor;
1391 FloatDimension minDimension(0.0f, 0.0f);
1393 GET_SHAPE_CONFIG(CHECKBUTTON::DIVIDER_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, dividerWidth);
1394 GET_SHAPE_CONFIG(CHECKBUTTON::DIVIDER_TOP_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, dividerTopMargin);
1395 GET_SHAPE_CONFIG(CHECKBUTTON::DIVIDER_RIGHT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, dividerRightMargin);
1396 GET_COLOR_CONFIG(HEADER::DIVIDER_LINE_LEFT_NORMAL, dividerLeftColor);
1397 //GET_COLOR_CONFIG(HEADER::DIVIDER_LINE_RIGHT_NORMAL, dividerRightColor);
1399 GET_DIMENSION_CONFIG(CHECKBUTTON::MIN_DIMENSION, __pCheckButton->GetOrientation(), minDimension);
1401 FloatRectangle bounds(0.0f, 0.0f, __pCheckButton->GetBoundsF().width, __pCheckButton->GetBoundsF().height);
1403 if (bounds.height < minDimension.height )
1405 bounds.height = minDimension.height;
1408 if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
1410 pCanvas->SetForegroundColor(dividerLeftColor);
1411 pCanvas->SetLineWidth(dividerWidth);
1412 pCanvas->DrawLine(FloatPoint(__onOffSlidingButtonBounds.x - dividerRightMargin + dividerWidth, dividerTopMargin),
1413 FloatPoint(__onOffSlidingButtonBounds.x - dividerRightMargin + dividerWidth, dividerTopMargin + bounds.height - dividerTopMargin * 2));
1415 //pCanvas->SetForegroundColor(dividerRightColor);
1416 //pCanvas->SetLineWidth(dividerWidth/2);
1417 //pCanvas->DrawLine(FloatPoint(__onOffSlidingButtonBounds.x - dividerRightMargin + dividerWidth, dividerTopMargin),
1418 // FloatPoint(__onOffSlidingButtonBounds.x - dividerRightMargin + dividerWidth, dividerTopMargin + bounds.height - dividerTopMargin * 2));
1423 delete pReColorCircleBitmap;
1424 delete pReColorRightBitmap;
1430 _CheckButtonPresenter::DrawText(void)
1432 result r = E_SUCCESS;
1434 TextSimple* pSimpleText = null;
1435 TextSimple* pSimpleTitleText = null;
1436 TextObjectAlignment horizontalAlign = TEXT_OBJECT_ALIGNMENT_CENTER;
1437 TextObjectAlignment verticalAlign = TEXT_OBJECT_ALIGNMENT_MIDDLE;
1439 _CheckButtonStatus checkStatus = __pCheckButton->GetCheckButtonStatus();
1440 bool showTitle = __pCheckButton->GetShowTitle();
1442 Canvas* pCanvas = __pCheckButton->GetCanvasN();
1443 if (pCanvas == null)
1445 SysLog(NID_UI_CTRL, "Cannot get a canvas.");
1450 __pTextObject->RemoveAll(true);
1451 pSimpleText = new (std::nothrow) TextSimple(const_cast<wchar_t*>(__pCheckButton->GetText().GetPointer()), __pCheckButton->GetText().GetLength());
1452 __pTextObject->AppendElement(*pSimpleText);
1454 __pTitleTextObject->RemoveAll(true);
1455 pSimpleTitleText = new (std::nothrow) TextSimple(const_cast<wchar_t*>(__pCheckButton->GetTitleText().GetPointer()), __pCheckButton->GetTitleText().GetLength());
1456 __pTitleTextObject->AppendElement(*pSimpleTitleText);
1458 if (checkStatus == _CHECK_BUTTON_STATUS_NORMAL)
1460 __pTextObject->SetForegroundColor(__pCheckButton->GetTextColor(), 0, __pTextObject->GetTextLength());
1461 __pTitleTextObject->SetForegroundColor(__pCheckButton->GetTitleTextColor(), 0, __pTitleTextObject->GetTextLength());
1463 else if (checkStatus == _CHECK_BUTTON_STATUS_DISABLED)
1465 __pTextObject->SetForegroundColor(__pCheckButton->GetDisabledTextColor(), 0, __pTextObject->GetTextLength());
1466 __pTitleTextObject->SetForegroundColor(__pCheckButton->GetDisabledTitleTextColor(), 0, __pTitleTextObject->GetTextLength());
1468 else if (checkStatus == _CHECK_BUTTON_STATUS_PRESSED)
1470 __pTextObject->SetForegroundColor(__pCheckButton->GetPressedTextColor(), 0, __pTextObject->GetTextLength());
1471 __pTitleTextObject->SetForegroundColor(__pCheckButton->GetPressedTitleTextColor(), 0, __pTitleTextObject->GetTextLength());
1473 else if (checkStatus == _CHECK_BUTTON_STATUS_HIGHLIGHTED)
1475 __pTextObject->SetForegroundColor(__pCheckButton->GetHighlightedTextColor(), 0, __pTextObject->GetTextLength());
1476 __pTitleTextObject->SetForegroundColor(__pCheckButton->GetHighlightedTitleTextColor(), 0, __pTitleTextObject->GetTextLength());
1480 __pTextObject->SetForegroundColor(__pCheckButton->GetSelectedTextColor(), 0, __pTextObject->GetTextLength());
1481 __pTitleTextObject->SetForegroundColor(__pCheckButton->GetSelectedTitleTextColor(), 0, __pTitleTextObject->GetTextLength());
1484 CalculateTextBounds();
1485 CalculateTitleTextBounds();
1487 __pTextObject->SetWrap(TEXT_OBJECT_WRAP_TYPE_NONE);
1488 __pTextObject->SetAction(TEXT_OBJECT_ACTION_TYPE_ABBREV);
1489 __pTextObject->SetBounds(GetTextBoundsF());
1490 __pTextObject->Compose();
1492 __pTitleTextObject->SetWrap(TEXT_OBJECT_WRAP_TYPE_NONE);
1493 __pTitleTextObject->SetAction(TEXT_OBJECT_ACTION_TYPE_ABBREV);
1494 __pTitleTextObject->SetBounds(GetTitleTextBoundsF());
1495 __pTitleTextObject->Compose();
1497 switch (__pCheckButton->GetTextHorizontalAlignment())
1499 case ALIGNMENT_LEFT:
1500 horizontalAlign = TEXT_OBJECT_ALIGNMENT_LEFT;
1502 case ALIGNMENT_CENTER:
1503 horizontalAlign = TEXT_OBJECT_ALIGNMENT_CENTER;
1506 horizontalAlign = TEXT_OBJECT_ALIGNMENT_RIGHT;
1509 switch (__pCheckButton->GetTextVerticalAlignment())
1512 verticalAlign = TEXT_OBJECT_ALIGNMENT_TOP;
1514 case ALIGNMENT_MIDDLE:
1515 verticalAlign = TEXT_OBJECT_ALIGNMENT_MIDDLE;
1518 verticalAlign = TEXT_OBJECT_ALIGNMENT_BOTTOM;
1521 __fontSize = __pCheckButton->GetTextSizeF();
1522 __pTextFont = __pCheckButton->GetFallbackFont();
1523 r = GetLastResult();
1524 SysTryReturnVoidResult(NID_UI_CTRL, __pTextFont, r, "[%s] Propagating.", GetErrorMessage(r));
1526 __pTextObject->SetAlignment(horizontalAlign | verticalAlign);
1527 __pTextObject->SetFont(__pTextFont, 0, __pTextObject->GetTextLength());
1528 __pTextObject->Draw(*_CanvasImpl::GetInstance(*pCanvas));
1530 __fontSize = __pCheckButton->GetTitleTextSizeF();
1531 __pTitleTextFont = __pCheckButton->GetFallbackFont();
1532 r = GetLastResult();
1533 SysTryReturnVoidResult(NID_UI_CTRL, __pTitleTextFont, r, "[%s] Propagating.", GetErrorMessage(r));
1535 __pTitleTextObject->SetAlignment(TEXT_OBJECT_ALIGNMENT_LEFT | TEXT_OBJECT_ALIGNMENT_MIDDLE);
1536 __pTitleTextObject->SetFont(__pTitleTextFont, 0, __pTitleTextObject->GetTextLength());
1540 __pTitleTextObject->Draw(*_CanvasImpl::GetInstance(*pCanvas));
1549 _CheckButtonPresenter::OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo)
1551 if (&source != __pCheckButton)
1556 if (!__pCheckButton->IsEnabled())
1561 __touchMoveHandled = false;
1563 FloatPoint touchPoint = touchinfo.GetCurrentPosition();
1565 touchPoint.x += source.GetClientBoundsF().x;
1566 touchPoint.y += source.GetClientBoundsF().y;
1568 CheckButtonStyle checkStyle = __pCheckButton->GetCheckButtonStyle();
1570 if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING || checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
1572 if (__onOffSlidingButtonBounds.Contains(touchPoint))
1574 __onOffHandlerPressed = true;
1578 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_PRESSED);
1581 else if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
1583 if (__detailedButtonBounds.Contains(touchPoint))
1585 __detailedPressed = true;
1589 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_PRESSED);
1594 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_PRESSED);
1597 __pCheckButton->Invalidate();
1603 _CheckButtonPresenter::OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo)
1605 float checkButtonLeftMargin = 0.0f;
1606 float checkButtonDetailedBitmapWidth = 0.0f;
1607 float checkButtonOnOffSlidingBitmapWidth = 0.0f;
1608 float dividerRightMargin = 0.0f;
1610 GET_SHAPE_CONFIG(CHECKBUTTON::LEFT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, checkButtonLeftMargin);
1611 GET_SHAPE_CONFIG(CHECKBUTTON::DETAILED_BITMAP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, checkButtonDetailedBitmapWidth);
1612 GET_SHAPE_CONFIG(CHECKBUTTON::ONOFF_SLIDING_BITMAP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, checkButtonOnOffSlidingBitmapWidth);
1613 GET_SHAPE_CONFIG(CHECKBUTTON::DIVIDER_RIGHT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, dividerRightMargin);
1615 if (&source != __pCheckButton)
1620 if (!__pCheckButton->IsEnabled())
1625 _CheckButtonStatus status = __pCheckButton->GetCheckButtonStatus();
1626 CheckButtonStyle checkStyle = __pCheckButton->GetCheckButtonStyle();
1628 if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING || checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
1630 if (status == _CHECK_BUTTON_STATUS_NORMAL && __onOffHandlerPressed == false)
1632 __onOffHandlerMoved = false;
1637 else if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
1639 if (status == _CHECK_BUTTON_STATUS_NORMAL && __detailedPressed == true)
1641 __detailedPressed = false;
1643 __pCheckButton->Invalidate();
1650 if (status == _CHECK_BUTTON_STATUS_NORMAL)
1656 if (checkStyle == CHECK_BUTTON_STYLE_MARK || checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON
1657 || checkStyle == CHECK_BUTTON_STYLE_RADIO || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
1659 StartCheckAnimationTimer();
1663 FloatPoint touchPoint = touchinfo.GetCurrentPosition();
1665 touchPoint.x += source.GetClientBoundsF().x;
1666 touchPoint.y += source.GetClientBoundsF().y;
1668 FloatRectangle bounds = __pCheckButton->GetClientBoundsF();
1669 FloatRectangle detailedBounds = __pCheckButton->GetClientBoundsF();
1671 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_NORMAL);
1672 __pCheckButton->Invalidate();
1674 if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
1676 if (!__detailedButtonBounds.Contains(touchPoint))
1678 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP, __pCheckButton);
1680 __pCheckButton->FireActionEvent();
1682 if (__pCheckButton->GetRadioGroup() != null)
1684 __pCheckButton->SendTouchReleasedEvent(*__pCheckButton);
1688 else if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
1690 detailedBounds.width = detailedBounds.width - checkButtonLeftMargin - checkButtonOnOffSlidingBitmapWidth - dividerRightMargin;
1692 if (!detailedBounds.Contains(touchPoint))
1694 if (__onOffHandlerMoved == false)
1696 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP, __pCheckButton);
1698 __pCheckButton->FireActionEvent();
1700 if (__pCheckButton->GetRadioGroup() != null)
1702 __pCheckButton->SendTouchReleasedEvent(*__pCheckButton);
1707 AdjustHandlerPosition();
1709 __onOffHandlerPressed = false;
1710 __onOffHandlerMoved = false;
1712 else if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING)
1714 if (bounds.Contains(touchPoint))
1716 if (__onOffHandlerMoved == false)
1718 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP, __pCheckButton);
1720 __pCheckButton->FireActionEvent();
1722 if (__pCheckButton->GetRadioGroup() != null)
1724 __pCheckButton->SendTouchReleasedEvent(*__pCheckButton);
1729 AdjustHandlerPosition();
1731 __onOffHandlerPressed = false;
1732 __onOffHandlerMoved = false;
1736 if (bounds.Contains(touchPoint))
1738 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP, __pCheckButton);
1740 __pCheckButton->FireActionEvent();
1742 if (__pCheckButton->GetRadioGroup() != null)
1744 __pCheckButton->SendTouchReleasedEvent(*__pCheckButton);
1753 _CheckButtonPresenter::InitOnOffHandlerMoved(void)
1755 __onOffHandlerMoved = false;
1761 _CheckButtonPresenter::AdjustHandlerPosition(void)
1763 float handlerWidth = 0.0f;
1764 GET_SHAPE_CONFIG(CHECKBUTTON::ONOFF_SLIDING_HANDLER_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, handlerWidth);
1766 if (__onOffHandlerMoved == false)
1768 if (!__pCheckButton->IsSelected())
1770 __onOffHandlerPosition = __onOffSlidingButtonBounds.x;
1774 __onOffHandlerPosition = __onOffSlidingButtonBounds.x + __onOffSlidingButtonBounds.width - (handlerWidth / 2.0f);
1779 if (!__pCheckButton->IsSelected())
1781 if (__onOffHandlerPosition < __onOffSlidingButtonBounds.x + (__onOffSlidingButtonBounds.width / 2.0f))
1783 __onOffHandlerPosition = __onOffSlidingButtonBounds.x;
1787 __onOffHandlerPosition = __onOffSlidingButtonBounds.x + __onOffSlidingButtonBounds.width - (handlerWidth / 2.0f);
1789 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP, __pCheckButton);
1791 __pCheckButton->FireActionEvent();
1793 if (__pCheckButton->GetRadioGroup() != null)
1795 __pCheckButton->SendTouchReleasedEvent(*__pCheckButton);
1801 if (__onOffHandlerPosition < __onOffSlidingButtonBounds.x + (__onOffSlidingButtonBounds.width / 2.0f))
1803 __onOffHandlerPosition = __onOffSlidingButtonBounds.x;
1805 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP, __pCheckButton);
1807 __pCheckButton->FireActionEvent();
1809 if (__pCheckButton->GetRadioGroup() != null)
1811 __pCheckButton->SendTouchReleasedEvent(*__pCheckButton);
1816 __onOffHandlerPosition = __onOffSlidingButtonBounds.x + __onOffSlidingButtonBounds.width - (handlerWidth / 2.0f);
1821 __pCheckButton->Invalidate();
1827 _CheckButtonPresenter::OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo)
1829 if (&source != __pCheckButton)
1834 if (!__pCheckButton->IsEnabled())
1839 FloatPoint touchPoint = touchinfo.GetCurrentPosition();
1841 touchPoint.x += source.GetClientBoundsF().x;
1842 touchPoint.y += source.GetClientBoundsF().y;
1844 FloatRectangle bounds = __pCheckButton->GetClientBoundsF();
1845 bool isInCheckButtonArea = bounds.Contains(touchPoint);
1846 bool isInOnOffHandlerArea = __onOffSlidingButtonBounds.Contains(touchPoint);
1847 bool isDetailedArea = __detailedButtonBounds.Contains(touchPoint);
1849 CheckButtonStyle checkStyle = __pCheckButton->GetCheckButtonStyle();
1851 if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING || checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
1853 if (__onOffHandlerPressed == true)
1855 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_NORMAL);
1859 if (isInCheckButtonArea == true && __touchMoveHandled == false && isInOnOffHandlerArea == false )
1861 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_PRESSED);
1865 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_NORMAL);
1869 else if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
1871 if (isDetailedArea == true && __touchMoveHandled == false)
1873 __detailedPressed = true;
1875 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_NORMAL);
1879 __detailedPressed = false;
1881 if (isInCheckButtonArea == true && __touchMoveHandled == false && isDetailedArea == false )
1883 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_PRESSED);
1887 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_NORMAL);
1893 if (isInCheckButtonArea == true && __touchMoveHandled == false)
1895 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_PRESSED);
1899 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_NORMAL);
1903 if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING || checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
1905 if (isInOnOffHandlerArea == true && __onOffHandlerPressed == true)
1907 __onOffHandlerPosition = touchPoint.x;
1909 __onOffHandlerMoved = true;
1913 __pCheckButton->Invalidate();
1915 if (__onOffHandlerMoved == true)
1926 _CheckButtonPresenter::DrawOnOffSlidingHandler(float handlerPosition)
1928 Canvas* pCanvas = __pCheckButton->GetCanvasN();
1929 if (pCanvas == null)
1931 SysLog(NID_UI_CTRL, "Cannot get a canvas.");
1936 Bitmap* pReColorBgBitmap = null;
1938 Color detailedHighlightedBgColor;
1939 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_BG_HIGHLIGHTED, detailedHighlightedBgColor);
1941 float handlerMargin = 0.0f;
1942 float handlerWidth = 0.0f;
1944 _CheckButtonStatus checkStatus = __pCheckButton->GetCheckButtonStatus();
1946 GET_SHAPE_CONFIG(CHECKBUTTON::ONOFF_SLIDING_HANDLER_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, handlerMargin);
1947 GET_SHAPE_CONFIG(CHECKBUTTON::ONOFF_SLIDING_HANDLER_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, handlerWidth);
1949 if (handlerPosition < __onOffSlidingButtonBounds.x)
1951 handlerPosition = __onOffSlidingButtonBounds.x;
1954 if (handlerPosition > __onOffSlidingButtonBounds.x + __onOffSlidingButtonBounds.width - handlerWidth)
1956 handlerPosition = __onOffSlidingButtonBounds.x + __onOffSlidingButtonBounds.width - handlerWidth;
1959 if (!__pCheckButton->IsSelected())
1961 if (checkStatus == _CHECK_BUTTON_STATUS_NORMAL)
1963 Bitmap* pOnOffSlidingNormalBgBitmap = __pCheckButton->GetOnOffSlidingBgBitmap(_CHECK_BUTTON_STATUS_NORMAL);
1965 if (pOnOffSlidingNormalBgBitmap)
1967 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingNormalBgBitmap);
1970 Bitmap* pOnOffSlidingOffHandlerNormalBitmap = __pCheckButton->GetOnOffSlidingOffHandlerBitmap(_CHECK_BUTTON_STATUS_NORMAL);
1972 if (pOnOffSlidingOffHandlerNormalBitmap)
1974 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingOffHandlerNormalBitmap);
1977 else if (checkStatus == _CHECK_BUTTON_STATUS_DISABLED)
1979 Bitmap* pOnOffSlidingDisabledBgBitmap = __pCheckButton->GetOnOffSlidingBgBitmap(_CHECK_BUTTON_STATUS_DISABLED);
1981 if (pOnOffSlidingDisabledBgBitmap)
1983 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingDisabledBgBitmap);
1986 Bitmap* pOnOffSlidingOffHandlerDisabledBitmap = __pCheckButton->GetOnOffSlidingOffHandlerBitmap(_CHECK_BUTTON_STATUS_DISABLED);
1988 if (pOnOffSlidingOffHandlerDisabledBitmap)
1990 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingOffHandlerDisabledBitmap);
1993 else if (checkStatus == _CHECK_BUTTON_STATUS_PRESSED)
1995 Bitmap* pOnOffSlidingPressedBgBitmap = __pCheckButton->GetOnOffSlidingBgBitmap(_CHECK_BUTTON_STATUS_PRESSED);
1997 if (pOnOffSlidingPressedBgBitmap)
1999 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingPressedBgBitmap);
2002 Bitmap* pOnOffSlidingOffHandlerPressedBitmap = __pCheckButton->GetOnOffSlidingOffHandlerBitmap(_CHECK_BUTTON_STATUS_PRESSED);
2004 if (pOnOffSlidingOffHandlerPressedBitmap)
2006 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingOffHandlerPressedBitmap);
2009 else if (checkStatus == _CHECK_BUTTON_STATUS_HIGHLIGHTED)
2011 Bitmap* pOnOffSlidingHighlightedBgBitmap = __pCheckButton->GetOnOffSlidingBgBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
2013 if (pOnOffSlidingHighlightedBgBitmap)
2015 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingHighlightedBgBitmap);
2018 Bitmap* pOnOffSlidingOffHandlerNormalBitmap = __pCheckButton->GetOnOffSlidingOffHandlerBitmap(_CHECK_BUTTON_STATUS_NORMAL);
2020 if (pOnOffSlidingOffHandlerNormalBitmap)
2022 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingOffHandlerNormalBitmap);
2025 Bitmap* pOnOffSlidingOffHandlerHighlightedBitmap = __pCheckButton->GetOnOffSlidingOffHandlerBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
2027 if (pOnOffSlidingOffHandlerHighlightedBitmap)
2029 pReColorBgBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pOnOffSlidingOffHandlerHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA),
2030 detailedHighlightedBgColor);
2033 if (pReColorBgBitmap && __highlightedIndex == 1)
2035 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pReColorBgBitmap);
2038 else if (checkStatus == _CHECK_BUTTON_STATUS_SELECTED)
2040 Bitmap* pOnOffSlidingSelectedBgBitmap = __pCheckButton->GetOnOffSlidingBgBitmap(_CHECK_BUTTON_STATUS_SELECTED);
2042 if (pOnOffSlidingSelectedBgBitmap)
2044 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingSelectedBgBitmap);
2047 Bitmap* pOnOffSlidingOffHandlerSelectedBitmap = __pCheckButton->GetOnOffSlidingOffHandlerBitmap(_CHECK_BUTTON_STATUS_SELECTED);
2049 if (pOnOffSlidingOffHandlerSelectedBitmap)
2051 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingOffHandlerSelectedBitmap);
2057 if (checkStatus == _CHECK_BUTTON_STATUS_NORMAL)
2059 Bitmap* pOnOffSlidingNormalBgBitmap = __pCheckButton->GetOnOffSlidingBgBitmap(_CHECK_BUTTON_STATUS_NORMAL);
2061 if (pOnOffSlidingNormalBgBitmap)
2063 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingNormalBgBitmap);
2066 Bitmap* pOnOffSlidingOnHandlerNormalBitmap = __pCheckButton->GetOnOffSlidingOnHandlerBitmap(_CHECK_BUTTON_STATUS_NORMAL);
2068 if (pOnOffSlidingOnHandlerNormalBitmap)
2070 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingOnHandlerNormalBitmap);
2073 else if (checkStatus == _CHECK_BUTTON_STATUS_DISABLED)
2075 Bitmap* pOnOffSlidingDisabledBgBitmap = __pCheckButton->GetOnOffSlidingBgBitmap(_CHECK_BUTTON_STATUS_DISABLED);
2077 if (pOnOffSlidingDisabledBgBitmap)
2079 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingDisabledBgBitmap);
2082 Bitmap* pOnOffSlidingOnHandlerDisabledBitmap = __pCheckButton->GetOnOffSlidingOnHandlerBitmap(_CHECK_BUTTON_STATUS_DISABLED);
2084 if (pOnOffSlidingOnHandlerDisabledBitmap)
2086 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingOnHandlerDisabledBitmap);
2089 else if (checkStatus == _CHECK_BUTTON_STATUS_PRESSED)
2091 Bitmap* pOnOffSlidingPressedBgBitmap = __pCheckButton->GetOnOffSlidingBgBitmap(_CHECK_BUTTON_STATUS_PRESSED);
2093 if (pOnOffSlidingPressedBgBitmap)
2095 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingPressedBgBitmap);
2098 Bitmap* pOnOffSlidingOnHandlerPressedBitmap = __pCheckButton->GetOnOffSlidingOnHandlerBitmap(_CHECK_BUTTON_STATUS_PRESSED);
2100 if (pOnOffSlidingOnHandlerPressedBitmap)
2102 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingOnHandlerPressedBitmap);
2105 else if (checkStatus == _CHECK_BUTTON_STATUS_HIGHLIGHTED)
2107 Bitmap* pOnOffSlidingHighlightedBgBitmap = __pCheckButton->GetOnOffSlidingBgBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
2109 if (pOnOffSlidingHighlightedBgBitmap)
2111 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingHighlightedBgBitmap);
2114 Bitmap* pOnOffSlidingOnHandlerNormalBitmap = __pCheckButton->GetOnOffSlidingOnHandlerBitmap(_CHECK_BUTTON_STATUS_NORMAL);
2116 if (pOnOffSlidingOnHandlerNormalBitmap)
2118 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingOnHandlerNormalBitmap);
2121 Bitmap* pOnOffSlidingOnHandlerHighlightedBitmap = __pCheckButton->GetOnOffSlidingOnHandlerBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
2123 if (pOnOffSlidingOnHandlerHighlightedBitmap)
2125 pReColorBgBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pOnOffSlidingOnHandlerHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA),
2126 detailedHighlightedBgColor);
2129 if (pReColorBgBitmap && __highlightedIndex == 1)
2131 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pReColorBgBitmap);
2134 else if (checkStatus == _CHECK_BUTTON_STATUS_SELECTED)
2136 Bitmap* pOnOffSlidingSelectedBgBitmap = __pCheckButton->GetOnOffSlidingBgBitmap(_CHECK_BUTTON_STATUS_SELECTED);
2138 if (pOnOffSlidingSelectedBgBitmap)
2140 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingSelectedBgBitmap);
2143 Bitmap* pOnOffSlidingOnHandlerSelectedBitmap = __pCheckButton->GetOnOffSlidingOnHandlerBitmap(_CHECK_BUTTON_STATUS_SELECTED);
2145 if (pOnOffSlidingOnHandlerSelectedBitmap)
2147 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingOnHandlerSelectedBitmap);
2153 delete pReColorBgBitmap;
2159 _CheckButtonPresenter::OnTouchCanceled(const _Control& source, const _TouchInfo& touchinfo)
2161 if (&source != __pCheckButton)
2166 if (!__pCheckButton->IsEnabled())
2171 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_NORMAL);
2172 __pCheckButton->Invalidate();
2178 _CheckButtonPresenter::OnTouchMoveHandled(const _Control& control)
2180 __touchMoveHandled = true;
2181 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_NORMAL);
2182 __pCheckButton->Invalidate();
2188 _CheckButtonPresenter::OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo)
2190 _KeyCode keyCode = keyInfo.GetKeyCode();
2192 CheckButtonStyle checkStyle = __pCheckButton->GetCheckButtonStyle();
2194 if (__pCheckButton->IsFocusModeStateEnabled() == true && keyCode == _KEY_ENTER)
2196 if (__pCheckButton->GetCheckButtonStatus() != _CHECK_BUTTON_STATUS_DISABLED)
2198 if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING || checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
2200 if (__highlightedIndex == 1)
2202 __onOffHandlerPressed = true;
2206 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_PRESSED);
2209 else if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON)
2211 if (__highlightedIndex == 2)
2213 __detailedPressed = true;
2217 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_PRESSED);
2220 else if (checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
2222 if (__highlightedIndex == 1)
2224 __detailedPressed = true;
2228 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_PRESSED);
2233 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_PRESSED);
2238 __pCheckButton->Invalidate();
2244 _CheckButtonPresenter::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
2246 _KeyCode keyCode = keyInfo.GetKeyCode();
2248 CheckButtonStyle checkStyle = __pCheckButton->GetCheckButtonStyle();
2250 if (__pCheckButton->IsFocusModeStateEnabled() == true && keyCode == _KEY_LEFT)
2252 if (checkStyle == CHECK_BUTTON_STYLE_RADIO || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DIVIDER)
2254 __highlightedIndex = 0;
2256 else if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON)
2258 if (__highlightedIndex == 0)
2260 __highlightedIndex = 1;
2262 else if (__highlightedIndex == 1)
2264 __highlightedIndex = 2;
2266 else if (__highlightedIndex == 2)
2268 __highlightedIndex = 0;
2273 if (__highlightedIndex == 0)
2275 __highlightedIndex = 1;
2277 else if (__highlightedIndex == 1)
2279 __highlightedIndex = 0;
2283 __pCheckButton->Invalidate();
2285 else if (__pCheckButton->IsFocusModeStateEnabled() == true && keyCode == _KEY_RIGHT)
2287 if (checkStyle == CHECK_BUTTON_STYLE_RADIO || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DIVIDER)
2289 __highlightedIndex = 0;
2291 else if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON)
2293 if (__highlightedIndex == 0)
2295 __highlightedIndex = 2;
2297 else if (__highlightedIndex == 1)
2299 __highlightedIndex = 0;
2301 else if (__highlightedIndex == 2)
2303 __highlightedIndex = 1;
2308 if (__highlightedIndex == 0)
2310 __highlightedIndex = 1;
2312 else if (__highlightedIndex == 1)
2314 __highlightedIndex = 0;
2318 __pCheckButton->Invalidate();
2320 else if (__pCheckButton->IsFocusModeStateEnabled() == true && keyCode == _KEY_ENTER)
2322 if (checkStyle == CHECK_BUTTON_STYLE_MARK || checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON
2323 || checkStyle == CHECK_BUTTON_STYLE_RADIO || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
2325 StartCheckAnimationTimer();
2329 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_NORMAL);
2330 __pCheckButton->Invalidate();
2332 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
2334 if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON)
2336 if (__highlightedIndex != 2)
2338 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP, __pCheckButton);
2340 __pCheckButton->FireActionEvent();
2342 if (__pCheckButton->GetRadioGroup() != null)
2344 __pCheckButton->SendTouchReleasedEvent(*__pCheckButton);
2349 __detailedPressed = false;
2352 else if (checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
2354 if (__highlightedIndex != 1)
2356 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP, __pCheckButton);
2358 __pCheckButton->FireActionEvent();
2360 if (__pCheckButton->GetRadioGroup() != null)
2362 __pCheckButton->SendTouchReleasedEvent(*__pCheckButton);
2367 __detailedPressed = false;
2370 else if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING)
2372 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP, __pCheckButton);
2374 __pCheckButton->FireActionEvent();
2376 if (__pCheckButton->GetRadioGroup() != null)
2378 __pCheckButton->SendTouchReleasedEvent(*__pCheckButton);
2381 AdjustHandlerPosition();
2383 __onOffHandlerPressed = false;
2384 __onOffHandlerMoved = false;
2388 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP, __pCheckButton);
2390 __pCheckButton->FireActionEvent();
2392 if (__pCheckButton->GetRadioGroup() != null)
2394 __pCheckButton->SendTouchReleasedEvent(*__pCheckButton);
2403 _CheckButtonPresenter::IsEnabledStateChanged(void)
2405 bool __currentEnabledState = __pCheckButton->GetEnableState();
2407 if (__currentEnabledState != __previousEnabledState)
2409 __previousEnabledState = __currentEnabledState;
2419 _CheckButtonPresenter::CalculateTitleTextBounds(void)
2421 float checkButtonLeftMargin = 0.0f;
2422 float checkButtonTopMargin = 0.0f;
2423 float checkButtonBitmapWidth = 0.0f;
2424 float checkButtonOnOffSlidingBitmapWidth = 0.0f;
2425 float checkButtonDetailedBitmapWidth = 0.0f;
2426 float checkButtonTitleTextHeight = 0.0f;
2427 float checkButtonTextHeight = 0.0f;
2429 FloatDimension minDimension(0.0f, 0.0f);
2430 FloatDimension minDimensionWithAnnex(0.0f, 0.0f);
2432 GET_SHAPE_CONFIG(CHECKBUTTON::LEFT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, checkButtonLeftMargin);
2433 GET_SHAPE_CONFIG(CHECKBUTTON::TOP_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, checkButtonTopMargin);
2434 GET_SHAPE_CONFIG(CHECKBUTTON::MARK_BITMAP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, checkButtonBitmapWidth);
2435 GET_SHAPE_CONFIG(CHECKBUTTON::ONOFF_SLIDING_BITMAP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, checkButtonOnOffSlidingBitmapWidth);
2436 GET_SHAPE_CONFIG(CHECKBUTTON::DETAILED_BITMAP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, checkButtonDetailedBitmapWidth);
2437 GET_SHAPE_CONFIG(CHECKBUTTON::TITLE_TEXT_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, checkButtonTitleTextHeight);
2438 GET_SHAPE_CONFIG(CHECKBUTTON::TEXT_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, checkButtonTextHeight);
2440 GET_DIMENSION_CONFIG(CHECKBUTTON::MIN_DIMENSION, __pCheckButton->GetOrientation(), minDimension);
2441 GET_DIMENSION_CONFIG(CHECKBUTTON::MIN_DIMENSION_WITH_ANNEX, __pCheckButton->GetOrientation(), minDimensionWithAnnex);
2443 FloatRectangle bounds(0.0f, 0.0f, __pCheckButton->GetBoundsF().width, __pCheckButton->GetBoundsF().height);
2445 CheckButtonStyle checkStyle = __pCheckButton->GetCheckButtonStyle();
2447 if (checkStyle == CHECK_BUTTON_STYLE_MARK || checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_ONOFF
2448 || checkStyle == CHECK_BUTTON_STYLE_ONOFF_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_RADIO || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DIVIDER)
2450 if (bounds.width < minDimension.width )
2452 bounds.width = minDimension.width;
2455 if (bounds.height < minDimension.height )
2457 bounds.height = minDimension.height;
2462 if (bounds.width < minDimensionWithAnnex.width )
2464 bounds.width = minDimensionWithAnnex.width;
2467 if (bounds.height < minDimensionWithAnnex.height )
2469 bounds.height = minDimensionWithAnnex.height;
2473 if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING || checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
2475 __titleTextBounds.x = checkButtonLeftMargin;
2476 __titleTextBounds.y = checkButtonTopMargin;
2477 __titleTextBounds.width = bounds.width - checkButtonLeftMargin * 3 - checkButtonOnOffSlidingBitmapWidth;
2478 __titleTextBounds.height = bounds.height - checkButtonTopMargin * 2 - __textBounds.height;
2482 if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
2484 __titleTextBounds.x = checkButtonLeftMargin * 2 + checkButtonBitmapWidth;
2485 __titleTextBounds.y = checkButtonTopMargin;
2486 __titleTextBounds.width = bounds.width - checkButtonLeftMargin * 4 - checkButtonBitmapWidth - checkButtonDetailedBitmapWidth;
2487 __titleTextBounds.height = bounds.height - checkButtonTopMargin * 2 - __textBounds.height;
2491 __titleTextBounds.x = checkButtonLeftMargin * 2 + checkButtonBitmapWidth;
2492 __titleTextBounds.y = checkButtonTopMargin;
2493 __titleTextBounds.width = bounds.width - checkButtonLeftMargin * 3 - checkButtonBitmapWidth;
2494 __titleTextBounds.height = bounds.height - checkButtonTopMargin * 2 - __textBounds.height;
2502 _CheckButtonPresenter::CalculateTextBounds(void)
2504 float checkButtonLeftMargin = 0.0f;
2505 float checkButtonTopMargin = 0.0f;
2506 float checkButtonBitmapWidth = 0.0f;
2507 float checkButtonOnOffSlidingBitmapWidth = 0.0f;
2508 float checkButtonDetailedBitmapWidth = 0.0f;
2509 float checkButtonTitleTextHeight = 0.0f;
2510 float checkButtonTextHeight = 0.0f;
2512 FloatDimension minDimension(0.0f, 0.0f);
2513 FloatDimension minDimensionWithAnnex(0.0f, 0.0f);
2515 GET_SHAPE_CONFIG(CHECKBUTTON::LEFT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, checkButtonLeftMargin);
2516 GET_SHAPE_CONFIG(CHECKBUTTON::TOP_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, checkButtonTopMargin);
2517 GET_SHAPE_CONFIG(CHECKBUTTON::MARK_BITMAP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, checkButtonBitmapWidth);
2518 GET_SHAPE_CONFIG(CHECKBUTTON::ONOFF_SLIDING_BITMAP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, checkButtonOnOffSlidingBitmapWidth);
2519 GET_SHAPE_CONFIG(CHECKBUTTON::DETAILED_BITMAP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, checkButtonDetailedBitmapWidth);
2520 GET_SHAPE_CONFIG(CHECKBUTTON::TITLE_TEXT_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, checkButtonTitleTextHeight);
2521 GET_SHAPE_CONFIG(CHECKBUTTON::TEXT_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, checkButtonTextHeight);
2523 GET_DIMENSION_CONFIG(CHECKBUTTON::MIN_DIMENSION, __pCheckButton->GetOrientation(), minDimension);
2524 GET_DIMENSION_CONFIG(CHECKBUTTON::MIN_DIMENSION_WITH_ANNEX, __pCheckButton->GetOrientation(), minDimensionWithAnnex);
2526 FloatRectangle bounds(0.0f, 0.0f, __pCheckButton->GetBoundsF().width, __pCheckButton->GetBoundsF().height);
2528 CheckButtonStyle checkStyle = __pCheckButton->GetCheckButtonStyle();
2529 bool showTitle = __pCheckButton->GetShowTitle();
2531 if (checkStyle == CHECK_BUTTON_STYLE_MARK || checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_ONOFF
2532 || checkStyle == CHECK_BUTTON_STYLE_ONOFF_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_RADIO || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DIVIDER)
2534 if (bounds.width < minDimension.width )
2536 bounds.width = minDimension.width;
2539 if (bounds.height < minDimension.height )
2541 bounds.height = minDimension.height;
2546 if (bounds.width < minDimensionWithAnnex.width )
2548 bounds.width = minDimensionWithAnnex.width;
2551 if (bounds.height < minDimensionWithAnnex.height )
2553 bounds.height = minDimensionWithAnnex.height;
2557 if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING || checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
2561 __textBounds.x = checkButtonLeftMargin;
2562 __textBounds.y = checkButtonTopMargin + checkButtonTitleTextHeight;
2563 __textBounds.width = bounds.width - checkButtonLeftMargin * 3 - checkButtonOnOffSlidingBitmapWidth;
2564 __textBounds.height = bounds.height - checkButtonTopMargin * 2 - checkButtonTitleTextHeight;
2568 __textBounds.x = checkButtonLeftMargin;
2569 __textBounds.y = checkButtonTopMargin;
2570 __textBounds.width = bounds.width - checkButtonLeftMargin * 3 - checkButtonOnOffSlidingBitmapWidth;
2571 __textBounds.height = bounds.height - checkButtonTopMargin * 2;
2576 if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
2580 __textBounds.x = checkButtonLeftMargin * 2 + checkButtonBitmapWidth;
2581 __textBounds.y = checkButtonTopMargin + checkButtonTitleTextHeight;
2582 __textBounds.width = bounds.width - checkButtonLeftMargin * 4 - checkButtonBitmapWidth - checkButtonDetailedBitmapWidth;
2583 __textBounds.height = bounds.height - checkButtonTopMargin * 2 - checkButtonTitleTextHeight;
2587 __textBounds.x = checkButtonLeftMargin * 2 + checkButtonBitmapWidth;
2588 __textBounds.y = checkButtonTopMargin;
2589 __textBounds.width = bounds.width - checkButtonLeftMargin * 4 - checkButtonBitmapWidth - checkButtonDetailedBitmapWidth;
2590 __textBounds.height = bounds.height - checkButtonTopMargin * 2;
2597 __textBounds.x = checkButtonLeftMargin * 2 + checkButtonBitmapWidth;
2598 __textBounds.y = checkButtonTopMargin + checkButtonTitleTextHeight;
2599 __textBounds.width = bounds.width - checkButtonLeftMargin * 3 - checkButtonBitmapWidth;
2600 __textBounds.height = bounds.height - checkButtonTopMargin * 2 - checkButtonTitleTextHeight;
2604 __textBounds.x = checkButtonLeftMargin * 2 + checkButtonBitmapWidth;
2605 __textBounds.y = checkButtonTopMargin;
2606 __textBounds.width = bounds.width - checkButtonLeftMargin * 3 - checkButtonBitmapWidth;
2607 __textBounds.height = bounds.height - checkButtonTopMargin * 2;
2616 _CheckButtonPresenter::CalculateButtonBounds(void)
2618 float checkButtonLeftMargin = 0.0f;
2619 float checkButtonBitmapWidth = 0.0f;
2620 float checkButtonBitmapHeight = 0.0f;
2621 float checkButtonOnOffSlidingBitmapWidth = 0.0f;
2622 float checkButtonOnOffSlidingBitmapHeight = 0.0f;
2623 float checkButtonDetaieldBitmapWidth = 0.0f;
2624 float checkButtonDetaieldBitmapHeight = 0.0f;
2626 FloatDimension minDimension(0.0f, 0.0f);
2627 FloatDimension minDimensionWithAnnex(0.0f, 0.0f);
2629 GET_SHAPE_CONFIG(CHECKBUTTON::LEFT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, checkButtonLeftMargin);
2630 GET_SHAPE_CONFIG(CHECKBUTTON::MARK_BITMAP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, checkButtonBitmapWidth);
2631 GET_SHAPE_CONFIG(CHECKBUTTON::MARK_BITMAP_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, checkButtonBitmapHeight);
2632 GET_SHAPE_CONFIG(CHECKBUTTON::ONOFF_SLIDING_BITMAP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, checkButtonOnOffSlidingBitmapWidth);
2633 GET_SHAPE_CONFIG(CHECKBUTTON::ONOFF_SLIDING_BITMAP_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, checkButtonOnOffSlidingBitmapHeight);
2634 GET_SHAPE_CONFIG(CHECKBUTTON::DETAILED_BITMAP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, checkButtonDetaieldBitmapWidth);
2635 GET_SHAPE_CONFIG(CHECKBUTTON::DETAILED_BITMAP_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, checkButtonDetaieldBitmapHeight);
2637 GET_DIMENSION_CONFIG(CHECKBUTTON::MIN_DIMENSION, __pCheckButton->GetOrientation(), minDimension);
2638 GET_DIMENSION_CONFIG(CHECKBUTTON::MIN_DIMENSION_WITH_ANNEX, __pCheckButton->GetOrientation(), minDimensionWithAnnex);
2640 FloatRectangle bounds(0.0f, 0.0f, __pCheckButton->GetBoundsF().width, __pCheckButton->GetBoundsF().height);
2642 CheckButtonStyle checkStyle = __pCheckButton->GetCheckButtonStyle();
2644 if (checkStyle == CHECK_BUTTON_STYLE_MARK || checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_ONOFF
2645 || checkStyle == CHECK_BUTTON_STYLE_ONOFF_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_RADIO || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DIVIDER)
2647 if (bounds.width < minDimension.width )
2649 bounds.width = minDimension.width;
2652 if (bounds.height < minDimension.height )
2654 bounds.height = minDimension.height;
2659 if (bounds.width < minDimensionWithAnnex.width )
2661 bounds.width = minDimensionWithAnnex.width;
2664 if (bounds.height < minDimensionWithAnnex.height )
2666 bounds.height = minDimensionWithAnnex.height;
2670 __defaultButtonBounds.x = checkButtonLeftMargin;
2671 __defaultButtonBounds.y = (bounds.height - checkButtonBitmapHeight) / 2;
2672 __defaultButtonBounds.width = checkButtonBitmapWidth;
2673 __defaultButtonBounds.height = checkButtonBitmapHeight;
2675 __onOffSlidingButtonBounds.x = bounds.width - checkButtonLeftMargin - checkButtonOnOffSlidingBitmapWidth;
2676 __onOffSlidingButtonBounds.y = (bounds.height - checkButtonOnOffSlidingBitmapHeight) / 2;
2677 __onOffSlidingButtonBounds.width = checkButtonOnOffSlidingBitmapWidth;
2678 __onOffSlidingButtonBounds.height = checkButtonOnOffSlidingBitmapHeight;
2680 __detailedButtonBounds.x = bounds.width - checkButtonLeftMargin - checkButtonDetaieldBitmapWidth;
2681 __detailedButtonBounds.y = (bounds.height - checkButtonDetaieldBitmapHeight) / 2;
2682 __detailedButtonBounds.width = checkButtonDetaieldBitmapWidth;
2683 __detailedButtonBounds.height = checkButtonDetaieldBitmapHeight;
2689 _CheckButtonPresenter::GetTitleTextBoundsF(void) const
2691 return __titleTextBounds;
2695 _CheckButtonPresenter::GetTextBoundsF(void) const
2697 return __textBounds;
2701 _CheckButtonPresenter::GetDefaultButtonBoundsF(void) const
2703 return __defaultButtonBounds;
2707 _CheckButtonPresenter::GetOnOffSlidingButtonBoundsF(void) const
2709 return __onOffSlidingButtonBounds;
2713 _CheckButtonPresenter::GetDetailedButtonBoundsF(void) const
2715 return __detailedButtonBounds;
2719 _CheckButtonPresenter::StartCheckAnimationTimer(void)
2721 result r = E_SUCCESS;
2722 if (__pCheckAnimationTimer == null)
2724 __pCheckAnimationTimer = new (std::nothrow) Timer;
2725 SysTryReturn(NID_UI_CTRL, (__pCheckAnimationTimer != null), E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memroy allocation failed.");
2727 r = __pCheckAnimationTimer->Construct(*this);
2728 SysTryCatch(NID_UI, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
2732 __pCheckAnimationTimer->Cancel();
2735 __pCheckAnimationTimer->Start(CHECK_ACTION_TIMER_PERIOD);
2736 SysTryCatch(NID_UI, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
2740 ResetCheckAnimationTimer();
2745 _CheckButtonPresenter::ResetCheckAnimationTimer(void)
2747 delete __pCheckAnimationTimer;
2748 __pCheckAnimationTimer = null;
2754 _CheckButtonPresenter::OnTimerExpired(Timer& timer)
2758 if (__ratio <= RATIO_MAX)
2760 StartCheckAnimationTimer();
2761 DrawMarkAnimation();
2765 ResetCheckAnimationTimer();
2773 _CheckButtonPresenter::OnDrawFocus(void)
2775 if (__pCheckButton->GetCheckButtonStatus() != _CHECK_BUTTON_STATUS_DISABLED)
2777 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
2778 __pCheckButton->Invalidate();
2785 _CheckButtonPresenter::OnChildControlFocusMoved(const _Control& control)
2791 _CheckButtonPresenter::IsChildControlFocusManage(void) const
2797 _CheckButtonPresenter::OnFocusableStateChanged(bool focusalbeState)
2803 _CheckButtonPresenter::OnFocusModeStateChanged(void)
2805 if (__pCheckButton->GetCheckButtonStatus() != _CHECK_BUTTON_STATUS_DISABLED)
2807 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_NORMAL);
2808 __pCheckButton->Invalidate();
2815 _CheckButtonPresenter::OnFocusGained(const _Control& source)
2817 __highlightedIndex = 0;
2819 if (__pCheckButton->IsFocusModeStateEnabled() == true)
2821 if (__pCheckButton->GetCheckButtonStatus() != _CHECK_BUTTON_STATUS_DISABLED)
2823 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
2824 __pCheckButton->Invalidate();
2832 _CheckButtonPresenter::OnFocusLost(const _Control& source)
2834 if (__pCheckButton->GetCheckButtonStatus() != _CHECK_BUTTON_STATUS_DISABLED)
2836 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_NORMAL);
2837 __pCheckButton->Invalidate();
2843 _CheckButtonPresenter::DrawMarkAnimation(void)
2845 Canvas* pCanvas = __pCheckButton->GetCanvasN();
2846 if (pCanvas == null)
2848 SysLog(NID_UI_CTRL, "Cannot get a canvas.");
2853 _CheckButtonStatus checkStatus = __pCheckButton->GetCheckButtonStatus();
2855 if (checkStatus == _CHECK_BUTTON_STATUS_NORMAL)
2857 Bitmap* pMarkNormalBitmap = __pCheckButton->GetMarkBitmap(_CHECK_BUTTON_STATUS_NORMAL);
2859 if (__pCheckButton->IsSelected() && pMarkNormalBitmap)
2861 FloatRectangle sourceRect(0.0f, 0.0f, pMarkNormalBitmap->GetWidthF() * __ratio * 0.1, pMarkNormalBitmap->GetHeightF());
2862 FloatRectangle destRect(__defaultButtonBounds.x, __defaultButtonBounds.y, pMarkNormalBitmap->GetWidthF() * __ratio * 0.1, pMarkNormalBitmap->GetHeightF());
2864 pCanvas->DrawBitmap(destRect, *pMarkNormalBitmap, sourceRect);
2867 else if (checkStatus == _CHECK_BUTTON_STATUS_DISABLED)
2869 Bitmap* pMarkDisabledBitmap = __pCheckButton->GetMarkBitmap(_CHECK_BUTTON_STATUS_DISABLED);
2871 if (__pCheckButton->IsSelected() && pMarkDisabledBitmap)
2873 FloatRectangle sourceRect(0.0f, 0.0f, pMarkDisabledBitmap->GetWidthF() * __ratio * 0.1, pMarkDisabledBitmap->GetHeightF());
2874 FloatRectangle destRect(__defaultButtonBounds.x, __defaultButtonBounds.y, pMarkDisabledBitmap->GetWidthF() * __ratio * 0.1, pMarkDisabledBitmap->GetHeightF());
2876 pCanvas->DrawBitmap(destRect, *pMarkDisabledBitmap, sourceRect);
2879 else if (checkStatus == _CHECK_BUTTON_STATUS_PRESSED)
2881 Bitmap* pMarkPressedBitmap = __pCheckButton->GetMarkBitmap(_CHECK_BUTTON_STATUS_PRESSED);
2883 if (__pCheckButton->IsSelected() && pMarkPressedBitmap)
2885 FloatRectangle sourceRect(0.0f, 0.0f, pMarkPressedBitmap->GetWidthF() * __ratio * 0.1, pMarkPressedBitmap->GetHeightF());
2886 FloatRectangle destRect(__defaultButtonBounds.x, __defaultButtonBounds.y, pMarkPressedBitmap->GetWidthF() * __ratio * 0.1, pMarkPressedBitmap->GetHeightF());
2888 pCanvas->DrawBitmap(destRect, *pMarkPressedBitmap, sourceRect);
2891 else if (checkStatus == _CHECK_BUTTON_STATUS_HIGHLIGHTED)
2893 Bitmap* pMarkHighlightedBitmap = __pCheckButton->GetMarkBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
2895 if (__pCheckButton->IsSelected() && pMarkHighlightedBitmap)
2897 FloatRectangle sourceRect(0.0f, 0.0f, pMarkHighlightedBitmap->GetWidthF() * __ratio * 0.1, pMarkHighlightedBitmap->GetHeightF());
2898 FloatRectangle destRect(__defaultButtonBounds.x, __defaultButtonBounds.y, pMarkHighlightedBitmap->GetWidthF() * __ratio * 0.1, pMarkHighlightedBitmap->GetHeightF());
2900 pCanvas->DrawBitmap(destRect, *pMarkHighlightedBitmap, sourceRect);
2903 else if (checkStatus == _CHECK_BUTTON_STATUS_SELECTED)
2905 Bitmap* pMarkSelectedBitmap = __pCheckButton->GetMarkBitmap(_CHECK_BUTTON_STATUS_SELECTED);
2907 if (__pCheckButton->IsSelected() && pMarkSelectedBitmap)
2909 FloatRectangle sourceRect(0.0f, 0.0f, pMarkSelectedBitmap->GetWidthF() * __ratio * 0.1, pMarkSelectedBitmap->GetHeightF());
2910 FloatRectangle destRect(__defaultButtonBounds.x, __defaultButtonBounds.y, pMarkSelectedBitmap->GetWidthF() * __ratio * 0.1, pMarkSelectedBitmap->GetHeightF());
2912 pCanvas->DrawBitmap(destRect, *pMarkSelectedBitmap, sourceRect);
2921 }}} // Tizen::Ui::Controls