2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Flora License, Version 1.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://floralicense.org/license/
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_Button.cpp
19 * @brief This is the implementation file for the _Button class.
22 #include <FBaseErrorDefine.h>
23 #include <FBaseSysLog.h>
24 #include <FGrp_BitmapImpl.h>
25 #include "FUi_AccessibilityContainer.h"
26 #include "FUi_AccessibilityElement.h"
27 #include "FUi_AccessibilityManager.h"
28 #include "FUi_ResourceManager.h"
29 #include "FUi_UiTouchEvent.h"
30 #include "FUiCtrl_Button.h"
31 #include "FUiCtrl_ButtonPresenter.h"
34 using namespace Tizen::Base;
35 using namespace Tizen::Base::Runtime;
36 using namespace Tizen::Graphics;
37 using namespace Tizen::Graphics::_Text;
39 namespace Tizen { namespace Ui { namespace Controls
42 IMPLEMENT_PROPERTY(_Button);
45 : __pButtonPresenter(null)
46 , __pActionEvent(null)
49 , __horizontalAlignment(ALIGNMENT_CENTER)
50 , __verticalAlignment(ALIGNMENT_MIDDLE)
51 , __buttonStatus(_BUTTON_STATUS_NORMAL)
52 , __buttonStyle(_BUTTON_STYLE_NORMAL)
55 , __parentMoveDistance(0)
56 , __previousTouchArea(false)
57 , __userDefinedText(false)
61 , __userDefinedTextArea(0,0,0,0)
62 , __pTextElement(null)
66 _AccessibilityContainer* pContainer = null;
68 GET_SHAPE_CONFIG(BUTTON::DEFAULT_FONT_SIZE, _CONTROL_ORIENTATION_PORTRAIT, __textSize);
70 _ButtonPresenter* pPresenter = new (std::nothrow) _ButtonPresenter();
71 SysTryReturnVoidResult(NID_UI_CTRL, pPresenter, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
73 r = SetPresenter(*pPresenter);
74 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] A system error occurred.");
76 r = pPresenter->Construct(*this);
77 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] A system error occurred.");
79 r = pPresenter->Install();
80 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] A system error occurred.");
82 for (int i = 0; i < NUMBER_OF_BUTTON_STATUS; i++)
85 __pToolbarItemBackgroundBitmap[i] = null;
86 __pBackgroundBitmap[i] = null;
87 __pBackgroundEffectBitmap[i] = null;
88 __isUserBackgroundBitmap[i] = false;
89 __isUserBackgroundEffectBitmap[i] = false;
92 __pToolbarSelectedBitmap = null;
94 GET_COLOR_CONFIG(BUTTON::BG_NORMAL, __color[_BUTTON_STATUS_NORMAL]);
95 GET_COLOR_CONFIG(BUTTON::BG_DISABLED, __color[_BUTTON_STATUS_DISABLED]);
96 GET_COLOR_CONFIG(BUTTON::BG_PRESSED, __color[_BUTTON_STATUS_PRESSED]);
97 GET_COLOR_CONFIG(BUTTON::BG_HIGHLIGHTED, __color[_BUTTON_STATUS_HIGHLIGHTED]);
98 GET_COLOR_CONFIG(BUTTON::BG_PRESSED, __color[_BUTTON_STATUS_SELECTED]);
100 GET_COLOR_CONFIG(BUTTON::TEXT_NORMAL, __textColor[_BUTTON_STATUS_NORMAL]);
101 GET_COLOR_CONFIG(BUTTON::TEXT_DISABLED, __textColor[_BUTTON_STATUS_DISABLED]);
102 GET_COLOR_CONFIG(BUTTON::TEXT_PRESSED, __textColor[_BUTTON_STATUS_PRESSED]);
103 GET_COLOR_CONFIG(BUTTON::TEXT_HIGHLIGHTED, __textColor[_BUTTON_STATUS_HIGHLIGHTED]);
104 GET_COLOR_CONFIG(BUTTON::TEXT_PRESSED, __textColor[_BUTTON_STATUS_SELECTED]);
106 GET_SHAPE_CONFIG(BUTTON::TOP_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, __topMargin);
107 GET_SHAPE_CONFIG(BUTTON::LEFT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, __leftMargin);
109 AddPropertyChangeEventListener(*this);
111 pContainer = GetAccessibilityContainer();
115 pContainer->Activate(true);
127 _Button::CreateButtonN(void)
129 _Button* pButton = new (std::nothrow) _Button();
130 SysTryReturn(NID_UI_CTRL, pButton, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
131 SysTryCatch(NID_UI_CTRL, GetLastResult() == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] A system error occurred.");
133 pButton->AcquireHandle();
142 _Button::~_Button(void)
144 if (__pButtonPresenter)
146 delete __pButtonPresenter;
147 __pButtonPresenter = null;
152 delete __pActionEvent;
153 __pActionEvent = null;
156 for (int i = 0; i < NUMBER_OF_BUTTON_STATUS; i++)
164 if (__pToolbarItemBackgroundBitmap[i])
166 delete __pToolbarItemBackgroundBitmap[i];
167 __pToolbarItemBackgroundBitmap[i] = null;
170 if (__pBackgroundBitmap[i])
172 delete __pBackgroundBitmap[i];
173 __pBackgroundBitmap[i] = null;
176 if (__pBackgroundEffectBitmap[i])
178 delete __pBackgroundEffectBitmap[i];
179 __pBackgroundEffectBitmap[i] = null;
183 if (__pToolbarSelectedBitmap)
185 delete __pToolbarSelectedBitmap;
186 __pToolbarSelectedBitmap = null;
191 __pTextElement->Activate(false);
192 __pTextElement = null;
199 _Button::SetPresenter(const _ButtonPresenter& buttonPresenter)
201 __pButtonPresenter = const_cast<_ButtonPresenter*>(&buttonPresenter);
207 _Button::OnDraw(void)
209 __pButtonPresenter->Draw();
215 _Button::OnAttachedToMainTree(void)
217 InitializeAccessibilityElement();
223 _Button::InitializeAccessibilityElement(void)
230 _AccessibilityContainer* pContainer = GetAccessibilityContainer();
234 __pTextElement = new (std::nothrow) _AccessibilityElement(true);
235 SysTryReturnVoidResult(NID_UI_CTRL, __pTextElement, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory shortage.");
237 __pTextElement->SetBounds(Rectangle(0,0, GetBounds().width, GetBounds().height));
238 __pTextElement->SetLabel(GetText());
239 __pTextElement->SetTrait(ACCESSIBILITY_TRAITS_BUTTON);
240 __pTextElement->SetName(L"ButtonText");
242 pContainer->AddElement(*__pTextElement);
249 _Button::OnPropertyChanging(_PropertyBase& source, const String& name, const Variant& oldValue, const Variant& newValue)
255 _Button::OnPropertyChanged(_PropertyBase& source, const String& name, const Variant& oldValue, const Variant& newValue)
261 _Button::OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo)
263 return __pButtonPresenter->OnTouchPressed(source, touchinfo);
267 _Button::OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo)
269 return __pButtonPresenter->OnTouchReleased(source, touchinfo);
273 _Button::OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo)
275 return __pButtonPresenter->OnTouchMoved(source, touchinfo);
279 _Button::OnTouchCanceled(const _Control & source, const _TouchInfo & touchinfo)
281 return __pButtonPresenter->OnTouchCanceled(source, touchinfo);
285 _Button::OnTouchMoveHandled(const _Control& control)
287 __pButtonPresenter->OnTouchMoveHandled(control);
293 _Button::OnBoundsChanged(void)
297 __pTextElement->SetBounds(Rectangle(0,0, GetBounds().width, GetBounds().height));
304 _Button::OnFontChanged(Font* pFont)
306 __pButtonPresenter->OnFontChanged(pFont);
312 _Button::OnFontInfoRequested(unsigned long& style, int& size)
314 __pButtonPresenter->OnFontInfoRequested(style, size);
320 _Button::SetText(const String& text)
322 return SetProperty("text", Variant(text));
326 _Button::SetPropertyText(const Variant& text)
328 __text = text.ToString();
332 __pTextElement->SetLabel(__text);
335 result r = __pButtonPresenter->InitTextObject();
336 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
342 _Button::GetText(void) const
344 Variant text = GetProperty("text");
346 return text.ToString();
350 _Button::GetPropertyText(void) const
352 return Variant(__text);
356 _Button::SetColor(_ButtonStatus status, const Color& color)
358 result r = E_SUCCESS;
362 case _BUTTON_STATUS_NORMAL:
363 r = SetProperty("normalColor", Variant(color));
365 case _BUTTON_STATUS_DISABLED:
366 r = SetProperty("disabledColor", Variant(color));
368 case _BUTTON_STATUS_PRESSED:
369 r = SetProperty("pressedColor", Variant(color));
371 case _BUTTON_STATUS_HIGHLIGHTED:
372 r = SetProperty("highlightedColor", Variant(color));
375 r = SetProperty("selectedColor", Variant(color));
382 _Button::SetPropertyNormalColor(const Variant& color)
384 __color[_BUTTON_STATUS_NORMAL] = color.ToColor();
390 _Button::SetPropertyDisabledColor(const Variant& color)
392 __color[_BUTTON_STATUS_DISABLED] = color.ToColor();
398 _Button::SetPropertyPressedColor(const Variant& color)
400 __color[_BUTTON_STATUS_PRESSED] = color.ToColor();
406 _Button::SetPropertyHighlightedColor(const Variant& color)
408 __color[_BUTTON_STATUS_HIGHLIGHTED] = color.ToColor();
414 _Button::SetPropertySelectedColor(const Variant& color)
416 __color[_BUTTON_STATUS_SELECTED] = color.ToColor();
422 _Button::GetColor(_ButtonStatus status) const
428 case _BUTTON_STATUS_NORMAL:
429 color = GetProperty("normalColor");
431 case _BUTTON_STATUS_DISABLED:
432 color = GetProperty("disabledColor");
434 case _BUTTON_STATUS_PRESSED:
435 color = GetProperty("pressedColor");
437 case _BUTTON_STATUS_HIGHLIGHTED:
438 color = GetProperty("highlightedColor");
441 color = GetProperty("selectedColor");
444 return color.ToColor();
448 _Button::GetPropertyNormalColor(void) const
450 return Variant(__color[_BUTTON_STATUS_NORMAL]);
454 _Button::GetPropertyDisabledColor(void) const
456 return Variant(__color[_BUTTON_STATUS_DISABLED]);
460 _Button::GetPropertyPressedColor(void) const
462 return Variant(__color[_BUTTON_STATUS_PRESSED]);
466 _Button::GetPropertyHighlightedColor(void) const
468 return Variant(__color[_BUTTON_STATUS_HIGHLIGHTED]);
472 _Button::GetPropertySelectedColor(void) const
474 return Variant(__color[_BUTTON_STATUS_SELECTED]);
478 _Button::AddActionEventListener(const _IActionEventListener& listener)
480 if (__pActionEvent == null)
482 __pActionEvent = _ActionEvent::CreateInstanceN(*this);
483 SysTryReturn(NID_UI_CTRL, __pActionEvent, E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error occurred.");
486 result r = __pActionEvent->AddListener(listener);
487 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
493 _Button::RemoveActionEventListener(const _IActionEventListener& listener)
495 result r = E_OBJ_NOT_FOUND;
499 r = __pActionEvent->RemoveListener(listener);
502 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
508 _Button::SetActionId(int actionId)
510 return SetProperty("actionId", Variant(actionId));
514 _Button::SetPropertyActionId(const Variant& actionId)
516 __actionId = actionId.ToInt();
522 _Button::GetActionId(void) const
524 Variant actionId = GetProperty("actionId");
526 return actionId.ToInt();
530 _Button::GetPropertyActionId(void) const
532 return Variant(__actionId);
536 _Button::SetTextHorizontalAlignment(HorizontalAlignment alignment)
538 __horizontalAlignment = alignment;
544 _Button::GetTextHorizontalAlignment(void) const
546 return __horizontalAlignment;
550 _Button::SetTextVerticalAlignment(VerticalAlignment alignment)
552 __verticalAlignment = alignment;
558 _Button::GetTextVerticalAlignment(void) const
560 return __verticalAlignment;
564 _Button::SetTextColor(_ButtonStatus status, const Color& color)
566 result r = E_SUCCESS;
570 case _BUTTON_STATUS_NORMAL:
571 r = SetProperty("normalTextColor", Variant(color));
573 case _BUTTON_STATUS_DISABLED:
574 r = SetProperty("disabledTextColor", Variant(color));
576 case _BUTTON_STATUS_PRESSED:
577 r = SetProperty("pressedTextColor", Variant(color));
579 case _BUTTON_STATUS_HIGHLIGHTED:
580 r = SetProperty("highlightedTextColor", Variant(color));
583 r = SetProperty("selectedTextColor", Variant(color));
590 _Button::SetPropertyNormalTextColor(const Variant& color)
592 __textColor[_BUTTON_STATUS_NORMAL] = color.ToColor();
598 _Button::SetPropertyDisabledTextColor(const Variant& color)
600 __textColor[_BUTTON_STATUS_DISABLED] = color.ToColor();
606 _Button::SetPropertyPressedTextColor(const Variant& color)
608 __textColor[_BUTTON_STATUS_PRESSED] = color.ToColor();
614 _Button::SetPropertyHighlightedTextColor(const Variant& color)
616 __textColor[_BUTTON_STATUS_HIGHLIGHTED] = color.ToColor();
622 _Button::SetPropertySelectedTextColor(const Variant& color)
624 __textColor[_BUTTON_STATUS_SELECTED] = color.ToColor();
630 _Button::GetTextColor(_ButtonStatus status) const
636 case _BUTTON_STATUS_NORMAL:
637 color = GetProperty("normalTextColor");
639 case _BUTTON_STATUS_DISABLED:
640 color = GetProperty("disabledTextColor");
642 case _BUTTON_STATUS_PRESSED:
643 color = GetProperty("pressedTextColor");
645 case _BUTTON_STATUS_HIGHLIGHTED:
646 color = GetProperty("highlightedTextColor");
649 color = GetProperty("selectedTextColor");
652 return color.ToColor();
656 _Button::GetPropertyNormalTextColor(void) const
658 return Variant(__textColor[_BUTTON_STATUS_NORMAL]);
662 _Button::GetPropertyDisabledTextColor(void) const
664 return Variant(__textColor[_BUTTON_STATUS_DISABLED]);
668 _Button::GetPropertyPressedTextColor(void) const
670 return Variant(__textColor[_BUTTON_STATUS_PRESSED]);
674 _Button::GetPropertyHighlightedTextColor(void) const
676 return Variant(__textColor[_BUTTON_STATUS_HIGHLIGHTED]);
680 _Button::GetPropertySelectedTextColor(void) const
682 return Variant(__textColor[_BUTTON_STATUS_SELECTED]);
686 _Button::SetBitmap(_ButtonStatus status, const Point& position, const Bitmap& bitmap)
690 Bitmap* pClonedBitmap = _BitmapImpl::CloneN(bitmap);
694 __bitmapPosition[status] = position;
696 if (__pBitmap[status] != null)
698 delete __pBitmap[status];
701 __pBitmap[status] = pClonedBitmap;
710 _Button::GetBitmap(_ButtonStatus status) const
712 return __pBitmap[status];
716 _Button::SetToolbarItemBackgroundBitmap(_ButtonStatus status, const Bitmap& bitmap)
720 Bitmap* pClonedBitmap = _BitmapImpl::CloneN(bitmap);
724 if (__pToolbarItemBackgroundBitmap[status] != null)
726 delete __pToolbarItemBackgroundBitmap[status];
729 __pToolbarItemBackgroundBitmap[status] = pClonedBitmap;
738 _Button::GetToolbarItemBackgroundBitmap(_ButtonStatus status) const
740 return __pToolbarItemBackgroundBitmap[status];
744 _Button::SetToolbarSelectedBitmap(const Tizen::Graphics::Bitmap& bitmap, bool drawInner)
748 Bitmap* pClonedBitmap = _BitmapImpl::CloneN(bitmap);
752 if (__pToolbarSelectedBitmap != null)
754 delete __pToolbarSelectedBitmap;
757 __pToolbarSelectedBitmap = pClonedBitmap;
762 __drawInner = drawInner;
768 _Button::IsDrawInner(void) const
773 Tizen::Graphics::Bitmap*
774 _Button::GetToolbarSelectedBitmap(void) const
776 return __pToolbarSelectedBitmap;
780 _Button::GetBitmapPosition(_ButtonStatus status) const
782 return __bitmapPosition[status];
786 _Button::SetBackgroundBitmap(_ButtonStatus status, const Bitmap& bitmap)
790 Bitmap* pClonedBitmap = _BitmapImpl::CloneN(bitmap);
794 if (__pBackgroundBitmap[status] != null)
796 delete __pBackgroundBitmap[status];
799 __pBackgroundBitmap[status] = pClonedBitmap;
800 __isUserBackgroundBitmap[status] = true;
809 _Button::GetBackgroundBitmap(_ButtonStatus status) const
813 _Button* pButton = const_cast<_Button*>(this);
815 if (!pButton->__pBackgroundBitmap[status])
819 case _BUTTON_STATUS_NORMAL:
820 r = GET_BITMAP_CONFIG_N(BUTTON::BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pButton->__pBackgroundBitmap[_BUTTON_STATUS_NORMAL]);
822 case _BUTTON_STATUS_DISABLED:
823 r = GET_BITMAP_CONFIG_N(BUTTON::BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pButton->__pBackgroundBitmap[_BUTTON_STATUS_DISABLED]);
825 case _BUTTON_STATUS_PRESSED:
826 r = GET_BITMAP_CONFIG_N(BUTTON::BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pButton->__pBackgroundBitmap[_BUTTON_STATUS_PRESSED]);
828 case _BUTTON_STATUS_HIGHLIGHTED:
829 r = GET_BITMAP_CONFIG_N(BUTTON::BG_HIGHLIGHTED, BITMAP_PIXEL_FORMAT_ARGB8888, pButton->__pBackgroundBitmap[_BUTTON_STATUS_HIGHLIGHTED]);
832 r = GET_BITMAP_CONFIG_N(BUTTON::BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pButton->__pBackgroundBitmap[_BUTTON_STATUS_SELECTED]);
835 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
838 return pButton->__pBackgroundBitmap[status];
842 _Button::SetBackgroundEffectBitmap(_ButtonStatus status, const Bitmap& bitmap)
846 Bitmap* pClonedBitmap = _BitmapImpl::CloneN(bitmap);
850 if (__pBackgroundEffectBitmap[status] != null)
852 delete __pBackgroundEffectBitmap[status];
855 __pBackgroundEffectBitmap[status] = pClonedBitmap;
856 __isUserBackgroundEffectBitmap[status] = true;
865 _Button::GetBackgroundEffectBitmap(_ButtonStatus status) const
869 _Button* pButton = const_cast<_Button*>(this);
871 if (!pButton->__pBackgroundEffectBitmap[status])
875 case _BUTTON_STATUS_NORMAL:
876 r = GET_BITMAP_CONFIG_N(BUTTON::BG_EFFECT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pButton->__pBackgroundEffectBitmap[_BUTTON_STATUS_NORMAL]);
878 case _BUTTON_STATUS_DISABLED:
879 r = GET_BITMAP_CONFIG_N(BUTTON::BG_EFFECT_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pButton->__pBackgroundEffectBitmap[_BUTTON_STATUS_DISABLED]);
881 case _BUTTON_STATUS_PRESSED:
882 r = GET_BITMAP_CONFIG_N(BUTTON::BG_EFFECT_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pButton->__pBackgroundEffectBitmap[_BUTTON_STATUS_PRESSED]);
884 case _BUTTON_STATUS_HIGHLIGHTED:
885 r = GET_BITMAP_CONFIG_N(BUTTON::BG_EFFECT_HIGHLIGHTED, BITMAP_PIXEL_FORMAT_ARGB8888, pButton->__pBackgroundEffectBitmap[_BUTTON_STATUS_HIGHLIGHTED]);
888 r = GET_BITMAP_CONFIG_N(BUTTON::BG_EFFECT_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pButton->__pBackgroundEffectBitmap[_BUTTON_STATUS_SELECTED]);
891 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
894 return pButton->__pBackgroundEffectBitmap[status];
898 _Button::SetTextSize(int size, unsigned long fontStyle)
900 __pButtonPresenter->SetTextSize(size, fontStyle);
902 return SetProperty("textSize", Variant(size));
906 _Button::SetPropertyTextSize(const Variant& textSize)
908 result r = E_SUCCESS;
910 if (textSize.ToInt() > 0)
912 __textSize = textSize.ToInt();
917 SysLogException(NID_UI_CTRL, r, "[E_INVALID_ARG] Text size is no greater than 0.");
924 _Button::GetTextSize(void) const
926 Variant size = GetProperty("textSize");
932 _Button::GetPropertyTextSize(void) const
934 return Variant(__textSize);
938 _Button::SetButtonStyle(_ButtonStyle buttonStyle)
940 __buttonStyle = buttonStyle;
946 _Button::GetButtonStyle(void) const
948 return __buttonStyle;
952 _Button::SetButtonStatus(_ButtonStatus buttonStatus, bool fire)
954 result r = E_SUCCESS;
956 if (__buttonStatus != buttonStatus)
958 __buttonStatus = buttonStatus;
961 if (_BUTTON_STATUS_DISABLED == __buttonStatus)
963 SetEnableState(false);
967 SetEnableState(true);
970 if (_BUTTON_STATUS_SELECTED == __buttonStatus && fire)
972 r = FireActionEvent();
973 SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "[%s] Propagating.", GetErrorMessage(r));
977 if(buttonStatus == _BUTTON_STATUS_SELECTED )
979 __pTextElement->SetStatus(L"Selected");
983 __pTextElement->SetStatus(L"");
990 _Button::GetButtonStatus(void) const
992 _ButtonStatus status = __buttonStatus;
996 status = _BUTTON_STATUS_DISABLED;
1003 _Button::SetTextMaxLine(int textMaxLine)
1005 __textMaxLine = textMaxLine;
1011 _Button::GetTextMaxLine(void) const
1013 return __textMaxLine;
1017 _Button::UnloadBackgroundBitmap(_ButtonStatus status)
1019 if (__pBackgroundBitmap[status] != null)
1021 delete __pBackgroundBitmap[status];
1022 __pBackgroundBitmap[status] = null;
1028 _Button::UnloadBackgroundEffectBitmap(_ButtonStatus status)
1030 if (__pBackgroundEffectBitmap[status] != null)
1032 delete __pBackgroundEffectBitmap[status];
1033 __pBackgroundEffectBitmap[status] = null;
1039 _Button::IsUserBackgroundBitmap(_ButtonStatus status) const
1041 return __isUserBackgroundBitmap[status];
1045 _Button::IsUserBackgroundEffectBitmap(_ButtonStatus status) const
1047 return __isUserBackgroundEffectBitmap[status];
1051 _Button::IsTouchAreaChanged(bool currentButtonArea)
1053 if (__previousTouchArea != currentButtonArea)
1055 __previousTouchArea = currentButtonArea;
1065 _Button::FireActionEvent(void)
1067 result r = E_SUCCESS;
1071 IEventArg* pEventArg = _ActionEvent::CreateActionEventArgN(__actionId);
1072 SysTryReturn(NID_UI_CTRL, pEventArg, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
1074 __pActionEvent->Fire(*pEventArg);
1081 _Button::SetUserDefinedTextArea(const Rectangle& bounds)
1083 __userDefinedText = true;
1084 __userDefinedTextArea = bounds;
1090 _Button::GetUserDefinedTextArea(void) const
1092 return __userDefinedTextArea;
1096 _Button::UserDefinedText(void) const
1098 return __userDefinedText;
1102 _Button::SetMargin(int topMargin, int leftMargin)
1104 __topMargin = topMargin;
1105 __leftMargin = leftMargin;
1111 _Button::GetTopMargin(void) const
1117 _Button::GetLeftMargin(void) const
1119 return __leftMargin;
1122 Tizen::Graphics::Dimension
1123 _Button::GetContentSize(void) const
1125 return GetContentSizeInternal();
1128 Tizen::Graphics::Dimension
1129 _Button::GetContentSizeInternal(void) const
1131 for (int i = 0; i < NUMBER_OF_BUTTON_STATUS; i++)
1133 if (__text.IsEmpty() && __pBitmap[i] == null && __isUserBackgroundBitmap[i] == false)
1135 return Dimension(GetBounds().width, GetBounds().height);
1139 Dimension dimension(0,0);
1140 Rectangle contentRect(0,0,0,0);
1142 TextObject* pTextObject = __pButtonPresenter->GetTextObject();
1144 TextObjectActionType previousActionType = pTextObject->GetAction();
1145 TextObjectWrapType previousWrapType = pTextObject->GetWrap();
1146 Rectangle previousRect = pTextObject->GetBounds();
1148 pTextObject->SetAction(TEXT_OBJECT_ACTION_TYPE_NONE);
1149 pTextObject->SetWrap(TEXT_OBJECT_WRAP_TYPE_WORD);
1150 pTextObject->Compose();
1151 dimension = pTextObject->GetTextExtent(0, pTextObject->GetTextLength());
1153 contentRect.width = _ControlManager::GetInstance()->GetScreenSize().width;
1155 if (dimension.width > contentRect.width - GetBounds().x)
1157 dimension.width = contentRect.width - GetBounds().x;
1159 pTextObject->SetBounds(Rectangle(previousRect.x, previousRect.y, dimension.width, previousRect.height));
1160 pTextObject->Compose();
1163 dimension.height = pTextObject->GetTotalHeight();
1165 pTextObject->SetBounds(previousRect);
1166 pTextObject->SetAction(previousActionType);
1167 pTextObject->SetWrap(previousWrapType);
1168 pTextObject->Compose();
1170 dimension.width += __leftMargin * 4;
1171 dimension.height += __topMargin * 4;
1173 for (int i = 0; i < NUMBER_OF_BUTTON_STATUS; i++)
1175 if (__pBitmap[i] != null || __isUserBackgroundBitmap[i] == true)
1177 dimension.width = GetBounds().width;
1178 dimension.height = GetBounds().height;
1186 _Button::GetTextExtentSize(void) const
1188 int textExtentSize = 0;
1190 TextObject* pTextObject = __pButtonPresenter->GetTextObject();
1192 TextObjectActionType previousActionType = pTextObject->GetAction();
1193 TextObjectWrapType previousWrapType = pTextObject->GetWrap();
1194 Rectangle previousRect = pTextObject->GetBounds();
1196 pTextObject->SetAction(TEXT_OBJECT_ACTION_TYPE_NONE);
1197 pTextObject->SetWrap(TEXT_OBJECT_WRAP_TYPE_WORD);
1198 pTextObject->Compose();
1200 textExtentSize = pTextObject->GetTextExtent(0, pTextObject->GetTextLength()).width;
1202 pTextObject->SetBounds(previousRect);
1203 pTextObject->SetAction(previousActionType);
1204 pTextObject->SetWrap(previousWrapType);
1205 pTextObject->Compose();
1207 return textExtentSize;
1210 }}} // Tizen::Ui::Controls