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;
581 delete pHighlightedReplacementColorBackgroundBitmap;
587 _CheckButtonPresenter::DrawCheckBitmap(void)
589 Canvas* pCanvas = __pCheckButton->GetCanvasN();
592 SysLog(NID_UI_CTRL, "Cannot get a canvas.");
597 Color detailedNormalBackgroundColor;
598 Color detailedDisabledBackgroundColor;
599 Color detailedPressedBackgroundColor;
600 Color detailedHighlightedBackgroundColor;
601 Color detailedSelectedBackgroundColor;
603 Color detailedRightNormalColor;
604 Color detailedRightDisabledColor;
605 Color detailedRightPressedColor;
606 Color detailedRightHighlightedColor;
607 Color detailedRightSelectedColor;
609 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_BG_NORMAL, detailedNormalBackgroundColor);
610 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_BG_DISABLED, detailedDisabledBackgroundColor);
611 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_BG_PRESSED, detailedPressedBackgroundColor);
612 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_BG_HIGHLIGHTED, detailedHighlightedBackgroundColor);
613 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_BG_SELECTED, detailedSelectedBackgroundColor);
615 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_TEXT_NORMAL, detailedRightNormalColor);
616 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_TEXT_DISABLED, detailedRightDisabledColor);
617 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_TEXT_PRESSED, detailedRightPressedColor);
618 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_TEXT_HIGHLIGHTED, detailedRightHighlightedColor);
619 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_TEXT_SELECTED, detailedRightSelectedColor);
621 Bitmap* pReplacementColorBackgroundBitmap = null;
622 Bitmap* pReplacementColorRightBitmap = null;
624 _CheckButtonStatus checkStatus = __pCheckButton->GetCheckButtonStatus();
625 CheckButtonStyle checkStyle = __pCheckButton->GetCheckButtonStyle();
627 CalculateButtonBounds();
629 if (checkStyle == CHECK_BUTTON_STYLE_MARK || checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON)
631 if (checkStatus == _CHECK_BUTTON_STATUS_NORMAL)
633 Bitmap* pMarkBgNormalBitmap = __pCheckButton->GetMarkBgBitmap(_CHECK_BUTTON_STATUS_NORMAL);
635 if (pMarkBgNormalBitmap)
637 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pMarkBgNormalBitmap);
640 if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON)
642 Bitmap* pCircleNormalBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_NORMAL);
643 Bitmap* pDetailedRightNormalBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_NORMAL);
645 if (pCircleNormalBitmap)
647 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedNormalBackgroundColor);
650 if (pDetailedRightNormalBitmap)
652 pReplacementColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightNormalColor);
655 if (pReplacementColorBackgroundBitmap)
657 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReplacementColorBackgroundBitmap);
660 if (pReplacementColorRightBitmap)
662 float arrowWidth = pReplacementColorRightBitmap->GetWidthF();
663 float arrowHeight = pReplacementColorRightBitmap->GetHeightF();
665 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
666 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReplacementColorRightBitmap);
669 bool themeBackgroundBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_NORMAL);
671 if (themeBackgroundBitmap == false)
673 Bitmap* pCircleNormalEffectBitmap = __pCheckButton->GetCircleNormalEffectBitmap();
675 if (pCircleNormalEffectBitmap)
677 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCircleNormalEffectBitmap);
682 else if (checkStatus == _CHECK_BUTTON_STATUS_DISABLED)
684 Bitmap* pMarkBgDisabledBitmap = __pCheckButton->GetMarkBgBitmap(_CHECK_BUTTON_STATUS_DISABLED);
686 if (pMarkBgDisabledBitmap)
688 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pMarkBgDisabledBitmap);
691 if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON)
693 Bitmap* pCircleDisabledBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_DISABLED);
694 Bitmap* pDetailedRightDisabledBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_DISABLED);
696 if (pCircleDisabledBitmap)
698 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleDisabledBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedDisabledBackgroundColor);
701 if (pDetailedRightDisabledBitmap)
703 pReplacementColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightDisabledBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightDisabledColor);
706 if (pReplacementColorBackgroundBitmap)
708 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReplacementColorBackgroundBitmap);
711 if (pReplacementColorRightBitmap)
713 float arrowWidth = pReplacementColorRightBitmap->GetWidthF();
714 float arrowHeight = pReplacementColorRightBitmap->GetHeightF();
716 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
717 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReplacementColorRightBitmap);
720 bool themeBackgroundBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_DISABLED);
722 if (themeBackgroundBitmap == false)
724 Bitmap* pCircleNormalEffectBitmap = __pCheckButton->GetCircleNormalEffectBitmap();
726 if (pCircleNormalEffectBitmap)
728 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCircleNormalEffectBitmap);
733 else if (checkStatus == _CHECK_BUTTON_STATUS_PRESSED)
735 Bitmap* pMarkBgPressedBitmap = __pCheckButton->GetMarkBgBitmap(_CHECK_BUTTON_STATUS_PRESSED);
737 if (pMarkBgPressedBitmap)
739 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pMarkBgPressedBitmap);
742 if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON)
744 Bitmap* pCirclePressedBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_PRESSED);
745 Bitmap* pDetailedRightPressedBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_PRESSED);
747 if (pCirclePressedBitmap)
749 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCirclePressedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedPressedBackgroundColor);
752 if (pDetailedRightPressedBitmap)
754 pReplacementColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightPressedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightPressedColor);
757 if (pReplacementColorBackgroundBitmap)
759 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReplacementColorBackgroundBitmap);
762 if (pReplacementColorRightBitmap)
764 float arrowWidth = pReplacementColorRightBitmap->GetWidthF();
765 float arrowHeight = pReplacementColorRightBitmap->GetHeightF();
767 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
768 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReplacementColorRightBitmap);
771 bool themeBackgroundBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_PRESSED);
773 if (themeBackgroundBitmap == false)
775 Bitmap* pCirclePressedEffectBitmap = __pCheckButton->GetCirclePressedEffectBitmap();
777 if (pCirclePressedEffectBitmap)
779 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCirclePressedEffectBitmap);
784 else if (checkStatus == _CHECK_BUTTON_STATUS_HIGHLIGHTED)
786 Bitmap* pMarkBgNormalBitmap = __pCheckButton->GetMarkBgBitmap(_CHECK_BUTTON_STATUS_NORMAL);
787 Bitmap* pMarkBgHighlightedBitmap = __pCheckButton->GetMarkBgBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
789 if (pMarkBgNormalBitmap)
791 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pMarkBgNormalBitmap);
794 if (pMarkBgHighlightedBitmap)
796 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pMarkBgHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedHighlightedBackgroundColor);
799 if (pReplacementColorBackgroundBitmap)
801 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pReplacementColorBackgroundBitmap);
804 if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON)
806 Bitmap* pCircleNormalBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_NORMAL);
807 Bitmap* pCircleHighlightedBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
808 Bitmap* pDetailedRightHighlightedBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
810 if (pCircleNormalBitmap)
812 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedNormalBackgroundColor);
815 if (pDetailedRightHighlightedBitmap)
817 pReplacementColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightHighlightedColor);
820 if (pReplacementColorBackgroundBitmap)
822 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReplacementColorBackgroundBitmap);
825 if (pReplacementColorRightBitmap)
827 float arrowWidth = pReplacementColorRightBitmap->GetWidthF();
828 float arrowHeight = pReplacementColorRightBitmap->GetHeightF();
830 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
831 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReplacementColorRightBitmap);
834 bool themeBackgroundBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_HIGHLIGHTED);
836 if (themeBackgroundBitmap == false)
838 Bitmap* pCirclePressedEffectBitmap = __pCheckButton->GetCirclePressedEffectBitmap();
840 if (pCirclePressedEffectBitmap)
842 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCirclePressedEffectBitmap);
846 if (pCircleHighlightedBitmap)
848 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedHighlightedBackgroundColor);
851 if (pReplacementColorBackgroundBitmap)
853 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReplacementColorBackgroundBitmap);
857 else if (checkStatus == _CHECK_BUTTON_STATUS_SELECTED)
859 Bitmap* pMarkBgSelectedBitmap = __pCheckButton->GetMarkBgBitmap(_CHECK_BUTTON_STATUS_SELECTED);
861 if (pMarkBgSelectedBitmap)
863 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pMarkBgSelectedBitmap);
866 if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON)
868 Bitmap* pCircleSelectedBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_SELECTED);
869 Bitmap* pDetailedRightSelectedBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_SELECTED);
871 if (pCircleSelectedBitmap)
873 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleSelectedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedSelectedBackgroundColor);
876 if (pDetailedRightSelectedBitmap)
878 pReplacementColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightSelectedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightSelectedColor);
881 if (pReplacementColorBackgroundBitmap)
883 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReplacementColorBackgroundBitmap);
886 if (pReplacementColorRightBitmap)
888 float arrowWidth = pReplacementColorRightBitmap->GetWidthF();
889 float arrowHeight = pReplacementColorRightBitmap->GetHeightF();
891 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
892 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReplacementColorRightBitmap);
895 bool themeBackgroundBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_SELECTED);
897 if (themeBackgroundBitmap == false)
899 Bitmap* pCircleNormalEffectBitmap = __pCheckButton->GetCircleNormalEffectBitmap();
901 if (pCircleNormalEffectBitmap)
903 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCircleNormalEffectBitmap);
911 else if (checkStyle == CHECK_BUTTON_STYLE_RADIO || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
913 if (checkStatus == _CHECK_BUTTON_STATUS_NORMAL)
915 if (checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
917 Bitmap* pCircleNormalBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_NORMAL);
918 Bitmap* pDetailedRightNormalBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_NORMAL);
920 if (pCircleNormalBitmap)
922 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedNormalBackgroundColor);
925 if (pDetailedRightNormalBitmap)
927 pReplacementColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightNormalColor);
930 if (pReplacementColorBackgroundBitmap)
932 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReplacementColorBackgroundBitmap);
935 if (pReplacementColorRightBitmap)
937 float arrowWidth = pReplacementColorRightBitmap->GetWidthF();
938 float arrowHeight = pReplacementColorRightBitmap->GetHeightF();
940 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
941 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReplacementColorRightBitmap);
944 bool themeBackgroundBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_NORMAL);
946 if (themeBackgroundBitmap == false)
948 Bitmap* pCircleNormalEffectBitmap = __pCheckButton->GetCircleNormalEffectBitmap();
950 if (pCircleNormalEffectBitmap)
952 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCircleNormalEffectBitmap);
957 else if (checkStatus == _CHECK_BUTTON_STATUS_DISABLED)
959 if (checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
961 Bitmap* pCircleDisabledBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_DISABLED);
962 Bitmap* pDetailedRightDisabledBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_DISABLED);
964 if (pCircleDisabledBitmap)
966 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleDisabledBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedDisabledBackgroundColor);
969 if (pDetailedRightDisabledBitmap)
971 pReplacementColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightDisabledBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightDisabledColor);
974 if (pReplacementColorBackgroundBitmap)
976 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReplacementColorBackgroundBitmap);
979 if (pReplacementColorRightBitmap)
981 float arrowWidth = pReplacementColorRightBitmap->GetWidthF();
982 float arrowHeight = pReplacementColorRightBitmap->GetHeightF();
984 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
985 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReplacementColorRightBitmap);
988 bool themeBackgroundBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_DISABLED);
990 if (themeBackgroundBitmap == false)
992 Bitmap* pCircleNormalEffectBitmap = __pCheckButton->GetCircleNormalEffectBitmap();
994 if (pCircleNormalEffectBitmap)
996 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCircleNormalEffectBitmap);
1001 else if (checkStatus == _CHECK_BUTTON_STATUS_PRESSED)
1003 if (checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
1005 Bitmap* pCirclePressedBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_PRESSED);
1006 Bitmap* pDetailedRightPressedBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_PRESSED);
1008 if (pCirclePressedBitmap)
1010 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCirclePressedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedPressedBackgroundColor);
1013 if (pDetailedRightPressedBitmap)
1015 pReplacementColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightPressedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightPressedColor);
1018 if (pReplacementColorBackgroundBitmap)
1020 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReplacementColorBackgroundBitmap);
1023 if (pReplacementColorRightBitmap)
1025 float arrowWidth = pReplacementColorRightBitmap->GetWidthF();
1026 float arrowHeight = pReplacementColorRightBitmap->GetHeightF();
1028 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
1029 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReplacementColorRightBitmap);
1032 bool themeBackgroundBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_PRESSED);
1034 if (themeBackgroundBitmap == false)
1036 Bitmap* pCirclePressedEffectBitmap = __pCheckButton->GetCirclePressedEffectBitmap();
1038 if (pCirclePressedEffectBitmap)
1040 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCirclePressedEffectBitmap);
1045 else if (checkStatus == _CHECK_BUTTON_STATUS_HIGHLIGHTED)
1047 if (checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
1049 Bitmap* pCircleNormalBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_NORMAL);
1050 Bitmap* pCircleHighlightedBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
1051 Bitmap* pDetailedRightHighlightedBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
1053 if (pCircleNormalBitmap)
1055 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedNormalBackgroundColor);
1058 if (pDetailedRightHighlightedBitmap)
1060 pReplacementColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightHighlightedColor);
1063 if (pReplacementColorBackgroundBitmap)
1065 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReplacementColorBackgroundBitmap);
1068 if (pReplacementColorRightBitmap)
1070 float arrowWidth = pReplacementColorRightBitmap->GetWidthF();
1071 float arrowHeight = pReplacementColorRightBitmap->GetHeightF();
1073 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
1074 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReplacementColorRightBitmap);
1077 bool themeBackgroundBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_HIGHLIGHTED);
1079 if (themeBackgroundBitmap == false)
1081 Bitmap* pCirclePressedEffectBitmap = __pCheckButton->GetCirclePressedEffectBitmap();
1083 if (pCirclePressedEffectBitmap)
1085 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCirclePressedEffectBitmap);
1089 if (pCircleHighlightedBitmap)
1091 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedHighlightedBackgroundColor);
1094 if (pReplacementColorBackgroundBitmap)
1096 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReplacementColorBackgroundBitmap);
1100 else if (checkStatus == _CHECK_BUTTON_STATUS_SELECTED)
1102 if (checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
1104 Bitmap* pCircleSelectedBitmap = __pCheckButton->GetCircleBitmap(_CHECK_BUTTON_STATUS_SELECTED);
1105 Bitmap* pDetailedRightSelectedBitmap = __pCheckButton->GetDetailedRightBitmap(_CHECK_BUTTON_STATUS_SELECTED);
1107 if (pCircleSelectedBitmap)
1109 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pCircleSelectedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedSelectedBackgroundColor);
1112 if (pDetailedRightSelectedBitmap)
1114 pReplacementColorRightBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDetailedRightSelectedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedRightSelectedColor);
1117 if (pReplacementColorBackgroundBitmap)
1119 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pReplacementColorBackgroundBitmap);
1122 if (pReplacementColorRightBitmap)
1124 float arrowWidth = pReplacementColorRightBitmap->GetWidthF();
1125 float arrowHeight = pReplacementColorRightBitmap->GetHeightF();
1127 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x + (__detailedButtonBounds.width - arrowWidth) / 2.0f
1128 , __detailedButtonBounds.y + (__detailedButtonBounds.height - arrowHeight) / 2.0f), *pReplacementColorRightBitmap);
1131 bool themeBackgroundBitmap = IS_CUSTOM_BITMAP(CHECKBUTTON::DETAILED_BG_SELECTED);
1133 if (themeBackgroundBitmap == false)
1135 Bitmap* pCircleNormalEffectBitmap = __pCheckButton->GetCircleNormalEffectBitmap();
1137 if (pCircleNormalEffectBitmap)
1139 pCanvas->DrawBitmap(FloatPoint(__detailedButtonBounds.x, __detailedButtonBounds.y), *pCircleNormalEffectBitmap);
1145 DrawMarkAnimation();
1147 else if (checkStyle == CHECK_BUTTON_STYLE_ONOFF || checkStyle == CHECK_BUTTON_STYLE_ONOFF_WITH_DIVIDER)
1149 if (checkStatus == _CHECK_BUTTON_STATUS_NORMAL)
1151 Bitmap* pOnOffBgNormalBitmap = __pCheckButton->GetOnOffBgBitmap(_CHECK_BUTTON_STATUS_NORMAL);
1153 if (pOnOffBgNormalBitmap)
1155 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffBgNormalBitmap);
1158 Bitmap* pOnOffNormalBitmap = __pCheckButton->GetOnOffBitmap(_CHECK_BUTTON_STATUS_NORMAL);
1160 if (__pCheckButton->IsSelected() && pOnOffNormalBitmap)
1162 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffNormalBitmap);
1165 else if (checkStatus == _CHECK_BUTTON_STATUS_DISABLED)
1167 Bitmap* pOnOffBgDisabledBitmap = __pCheckButton->GetOnOffBgBitmap(_CHECK_BUTTON_STATUS_DISABLED);
1169 if (pOnOffBgDisabledBitmap)
1171 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffBgDisabledBitmap);
1174 Bitmap* pOnOffDisabledBitmap = __pCheckButton->GetOnOffBitmap(_CHECK_BUTTON_STATUS_DISABLED);
1176 if (__pCheckButton->IsSelected() && pOnOffDisabledBitmap)
1178 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffDisabledBitmap);
1181 else if (checkStatus == _CHECK_BUTTON_STATUS_PRESSED)
1183 Bitmap* pOnOffBgPressedBitmap = __pCheckButton->GetOnOffBgBitmap(_CHECK_BUTTON_STATUS_PRESSED);
1185 if (pOnOffBgPressedBitmap)
1187 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffBgPressedBitmap);
1190 Bitmap* pOnOffPressedBitmap = __pCheckButton->GetOnOffBitmap(_CHECK_BUTTON_STATUS_PRESSED);
1192 if (__pCheckButton->IsSelected() && pOnOffPressedBitmap)
1194 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffPressedBitmap);
1197 else if (checkStatus == _CHECK_BUTTON_STATUS_HIGHLIGHTED)
1199 Bitmap* pOnOffBgNormalBitmap = __pCheckButton->GetOnOffBgBitmap(_CHECK_BUTTON_STATUS_NORMAL);
1200 Bitmap* pOnOffBgHighlightedBitmap = __pCheckButton->GetOnOffBgBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
1202 if (pOnOffBgNormalBitmap)
1204 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffBgNormalBitmap);
1207 Bitmap* pOnOffHighlightedBitmap = __pCheckButton->GetOnOffBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
1209 if (__pCheckButton->IsSelected() && pOnOffHighlightedBitmap)
1211 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffHighlightedBitmap);
1214 if (pOnOffBgHighlightedBitmap)
1216 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pOnOffBgHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA), detailedHighlightedBackgroundColor);
1219 if (pReplacementColorBackgroundBitmap)
1221 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pReplacementColorBackgroundBitmap);
1224 else if (checkStatus == _CHECK_BUTTON_STATUS_SELECTED)
1226 Bitmap* pOnOffBgSelectedBitmap = __pCheckButton->GetOnOffBgBitmap(_CHECK_BUTTON_STATUS_SELECTED);
1228 if (pOnOffBgSelectedBitmap)
1230 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffBgSelectedBitmap);
1233 Bitmap* pOnOffSelectedBitmap = __pCheckButton->GetOnOffBitmap(_CHECK_BUTTON_STATUS_SELECTED);
1235 if (__pCheckButton->IsSelected() && pOnOffSelectedBitmap)
1237 pCanvas->DrawBitmap(FloatPoint(__defaultButtonBounds.x, __defaultButtonBounds.y), *pOnOffSelectedBitmap);
1241 else if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING || checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
1243 float handlerWidth = 0.0f;
1244 GET_SHAPE_CONFIG(CHECKBUTTON::ONOFF_SLIDING_HANDLER_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, handlerWidth);
1245 DrawOnOffSlidingHandler(__onOffHandlerPosition - (handlerWidth / 2.0f));
1247 float dividerWidth = 0.0f;
1248 float dividerTopMargin = 0.0f;
1249 float dividerRightMargin = 0.0f;
1251 Color dividerLeftColor;
1252 Color dividerRightColor;
1253 FloatDimension minDimension(0.0f, 0.0f);
1255 GET_SHAPE_CONFIG(CHECKBUTTON::DIVIDER_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, dividerWidth);
1256 GET_SHAPE_CONFIG(CHECKBUTTON::DIVIDER_TOP_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, dividerTopMargin);
1257 GET_SHAPE_CONFIG(CHECKBUTTON::DIVIDER_RIGHT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, dividerRightMargin);
1258 GET_COLOR_CONFIG(HEADER::DIVIDER_LINE_LEFT_NORMAL, dividerLeftColor);
1259 GET_COLOR_CONFIG(HEADER::DIVIDER_LINE_RIGHT_NORMAL, dividerRightColor);
1261 GET_DIMENSION_CONFIG(CHECKBUTTON::MIN_DIMENSION, __pCheckButton->GetOrientation(), minDimension);
1263 FloatRectangle bounds(0.0f, 0.0f, __pCheckButton->GetBoundsF().width, __pCheckButton->GetBoundsF().height);
1265 if (bounds.height < minDimension.height )
1267 bounds.height = minDimension.height;
1270 if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
1272 pCanvas->SetForegroundColor(dividerLeftColor);
1273 pCanvas->SetLineWidth(dividerWidth/2);
1274 pCanvas->DrawLine(FloatPoint(__onOffSlidingButtonBounds.x - dividerRightMargin + dividerWidth/2, dividerTopMargin),
1275 FloatPoint(__onOffSlidingButtonBounds.x - dividerRightMargin + dividerWidth/2, dividerTopMargin + bounds.height - dividerTopMargin * 2));
1277 pCanvas->SetForegroundColor(dividerRightColor);
1278 pCanvas->SetLineWidth(dividerWidth/2);
1279 pCanvas->DrawLine(FloatPoint(__onOffSlidingButtonBounds.x - dividerRightMargin + dividerWidth, dividerTopMargin),
1280 FloatPoint(__onOffSlidingButtonBounds.x - dividerRightMargin + dividerWidth, dividerTopMargin + bounds.height - dividerTopMargin * 2));
1285 delete pReplacementColorBackgroundBitmap;
1286 delete pReplacementColorRightBitmap;
1292 _CheckButtonPresenter::DrawText(void)
1294 result r = E_SUCCESS;
1296 TextSimple* pSimpleText = null;
1297 TextSimple* pSimpleTitleText = null;
1298 TextObjectAlignment horizontalAlign = TEXT_OBJECT_ALIGNMENT_CENTER;
1299 TextObjectAlignment verticalAlign = TEXT_OBJECT_ALIGNMENT_MIDDLE;
1301 _CheckButtonStatus checkStatus = __pCheckButton->GetCheckButtonStatus();
1302 bool showTitle = __pCheckButton->GetShowTitle();
1304 Canvas* pCanvas = __pCheckButton->GetCanvasN();
1305 if (pCanvas == null)
1307 SysLog(NID_UI_CTRL, "Cannot get a canvas.");
1312 __pTextObject->RemoveAll(true);
1313 pSimpleText = new (std::nothrow) TextSimple(const_cast<wchar_t*>(__pCheckButton->GetText().GetPointer()), __pCheckButton->GetText().GetLength());
1314 __pTextObject->AppendElement(*pSimpleText);
1316 __pTitleTextObject->RemoveAll(true);
1317 pSimpleTitleText = new (std::nothrow) TextSimple(const_cast<wchar_t*>(__pCheckButton->GetTitleText().GetPointer()), __pCheckButton->GetTitleText().GetLength());
1318 __pTitleTextObject->AppendElement(*pSimpleTitleText);
1320 if (checkStatus == _CHECK_BUTTON_STATUS_NORMAL)
1322 __pTextObject->SetForegroundColor(__pCheckButton->GetTextColor(), 0, __pTextObject->GetTextLength());
1323 __pTitleTextObject->SetForegroundColor(__pCheckButton->GetTitleTextColor(), 0, __pTitleTextObject->GetTextLength());
1325 else if (checkStatus == _CHECK_BUTTON_STATUS_DISABLED)
1327 __pTextObject->SetForegroundColor(__pCheckButton->GetDisabledTextColor(), 0, __pTextObject->GetTextLength());
1328 __pTitleTextObject->SetForegroundColor(__pCheckButton->GetDisabledTitleTextColor(), 0, __pTitleTextObject->GetTextLength());
1330 else if (checkStatus == _CHECK_BUTTON_STATUS_PRESSED)
1332 __pTextObject->SetForegroundColor(__pCheckButton->GetPressedTextColor(), 0, __pTextObject->GetTextLength());
1333 __pTitleTextObject->SetForegroundColor(__pCheckButton->GetPressedTitleTextColor(), 0, __pTitleTextObject->GetTextLength());
1335 else if (checkStatus == _CHECK_BUTTON_STATUS_HIGHLIGHTED)
1337 __pTextObject->SetForegroundColor(__pCheckButton->GetHighlightedTextColor(), 0, __pTextObject->GetTextLength());
1338 __pTitleTextObject->SetForegroundColor(__pCheckButton->GetHighlightedTitleTextColor(), 0, __pTitleTextObject->GetTextLength());
1342 __pTextObject->SetForegroundColor(__pCheckButton->GetSelectedTextColor(), 0, __pTextObject->GetTextLength());
1343 __pTitleTextObject->SetForegroundColor(__pCheckButton->GetSelectedTitleTextColor(), 0, __pTitleTextObject->GetTextLength());
1346 CalculateTextBounds();
1347 CalculateTitleTextBounds();
1349 __pTextObject->SetWrap(TEXT_OBJECT_WRAP_TYPE_NONE);
1350 __pTextObject->SetAction(TEXT_OBJECT_ACTION_TYPE_ABBREV);
1351 __pTextObject->SetBounds(GetTextBoundsF());
1352 __pTextObject->Compose();
1354 __pTitleTextObject->SetWrap(TEXT_OBJECT_WRAP_TYPE_NONE);
1355 __pTitleTextObject->SetAction(TEXT_OBJECT_ACTION_TYPE_ABBREV);
1356 __pTitleTextObject->SetBounds(GetTitleTextBoundsF());
1357 __pTitleTextObject->Compose();
1359 switch (__pCheckButton->GetTextHorizontalAlignment())
1361 case ALIGNMENT_LEFT:
1362 horizontalAlign = TEXT_OBJECT_ALIGNMENT_LEFT;
1364 case ALIGNMENT_CENTER:
1365 horizontalAlign = TEXT_OBJECT_ALIGNMENT_CENTER;
1368 horizontalAlign = TEXT_OBJECT_ALIGNMENT_RIGHT;
1371 switch (__pCheckButton->GetTextVerticalAlignment())
1374 verticalAlign = TEXT_OBJECT_ALIGNMENT_TOP;
1376 case ALIGNMENT_MIDDLE:
1377 verticalAlign = TEXT_OBJECT_ALIGNMENT_MIDDLE;
1380 verticalAlign = TEXT_OBJECT_ALIGNMENT_BOTTOM;
1383 __fontSize = __pCheckButton->GetTextSizeF();
1384 __pTextFont = __pCheckButton->GetFallbackFont();
1385 r = GetLastResult();
1386 SysTryReturnVoidResult(NID_UI_CTRL, __pTextFont, r, "[%s] Propagating.", GetErrorMessage(r));
1388 __pTextObject->SetAlignment(horizontalAlign | verticalAlign);
1389 __pTextObject->SetFont(__pTextFont, 0, __pTextObject->GetTextLength());
1390 __pTextObject->Draw(*_CanvasImpl::GetInstance(*pCanvas));
1392 __fontSize = __pCheckButton->GetTitleTextSizeF();
1393 __pTitleTextFont = __pCheckButton->GetFallbackFont();
1394 r = GetLastResult();
1395 SysTryReturnVoidResult(NID_UI_CTRL, __pTitleTextFont, r, "[%s] Propagating.", GetErrorMessage(r));
1397 __pTitleTextObject->SetAlignment(TEXT_OBJECT_ALIGNMENT_LEFT | TEXT_OBJECT_ALIGNMENT_MIDDLE);
1398 __pTitleTextObject->SetFont(__pTitleTextFont, 0, __pTitleTextObject->GetTextLength());
1402 __pTitleTextObject->Draw(*_CanvasImpl::GetInstance(*pCanvas));
1411 _CheckButtonPresenter::OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo)
1413 if (&source != __pCheckButton)
1418 if (!__pCheckButton->IsEnabled())
1423 __touchMoveHandled = false;
1425 FloatPoint touchPoint = touchinfo.GetCurrentPosition();
1427 touchPoint.x += source.GetClientBoundsF().x;
1428 touchPoint.y += source.GetClientBoundsF().y;
1430 CheckButtonStyle checkStyle = __pCheckButton->GetCheckButtonStyle();
1432 if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING || checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
1434 if (__onOffSlidingButtonBounds.Contains(touchPoint))
1436 __onOffHandlerPressed = true;
1440 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_PRESSED);
1445 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_PRESSED);
1448 __pCheckButton->Invalidate();
1454 _CheckButtonPresenter::OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo)
1456 float checkButtonLeftMargin = 0.0f;
1457 float checkButtonDetailedBitmapWidth = 0.0f;
1458 float checkButtonOnOffSlidingBitmapWidth = 0.0f;
1459 float dividerRightMargin = 0.0f;
1461 GET_SHAPE_CONFIG(CHECKBUTTON::LEFT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, checkButtonLeftMargin);
1462 GET_SHAPE_CONFIG(CHECKBUTTON::DETAILED_BITMAP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, checkButtonDetailedBitmapWidth);
1463 GET_SHAPE_CONFIG(CHECKBUTTON::ONOFF_SLIDING_BITMAP_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, checkButtonOnOffSlidingBitmapWidth);
1464 GET_SHAPE_CONFIG(CHECKBUTTON::DIVIDER_RIGHT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, dividerRightMargin);
1466 if (&source != __pCheckButton)
1471 if (!__pCheckButton->IsEnabled())
1476 _CheckButtonStatus status = __pCheckButton->GetCheckButtonStatus();
1477 CheckButtonStyle checkStyle = __pCheckButton->GetCheckButtonStyle();
1479 if (status == _CHECK_BUTTON_STATUS_NORMAL && __onOffHandlerPressed == false)
1481 if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING || checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
1483 AdjustHandlerPosition();
1485 __onOffHandlerPressed = false;
1486 __onOffHandlerMoved = false;
1492 if (checkStyle == CHECK_BUTTON_STYLE_MARK || checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON
1493 || checkStyle == CHECK_BUTTON_STYLE_RADIO || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DIVIDER || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
1495 StartCheckAnimationTimer();
1499 FloatPoint touchPoint = touchinfo.GetCurrentPosition();
1501 touchPoint.x += source.GetClientBoundsF().x;
1502 touchPoint.y += source.GetClientBoundsF().y;
1504 FloatRectangle bounds = __pCheckButton->GetClientBoundsF();
1505 FloatRectangle detailedBounds = __pCheckButton->GetClientBoundsF();
1507 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_NORMAL);
1508 __pCheckButton->Invalidate();
1510 if (checkStyle == CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON || checkStyle == CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON)
1512 detailedBounds.width = detailedBounds.width - checkButtonLeftMargin - checkButtonDetailedBitmapWidth;
1514 if (detailedBounds.Contains(touchPoint))
1516 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP, __pCheckButton);
1518 __pCheckButton->FireActionEvent();
1520 if (__pCheckButton->GetRadioGroup() != null)
1522 __pCheckButton->SendTouchReleasedEvent(*__pCheckButton);
1526 else if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
1528 detailedBounds.width = detailedBounds.width - checkButtonLeftMargin - checkButtonOnOffSlidingBitmapWidth - dividerRightMargin;
1530 if (!detailedBounds.Contains(touchPoint))
1532 if (__onOffHandlerMoved == false)
1534 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP, __pCheckButton);
1536 __pCheckButton->FireActionEvent();
1538 if (__pCheckButton->GetRadioGroup() != null)
1540 __pCheckButton->SendTouchReleasedEvent(*__pCheckButton);
1545 AdjustHandlerPosition();
1547 __onOffHandlerPressed = false;
1548 __onOffHandlerMoved = false;
1550 else if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING)
1552 if (bounds.Contains(touchPoint))
1554 if (__onOffHandlerMoved == false)
1556 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP, __pCheckButton);
1558 __pCheckButton->FireActionEvent();
1560 if (__pCheckButton->GetRadioGroup() != null)
1562 __pCheckButton->SendTouchReleasedEvent(*__pCheckButton);
1567 AdjustHandlerPosition();
1569 __onOffHandlerPressed = false;
1570 __onOffHandlerMoved = false;
1574 if (bounds.Contains(touchPoint))
1576 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP, __pCheckButton);
1578 __pCheckButton->FireActionEvent();
1580 if (__pCheckButton->GetRadioGroup() != null)
1582 __pCheckButton->SendTouchReleasedEvent(*__pCheckButton);
1591 _CheckButtonPresenter::InitOnOffHandlerMoved(void)
1593 __onOffHandlerMoved = false;
1599 _CheckButtonPresenter::AdjustHandlerPosition(void)
1601 float handlerWidth = 0.0f;
1602 GET_SHAPE_CONFIG(CHECKBUTTON::ONOFF_SLIDING_HANDLER_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, handlerWidth);
1604 if (__onOffHandlerMoved == false)
1606 if (!__pCheckButton->IsSelected())
1608 __onOffHandlerPosition = __onOffSlidingButtonBounds.x;
1612 __onOffHandlerPosition = __onOffSlidingButtonBounds.x + __onOffSlidingButtonBounds.width - (handlerWidth / 2.0f);
1617 if (!__pCheckButton->IsSelected())
1619 if (__onOffHandlerPosition < __onOffSlidingButtonBounds.x + (__onOffSlidingButtonBounds.width / 2.0f))
1621 __onOffHandlerPosition = __onOffSlidingButtonBounds.x;
1625 __onOffHandlerPosition = __onOffSlidingButtonBounds.x + __onOffSlidingButtonBounds.width - (handlerWidth / 2.0f);
1627 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP, __pCheckButton);
1629 __pCheckButton->FireActionEvent();
1631 if (__pCheckButton->GetRadioGroup() != null)
1633 __pCheckButton->SendTouchReleasedEvent(*__pCheckButton);
1639 if (__onOffHandlerPosition < __onOffSlidingButtonBounds.x + (__onOffSlidingButtonBounds.width / 2.0f))
1641 __onOffHandlerPosition = __onOffSlidingButtonBounds.x;
1643 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP, __pCheckButton);
1645 __pCheckButton->FireActionEvent();
1647 if (__pCheckButton->GetRadioGroup() != null)
1649 __pCheckButton->SendTouchReleasedEvent(*__pCheckButton);
1654 __onOffHandlerPosition = __onOffSlidingButtonBounds.x + __onOffSlidingButtonBounds.width - (handlerWidth / 2.0f);
1659 __pCheckButton->Invalidate();
1665 _CheckButtonPresenter::OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo)
1667 if (&source != __pCheckButton)
1672 if (!__pCheckButton->IsEnabled())
1677 FloatPoint touchPoint = touchinfo.GetCurrentPosition();
1679 touchPoint.x += source.GetClientBoundsF().x;
1680 touchPoint.y += source.GetClientBoundsF().y;
1682 FloatRectangle bounds = __pCheckButton->GetClientBoundsF();
1683 bool isInCheckButtonArea = bounds.Contains(touchPoint);
1684 bool isInOnOffHandlerArea = __onOffSlidingButtonBounds.Contains(touchPoint);
1686 if (__onOffHandlerPressed == true)
1688 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_NORMAL);
1692 if (isInCheckButtonArea == true && __touchMoveHandled == false && isInOnOffHandlerArea == false )
1694 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_PRESSED);
1698 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_NORMAL);
1702 CheckButtonStyle checkStyle = __pCheckButton->GetCheckButtonStyle();
1704 if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING || checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
1706 if (isInOnOffHandlerArea == true && __onOffHandlerPressed == true)
1708 __onOffHandlerPosition = touchPoint.x;
1710 __onOffHandlerMoved = true;
1714 __pCheckButton->Invalidate();
1716 if (__onOffHandlerMoved == true)
1727 _CheckButtonPresenter::DrawOnOffSlidingHandler(float handlerPosition)
1729 Canvas* pCanvas = __pCheckButton->GetCanvasN();
1730 if (pCanvas == null)
1732 SysLog(NID_UI_CTRL, "Cannot get a canvas.");
1737 Bitmap* pReplacementColorBackgroundBitmap = null;
1739 Color detailedHighlightedBackgroundColor;
1740 GET_COLOR_CONFIG(CHECKBUTTON::DETAILED_ICON_BG_HIGHLIGHTED, detailedHighlightedBackgroundColor);
1742 float handlerMargin = 0.0f;
1743 float handlerWidth = 0.0f;
1745 _CheckButtonStatus checkStatus = __pCheckButton->GetCheckButtonStatus();
1747 GET_SHAPE_CONFIG(CHECKBUTTON::ONOFF_SLIDING_HANDLER_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, handlerMargin);
1748 GET_SHAPE_CONFIG(CHECKBUTTON::ONOFF_SLIDING_HANDLER_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, handlerWidth);
1750 if (handlerPosition < __onOffSlidingButtonBounds.x)
1752 handlerPosition = __onOffSlidingButtonBounds.x;
1755 if (handlerPosition > __onOffSlidingButtonBounds.x + __onOffSlidingButtonBounds.width - handlerWidth)
1757 handlerPosition = __onOffSlidingButtonBounds.x + __onOffSlidingButtonBounds.width - handlerWidth;
1760 if (!__pCheckButton->IsSelected())
1762 if (checkStatus == _CHECK_BUTTON_STATUS_NORMAL)
1764 Bitmap* pOnOffSlidingNormalBgBitmap = __pCheckButton->GetOnOffSlidingBgBitmap(_CHECK_BUTTON_STATUS_NORMAL);
1766 if (pOnOffSlidingNormalBgBitmap)
1768 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingNormalBgBitmap);
1771 Bitmap* pOnOffSlidingOffHandlerNormalBitmap = __pCheckButton->GetOnOffSlidingOffHandlerBitmap(_CHECK_BUTTON_STATUS_NORMAL);
1773 if (pOnOffSlidingOffHandlerNormalBitmap)
1775 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingOffHandlerNormalBitmap);
1778 else if (checkStatus == _CHECK_BUTTON_STATUS_DISABLED)
1780 Bitmap* pOnOffSlidingDisabledBgBitmap = __pCheckButton->GetOnOffSlidingBgBitmap(_CHECK_BUTTON_STATUS_DISABLED);
1782 if (pOnOffSlidingDisabledBgBitmap)
1784 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingDisabledBgBitmap);
1787 Bitmap* pOnOffSlidingOffHandlerDisabledBitmap = __pCheckButton->GetOnOffSlidingOffHandlerBitmap(_CHECK_BUTTON_STATUS_DISABLED);
1789 if (pOnOffSlidingOffHandlerDisabledBitmap)
1791 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingOffHandlerDisabledBitmap);
1794 else if (checkStatus == _CHECK_BUTTON_STATUS_PRESSED)
1796 Bitmap* pOnOffSlidingPressedBgBitmap = __pCheckButton->GetOnOffSlidingBgBitmap(_CHECK_BUTTON_STATUS_PRESSED);
1798 if (pOnOffSlidingPressedBgBitmap)
1800 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingPressedBgBitmap);
1803 Bitmap* pOnOffSlidingOffHandlerPressedBitmap = __pCheckButton->GetOnOffSlidingOffHandlerBitmap(_CHECK_BUTTON_STATUS_PRESSED);
1805 if (pOnOffSlidingOffHandlerPressedBitmap)
1807 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingOffHandlerPressedBitmap);
1810 else if (checkStatus == _CHECK_BUTTON_STATUS_HIGHLIGHTED)
1812 Bitmap* pOnOffSlidingHighlightedBgBitmap = __pCheckButton->GetOnOffSlidingBgBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
1814 if (pOnOffSlidingHighlightedBgBitmap)
1816 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingHighlightedBgBitmap);
1819 Bitmap* pOnOffSlidingOffHandlerNormalBitmap = __pCheckButton->GetOnOffSlidingOffHandlerBitmap(_CHECK_BUTTON_STATUS_NORMAL);
1821 if (pOnOffSlidingOffHandlerNormalBitmap)
1823 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingOffHandlerNormalBitmap);
1826 Bitmap* pOnOffSlidingOffHandlerHighlightedBitmap = __pCheckButton->GetOnOffSlidingOffHandlerBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
1828 if (pOnOffSlidingOffHandlerHighlightedBitmap)
1830 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pOnOffSlidingOffHandlerHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA),
1831 detailedHighlightedBackgroundColor);
1834 if (pReplacementColorBackgroundBitmap)
1836 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pReplacementColorBackgroundBitmap);
1839 else if (checkStatus == _CHECK_BUTTON_STATUS_SELECTED)
1841 Bitmap* pOnOffSlidingSelectedBgBitmap = __pCheckButton->GetOnOffSlidingBgBitmap(_CHECK_BUTTON_STATUS_SELECTED);
1843 if (pOnOffSlidingSelectedBgBitmap)
1845 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingSelectedBgBitmap);
1848 Bitmap* pOnOffSlidingOffHandlerSelectedBitmap = __pCheckButton->GetOnOffSlidingOffHandlerBitmap(_CHECK_BUTTON_STATUS_SELECTED);
1850 if (pOnOffSlidingOffHandlerSelectedBitmap)
1852 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingOffHandlerSelectedBitmap);
1858 if (checkStatus == _CHECK_BUTTON_STATUS_NORMAL)
1860 Bitmap* pOnOffSlidingNormalBgBitmap = __pCheckButton->GetOnOffSlidingBgBitmap(_CHECK_BUTTON_STATUS_NORMAL);
1862 if (pOnOffSlidingNormalBgBitmap)
1864 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingNormalBgBitmap);
1867 Bitmap* pOnOffSlidingOnHandlerNormalBitmap = __pCheckButton->GetOnOffSlidingOnHandlerBitmap(_CHECK_BUTTON_STATUS_NORMAL);
1869 if (pOnOffSlidingOnHandlerNormalBitmap)
1871 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingOnHandlerNormalBitmap);
1874 else if (checkStatus == _CHECK_BUTTON_STATUS_DISABLED)
1876 Bitmap* pOnOffSlidingDisabledBgBitmap = __pCheckButton->GetOnOffSlidingBgBitmap(_CHECK_BUTTON_STATUS_DISABLED);
1878 if (pOnOffSlidingDisabledBgBitmap)
1880 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingDisabledBgBitmap);
1883 Bitmap* pOnOffSlidingOnHandlerDisabledBitmap = __pCheckButton->GetOnOffSlidingOnHandlerBitmap(_CHECK_BUTTON_STATUS_DISABLED);
1885 if (pOnOffSlidingOnHandlerDisabledBitmap)
1887 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingOnHandlerDisabledBitmap);
1890 else if (checkStatus == _CHECK_BUTTON_STATUS_PRESSED)
1892 Bitmap* pOnOffSlidingPressedBgBitmap = __pCheckButton->GetOnOffSlidingBgBitmap(_CHECK_BUTTON_STATUS_PRESSED);
1894 if (pOnOffSlidingPressedBgBitmap)
1896 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingPressedBgBitmap);
1899 Bitmap* pOnOffSlidingOnHandlerPressedBitmap = __pCheckButton->GetOnOffSlidingOnHandlerBitmap(_CHECK_BUTTON_STATUS_PRESSED);
1901 if (pOnOffSlidingOnHandlerPressedBitmap)
1903 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingOnHandlerPressedBitmap);
1906 else if (checkStatus == _CHECK_BUTTON_STATUS_HIGHLIGHTED)
1908 Bitmap* pOnOffSlidingHighlightedBgBitmap = __pCheckButton->GetOnOffSlidingBgBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
1910 if (pOnOffSlidingHighlightedBgBitmap)
1912 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingHighlightedBgBitmap);
1915 Bitmap* pOnOffSlidingOnHandlerNormalBitmap = __pCheckButton->GetOnOffSlidingOnHandlerBitmap(_CHECK_BUTTON_STATUS_NORMAL);
1917 if (pOnOffSlidingOnHandlerNormalBitmap)
1919 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingOnHandlerNormalBitmap);
1922 Bitmap* pOnOffSlidingOnHandlerHighlightedBitmap = __pCheckButton->GetOnOffSlidingOnHandlerBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
1924 if (pOnOffSlidingOnHandlerHighlightedBitmap)
1926 pReplacementColorBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pOnOffSlidingOnHandlerHighlightedBitmap, Color::GetColor(COLOR_ID_MAGENTA),
1927 detailedHighlightedBackgroundColor);
1930 if (pReplacementColorBackgroundBitmap)
1932 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pReplacementColorBackgroundBitmap);
1935 else if (checkStatus == _CHECK_BUTTON_STATUS_SELECTED)
1937 Bitmap* pOnOffSlidingSelectedBgBitmap = __pCheckButton->GetOnOffSlidingBgBitmap(_CHECK_BUTTON_STATUS_SELECTED);
1939 if (pOnOffSlidingSelectedBgBitmap)
1941 pCanvas->DrawBitmap(FloatPoint(__onOffSlidingButtonBounds.x, __onOffSlidingButtonBounds.y), *pOnOffSlidingSelectedBgBitmap);
1944 Bitmap* pOnOffSlidingOnHandlerSelectedBitmap = __pCheckButton->GetOnOffSlidingOnHandlerBitmap(_CHECK_BUTTON_STATUS_SELECTED);
1946 if (pOnOffSlidingOnHandlerSelectedBitmap)
1948 pCanvas->DrawBitmap(FloatPoint(handlerPosition, __onOffSlidingButtonBounds.y - handlerMargin), *pOnOffSlidingOnHandlerSelectedBitmap);
1954 delete pReplacementColorBackgroundBitmap;
1960 _CheckButtonPresenter::OnTouchCanceled(const _Control& source, const _TouchInfo& touchinfo)
1962 if (&source != __pCheckButton)
1967 if (!__pCheckButton->IsEnabled())
1972 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_NORMAL);
1973 __pCheckButton->Invalidate();
1979 _CheckButtonPresenter::OnTouchMoveHandled(const _Control& control)
1981 __touchMoveHandled = true;
1982 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_NORMAL);
1983 __pCheckButton->Invalidate();
1989 _CheckButtonPresenter::OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo)
1995 _CheckButtonPresenter::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
1997 _KeyCode keyCode = keyInfo.GetKeyCode();
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, __pCheckButton);
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)
2407 if (__pCheckButton->IsFocusModeStateEnabled() == false)
2409 __focusPrevStatus = __pCheckButton->GetCheckButtonStatus();
2411 if (__pCheckButton->GetCheckButtonStatus() != _CHECK_BUTTON_STATUS_DISABLED)
2413 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
2414 __pCheckButton->Invalidate();
2422 _CheckButtonPresenter::OnChildControlFocusMoved(const _Control& control)
2428 _CheckButtonPresenter::IsChildControlFocusManage(void) const
2434 _CheckButtonPresenter::OnFocusableStateChanged(bool focusalbeState)
2440 _CheckButtonPresenter::OnFocusModeStateChanged(void)
2442 if (__pCheckButton->GetCheckButtonStatus() != _CHECK_BUTTON_STATUS_DISABLED)
2444 __pCheckButton->SetCheckButtonStatus(__focusPrevStatus);
2445 __pCheckButton->Invalidate();
2452 _CheckButtonPresenter::OnFocusGained(const _Control& source)
2454 if (__pCheckButton->IsFocusModeStateEnabled() == true)
2456 __focusPrevStatus = __pCheckButton->GetCheckButtonStatus();
2458 if (__pCheckButton->GetCheckButtonStatus() != _CHECK_BUTTON_STATUS_DISABLED)
2460 __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
2461 __pCheckButton->Invalidate();
2469 _CheckButtonPresenter::OnFocusLost(const _Control& source)
2471 if (__pCheckButton->GetCheckButtonStatus() != _CHECK_BUTTON_STATUS_DISABLED)
2473 __pCheckButton->SetCheckButtonStatus(__focusPrevStatus);
2474 __pCheckButton->Invalidate();
2480 _CheckButtonPresenter::DrawMarkAnimation(void)
2482 Canvas* pCanvas = __pCheckButton->GetCanvasN();
2483 if (pCanvas == null)
2485 SysLog(NID_UI_CTRL, "Cannot get a canvas.");
2490 _CheckButtonStatus checkStatus = __pCheckButton->GetCheckButtonStatus();
2492 if (checkStatus == _CHECK_BUTTON_STATUS_NORMAL)
2494 Bitmap* pMarkNormalBitmap = __pCheckButton->GetMarkBitmap(_CHECK_BUTTON_STATUS_NORMAL);
2496 if (__pCheckButton->IsSelected() && pMarkNormalBitmap)
2498 FloatRectangle sourceRect(0.0f, 0.0f, pMarkNormalBitmap->GetWidthF() * __ratio * 0.1, pMarkNormalBitmap->GetHeightF());
2499 FloatRectangle destRect(__defaultButtonBounds.x, __defaultButtonBounds.y, pMarkNormalBitmap->GetWidthF() * __ratio * 0.1, pMarkNormalBitmap->GetHeightF());
2501 pCanvas->DrawBitmap(destRect, *pMarkNormalBitmap, sourceRect);
2504 else if (checkStatus == _CHECK_BUTTON_STATUS_DISABLED)
2506 Bitmap* pMarkDisabledBitmap = __pCheckButton->GetMarkBitmap(_CHECK_BUTTON_STATUS_DISABLED);
2508 if (__pCheckButton->IsSelected() && pMarkDisabledBitmap)
2510 FloatRectangle sourceRect(0.0f, 0.0f, pMarkDisabledBitmap->GetWidthF() * __ratio * 0.1, pMarkDisabledBitmap->GetHeightF());
2511 FloatRectangle destRect(__defaultButtonBounds.x, __defaultButtonBounds.y, pMarkDisabledBitmap->GetWidthF() * __ratio * 0.1, pMarkDisabledBitmap->GetHeightF());
2513 pCanvas->DrawBitmap(destRect, *pMarkDisabledBitmap, sourceRect);
2516 else if (checkStatus == _CHECK_BUTTON_STATUS_PRESSED)
2518 Bitmap* pMarkPressedBitmap = __pCheckButton->GetMarkBitmap(_CHECK_BUTTON_STATUS_PRESSED);
2520 if (__pCheckButton->IsSelected() && pMarkPressedBitmap)
2522 FloatRectangle sourceRect(0.0f, 0.0f, pMarkPressedBitmap->GetWidthF() * __ratio * 0.1, pMarkPressedBitmap->GetHeightF());
2523 FloatRectangle destRect(__defaultButtonBounds.x, __defaultButtonBounds.y, pMarkPressedBitmap->GetWidthF() * __ratio * 0.1, pMarkPressedBitmap->GetHeightF());
2525 pCanvas->DrawBitmap(destRect, *pMarkPressedBitmap, sourceRect);
2528 else if (checkStatus == _CHECK_BUTTON_STATUS_HIGHLIGHTED)
2530 Bitmap* pMarkHighlightedBitmap = __pCheckButton->GetMarkBitmap(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
2532 if (__pCheckButton->IsSelected() && pMarkHighlightedBitmap)
2534 FloatRectangle sourceRect(0.0f, 0.0f, pMarkHighlightedBitmap->GetWidthF() * __ratio * 0.1, pMarkHighlightedBitmap->GetHeightF());
2535 FloatRectangle destRect(__defaultButtonBounds.x, __defaultButtonBounds.y, pMarkHighlightedBitmap->GetWidthF() * __ratio * 0.1, pMarkHighlightedBitmap->GetHeightF());
2537 pCanvas->DrawBitmap(destRect, *pMarkHighlightedBitmap, sourceRect);
2540 else if (checkStatus == _CHECK_BUTTON_STATUS_SELECTED)
2542 Bitmap* pMarkSelectedBitmap = __pCheckButton->GetMarkBitmap(_CHECK_BUTTON_STATUS_SELECTED);
2544 if (__pCheckButton->IsSelected() && pMarkSelectedBitmap)
2546 FloatRectangle sourceRect(0.0f, 0.0f, pMarkSelectedBitmap->GetWidthF() * __ratio * 0.1, pMarkSelectedBitmap->GetHeightF());
2547 FloatRectangle destRect(__defaultButtonBounds.x, __defaultButtonBounds.y, pMarkSelectedBitmap->GetWidthF() * __ratio * 0.1, pMarkSelectedBitmap->GetHeightF());
2549 pCanvas->DrawBitmap(destRect, *pMarkSelectedBitmap, sourceRect);
2558 }}} // Tizen::Ui::Controls