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 , __focusPrevStatus(_CHECK_BUTTON_STATUS_NORMAL)
70 _CheckButtonPresenter::~_CheckButtonPresenter(void)
72 if (__pCheckButtonModel)
74 delete __pCheckButtonModel;
75 __pCheckButtonModel = null;
84 if (__pTitleTextObject)
86 delete __pTitleTextObject;
87 __pTitleTextObject = null;
90 if (__pCheckAnimationTimer)
92 delete __pCheckAnimationTimer;
93 __pCheckAnimationTimer = null;
98 _CheckButtonPresenter::Construct(const _CheckButton& checkButton)
100 result r = E_SUCCESS;
102 __pCheckButton = const_cast <_CheckButton*>(&checkButton);
104 __fontStyle = FONT_STYLE_PLAIN;
106 __pTextObject = new (std::nothrow) TextObject();
107 SysTryCatch(NID_UI_CTRL, __pTextObject != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
109 __pTitleTextObject = new (std::nothrow) TextObject();
110 SysTryCatch(NID_UI_CTRL, __pTitleTextObject != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
112 __pTextObject->Construct();
113 __pTextObject->SetWrap(TEXT_OBJECT_WRAP_TYPE_WORD);
114 __pTextObject->SetAction(TEXT_OBJECT_ACTION_TYPE_ABBREV);
116 __pTitleTextObject->Construct();
117 __pTitleTextObject->SetWrap(TEXT_OBJECT_WRAP_TYPE_WORD);
118 __pTitleTextObject->SetAction(TEXT_OBJECT_ACTION_TYPE_ABBREV);
120 CalculateTextBounds();
121 CalculateTitleTextBounds();
122 CalculateButtonBounds();
128 delete __pTextObject;
129 __pTextObject = null;
131 delete __pTitleTextObject;
132 __pTitleTextObject = null;
138 _CheckButtonPresenter::Install(void)
140 result r = E_SUCCESS;
142 _CheckButtonModel* pModel = new (std::nothrow) _CheckButtonModel();
143 SysTryReturn(NID_UI_CTRL, pModel, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
145 r = SetModel(*pModel);
146 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error occurred.");
148 r = pModel->Construct();
149 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error occurred.");
159 _CheckButtonPresenter::SetModel(const _CheckButtonModel& checkButtonModel)
161 __pCheckButtonModel = const_cast <_CheckButtonModel*>(&checkButtonModel);
167 _CheckButtonPresenter::OnFontChanged(Font* pFont)
170 __pTitleTextFont = pFont;
176 _CheckButtonPresenter::OnFontInfoRequested(unsigned long& style, int& size)
179 size = _CoordinateSystemUtils::ConvertToInteger(__fontSize);
185 _CheckButtonPresenter::OnFontInfoRequested(unsigned long& style, float& size)
194 _CheckButtonPresenter::SetFontInfo(unsigned long style, float size)
203 _CheckButtonPresenter::Draw(void)
213 _CheckButtonPresenter::DrawBackground(void)
215 Canvas* pCanvas = __pCheckButton->GetCanvasN();
218 SysLog(NID_UI_CTRL, "Cannot get a canvas.");
223 Bitmap* pBackgroundBitmap = null;
224 Bitmap* pReplacementColorBackgroundBitmap = null;
226 Bitmap* pHighlightedBackgroundBitmap = null;
227 Bitmap* pHighlightedReplacementColorBackgroundBitmap = null;
229 FloatDimension minDimension(0.0f, 0.0f);
230 FloatDimension minDimensionWithAnnex(0.0f, 0.0f);
232 GET_DIMENSION_CONFIG(CHECKBUTTON::MIN_DIMENSION, __pCheckButton->GetOrientation(), minDimension);
233 GET_DIMENSION_CONFIG(CHECKBUTTON::MIN_DIMENSION_WITH_ANNEX, __pCheckButton->GetOrientation(), minDimensionWithAnnex);
235 FloatRectangle bounds(0.0f, 0.0f, __pCheckButton->GetBoundsF().width, __pCheckButton->GetBoundsF().height);
237 _CheckButtonStatus checkStatus = __pCheckButton->GetCheckButtonStatus();
238 BackgroundStyle backgroundStyle = __pCheckButton->GetBackgroundStyle();
239 CheckButtonStyle checkStyle = __pCheckButton->GetCheckButtonStyle();
241 if (checkStyle == CHECK_BUTTON_STYLE_MARK || checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_ONOFF
242 || checkStyle == CHECK_BUTTON_STYLE_ONOFF_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_RADIO || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DIVIDER)
244 if (bounds.width < minDimension.width )
246 bounds.width = minDimension.width;
249 if (bounds.height < minDimension.height )
251 bounds.height = minDimension.height;
256 if (bounds.width < minDimensionWithAnnex.width )
258 bounds.width = minDimensionWithAnnex.width;
261 if (bounds.height < minDimensionWithAnnex.height )
263 bounds.height = minDimensionWithAnnex.height;
267 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
270 if (checkStatus == _CHECK_BUTTON_STATUS_NORMAL)
272 if (backgroundStyle == BACKGROUND_STYLE_NONE)
274 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
279 pBackgroundBitmap = __pCheckButton->GetBackgroundBitmap(__pCheckButton->GetGroupStyle(), _CHECK_BUTTON_STATUS_NORMAL);
281 if (pBackgroundBitmap && _BitmapImpl::CheckNinePatchedBitmapStrictly(*pBackgroundBitmap))
283 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA),
284 __pCheckButton->GetColor(_CHECK_BUTTON_STATUS_NORMAL));
285 if (pReplacementColorBackgroundBitmap)
287 pCanvas->DrawNinePatchedBitmap(bounds, *pReplacementColorBackgroundBitmap);
290 bool themeBackgroundBitmap = false;
292 if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_SINGLE)
294 themeBackgroundBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_SINGLE_BG_NORMAL);
296 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_TOP)
298 themeBackgroundBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_TOP_BG_NORMAL);
300 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_MIDDLE)
302 themeBackgroundBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_MIDDLE_BG_NORMAL);
304 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_BOTTOM)
306 themeBackgroundBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_BOTTOM_BG_NORMAL);
309 if (themeBackgroundBitmap == false)
311 Bitmap* pBackgroundNormalEffectBitmap = __pCheckButton->GetBackgroundNormalEffectBitmap(__pCheckButton->GetGroupStyle());
313 if (pBackgroundNormalEffectBitmap)
315 pCanvas->DrawNinePatchedBitmap(bounds, *pBackgroundNormalEffectBitmap);
321 if (pBackgroundBitmap)
323 pCanvas->DrawBitmap(FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height), *pBackgroundBitmap);
328 else if (checkStatus == _CHECK_BUTTON_STATUS_DISABLED)
330 if (backgroundStyle == BACKGROUND_STYLE_NONE)
332 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
337 pBackgroundBitmap = __pCheckButton->GetBackgroundBitmap(__pCheckButton->GetGroupStyle(), _CHECK_BUTTON_STATUS_DISABLED);
339 if (pBackgroundBitmap && _BitmapImpl::CheckNinePatchedBitmapStrictly(*pBackgroundBitmap))
341 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA),
342 __pCheckButton->GetColor(_CHECK_BUTTON_STATUS_DISABLED));
343 if (pReplacementColorBackgroundBitmap)
345 pCanvas->DrawNinePatchedBitmap(bounds, *pReplacementColorBackgroundBitmap);
348 bool themeBackgroundBitmap = false;
350 if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_SINGLE)
352 themeBackgroundBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_SINGLE_BG_DISABLED);
354 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_TOP)
356 themeBackgroundBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_TOP_BG_DISABLED);
358 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_MIDDLE)
360 themeBackgroundBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_MIDDLE_BG_DISABLED);
362 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_BOTTOM)
364 themeBackgroundBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_BOTTOM_BG_DISABLED);
367 if (themeBackgroundBitmap == false)
369 Bitmap* pBackgroundNormalEffectBitmap = __pCheckButton->GetBackgroundNormalEffectBitmap(__pCheckButton->GetGroupStyle());
371 if (pBackgroundNormalEffectBitmap)
373 pCanvas->DrawNinePatchedBitmap(bounds, *pBackgroundNormalEffectBitmap);
379 if (pBackgroundBitmap)
381 pCanvas->DrawBitmap(FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height), *pBackgroundBitmap);
386 else if (checkStatus == _CHECK_BUTTON_STATUS_PRESSED)
388 if (backgroundStyle == BACKGROUND_STYLE_NONE)
390 pCanvas->SetBackgroundColor(__pCheckButton->GetColor(_CHECK_BUTTON_STATUS_PRESSED));
395 pBackgroundBitmap = __pCheckButton->GetBackgroundBitmap(__pCheckButton->GetGroupStyle(), _CHECK_BUTTON_STATUS_PRESSED);
397 if (pBackgroundBitmap && _BitmapImpl::CheckNinePatchedBitmapStrictly(*pBackgroundBitmap))
399 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA),
400 __pCheckButton->GetColor(_CHECK_BUTTON_STATUS_PRESSED));
401 if (pReplacementColorBackgroundBitmap)
403 pCanvas->DrawNinePatchedBitmap(bounds, *pReplacementColorBackgroundBitmap);
406 bool themeBackgroundBitmap = false;
408 if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_SINGLE)
410 themeBackgroundBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_SINGLE_BG_PRESSED);
412 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_TOP)
414 themeBackgroundBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_TOP_BG_PRESSED);
416 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_MIDDLE)
418 themeBackgroundBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_MIDDLE_BG_PRESSED);
420 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_BOTTOM)
422 themeBackgroundBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_BOTTOM_BG_PRESSED);
425 if (themeBackgroundBitmap == false)
427 Bitmap* pBackgroundPressedEffectBitmap = __pCheckButton->GetBackgroundPressedEffectBitmap(__pCheckButton->GetGroupStyle());
429 if (pBackgroundPressedEffectBitmap)
431 pCanvas->DrawNinePatchedBitmap(bounds, *pBackgroundPressedEffectBitmap);
437 if (pBackgroundBitmap)
439 pCanvas->DrawBitmap(FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height), *pBackgroundBitmap);
444 else if (checkStatus == _CHECK_BUTTON_STATUS_HIGHLIGHTED)
446 if (backgroundStyle == BACKGROUND_STYLE_NONE)
448 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
453 pBackgroundBitmap = __pCheckButton->GetBackgroundBitmap(__pCheckButton->GetGroupStyle(), _CHECK_BUTTON_STATUS_NORMAL);
455 if (pBackgroundBitmap && _BitmapImpl::CheckNinePatchedBitmapStrictly(*pBackgroundBitmap))
457 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA),
458 __pCheckButton->GetColor(_CHECK_BUTTON_STATUS_NORMAL));
459 if (pReplacementColorBackgroundBitmap)
461 pCanvas->DrawNinePatchedBitmap(bounds, *pReplacementColorBackgroundBitmap);
464 bool themeBackgroundBitmap = false;
466 if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_SINGLE)
468 themeBackgroundBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_SINGLE_BG_HIGHLIGHTED);
470 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_TOP)
472 themeBackgroundBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_TOP_BG_HIGHLIGHTED);
474 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_MIDDLE)
476 themeBackgroundBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_MIDDLE_BG_HIGHLIGHTED);
478 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_BOTTOM)
480 themeBackgroundBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_BOTTOM_BG_HIGHLIGHTED);
483 if (themeBackgroundBitmap == false)
485 Bitmap* pBackgroundPressedEffectBitmap = __pCheckButton->GetBackgroundPressedEffectBitmap(__pCheckButton->GetGroupStyle());
487 if (pBackgroundPressedEffectBitmap)
489 pCanvas->DrawNinePatchedBitmap(bounds, *pBackgroundPressedEffectBitmap);
495 if (pBackgroundBitmap)
497 pCanvas->DrawBitmap(FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height), *pBackgroundBitmap);
501 pHighlightedBackgroundBitmap = __pCheckButton->GetBackgroundBitmap(__pCheckButton->GetGroupStyle(), _CHECK_BUTTON_STATUS_HIGHLIGHTED);
503 pHighlightedReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pHighlightedBackgroundBitmap,
504 Color::GetColor(COLOR_ID_MAGENTA), __pCheckButton->GetColor(_CHECK_BUTTON_STATUS_HIGHLIGHTED));
506 if (pHighlightedReplacementColorBackgroundBitmap)
508 if (_BitmapImpl::CheckNinePatchedBitmapStrictly(*pHighlightedReplacementColorBackgroundBitmap))
510 pCanvas->DrawNinePatchedBitmap(bounds, *pHighlightedReplacementColorBackgroundBitmap);
514 pCanvas->DrawBitmap(bounds, *pHighlightedReplacementColorBackgroundBitmap,
515 FloatRectangle(0.0f, 0.0f, pHighlightedReplacementColorBackgroundBitmap->GetWidthF(), pHighlightedReplacementColorBackgroundBitmap->GetHeightF()));
522 if (backgroundStyle == BACKGROUND_STYLE_NONE)
524 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
529 pBackgroundBitmap = __pCheckButton->GetBackgroundBitmap(__pCheckButton->GetGroupStyle(), __pCheckButton->GetCheckButtonStatus());
531 if (pBackgroundBitmap && _BitmapImpl::CheckNinePatchedBitmapStrictly(*pBackgroundBitmap))
533 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA),
534 __pCheckButton->GetColor(_CHECK_BUTTON_STATUS_SELECTED));
535 if (pReplacementColorBackgroundBitmap)
537 pCanvas->DrawNinePatchedBitmap(bounds, *pReplacementColorBackgroundBitmap);
540 bool themeBackgroundBitmap = false;
542 if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_SINGLE)
544 themeBackgroundBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_SINGLE_BG_SELECTED);
546 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_TOP)
548 themeBackgroundBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_TOP_BG_SELECTED);
550 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_MIDDLE)
552 themeBackgroundBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_MIDDLE_BG_SELECTED);
554 else if (__pCheckButton->GetGroupStyle() == GROUP_STYLE_BOTTOM)
556 themeBackgroundBitmap = IS_CUSTOM_BITMAP(PANEL::GROUPED_BOTTOM_BG_SELECTED);
559 if (themeBackgroundBitmap == false)
561 Bitmap* pBackgroundNormalEffectBitmap = __pCheckButton->GetBackgroundNormalEffectBitmap(__pCheckButton->GetGroupStyle());
563 if (pBackgroundNormalEffectBitmap)
565 pCanvas->DrawNinePatchedBitmap(bounds, *pBackgroundNormalEffectBitmap);
571 if (pBackgroundBitmap)
573 pCanvas->DrawBitmap(FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height), *pBackgroundBitmap);
580 delete pReplacementColorBackgroundBitmap;
586 _CheckButtonPresenter::DrawCheckBitmap(void)
588 Canvas* pCanvas = __pCheckButton->GetCanvasN();
591 SysLog(NID_UI_CTRL, "Cannot get a canvas.");
596 Color detailedNormalBackgroundColor;
597 Color detailedDisabledBackgroundColor;
598 Color detailedPressedBackgroundColor;
599 Color detailedHighlightedBackgroundColor;
600 Color detailedSelectedBackgroundColor;
602 Color detailedRightNormalColor;
603 Color detailedRightDisabledColor;
604 Color detailedRightPressedColor;
605 Color detailedRightHighlightedColor;
606 Color detailedRightSelectedColor;
608 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_BG_NORMAL, detailedNormalBackgroundColor);
609 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_BG_DISABLED, detailedDisabledBackgroundColor);
610 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_BG_PRESSED, detailedPressedBackgroundColor);
611 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_BG_HIGHLIGHTED, detailedHighlightedBackgroundColor);
612 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_BG_SELECTED, detailedSelectedBackgroundColor);
614 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_TEXT_NORMAL, detailedRightNormalColor);
615 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_TEXT_DISABLED, detailedRightDisabledColor);
616 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_TEXT_PRESSED, detailedRightPressedColor);
617 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_TEXT_HIGHLIGHTED, detailedRightHighlightedColor);
618 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_TEXT_SELECTED, detailedRightSelectedColor);
620 Bitmap* pReplacementColorBackgroundBitmap = null;
621 Bitmap* pReplacementColorRightBitmap = null;
623 _CheckButtonStatus checkStatus = __pCheckButton->GetCheckButtonStatus();
624 CheckButtonStyle checkStyle = __pCheckButton->GetCheckButtonStyle();
626 CalculateButtonBounds();
628 if (checkStyle == CHECK_BUTTON_STYLE_MARK || checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON)
630 if (checkStatus == _CHECK_BUTTON_STATUS_NORMAL)
632 Bitmap* pMarkBgNormalBitmap = __pCheckButton->GetMarkBgBitmap(_CHECK_BUTTON_STATUS_NORMAL);
634 if (pMarkBgNormalBitmap)
636 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pMarkBgNormalBitmap);
639 if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON)
641 Bitmap* pCircleNormalBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_NORMAL);
642 Bitmap* pDetailedRightNormalBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_NORMAL);
644 if (pCircleNormalBitmap)
646 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedNormalBackgroundColor);
649 if (pDetailedRightNormalBitmap)
651 pReplacementColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightNormalColor);
654 if (pReplacementColorBackgroundBitmap)
656 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReplacementColorBackgroundBitmap);
659 if (pReplacementColorRightBitmap)
661 float arrowWidth = pReplacementColorRightBitmap->GetWidthF();
662 float arrowHeight = pReplacementColorRightBitmap->GetHeightF();
664 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
665 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReplacementColorRightBitmap);
668 bool themeBackgroundBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_NORMAL);
670 if (themeBackgroundBitmap == false)
672 Bitmap* pCircleNormalEffectBitmap = __pCheckButton->GetCircleNormalEffectBitmap();
674 if (pCircleNormalEffectBitmap)
676 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCircleNormalEffectBitmap);
681 else if (checkStatus == _CHECK_BUTTON_STATUS_DISABLED)
683 Bitmap* pMarkBgDisabledBitmap = __pCheckButton->GetMarkBgBitmap(_CHECK_BUTTON_STATUS_DISABLED);
685 if (pMarkBgDisabledBitmap)
687 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pMarkBgDisabledBitmap);
690 if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON)
692 Bitmap* pCircleDisabledBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_DISABLED);
693 Bitmap* pDetailedRightDisabledBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_DISABLED);
695 if (pCircleDisabledBitmap)
697 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleDisabledBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedDisabledBackgroundColor);
700 if (pDetailedRightDisabledBitmap)
702 pReplacementColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightDisabledBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightDisabledColor);
705 if (pReplacementColorBackgroundBitmap)
707 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReplacementColorBackgroundBitmap);
710 if (pReplacementColorRightBitmap)
712 float arrowWidth = pReplacementColorRightBitmap->GetWidthF();
713 float arrowHeight = pReplacementColorRightBitmap->GetHeightF();
715 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
716 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReplacementColorRightBitmap);
719 bool themeBackgroundBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_DISABLED);
721 if (themeBackgroundBitmap == false)
723 Bitmap* pCircleNormalEffectBitmap = __pCheckButton->GetCircleNormalEffectBitmap();
725 if (pCircleNormalEffectBitmap)
727 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCircleNormalEffectBitmap);
732 else if (checkStatus == _CHECK_BUTTON_STATUS_PRESSED)
734 Bitmap* pMarkBgPressedBitmap = __pCheckButton->GetMarkBgBitmap(_CHECK_BUTTON_STATUS_PRESSED);
736 if (pMarkBgPressedBitmap)
738 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pMarkBgPressedBitmap);
741 if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON)
743 Bitmap* pCirclePressedBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_PRESSED);
744 Bitmap* pDetailedRightPressedBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_PRESSED);
746 if (pCirclePressedBitmap)
748 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCirclePressedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedPressedBackgroundColor);
751 if (pDetailedRightPressedBitmap)
753 pReplacementColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightPressedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightPressedColor);
756 if (pReplacementColorBackgroundBitmap)
758 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReplacementColorBackgroundBitmap);
761 if (pReplacementColorRightBitmap)
763 float arrowWidth = pReplacementColorRightBitmap->GetWidthF();
764 float arrowHeight = pReplacementColorRightBitmap->GetHeightF();
766 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
767 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReplacementColorRightBitmap);
770 bool themeBackgroundBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_PRESSED);
772 if (themeBackgroundBitmap == false)
774 Bitmap* pCirclePressedEffectBitmap = __pCheckButton->GetCirclePressedEffectBitmap();
776 if (pCirclePressedEffectBitmap)
778 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCirclePressedEffectBitmap);
783 else if (checkStatus == _CHECK_BUTTON_STATUS_HIGHLIGHTED)
785 Bitmap* pMarkBgNormalBitmap = __pCheckButton->GetMarkBgBitmap(_CHECK_BUTTON_STATUS_NORMAL);
786 Bitmap* pMarkBgHighlightedBitmap = __pCheckButton->GetMarkBgBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
788 if (pMarkBgNormalBitmap)
790 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pMarkBgNormalBitmap);
793 if (pMarkBgHighlightedBitmap)
795 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pMarkBgHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedHighlightedBackgroundColor);
798 if (pReplacementColorBackgroundBitmap)
800 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pReplacementColorBackgroundBitmap);
803 if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON)
805 Bitmap* pCircleNormalBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_NORMAL);
806 Bitmap* pCircleHighlightedBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
807 Bitmap* pDetailedRightHighlightedBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
809 if (pCircleNormalBitmap)
811 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedNormalBackgroundColor);
814 if (pDetailedRightHighlightedBitmap)
816 pReplacementColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightHighlightedColor);
819 if (pReplacementColorBackgroundBitmap)
821 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReplacementColorBackgroundBitmap);
824 if (pReplacementColorRightBitmap)
826 float arrowWidth = pReplacementColorRightBitmap->GetWidthF();
827 float arrowHeight = pReplacementColorRightBitmap->GetHeightF();
829 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
830 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReplacementColorRightBitmap);
833 bool themeBackgroundBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_HIGHLIGHTED);
835 if (themeBackgroundBitmap == false)
837 Bitmap* pCirclePressedEffectBitmap = __pCheckButton->GetCirclePressedEffectBitmap();
839 if (pCirclePressedEffectBitmap)
841 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCirclePressedEffectBitmap);
845 if (pCircleHighlightedBitmap)
847 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedHighlightedBackgroundColor);
850 if (pReplacementColorBackgroundBitmap)
852 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReplacementColorBackgroundBitmap);
856 else if (checkStatus == _CHECK_BUTTON_STATUS_SELECTED)
858 Bitmap* pMarkBgSelectedBitmap = __pCheckButton->GetMarkBgBitmap(_CHECK_BUTTON_STATUS_SELECTED);
860 if (pMarkBgSelectedBitmap)
862 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pMarkBgSelectedBitmap);
865 if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON)
867 Bitmap* pCircleSelectedBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_SELECTED);
868 Bitmap* pDetailedRightSelectedBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_SELECTED);
870 if (pCircleSelectedBitmap)
872 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleSelectedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedSelectedBackgroundColor);
875 if (pDetailedRightSelectedBitmap)
877 pReplacementColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightSelectedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightSelectedColor);
880 if (pReplacementColorBackgroundBitmap)
882 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReplacementColorBackgroundBitmap);
885 if (pReplacementColorRightBitmap)
887 float arrowWidth = pReplacementColorRightBitmap->GetWidthF();
888 float arrowHeight = pReplacementColorRightBitmap->GetHeightF();
890 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
891 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReplacementColorRightBitmap);
894 bool themeBackgroundBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_SELECTED);
896 if (themeBackgroundBitmap == false)
898 Bitmap* pCircleNormalEffectBitmap = __pCheckButton->GetCircleNormalEffectBitmap();
900 if (pCircleNormalEffectBitmap)
902 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCircleNormalEffectBitmap);
910 else if (checkStyle == CHECK_BUTTON_STYLE_RADIO || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
912 if (checkStatus == _CHECK_BUTTON_STATUS_NORMAL)
914 if (checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
916 Bitmap* pCircleNormalBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_NORMAL);
917 Bitmap* pDetailedRightNormalBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_NORMAL);
919 if (pCircleNormalBitmap)
921 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedNormalBackgroundColor);
924 if (pDetailedRightNormalBitmap)
926 pReplacementColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightNormalColor);
929 if (pReplacementColorBackgroundBitmap)
931 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReplacementColorBackgroundBitmap);
934 if (pReplacementColorRightBitmap)
936 float arrowWidth = pReplacementColorRightBitmap->GetWidthF();
937 float arrowHeight = pReplacementColorRightBitmap->GetHeightF();
939 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
940 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReplacementColorRightBitmap);
943 bool themeBackgroundBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_NORMAL);
945 if (themeBackgroundBitmap == false)
947 Bitmap* pCircleNormalEffectBitmap = __pCheckButton->GetCircleNormalEffectBitmap();
949 if (pCircleNormalEffectBitmap)
951 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCircleNormalEffectBitmap);
956 else if (checkStatus == _CHECK_BUTTON_STATUS_DISABLED)
958 if (checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
960 Bitmap* pCircleDisabledBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_DISABLED);
961 Bitmap* pDetailedRightDisabledBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_DISABLED);
963 if (pCircleDisabledBitmap)
965 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleDisabledBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedDisabledBackgroundColor);
968 if (pDetailedRightDisabledBitmap)
970 pReplacementColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightDisabledBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightDisabledColor);
973 if (pReplacementColorBackgroundBitmap)
975 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReplacementColorBackgroundBitmap);
978 if (pReplacementColorRightBitmap)
980 float arrowWidth = pReplacementColorRightBitmap->GetWidthF();
981 float arrowHeight = pReplacementColorRightBitmap->GetHeightF();
983 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
984 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReplacementColorRightBitmap);
987 bool themeBackgroundBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_DISABLED);
989 if (themeBackgroundBitmap == false)
991 Bitmap* pCircleNormalEffectBitmap = __pCheckButton->GetCircleNormalEffectBitmap();
993 if (pCircleNormalEffectBitmap)
995 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCircleNormalEffectBitmap);
1000 else if (checkStatus == _CHECK_BUTTON_STATUS_PRESSED)
1002 if (checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
1004 Bitmap* pCirclePressedBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_PRESSED);
1005 Bitmap* pDetailedRightPressedBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_PRESSED);
1007 if (pCirclePressedBitmap)
1009 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCirclePressedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedPressedBackgroundColor);
1012 if (pDetailedRightPressedBitmap)
1014 pReplacementColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightPressedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightPressedColor);
1017 if (pReplacementColorBackgroundBitmap)
1019 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReplacementColorBackgroundBitmap);
1022 if (pReplacementColorRightBitmap)
1024 float arrowWidth = pReplacementColorRightBitmap->GetWidthF();
1025 float arrowHeight = pReplacementColorRightBitmap->GetHeightF();
1027 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
1028 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReplacementColorRightBitmap);
1031 bool themeBackgroundBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_PRESSED);
1033 if (themeBackgroundBitmap == false)
1035 Bitmap* pCirclePressedEffectBitmap = __pCheckButton->GetCirclePressedEffectBitmap();
1037 if (pCirclePressedEffectBitmap)
1039 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCirclePressedEffectBitmap);
1044 else if (checkStatus == _CHECK_BUTTON_STATUS_HIGHLIGHTED)
1046 if (checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
1048 Bitmap* pCircleNormalBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_NORMAL);
1049 Bitmap* pCircleHighlightedBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
1050 Bitmap* pDetailedRightHighlightedBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
1052 if (pCircleNormalBitmap)
1054 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedNormalBackgroundColor);
1057 if (pDetailedRightHighlightedBitmap)
1059 pReplacementColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightHighlightedColor);
1062 if (pReplacementColorBackgroundBitmap)
1064 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReplacementColorBackgroundBitmap);
1067 if (pReplacementColorRightBitmap)
1069 float arrowWidth = pReplacementColorRightBitmap->GetWidthF();
1070 float arrowHeight = pReplacementColorRightBitmap->GetHeightF();
1072 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
1073 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReplacementColorRightBitmap);
1076 bool themeBackgroundBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_HIGHLIGHTED);
1078 if (themeBackgroundBitmap == false)
1080 Bitmap* pCirclePressedEffectBitmap = __pCheckButton->GetCirclePressedEffectBitmap();
1082 if (pCirclePressedEffectBitmap)
1084 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCirclePressedEffectBitmap);
1088 if (pCircleHighlightedBitmap)
1090 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedHighlightedBackgroundColor);
1093 if (pReplacementColorBackgroundBitmap)
1095 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReplacementColorBackgroundBitmap);
1099 else if (checkStatus == _CHECK_BUTTON_STATUS_SELECTED)
1101 if (checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
1103 Bitmap* pCircleSelectedBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_SELECTED);
1104 Bitmap* pDetailedRightSelectedBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_SELECTED);
1106 if (pCircleSelectedBitmap)
1108 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleSelectedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedSelectedBackgroundColor);
1111 if (pDetailedRightSelectedBitmap)
1113 pReplacementColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightSelectedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightSelectedColor);
1116 if (pReplacementColorBackgroundBitmap)
1118 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReplacementColorBackgroundBitmap);
1121 if (pReplacementColorRightBitmap)
1123 float arrowWidth = pReplacementColorRightBitmap->GetWidthF();
1124 float arrowHeight = pReplacementColorRightBitmap->GetHeightF();
1126 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
1127 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReplacementColorRightBitmap);
1130 bool themeBackgroundBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_SELECTED);
1132 if (themeBackgroundBitmap == false)
1134 Bitmap* pCircleNormalEffectBitmap = __pCheckButton->GetCircleNormalEffectBitmap();
1136 if (pCircleNormalEffectBitmap)
1138 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCircleNormalEffectBitmap);
1144 DrawMarkAnimation();
1146 else if (checkStyle == CHECK_BUTTON_STYLE_ONOFF || checkStyle == CHECK_BUTTON_STYLE_ONOFF_WITH_DIVIDER)
1148 if (checkStatus == _CHECK_BUTTON_STATUS_NORMAL)
1150 Bitmap* pOnOffBgNormalBitmap = __pCheckButton->GetOnOffBgBitmap(_CHECK_BUTTON_STATUS_NORMAL);
1152 if (pOnOffBgNormalBitmap)
1154 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffBgNormalBitmap);
1157 Bitmap* pOnOffNormalBitmap = __pCheckButton->GetOnOffBitmap(_CHECK_BUTTON_STATUS_NORMAL);
1159 if (__pCheckButton->IsSelected() && pOnOffNormalBitmap)
1161 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffNormalBitmap);
1164 else if (checkStatus == _CHECK_BUTTON_STATUS_DISABLED)
1166 Bitmap* pOnOffBgDisabledBitmap = __pCheckButton->GetOnOffBgBitmap(_CHECK_BUTTON_STATUS_DISABLED);
1168 if (pOnOffBgDisabledBitmap)
1170 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffBgDisabledBitmap);
1173 Bitmap* pOnOffDisabledBitmap = __pCheckButton->GetOnOffBitmap(_CHECK_BUTTON_STATUS_DISABLED);
1175 if (__pCheckButton->IsSelected() && pOnOffDisabledBitmap)
1177 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffDisabledBitmap);
1180 else if (checkStatus == _CHECK_BUTTON_STATUS_PRESSED)
1182 Bitmap* pOnOffBgPressedBitmap = __pCheckButton->GetOnOffBgBitmap(_CHECK_BUTTON_STATUS_PRESSED);
1184 if (pOnOffBgPressedBitmap)
1186 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffBgPressedBitmap);
1189 Bitmap* pOnOffPressedBitmap = __pCheckButton->GetOnOffBitmap(_CHECK_BUTTON_STATUS_PRESSED);
1191 if (__pCheckButton->IsSelected() && pOnOffPressedBitmap)
1193 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffPressedBitmap);
1196 else if (checkStatus == _CHECK_BUTTON_STATUS_HIGHLIGHTED)
1198 Bitmap* pOnOffBgNormalBitmap = __pCheckButton->GetOnOffBgBitmap(_CHECK_BUTTON_STATUS_NORMAL);
1199 Bitmap* pOnOffBgHighlightedBitmap = __pCheckButton->GetOnOffBgBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
1201 if (pOnOffBgNormalBitmap)
1203 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffBgNormalBitmap);
1206 Bitmap* pOnOffHighlightedBitmap = __pCheckButton->GetOnOffBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
1208 if (__pCheckButton->IsSelected() && pOnOffHighlightedBitmap)
1210 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffHighlightedBitmap);
1213 if (pOnOffBgHighlightedBitmap)
1215 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pOnOffBgHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedHighlightedBackgroundColor);
1218 if (pReplacementColorBackgroundBitmap)
1220 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pReplacementColorBackgroundBitmap);
1223 else if (checkStatus == _CHECK_BUTTON_STATUS_SELECTED)
1225 Bitmap* pOnOffBgSelectedBitmap = __pCheckButton->GetOnOffBgBitmap(_CHECK_BUTTON_STATUS_SELECTED);
1227 if (pOnOffBgSelectedBitmap)
1229 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffBgSelectedBitmap);
1232 Bitmap* pOnOffSelectedBitmap = __pCheckButton->GetOnOffBitmap(_CHECK_BUTTON_STATUS_SELECTED);
1234 if (__pCheckButton->IsSelected() && pOnOffSelectedBitmap)
1236 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffSelectedBitmap);
1240 else if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING || checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
1242 float handlerWidth = 0.0f;
1243 GET_SHAPE_CONFIG(CHECKBUTTON::ONOFF_SLIDING_HANDLER_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, handlerWidth);
1244 DrawOnOffSlidingHandler(__onOffHandlerPosition - (handlerWidth / 2.0f));
1246 float dividerWidth = 0.0f;
1247 float dividerTopMargin = 0.0f;
1248 float dividerRightMargin = 0.0f;
1250 Color dividerLeftColor;
1251 Color dividerRightColor;
1252 FloatDimension minDimension(0.0f, 0.0f);
1254 GET_SHAPE_CONFIG(CHECKBUTTON::DIVIDER_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, dividerWidth);
1255 GET_SHAPE_CONFIG(CHECKBUTTON::DIVIDER_TOP_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, dividerTopMargin);
1256 GET_SHAPE_CONFIG(CHECKBUTTON::DIVIDER_RIGHT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, dividerRightMargin);
1257 GET_COLOR_CONFIG(HEADER::DIVIDER_LINE_LEFT_NORMAL, dividerLeftColor);
1258 GET_COLOR_CONFIG(HEADER::DIVIDER_LINE_RIGHT_NORMAL, dividerRightColor);
1260 GET_DIMENSION_CONFIG(CHECKBUTTON::MIN_DIMENSION, __pCheckButton->GetOrientation(), minDimension);
1262 FloatRectangle bounds(0.0f, 0.0f, __pCheckButton->GetBoundsF().width, __pCheckButton->GetBoundsF().height);
1264 if (bounds.height < minDimension.height )
1266 bounds.height = minDimension.height;
1269 if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
1271 pCanvas->SetForegroundColor(dividerLeftColor);
1272 pCanvas->SetLineWidth(dividerWidth/2);
1273 pCanvas->DrawLine(FloatPoint(__onOffSlidingButtonBounds.x - dividerRightMargin + dividerWidth/2, dividerTopMargin),
1274 FloatPoint(__onOffSlidingButtonBounds.x - dividerRightMargin + dividerWidth/2, dividerTopMargin + bounds.height - dividerTopMargin * 2));
1276 pCanvas->SetForegroundColor(dividerRightColor);
1277 pCanvas->SetLineWidth(dividerWidth/2);
1278 pCanvas->DrawLine(FloatPoint(__onOffSlidingButtonBounds.x - dividerRightMargin + dividerWidth, dividerTopMargin),
1279 FloatPoint(__onOffSlidingButtonBounds.x - dividerRightMargin + dividerWidth, dividerTopMargin + bounds.height - dividerTopMargin * 2));
1284 delete pReplacementColorBackgroundBitmap;
1285 delete pReplacementColorRightBitmap;
1291 _CheckButtonPresenter::DrawText(void)
1293 result r = E_SUCCESS;
1295 TextSimple* pSimpleText = null;
1296 TextSimple* pSimpleTitleText = null;
1297 TextObjectAlignment horizontalAlign = TEXT_OBJECT_ALIGNMENT_CENTER;
1298 TextObjectAlignment verticalAlign = TEXT_OBJECT_ALIGNMENT_MIDDLE;
1300 _CheckButtonStatus checkStatus = __pCheckButton->GetCheckButtonStatus();
1301 bool showTitle = __pCheckButton->GetShowTitle();
1303 Canvas* pCanvas = __pCheckButton->GetCanvasN();
1304 if (pCanvas == null)
1306 SysLog(NID_UI_CTRL, "Cannot get a canvas.");
1311 __pTextObject->RemoveAll(true);
1312 pSimpleText = new (std::nothrow) TextSimple(const_cast<wchar_t*>(__pCheckButton->GetText().GetPointer()), __pCheckButton->GetText().GetLength());
1313 __pTextObject->AppendElement(*pSimpleText);
1315 __pTitleTextObject->RemoveAll(true);
1316 pSimpleTitleText = new (std::nothrow) TextSimple(const_cast<wchar_t*>(__pCheckButton->GetTitleText().GetPointer()), __pCheckButton->GetTitleText().GetLength());
1317 __pTitleTextObject->AppendElement(*pSimpleTitleText);
1319 if (checkStatus == _CHECK_BUTTON_STATUS_NORMAL)
1321 __pTextObject->SetForegroundColor(__pCheckButton->GetTextColor(), 0, __pTextObject->GetTextLength());
1322 __pTitleTextObject->SetForegroundColor(__pCheckButton->GetTitleTextColor(), 0, __pTitleTextObject->GetTextLength());
1324 else if (checkStatus == _CHECK_BUTTON_STATUS_DISABLED)
1326 __pTextObject->SetForegroundColor(__pCheckButton->GetDisabledTextColor(), 0, __pTextObject->GetTextLength());
1327 __pTitleTextObject->SetForegroundColor(__pCheckButton->GetDisabledTitleTextColor(), 0, __pTitleTextObject->GetTextLength());
1329 else if (checkStatus == _CHECK_BUTTON_STATUS_PRESSED)
1331 __pTextObject->SetForegroundColor(__pCheckButton->GetPressedTextColor(), 0, __pTextObject->GetTextLength());
1332 __pTitleTextObject->SetForegroundColor(__pCheckButton->GetPressedTitleTextColor(), 0, __pTitleTextObject->GetTextLength());
1334 else if (checkStatus == _CHECK_BUTTON_STATUS_HIGHLIGHTED)
1336 __pTextObject->SetForegroundColor(__pCheckButton->GetHighlightedTextColor(), 0, __pTextObject->GetTextLength());
1337 __pTitleTextObject->SetForegroundColor(__pCheckButton->GetHighlightedTitleTextColor(), 0, __pTitleTextObject->GetTextLength());
1341 __pTextObject->SetForegroundColor(__pCheckButton->GetSelectedTextColor(), 0, __pTextObject->GetTextLength());
1342 __pTitleTextObject->SetForegroundColor(__pCheckButton->GetSelectedTitleTextColor(), 0, __pTitleTextObject->GetTextLength());
1345 CalculateTextBounds();
1346 CalculateTitleTextBounds();
1348 __pTextObject->SetWrap(TEXT_OBJECT_WRAP_TYPE_NONE);
1349 __pTextObject->SetAction(TEXT_OBJECT_ACTION_TYPE_ABBREV);
1350 __pTextObject->SetBounds(GetTextBoundsF());
1351 __pTextObject->Compose();
1353 __pTitleTextObject->SetWrap(TEXT_OBJECT_WRAP_TYPE_NONE);
1354 __pTitleTextObject->SetAction(TEXT_OBJECT_ACTION_TYPE_ABBREV);
1355 __pTitleTextObject->SetBounds(GetTitleTextBoundsF());
1356 __pTitleTextObject->Compose();
1358 switch (__pCheckButton->GetTextHorizontalAlignment())
1360 case ALIGNMENT_LEFT:
1361 horizontalAlign = TEXT_OBJECT_ALIGNMENT_LEFT;
1363 case ALIGNMENT_CENTER:
1364 horizontalAlign = TEXT_OBJECT_ALIGNMENT_CENTER;
1367 horizontalAlign = TEXT_OBJECT_ALIGNMENT_RIGHT;
1370 switch (__pCheckButton->GetTextVerticalAlignment())
1373 verticalAlign = TEXT_OBJECT_ALIGNMENT_TOP;
1375 case ALIGNMENT_MIDDLE:
1376 verticalAlign = TEXT_OBJECT_ALIGNMENT_MIDDLE;
1379 verticalAlign = TEXT_OBJECT_ALIGNMENT_BOTTOM;
1382 __fontSize = __pCheckButton->GetTextSizeF();
1383 __pTextFont = __pCheckButton->GetFallbackFont();
1384 r = GetLastResult();
1385 SysTryReturnVoidResult(NID_UI_CTRL, __pTextFont, r, "[%s] Propagating.", GetErrorMessage(r));
1387 __pTextObject->SetAlignment(horizontalAlign | verticalAlign);
1388 __pTextObject->SetFont(__pTextFont, 0, __pTextObject->GetTextLength());
1389 __pTextObject->Draw(*_CanvasImpl::GetInstance(*pCanvas));
1391 __fontSize = __pCheckButton->GetTitleTextSizeF();
1392 __pTitleTextFont = __pCheckButton->GetFallbackFont();
1393 r = GetLastResult();
1394 SysTryReturnVoidResult(NID_UI_CTRL, __pTitleTextFont, r, "[%s] Propagating.", GetErrorMessage(r));
1396 __pTitleTextObject->SetAlignment(TEXT_OBJECT_ALIGNMENT_LEFT | TEXT_OBJECT_ALIGNMENT_MIDDLE);
1397 __pTitleTextObject->SetFont(__pTitleTextFont, 0, __pTitleTextObject->GetTextLength());
1401 __pTitleTextObject->Draw(*_CanvasImpl::GetInstance(*pCanvas));
1410 _CheckButtonPresenter::OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo)
1412 if (&source != __pCheckButton)
1417 if (!__pCheckButton->IsEnabled())
1422 __touchMoveHandled = false;
1424 FloatPoint touchPoint = touchinfo.GetCurrentPosition();
1426 touchPoint.x += source.GetClientBoundsF().x;
1427 touchPoint.y += source.GetClientBoundsF().y;
1429 CheckButtonStyle checkStyle = __pCheckButton->GetCheckButtonStyle();
1431 if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING || checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
1433 if (__onOffSlidingButtonBounds.Contains(touchPoint))
1435 __onOffHandlerPressed = true;
1439 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_PRESSED);
1444 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_PRESSED);
1447 __pCheckButton->Invalidate();
1453 _CheckButtonPresenter::OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo)
1455 float checkButtonLeftMargin = 0.0f;
1456 float checkButtonDetailedBitmapWidth = 0.0f;
1457 float checkButtonOnOffSlidingBitmapWidth = 0.0f;
1458 float dividerRightMargin = 0.0f;
1460 GET_SHAPE_CONFIG(CHECKBUTTON::LEFT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, checkButtonLeftMargin);
1461 GET_SHAPE_CONFIG(CHECKBUTTON::DETAILED_BITMAP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, checkButtonDetailedBitmapWidth);
1462 GET_SHAPE_CONFIG(CHECKBUTTON::ONOFF_SLIDING_BITMAP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, checkButtonOnOffSlidingBitmapWidth);
1463 GET_SHAPE_CONFIG(CHECKBUTTON::DIVIDER_RIGHT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, dividerRightMargin);
1465 if (&source != __pCheckButton)
1470 if (!__pCheckButton->IsEnabled())
1475 _CheckButtonStatus status = __pCheckButton->GetCheckButtonStatus();
1476 CheckButtonStyle checkStyle = __pCheckButton->GetCheckButtonStyle();
1478 if (status == _CHECK_BUTTON_STATUS_NORMAL && __onOffHandlerPressed == false)
1480 if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING || checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
1482 AdjustHandlerPosition();
1484 __onOffHandlerPressed = false;
1485 __onOffHandlerMoved = false;
1491 if (checkStyle == CHECK_BUTTON_STYLE_MARK || checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON
1492 || checkStyle == CHECK_BUTTON_STYLE_RADIO || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
1494 StartCheckAnimationTimer();
1498 FloatPoint touchPoint = touchinfo.GetCurrentPosition();
1500 touchPoint.x += source.GetClientBoundsF().x;
1501 touchPoint.y += source.GetClientBoundsF().y;
1503 FloatRectangle bounds = __pCheckButton->GetClientBoundsF();
1504 FloatRectangle detailedBounds = __pCheckButton->GetClientBoundsF();
1506 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_NORMAL);
1507 __pCheckButton->Invalidate();
1509 if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
1511 detailedBounds.width = detailedBounds.width - checkButtonLeftMargin - checkButtonDetailedBitmapWidth;
1513 if (detailedBounds.Contains(touchPoint))
1515 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP);
1517 __pCheckButton->FireActionEvent();
1519 if (__pCheckButton->GetRadioGroup() != null)
1521 __pCheckButton->SendTouchReleasedEvent(*__pCheckButton);
1525 else if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
1527 detailedBounds.width = detailedBounds.width - checkButtonLeftMargin - checkButtonOnOffSlidingBitmapWidth - dividerRightMargin;
1529 if (!detailedBounds.Contains(touchPoint))
1531 if (__onOffHandlerMoved == false)
1533 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP);
1535 __pCheckButton->FireActionEvent();
1537 if (__pCheckButton->GetRadioGroup() != null)
1539 __pCheckButton->SendTouchReleasedEvent(*__pCheckButton);
1544 AdjustHandlerPosition();
1546 __onOffHandlerPressed = false;
1547 __onOffHandlerMoved = false;
1549 else if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING)
1551 if (bounds.Contains(touchPoint))
1553 if (__onOffHandlerMoved == false)
1555 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP);
1557 __pCheckButton->FireActionEvent();
1559 if (__pCheckButton->GetRadioGroup() != null)
1561 __pCheckButton->SendTouchReleasedEvent(*__pCheckButton);
1566 AdjustHandlerPosition();
1568 __onOffHandlerPressed = false;
1569 __onOffHandlerMoved = false;
1573 if (bounds.Contains(touchPoint))
1575 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP);
1577 __pCheckButton->FireActionEvent();
1579 if (__pCheckButton->GetRadioGroup() != null)
1581 __pCheckButton->SendTouchReleasedEvent(*__pCheckButton);
1590 _CheckButtonPresenter::InitOnOffHandlerMoved(void)
1592 __onOffHandlerMoved = false;
1598 _CheckButtonPresenter::AdjustHandlerPosition(void)
1600 float handlerWidth = 0.0f;
1601 GET_SHAPE_CONFIG(CHECKBUTTON::ONOFF_SLIDING_HANDLER_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, handlerWidth);
1603 if (__onOffHandlerMoved == false)
1605 if (!__pCheckButton->IsSelected())
1607 __onOffHandlerPosition = __onOffSlidingButtonBounds.x;
1611 __onOffHandlerPosition = __onOffSlidingButtonBounds.x + __onOffSlidingButtonBounds.width - (handlerWidth / 2.0f);
1616 if (!__pCheckButton->IsSelected())
1618 if (__onOffHandlerPosition < __onOffSlidingButtonBounds.x + (__onOffSlidingButtonBounds.width / 2.0f))
1620 __onOffHandlerPosition = __onOffSlidingButtonBounds.x;
1624 __onOffHandlerPosition = __onOffSlidingButtonBounds.x + __onOffSlidingButtonBounds.width - (handlerWidth / 2.0f);
1626 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP);
1628 __pCheckButton->FireActionEvent();
1630 if (__pCheckButton->GetRadioGroup() != null)
1632 __pCheckButton->SendTouchReleasedEvent(*__pCheckButton);
1638 if (__onOffHandlerPosition < __onOffSlidingButtonBounds.x + (__onOffSlidingButtonBounds.width / 2.0f))
1640 __onOffHandlerPosition = __onOffSlidingButtonBounds.x;
1642 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP);
1644 __pCheckButton->FireActionEvent();
1646 if (__pCheckButton->GetRadioGroup() != null)
1648 __pCheckButton->SendTouchReleasedEvent(*__pCheckButton);
1653 __onOffHandlerPosition = __onOffSlidingButtonBounds.x + __onOffSlidingButtonBounds.width - (handlerWidth / 2.0f);
1658 __pCheckButton->Invalidate();
1664 _CheckButtonPresenter::OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo)
1666 if (&source != __pCheckButton)
1671 if (!__pCheckButton->IsEnabled())
1676 FloatPoint touchPoint = touchinfo.GetCurrentPosition();
1678 touchPoint.x += source.GetClientBoundsF().x;
1679 touchPoint.y += source.GetClientBoundsF().y;
1681 FloatRectangle bounds = __pCheckButton->GetClientBoundsF();
1682 bool isInCheckButtonArea = bounds.Contains(touchPoint);
1683 bool isInOnOffHandlerArea = __onOffSlidingButtonBounds.Contains(touchPoint);
1685 if (__onOffHandlerPressed == true)
1687 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_NORMAL);
1691 if (isInCheckButtonArea == true && __touchMoveHandled == false && isInOnOffHandlerArea == false )
1693 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_PRESSED);
1697 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_NORMAL);
1701 CheckButtonStyle checkStyle = __pCheckButton->GetCheckButtonStyle();
1703 if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING || checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
1705 if (isInOnOffHandlerArea == true && __onOffHandlerPressed == true)
1707 __onOffHandlerPosition = touchPoint.x;
1709 __onOffHandlerMoved = true;
1713 __pCheckButton->Invalidate();
1715 if (__onOffHandlerMoved == true)
1726 _CheckButtonPresenter::DrawOnOffSlidingHandler(float handlerPosition)
1728 Canvas* pCanvas = __pCheckButton->GetCanvasN();
1729 if (pCanvas == null)
1731 SysLog(NID_UI_CTRL, "Cannot get a canvas.");
1736 Bitmap* pReplacementColorBackgroundBitmap = null;
1738 Color detailedHighlightedBackgroundColor;
1739 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_BG_HIGHLIGHTED, detailedHighlightedBackgroundColor);
1741 float handlerMargin = 0.0f;
1742 float handlerWidth = 0.0f;
1744 _CheckButtonStatus checkStatus = __pCheckButton->GetCheckButtonStatus();
1746 GET_SHAPE_CONFIG(CHECKBUTTON::ONOFF_SLIDING_HANDLER_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, handlerMargin);
1747 GET_SHAPE_CONFIG(CHECKBUTTON::ONOFF_SLIDING_HANDLER_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, handlerWidth);
1749 if (handlerPosition < __onOffSlidingButtonBounds.x)
1751 handlerPosition = __onOffSlidingButtonBounds.x;
1754 if (handlerPosition > __onOffSlidingButtonBounds.x + __onOffSlidingButtonBounds.width - handlerWidth)
1756 handlerPosition = __onOffSlidingButtonBounds.x + __onOffSlidingButtonBounds.width - handlerWidth;
1759 if (!__pCheckButton->IsSelected())
1761 if (checkStatus == _CHECK_BUTTON_STATUS_NORMAL)
1763 Bitmap* pOnOffSlidingOffNormalBitmap = __pCheckButton->GetOnOffSlidingOffBgBitmap(_CHECK_BUTTON_STATUS_NORMAL);
1765 if (pOnOffSlidingOffNormalBitmap)
1767 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingOffNormalBitmap);
1770 Bitmap* pOnOffSlidingHandlerNormalBitmap = __pCheckButton->GetOnOffSlidingHandlerBitmap(_CHECK_BUTTON_STATUS_NORMAL);
1772 if (pOnOffSlidingHandlerNormalBitmap)
1774 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingHandlerNormalBitmap);
1777 else if (checkStatus == _CHECK_BUTTON_STATUS_DISABLED)
1779 Bitmap* pOnOffSlidingOffDisabledBitmap = __pCheckButton->GetOnOffSlidingOffBgBitmap(_CHECK_BUTTON_STATUS_DISABLED);
1781 if (pOnOffSlidingOffDisabledBitmap)
1783 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingOffDisabledBitmap);
1786 Bitmap* pOnOffSlidingHandlerDisabledBitmap = __pCheckButton->GetOnOffSlidingHandlerBitmap(_CHECK_BUTTON_STATUS_DISABLED);
1788 if (pOnOffSlidingHandlerDisabledBitmap)
1790 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingHandlerDisabledBitmap);
1793 else if (checkStatus == _CHECK_BUTTON_STATUS_PRESSED)
1795 Bitmap* pOnOffSlidingOffPressedBitmap = __pCheckButton->GetOnOffSlidingOffBgBitmap(_CHECK_BUTTON_STATUS_PRESSED);
1797 if (pOnOffSlidingOffPressedBitmap)
1799 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingOffPressedBitmap);
1802 Bitmap* pOnOffSlidingHandlerPressedBitmap = __pCheckButton->GetOnOffSlidingHandlerBitmap(_CHECK_BUTTON_STATUS_PRESSED);
1804 if (pOnOffSlidingHandlerPressedBitmap)
1806 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingHandlerPressedBitmap);
1809 else if (checkStatus == _CHECK_BUTTON_STATUS_HIGHLIGHTED)
1811 Bitmap* pOnOffSlidingOffHighlightedBitmap = __pCheckButton->GetOnOffSlidingOffBgBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
1813 if (pOnOffSlidingOffHighlightedBitmap)
1815 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingOffHighlightedBitmap);
1818 Bitmap* pOnOffSlidingHandlerNormalBitmap = __pCheckButton->GetOnOffSlidingHandlerBitmap(_CHECK_BUTTON_STATUS_NORMAL);
1820 if (pOnOffSlidingHandlerNormalBitmap)
1822 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingHandlerNormalBitmap);
1825 Bitmap* pOnOffSlidingHandlerHighlightedBitmap = __pCheckButton->GetOnOffSlidingHandlerBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
1827 if (pOnOffSlidingHandlerHighlightedBitmap)
1829 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pOnOffSlidingHandlerHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA),
1830 detailedHighlightedBackgroundColor);
1833 if (pReplacementColorBackgroundBitmap)
1835 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pReplacementColorBackgroundBitmap);
1838 else if (checkStatus == _CHECK_BUTTON_STATUS_SELECTED)
1840 Bitmap* pOnOffSlidingOffSelectedBitmap = __pCheckButton->GetOnOffSlidingOffBgBitmap(_CHECK_BUTTON_STATUS_SELECTED);
1842 if (pOnOffSlidingOffSelectedBitmap)
1844 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingOffSelectedBitmap);
1847 Bitmap* pOnOffSlidingHandlerSelectedBitmap = __pCheckButton->GetOnOffSlidingHandlerBitmap(_CHECK_BUTTON_STATUS_SELECTED);
1849 if (pOnOffSlidingHandlerSelectedBitmap)
1851 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingHandlerSelectedBitmap);
1857 if (checkStatus == _CHECK_BUTTON_STATUS_NORMAL)
1859 Bitmap* pOnOffSlidingOnNormalBitmap = __pCheckButton->GetOnOffSlidingOnBgBitmap(_CHECK_BUTTON_STATUS_NORMAL);
1861 if (pOnOffSlidingOnNormalBitmap)
1863 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingOnNormalBitmap);
1866 Bitmap* pOnOffSlidingHandlerNormalBitmap = __pCheckButton->GetOnOffSlidingHandlerBitmap(_CHECK_BUTTON_STATUS_NORMAL);
1868 if (pOnOffSlidingHandlerNormalBitmap)
1870 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingHandlerNormalBitmap);
1873 else if (checkStatus == _CHECK_BUTTON_STATUS_DISABLED)
1875 Bitmap* pOnOffSlidingOnDisabledBitmap = __pCheckButton->GetOnOffSlidingOnBgBitmap(_CHECK_BUTTON_STATUS_DISABLED);
1877 if (pOnOffSlidingOnDisabledBitmap)
1879 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingOnDisabledBitmap);
1882 Bitmap* pOnOffSlidingHandlerDisabledBitmap = __pCheckButton->GetOnOffSlidingHandlerBitmap(_CHECK_BUTTON_STATUS_DISABLED);
1884 if (pOnOffSlidingHandlerDisabledBitmap)
1886 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingHandlerDisabledBitmap);
1889 else if (checkStatus == _CHECK_BUTTON_STATUS_PRESSED)
1891 Bitmap* pOnOffSlidingOnPressedBitmap = __pCheckButton->GetOnOffSlidingOnBgBitmap(_CHECK_BUTTON_STATUS_PRESSED);
1893 if (pOnOffSlidingOnPressedBitmap)
1895 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingOnPressedBitmap);
1898 Bitmap* pOnOffSlidingHandlerPressedBitmap = __pCheckButton->GetOnOffSlidingHandlerBitmap(_CHECK_BUTTON_STATUS_PRESSED);
1900 if (pOnOffSlidingHandlerPressedBitmap)
1902 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingHandlerPressedBitmap);
1905 else if (checkStatus == _CHECK_BUTTON_STATUS_HIGHLIGHTED)
1907 Bitmap* pOnOffSlidingOnHighlightedBitmap = __pCheckButton->GetOnOffSlidingOnBgBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
1909 if (pOnOffSlidingOnHighlightedBitmap)
1911 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingOnHighlightedBitmap);
1914 Bitmap* pOnOffSlidingHandlerNormalBitmap = __pCheckButton->GetOnOffSlidingHandlerBitmap(_CHECK_BUTTON_STATUS_NORMAL);
1916 if (pOnOffSlidingHandlerNormalBitmap)
1918 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingHandlerNormalBitmap);
1921 Bitmap* pOnOffSlidingHandlerHighlightedBitmap = __pCheckButton->GetOnOffSlidingHandlerBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
1923 if (pOnOffSlidingHandlerHighlightedBitmap)
1925 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pOnOffSlidingHandlerHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA),
1926 detailedHighlightedBackgroundColor);
1929 if (pReplacementColorBackgroundBitmap)
1931 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pReplacementColorBackgroundBitmap);
1934 else if (checkStatus == _CHECK_BUTTON_STATUS_SELECTED)
1936 Bitmap* pOnOffSlidingOnSelectedBitmap = __pCheckButton->GetOnOffSlidingOnBgBitmap(_CHECK_BUTTON_STATUS_SELECTED);
1938 if (pOnOffSlidingOnSelectedBitmap)
1940 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingOnSelectedBitmap);
1943 Bitmap* pOnOffSlidingHandlerSelectedBitmap = __pCheckButton->GetOnOffSlidingHandlerBitmap(_CHECK_BUTTON_STATUS_SELECTED);
1945 if (pOnOffSlidingHandlerSelectedBitmap)
1947 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingHandlerSelectedBitmap);
1953 delete pReplacementColorBackgroundBitmap;
1959 _CheckButtonPresenter::OnTouchCanceled(const _Control& source, const _TouchInfo& touchinfo)
1961 if (&source != __pCheckButton)
1966 if (!__pCheckButton->IsEnabled())
1971 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_NORMAL);
1972 __pCheckButton->Invalidate();
1978 _CheckButtonPresenter::OnTouchMoveHandled(const _Control& control)
1980 __touchMoveHandled = true;
1981 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_NORMAL);
1982 __pCheckButton->Invalidate();
1988 _CheckButtonPresenter::OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo)
1994 _CheckButtonPresenter::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
1996 _KeyCode keyCode = keyInfo.GetKeyCode();
1998 if (keyCode == _KEY_ENTER)
1999 //if (__pCheckButton->IsFocusModeStateEnabled() == true && keyCode == _KEY_ENTER)
2001 CheckButtonStyle checkStyle = __pCheckButton->GetCheckButtonStyle();
2003 if (checkStyle == CHECK_BUTTON_STYLE_MARK || checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON
2004 || checkStyle == CHECK_BUTTON_STYLE_RADIO || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
2006 StartCheckAnimationTimer();
2010 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
2011 __pCheckButton->Invalidate();
2013 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP);
2015 __pCheckButton->FireActionEvent();
2017 if (__pCheckButton->GetRadioGroup() != null)
2019 __pCheckButton->SendTouchReleasedEvent(*__pCheckButton);
2022 if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING)
2024 AdjustHandlerPosition();
2026 __onOffHandlerPressed = false;
2027 __onOffHandlerMoved = false;
2035 _CheckButtonPresenter::IsEnabledStateChanged(void)
2037 bool __currentEnabledState = __pCheckButton->GetEnableState();
2039 if (__currentEnabledState != __previousEnabledState)
2041 __previousEnabledState = __currentEnabledState;
2051 _CheckButtonPresenter::CalculateTitleTextBounds(void)
2053 float checkButtonLeftMargin = 0.0f;
2054 float checkButtonTopMargin = 0.0f;
2055 float checkButtonBitmapWidth = 0.0f;
2056 float checkButtonOnOffSlidingBitmapWidth = 0.0f;
2057 float checkButtonDetailedBitmapWidth = 0.0f;
2058 float checkButtonTitleTextHeight = 0.0f;
2059 float checkButtonTextHeight = 0.0f;
2061 FloatDimension minDimension(0.0f, 0.0f);
2062 FloatDimension minDimensionWithAnnex(0.0f, 0.0f);
2064 GET_SHAPE_CONFIG(CHECKBUTTON::LEFT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, checkButtonLeftMargin);
2065 GET_SHAPE_CONFIG(CHECKBUTTON::TOP_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, checkButtonTopMargin);
2066 GET_SHAPE_CONFIG(CHECKBUTTON::MARK_BITMAP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, checkButtonBitmapWidth);
2067 GET_SHAPE_CONFIG(CHECKBUTTON::ONOFF_SLIDING_BITMAP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, checkButtonOnOffSlidingBitmapWidth);
2068 GET_SHAPE_CONFIG(CHECKBUTTON::DETAILED_BITMAP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, checkButtonDetailedBitmapWidth);
2069 GET_SHAPE_CONFIG(CHECKBUTTON::TITLE_TEXT_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, checkButtonTitleTextHeight);
2070 GET_SHAPE_CONFIG(CHECKBUTTON::TEXT_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, checkButtonTextHeight);
2072 GET_DIMENSION_CONFIG(CHECKBUTTON::MIN_DIMENSION, __pCheckButton->GetOrientation(), minDimension);
2073 GET_DIMENSION_CONFIG(CHECKBUTTON::MIN_DIMENSION_WITH_ANNEX, __pCheckButton->GetOrientation(), minDimensionWithAnnex);
2075 FloatRectangle bounds(0.0f, 0.0f, __pCheckButton->GetBoundsF().width, __pCheckButton->GetBoundsF().height);
2077 CheckButtonStyle checkStyle = __pCheckButton->GetCheckButtonStyle();
2079 if (checkStyle == CHECK_BUTTON_STYLE_MARK || checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_ONOFF
2080 || checkStyle == CHECK_BUTTON_STYLE_ONOFF_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_RADIO || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DIVIDER)
2082 if (bounds.width < minDimension.width )
2084 bounds.width = minDimension.width;
2087 if (bounds.height < minDimension.height )
2089 bounds.height = minDimension.height;
2094 if (bounds.width < minDimensionWithAnnex.width )
2096 bounds.width = minDimensionWithAnnex.width;
2099 if (bounds.height < minDimensionWithAnnex.height )
2101 bounds.height = minDimensionWithAnnex.height;
2105 if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING || checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
2107 __titleTextBounds.x = checkButtonLeftMargin;
2108 __titleTextBounds.y = checkButtonTopMargin;
2109 __titleTextBounds.width = bounds.width - checkButtonLeftMargin * 3 - checkButtonOnOffSlidingBitmapWidth;
2110 __titleTextBounds.height = bounds.height - checkButtonTopMargin * 2 - __textBounds.height;
2114 if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
2116 __titleTextBounds.x = checkButtonLeftMargin * 2 + checkButtonBitmapWidth;
2117 __titleTextBounds.y = checkButtonTopMargin;
2118 __titleTextBounds.width = bounds.width - checkButtonLeftMargin * 4 - checkButtonBitmapWidth - checkButtonDetailedBitmapWidth;
2119 __titleTextBounds.height = bounds.height - checkButtonTopMargin * 2 - __textBounds.height;
2123 __titleTextBounds.x = checkButtonLeftMargin * 2 + checkButtonBitmapWidth;
2124 __titleTextBounds.y = checkButtonTopMargin;
2125 __titleTextBounds.width = bounds.width - checkButtonLeftMargin * 3 - checkButtonBitmapWidth;
2126 __titleTextBounds.height = bounds.height - checkButtonTopMargin * 2 - __textBounds.height;
2134 _CheckButtonPresenter::CalculateTextBounds(void)
2136 float checkButtonLeftMargin = 0.0f;
2137 float checkButtonTopMargin = 0.0f;
2138 float checkButtonBitmapWidth = 0.0f;
2139 float checkButtonOnOffSlidingBitmapWidth = 0.0f;
2140 float checkButtonDetailedBitmapWidth = 0.0f;
2141 float checkButtonTitleTextHeight = 0.0f;
2142 float checkButtonTextHeight = 0.0f;
2144 FloatDimension minDimension(0.0f, 0.0f);
2145 FloatDimension minDimensionWithAnnex(0.0f, 0.0f);
2147 GET_SHAPE_CONFIG(CHECKBUTTON::LEFT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, checkButtonLeftMargin);
2148 GET_SHAPE_CONFIG(CHECKBUTTON::TOP_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, checkButtonTopMargin);
2149 GET_SHAPE_CONFIG(CHECKBUTTON::MARK_BITMAP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, checkButtonBitmapWidth);
2150 GET_SHAPE_CONFIG(CHECKBUTTON::ONOFF_SLIDING_BITMAP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, checkButtonOnOffSlidingBitmapWidth);
2151 GET_SHAPE_CONFIG(CHECKBUTTON::DETAILED_BITMAP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, checkButtonDetailedBitmapWidth);
2152 GET_SHAPE_CONFIG(CHECKBUTTON::TITLE_TEXT_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, checkButtonTitleTextHeight);
2153 GET_SHAPE_CONFIG(CHECKBUTTON::TEXT_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, checkButtonTextHeight);
2155 GET_DIMENSION_CONFIG(CHECKBUTTON::MIN_DIMENSION, __pCheckButton->GetOrientation(), minDimension);
2156 GET_DIMENSION_CONFIG(CHECKBUTTON::MIN_DIMENSION_WITH_ANNEX, __pCheckButton->GetOrientation(), minDimensionWithAnnex);
2158 FloatRectangle bounds(0.0f, 0.0f, __pCheckButton->GetBoundsF().width, __pCheckButton->GetBoundsF().height);
2160 CheckButtonStyle checkStyle = __pCheckButton->GetCheckButtonStyle();
2161 bool showTitle = __pCheckButton->GetShowTitle();
2163 if (checkStyle == CHECK_BUTTON_STYLE_MARK || checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_ONOFF
2164 || checkStyle == CHECK_BUTTON_STYLE_ONOFF_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_RADIO || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DIVIDER)
2166 if (bounds.width < minDimension.width )
2168 bounds.width = minDimension.width;
2171 if (bounds.height < minDimension.height )
2173 bounds.height = minDimension.height;
2178 if (bounds.width < minDimensionWithAnnex.width )
2180 bounds.width = minDimensionWithAnnex.width;
2183 if (bounds.height < minDimensionWithAnnex.height )
2185 bounds.height = minDimensionWithAnnex.height;
2189 if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING || checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
2193 __textBounds.x = checkButtonLeftMargin;
2194 __textBounds.y = checkButtonTopMargin + checkButtonTitleTextHeight;
2195 __textBounds.width = bounds.width - checkButtonLeftMargin * 3 - checkButtonOnOffSlidingBitmapWidth;
2196 __textBounds.height = bounds.height - checkButtonTopMargin * 2 - checkButtonTitleTextHeight;
2200 __textBounds.x = checkButtonLeftMargin;
2201 __textBounds.y = checkButtonTopMargin;
2202 __textBounds.width = bounds.width - checkButtonLeftMargin * 3 - checkButtonOnOffSlidingBitmapWidth;
2203 __textBounds.height = bounds.height - checkButtonTopMargin * 2;
2208 if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
2212 __textBounds.x = checkButtonLeftMargin * 2 + checkButtonBitmapWidth;
2213 __textBounds.y = checkButtonTopMargin + checkButtonTitleTextHeight;
2214 __textBounds.width = bounds.width - checkButtonLeftMargin * 4 - checkButtonBitmapWidth - checkButtonDetailedBitmapWidth;
2215 __textBounds.height = bounds.height - checkButtonTopMargin * 2 - checkButtonTitleTextHeight;
2219 __textBounds.x = checkButtonLeftMargin * 2 + checkButtonBitmapWidth;
2220 __textBounds.y = checkButtonTopMargin;
2221 __textBounds.width = bounds.width - checkButtonLeftMargin * 4 - checkButtonBitmapWidth - checkButtonDetailedBitmapWidth;
2222 __textBounds.height = bounds.height - checkButtonTopMargin * 2;
2229 __textBounds.x = checkButtonLeftMargin * 2 + checkButtonBitmapWidth;
2230 __textBounds.y = checkButtonTopMargin + checkButtonTitleTextHeight;
2231 __textBounds.width = bounds.width - checkButtonLeftMargin * 3 - checkButtonBitmapWidth;
2232 __textBounds.height = bounds.height - checkButtonTopMargin * 2 - checkButtonTitleTextHeight;
2236 __textBounds.x = checkButtonLeftMargin * 2 + checkButtonBitmapWidth;
2237 __textBounds.y = checkButtonTopMargin;
2238 __textBounds.width = bounds.width - checkButtonLeftMargin * 3 - checkButtonBitmapWidth;
2239 __textBounds.height = bounds.height - checkButtonTopMargin * 2;
2248 _CheckButtonPresenter::CalculateButtonBounds(void)
2250 float checkButtonLeftMargin = 0.0f;
2251 float checkButtonBitmapWidth = 0.0f;
2252 float checkButtonBitmapHeight = 0.0f;
2253 float checkButtonOnOffSlidingBitmapWidth = 0.0f;
2254 float checkButtonOnOffSlidingBitmapHeight = 0.0f;
2255 float checkButtonDetaieldBitmapWidth = 0.0f;
2256 float checkButtonDetaieldBitmapHeight = 0.0f;
2258 FloatDimension minDimension(0.0f, 0.0f);
2259 FloatDimension minDimensionWithAnnex(0.0f, 0.0f);
2261 GET_SHAPE_CONFIG(CHECKBUTTON::LEFT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, checkButtonLeftMargin);
2262 GET_SHAPE_CONFIG(CHECKBUTTON::MARK_BITMAP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, checkButtonBitmapWidth);
2263 GET_SHAPE_CONFIG(CHECKBUTTON::MARK_BITMAP_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, checkButtonBitmapHeight);
2264 GET_SHAPE_CONFIG(CHECKBUTTON::ONOFF_SLIDING_BITMAP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, checkButtonOnOffSlidingBitmapWidth);
2265 GET_SHAPE_CONFIG(CHECKBUTTON::ONOFF_SLIDING_BITMAP_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, checkButtonOnOffSlidingBitmapHeight);
2266 GET_SHAPE_CONFIG(CHECKBUTTON::DETAILED_BITMAP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, checkButtonDetaieldBitmapWidth);
2267 GET_SHAPE_CONFIG(CHECKBUTTON::DETAILED_BITMAP_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, checkButtonDetaieldBitmapHeight);
2269 GET_DIMENSION_CONFIG(CHECKBUTTON::MIN_DIMENSION, __pCheckButton->GetOrientation(), minDimension);
2270 GET_DIMENSION_CONFIG(CHECKBUTTON::MIN_DIMENSION_WITH_ANNEX, __pCheckButton->GetOrientation(), minDimensionWithAnnex);
2272 FloatRectangle bounds(0.0f, 0.0f, __pCheckButton->GetBoundsF().width, __pCheckButton->GetBoundsF().height);
2274 CheckButtonStyle checkStyle = __pCheckButton->GetCheckButtonStyle();
2276 if (checkStyle == CHECK_BUTTON_STYLE_MARK || checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_ONOFF
2277 || checkStyle == CHECK_BUTTON_STYLE_ONOFF_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_RADIO || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DIVIDER)
2279 if (bounds.width < minDimension.width )
2281 bounds.width = minDimension.width;
2284 if (bounds.height < minDimension.height )
2286 bounds.height = minDimension.height;
2291 if (bounds.width < minDimensionWithAnnex.width )
2293 bounds.width = minDimensionWithAnnex.width;
2296 if (bounds.height < minDimensionWithAnnex.height )
2298 bounds.height = minDimensionWithAnnex.height;
2302 __defaultButtonBounds.x = checkButtonLeftMargin;
2303 __defaultButtonBounds.y = (bounds.height - checkButtonBitmapHeight) / 2;
2304 __defaultButtonBounds.width = checkButtonBitmapWidth;
2305 __defaultButtonBounds.height = checkButtonBitmapHeight;
2307 __onOffSlidingButtonBounds.x = bounds.width - checkButtonLeftMargin - checkButtonOnOffSlidingBitmapWidth;
2308 __onOffSlidingButtonBounds.y = (bounds.height - checkButtonOnOffSlidingBitmapHeight) / 2;
2309 __onOffSlidingButtonBounds.width = checkButtonOnOffSlidingBitmapWidth;
2310 __onOffSlidingButtonBounds.height = checkButtonOnOffSlidingBitmapHeight;
2312 __detailedButtonBounds.x = bounds.width - checkButtonLeftMargin - checkButtonDetaieldBitmapWidth;
2313 __detailedButtonBounds.y = (bounds.height - checkButtonDetaieldBitmapHeight) / 2;
2314 __detailedButtonBounds.width = checkButtonDetaieldBitmapWidth;
2315 __detailedButtonBounds.height = checkButtonDetaieldBitmapHeight;
2321 _CheckButtonPresenter::GetTitleTextBoundsF(void) const
2323 return __titleTextBounds;
2327 _CheckButtonPresenter::GetTextBoundsF(void) const
2329 return __textBounds;
2333 _CheckButtonPresenter::GetDefaultButtonBoundsF(void) const
2335 return __defaultButtonBounds;
2339 _CheckButtonPresenter::GetOnOffSlidingButtonBoundsF(void) const
2341 return __onOffSlidingButtonBounds;
2345 _CheckButtonPresenter::GetDetailedButtonBoundsF(void) const
2347 return __detailedButtonBounds;
2351 _CheckButtonPresenter::StartCheckAnimationTimer(void)
2353 result r = E_SUCCESS;
2354 if (__pCheckAnimationTimer == null)
2356 __pCheckAnimationTimer = new (std::nothrow) Timer;
2357 SysTryReturn(NID_UI_CTRL, (__pCheckAnimationTimer != null), E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memroy allocation failed.");
2359 r = __pCheckAnimationTimer->Construct(*this);
2360 SysTryCatch(NID_UI, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
2364 __pCheckAnimationTimer->Cancel();
2367 __pCheckAnimationTimer->Start(CHECK_ACTION_TIMER_PERIOD);
2368 SysTryCatch(NID_UI, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
2372 ResetCheckAnimationTimer();
2377 _CheckButtonPresenter::ResetCheckAnimationTimer(void)
2379 delete __pCheckAnimationTimer;
2380 __pCheckAnimationTimer = null;
2386 _CheckButtonPresenter::OnTimerExpired(Timer& timer)
2390 if (__ratio <= RATIO_MAX)
2392 StartCheckAnimationTimer();
2393 DrawMarkAnimation();
2397 ResetCheckAnimationTimer();
2405 _CheckButtonPresenter::OnDrawFocus(void)
2411 _CheckButtonPresenter::OnChildControlFocusMoved(const _Control& control)
2417 _CheckButtonPresenter::IsChildControlFocusManage(void) const
2423 _CheckButtonPresenter::OnFocusableStateChanged(bool focusalbeState)
2429 _CheckButtonPresenter::OnFocusModeStateChanged(void)
2431 __pCheckButton->SetCheckButtonStatus(__focusPrevStatus);
2432 __pCheckButton->Invalidate();
2438 _CheckButtonPresenter::OnFocusGained(const _Control& source)
2440 //if (__pCheckButton->IsFocusModeStateEnabled() == true)
2442 __focusPrevStatus = __pCheckButton->GetCheckButtonStatus();
2443 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
2444 __pCheckButton->Invalidate();
2451 _CheckButtonPresenter::OnFocusLost(const _Control& source)
2453 __pCheckButton->SetCheckButtonStatus(__focusPrevStatus);
2454 __pCheckButton->Invalidate();
2459 _CheckButtonPresenter::DrawMarkAnimation(void)
2461 Canvas* pCanvas = __pCheckButton->GetCanvasN();
2462 if (pCanvas == null)
2464 SysLog(NID_UI_CTRL, "Cannot get a canvas.");
2469 _CheckButtonStatus checkStatus = __pCheckButton->GetCheckButtonStatus();
2471 if (checkStatus == _CHECK_BUTTON_STATUS_NORMAL)
2473 Bitmap* pMarkNormalBitmap = __pCheckButton->GetMarkBitmap(_CHECK_BUTTON_STATUS_NORMAL);
2475 if (__pCheckButton->IsSelected() && pMarkNormalBitmap)
2477 FloatRectangle sourceRect(0.0f, 0.0f, pMarkNormalBitmap->GetWidthF() * __ratio * 0.1, pMarkNormalBitmap->GetHeightF());
2478 FloatRectangle destRect(__defaultButtonBounds.x, __defaultButtonBounds.y, pMarkNormalBitmap->GetWidthF() * __ratio * 0.1, pMarkNormalBitmap->GetHeightF());
2480 pCanvas->DrawBitmap(destRect, *pMarkNormalBitmap, sourceRect);
2483 else if (checkStatus == _CHECK_BUTTON_STATUS_DISABLED)
2485 Bitmap* pMarkDisabledBitmap = __pCheckButton->GetMarkBitmap(_CHECK_BUTTON_STATUS_DISABLED);
2487 if (__pCheckButton->IsSelected() && pMarkDisabledBitmap)
2489 FloatRectangle sourceRect(0.0f, 0.0f, pMarkDisabledBitmap->GetWidthF() * __ratio * 0.1, pMarkDisabledBitmap->GetHeightF());
2490 FloatRectangle destRect(__defaultButtonBounds.x, __defaultButtonBounds.y, pMarkDisabledBitmap->GetWidthF() * __ratio * 0.1, pMarkDisabledBitmap->GetHeightF());
2492 pCanvas->DrawBitmap(destRect, *pMarkDisabledBitmap, sourceRect);
2495 else if (checkStatus == _CHECK_BUTTON_STATUS_PRESSED)
2497 Bitmap* pMarkPressedBitmap = __pCheckButton->GetMarkBitmap(_CHECK_BUTTON_STATUS_PRESSED);
2499 if (__pCheckButton->IsSelected() && pMarkPressedBitmap)
2501 FloatRectangle sourceRect(0.0f, 0.0f, pMarkPressedBitmap->GetWidthF() * __ratio * 0.1, pMarkPressedBitmap->GetHeightF());
2502 FloatRectangle destRect(__defaultButtonBounds.x, __defaultButtonBounds.y, pMarkPressedBitmap->GetWidthF() * __ratio * 0.1, pMarkPressedBitmap->GetHeightF());
2504 pCanvas->DrawBitmap(destRect, *pMarkPressedBitmap, sourceRect);
2507 else if (checkStatus == _CHECK_BUTTON_STATUS_HIGHLIGHTED)
2509 Bitmap* pMarkHighlightedBitmap = __pCheckButton->GetMarkBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
2511 if (__pCheckButton->IsSelected() && pMarkHighlightedBitmap)
2513 FloatRectangle sourceRect(0.0f, 0.0f, pMarkHighlightedBitmap->GetWidthF() * __ratio * 0.1, pMarkHighlightedBitmap->GetHeightF());
2514 FloatRectangle destRect(__defaultButtonBounds.x, __defaultButtonBounds.y, pMarkHighlightedBitmap->GetWidthF() * __ratio * 0.1, pMarkHighlightedBitmap->GetHeightF());
2516 pCanvas->DrawBitmap(destRect, *pMarkHighlightedBitmap, sourceRect);
2519 else if (checkStatus == _CHECK_BUTTON_STATUS_SELECTED)
2521 Bitmap* pMarkSelectedBitmap = __pCheckButton->GetMarkBitmap(_CHECK_BUTTON_STATUS_SELECTED);
2523 if (__pCheckButton->IsSelected() && pMarkSelectedBitmap)
2525 FloatRectangle sourceRect(0.0f, 0.0f, pMarkSelectedBitmap->GetWidthF() * __ratio * 0.1, pMarkSelectedBitmap->GetHeightF());
2526 FloatRectangle destRect(__defaultButtonBounds.x, __defaultButtonBounds.y, pMarkSelectedBitmap->GetWidthF() * __ratio * 0.1, pMarkSelectedBitmap->GetHeightF());
2528 pCanvas->DrawBitmap(destRect, *pMarkSelectedBitmap, sourceRect);
2537 }}} // Tizen::Ui::Controls