Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / controls / FUiCtrl_CheckButtonImpl.cpp
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
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
8 //
9 //     http://floralicense.org/license/
10 //
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.
16 //
17 /**
18  * @file                        FUiCtrl_CheckButtonImpl.cpp
19  * @brief               This is the implementation file for the _CheckButtonImpl class.
20  */
21
22 #include <FUiCtrlRadioGroup.h>
23 #include <FBaseInternalTypes.h>
24 #include <FBaseSysLog.h>
25 #include <FApp_AppInfo.h>
26 #include "FUi_ResourceSizeInfo.h"
27 #include "FUi_ResourceManager.h"
28 #include "FUi_UiBuilder.h"
29 #include "FUiCtrl_CheckButtonImpl.h"
30 #include "FUiCtrl_CheckButton.h"
31
32
33 using namespace Tizen::Base;
34 using namespace Tizen::Graphics;
35 using namespace Tizen::App;
36
37 namespace Tizen { namespace Ui { namespace Controls
38 {
39
40 Dimension
41 _CheckButtonImpl::CheckButtonSizeInfo::GetDefaultMinimumSize(_ControlOrientation orientation) const
42 {
43         result r = E_SUCCESS;
44         Dimension dimension(0, 0);
45
46         r = GET_DIMENSION_CONFIG(CHECKBUTTON::MIN_SIZE, orientation, dimension);
47         SysTryReturn(NID_UI, r == E_SUCCESS, dimension, r, "[%s] A system error occurred.", GetErrorMessage(r));
48
49         SetLastResult(r);
50
51         return dimension;
52 }
53
54 _CheckButtonImpl*
55 _CheckButtonImpl::GetInstance(CheckButton& checkButton)
56 {
57         return static_cast<_CheckButtonImpl*> (checkButton._pControlImpl);
58 }
59
60 const _CheckButtonImpl*
61 _CheckButtonImpl::GetInstance(const CheckButton& checkButton)
62 {
63         return static_cast<const _CheckButtonImpl*> (checkButton._pControlImpl);
64 }
65
66 _CheckButtonImpl::_CheckButtonImpl(CheckButton* pPublic, _CheckButton* pCore)
67         : _ControlImpl(pPublic, pCore)
68         , __pPublicActionEvent(null)
69 {
70         ClearLastResult();
71 }
72
73 _CheckButtonImpl::~_CheckButtonImpl(void)
74 {
75         _CheckButtonImpl::GetCore().RemoveActionEventListener(*this);
76
77         if (__pPublicActionEvent)
78         {
79                 delete __pPublicActionEvent;
80                 __pPublicActionEvent = null;
81         }
82
83         ClearLastResult();
84 }
85
86 _CheckButtonImpl*
87 _CheckButtonImpl::CreateCheckButtonImplN(CheckButton* pControl, const Rectangle& bounds)
88 {
89         result r = E_SUCCESS;
90         r = GET_SIZE_INFO(CheckButton).CheckInitialSizeValid(Dimension(bounds.width, bounds.height), _CONTROL_ORIENTATION_PORTRAIT);
91         SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, null, E_INVALID_ARG, "[E_INVALID_ARG] The given size is not valid.");
92
93         _CheckButton* pCore = _CheckButton::CreateCheckButtonN();
94         SysTryReturn(NID_UI_CTRL, pCore, null, E_SYSTEM, "[%s] Propagating.", GetErrorMessage(GetLastResult()));
95
96         _CheckButtonImpl* pImpl = new (std::nothrow) _CheckButtonImpl(pControl, pCore);
97         r = _ControlImpl::CheckConstruction(pCore, pImpl);
98         SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
99
100         r = pImpl->InitializeBoundsProperties(GET_SIZE_INFO(CheckButton), bounds, pCore->GetOrientation());
101         SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
102
103         r = pCore->AddActionEventListener(*pImpl);
104         SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
105
106         ClearLastResult();
107
108         return pImpl;
109
110 CATCH:
111         delete pImpl;
112         return null;
113 }
114
115 Color
116 _CheckButtonImpl::GetColorOnError(void)
117 {
118         return Color(0XFFFFFFFF);
119 }
120
121 const char*
122 _CheckButtonImpl::GetPublicClassName(void) const
123 {
124         return "Tizen::Ui::Controls::CheckButton";
125 }
126
127 const CheckButton&
128 _CheckButtonImpl::GetPublic(void) const
129 {
130         return static_cast <const CheckButton&>(_ControlImpl::GetPublic());
131 }
132
133 CheckButton&
134 _CheckButtonImpl::GetPublic(void)
135 {
136         return static_cast <CheckButton&>(_ControlImpl::GetPublic());
137 }
138
139 const _CheckButton&
140 _CheckButtonImpl::GetCore(void) const
141 {
142         return static_cast <const _CheckButton&>(_ControlImpl::GetCore());
143 }
144
145 _CheckButton&
146 _CheckButtonImpl::GetCore(void)
147 {
148         return static_cast <_CheckButton&>(_ControlImpl::GetCore());
149 }
150
151 result
152 _CheckButtonImpl::SetSelected(bool select)
153 {
154         result r = GetCore().SetSelected(select);
155
156         SetLastResultReturn(r);
157 }
158
159 bool
160 _CheckButtonImpl::IsSelected(void) const
161 {
162         ClearLastResult();
163
164         return GetCore().IsSelected();
165 }
166
167 result
168 _CheckButtonImpl::AddActionEventListener(IActionEventListener& listener)
169 {
170         if (__pPublicActionEvent == null)
171         {
172                 __pPublicActionEvent = _PublicActionEvent::CreateInstanceN(GetPublic());
173                 SysTryReturn(NID_UI_CTRL, __pPublicActionEvent, E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error occurred.")
174         }
175
176         result r = __pPublicActionEvent->AddListener(listener);
177         SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error occurred.");
178
179         return E_SUCCESS;
180 }
181
182 result
183 _CheckButtonImpl::RemoveActionEventListener(IActionEventListener& listener)
184 {
185         result r = E_OBJ_NOT_FOUND;
186
187         if (__pPublicActionEvent)
188         {
189                 r = __pPublicActionEvent->RemoveListener(listener);
190         }
191
192         SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error occurred.");
193
194         return E_SUCCESS;
195 }
196
197 result
198 _CheckButtonImpl::SetActionId(int checkedActionId, int uncheckedActionId, int selectedActionId)
199 {
200         result r = GetCore().SetActionId(checkedActionId, uncheckedActionId, selectedActionId);
201
202         SetLastResultReturn(r);
203 }
204
205 int
206 _CheckButtonImpl::GetCheckedActionId(void) const
207 {
208         ClearLastResult();
209
210         return GetCore().GetCheckedActionId();
211 }
212
213 int
214 _CheckButtonImpl::GetUncheckedActionId(void) const
215 {
216         ClearLastResult();
217
218         return GetCore().GetUncheckedActionId();
219 }
220
221 int
222 _CheckButtonImpl::GetSelectedActionId(void) const
223 {
224         ClearLastResult();
225
226         return GetCore().GetSelectedActionId();
227 }
228
229 result
230 _CheckButtonImpl::SetText(const String& text)
231 {
232         int textLength = text.GetLength();
233         int checkButtonTextMaxLength = 0;
234         GET_FIXED_VALUE_CONFIG(CHECKBUTTON::TEXT_MAX_LENGTH, _CONTROL_ORIENTATION_PORTRAIT, checkButtonTextMaxLength);
235         String tempText = String(text);
236
237         if (textLength >= checkButtonTextMaxLength)
238         {
239                 tempText.Remove(checkButtonTextMaxLength - 1, textLength - checkButtonTextMaxLength + 1);
240         }
241
242         Variant var(tempText);
243         result r = GetCore().SetPropertyText(var);
244         SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "[%s] Propagating.", GetErrorMessage(r));
245
246         return r;
247 }
248
249 String
250 _CheckButtonImpl::GetText(void) const
251 {
252         ClearLastResult();
253
254         return GetCore().GetPropertyText().ToString();
255 }
256
257 result
258 _CheckButtonImpl::SetTitleText(const String& title)
259 {
260         SysTryReturn(NID_UI_CTRL, GetCore().GetShowTitle() == true , E_INVALID_STATE, E_INVALID_STATE,
261                         "[E_INVALID_STATE] The CheckButton has no title style.\n");
262
263         int titleLength = title.GetLength();
264         int checkButtonTitleMaxLength = 0;
265         GET_FIXED_VALUE_CONFIG(CHECKBUTTON::TITLE_TEXT_MAX_LENGTH, _CONTROL_ORIENTATION_PORTRAIT, checkButtonTitleMaxLength);
266         String tempTitle = String(title);
267
268         if (titleLength >= checkButtonTitleMaxLength)
269         {
270                 tempTitle.Remove(checkButtonTitleMaxLength - 1, titleLength - checkButtonTitleMaxLength + 1);
271         }
272
273         Variant var(tempTitle);
274         result r = GetCore().SetPropertyTitleText(var);
275         SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "[%s] Propagating.", GetErrorMessage(r));
276
277         return r;
278 }
279
280 String
281 _CheckButtonImpl::GetTitleText(void) const
282 {
283         SysTryReturn(NID_UI_CTRL, GetCore().GetShowTitle() == true, L"", E_INVALID_STATE,
284                         "[E_INVALID_STATE] The CheckButton has no title style.\n");
285
286         ClearLastResult();
287
288         return GetCore().GetPropertyTitleText().ToString();
289 }
290
291 result
292 _CheckButtonImpl::SetTextHorizontalAlignment(HorizontalAlignment alignment)
293 {
294         result r = GetCore().SetTextHorizontalAlignment(alignment);
295         SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "[%s] Propagating.", GetErrorMessage(r));
296
297         return r;
298 }
299
300 HorizontalAlignment
301 _CheckButtonImpl::GetTextHorizontalAlignment(void) const
302 {
303         ClearLastResult();
304
305         return GetCore().GetTextHorizontalAlignment();
306 }
307
308 result
309 _CheckButtonImpl::SetTextVerticalAlignment(VerticalAlignment alignment)
310 {
311         result r = GetCore().SetTextVerticalAlignment(alignment);
312         SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "[%s] Propagating.", GetErrorMessage(r));
313
314         return r;
315 }
316
317 VerticalAlignment
318 _CheckButtonImpl::GetTextVerticalAlignment(void) const
319 {
320         ClearLastResult();
321
322         return GetCore().GetTextVerticalAlignment();
323 }
324
325 result
326 _CheckButtonImpl::SetTextColor(const Color& color)
327 {
328         result r =  GetCore().SetTextColor(color);
329         SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "[%s] Propagating.", GetErrorMessage(r));
330
331         return r;
332 }
333
334 Color
335 _CheckButtonImpl::GetTextColor(void) const
336 {
337         ClearLastResult();
338
339         return GetCore().GetTextColor();
340 }
341
342 result
343 _CheckButtonImpl::SetDisabledTextColor(const Color& color)
344 {
345         result r = GetCore().SetDisabledTextColor(color);
346         SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "[%s] Propagating.", GetErrorMessage(r));
347
348         return r;
349 }
350
351 Color
352 _CheckButtonImpl::GetDisabledTextColor(void) const
353 {
354         ClearLastResult();
355
356         return GetCore().GetDisabledTextColor();
357 }
358
359 result
360 _CheckButtonImpl::SetPressedTextColor(const Color& color)
361 {
362         result r = GetCore().SetPressedTextColor(color);
363         SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "[%s] Propagating.", GetErrorMessage(r));
364
365         return r;
366 }
367
368 Color
369 _CheckButtonImpl::GetPressedTextColor(void) const
370 {
371         ClearLastResult();
372
373         return GetCore().GetPressedTextColor();
374 }
375
376 result
377 _CheckButtonImpl::SetHighlightedTextColor(const Color& color)
378 {
379         result r = GetCore().SetHighlightedTextColor(color);
380         SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "[%s] Propagating.", GetErrorMessage(r));
381
382         return r;
383 }
384
385 Color
386 _CheckButtonImpl::GetHighlightedTextColor(void) const
387 {
388         ClearLastResult();
389
390         return GetCore().GetHighlightedTextColor();
391 }
392
393 result
394 _CheckButtonImpl::SetTitleTextColor(const Color& color)
395 {
396         result r = GetCore().SetTitleTextColor(color);
397         SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "[%s] Propagating.", GetErrorMessage(r));
398
399         return r;
400 }
401
402 Color
403 _CheckButtonImpl::GetTitleTextColor(void) const
404 {
405         ClearLastResult();
406
407         return GetCore().GetTitleTextColor();
408 }
409
410 result
411 _CheckButtonImpl::SetDisabledTitleTextColor(const Color& color)
412 {
413         result r = GetCore().SetDisabledTitleTextColor(color);
414         SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "[%s] Propagating.", GetErrorMessage(r));
415
416         return r;
417 }
418
419 Color
420 _CheckButtonImpl::GetDisabledTitleTextColor(void) const
421 {
422         ClearLastResult();
423
424         return GetCore().GetDisabledTitleTextColor();
425 }
426
427 result
428 _CheckButtonImpl::SetPressedTitleTextColor(const Color& color)
429 {
430         result r = GetCore().SetPressedTitleTextColor(color);
431         SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "[%s] Propagating.", GetErrorMessage(r));
432
433         return r;
434 }
435
436 Color
437 _CheckButtonImpl::GetPressedTitleTextColor(void) const
438 {
439         ClearLastResult();
440
441         return GetCore().GetPressedTitleTextColor();
442 }
443
444 result
445 _CheckButtonImpl::SetHighlightedTitleTextColor(const Color& color)
446 {
447         result r = GetCore().SetHighlightedTitleTextColor(color);
448         SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "[%s] Propagating.", GetErrorMessage(r));
449
450         return r;
451 }
452
453 Color
454 _CheckButtonImpl::GetHighlightedTitleTextColor(void) const
455 {
456         ClearLastResult();
457
458         return GetCore().GetHighlightedTitleTextColor();
459 }
460
461 result
462 _CheckButtonImpl::SetColor(CheckButtonStatus status, const Color& color)
463 {
464         SysTryReturn(NID_UI_CTRL, GetCore().GetBackgroundStyle() != BACKGROUND_STYLE_NONE, E_INVALID_OPERATION, E_INVALID_OPERATION,
465                                 "[E_INVALID_OPERATION] Unable to set color.\n");
466
467         result r = GetCore().SetColor(status, color);
468         SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "[%s] Propagating.", GetErrorMessage(r));
469
470         return r;
471 }
472
473 Color
474 _CheckButtonImpl::GetColor(CheckButtonStatus status) const
475 {
476         SysTryReturn(NID_UI_CTRL, GetCore().GetBackgroundStyle() != BACKGROUND_STYLE_NONE,
477                                 _CheckButtonImpl::GetColorOnError(), E_INVALID_OPERATION, "[E_INVALID_OPERATION] Unable to get color.\n");
478
479         ClearLastResult();
480
481         return GetCore().GetColor(status);
482 }
483
484 result
485 _CheckButtonImpl::SetCheckButtonStyle(const CheckButtonStyle& checkButtonStyle)
486 {
487         result r = GetCore().SetCheckButtonStyle(checkButtonStyle);
488         SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "[%s] Propagating.", GetErrorMessage(r));
489
490         return r;
491 }
492
493 result
494 _CheckButtonImpl::SetBackgroundStyle(const BackgroundStyle& backgroundStyle)
495 {
496         result r = GetCore().SetBackgroundStyle(backgroundStyle);
497         SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "[%s] Propagating.", GetErrorMessage(r));
498
499         return r;
500 }
501
502 result
503 _CheckButtonImpl::SetShowTitle(bool showTitle)
504 {
505         result r = GetCore().SetShowTitle(showTitle);
506         SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "[%s] Propagating.", GetErrorMessage(r));
507
508         return r;
509 }
510
511 result
512 _CheckButtonImpl::SetGroupStyle(const GroupStyle& groupStyle)
513 {
514         result r = GetCore().SetGroupStyle(groupStyle);
515         SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "[%s] Propagating.", GetErrorMessage(r));
516
517         return r;
518 }
519
520 bool
521 _CheckButtonImpl::IsLayoutable(void) const
522 {
523         return true;
524 }
525
526 void
527 _CheckButtonImpl::OnActionPerformed(const _Control& source, int actionId)
528 {
529         if (__pPublicActionEvent != null)
530         {
531                 __pPublicActionEvent->Fire(*_PublicActionEvent::CreateActionEventArgN(actionId));
532         }
533
534         return;
535 }
536
537 class _CheckButtonMaker
538         : public _UiBuilderControlMaker
539 {
540 public:
541         _CheckButtonMaker(_UiBuilder* uibuilder)
542                 : _UiBuilderControlMaker(uibuilder){};
543         virtual ~_CheckButtonMaker(){};
544         static _UiBuilderControlMaker* GetInstance(_UiBuilder* uibuilder)
545         {
546                 _CheckButtonMaker* pCheckButtonMaker = new (std::nothrow) _CheckButtonMaker(uibuilder);
547                 return static_cast<_UiBuilderControlMaker*>(pCheckButtonMaker);
548         };
549 protected:
550         virtual Control* Make(_UiBuilderControl* pControl)
551         {
552                 bool isText = false;
553                 bool isRadioStyle = false;
554                 result r = E_SYSTEM;
555                 _UiBuilderControlLayout* pControlProperty = null;
556                 CheckButton* pCheck = null;
557                 BackgroundStyle backgroundStyle = BACKGROUND_STYLE_DEFAULT;
558                 Rectangle rect;
559
560                 Tizen::Base::String elementString;
561                 String checkText;
562                 HorizontalAlignment horizontalAlignment;
563                 VerticalAlignment verticalAlignment;
564                 GroupStyle groupStyle = GROUP_STYLE_NONE;
565                 bool showTitle = false;
566                 Color color;
567                 int opacity = 0;
568
569                 GetProperty(pControl, &pControlProperty);
570                 if (pControlProperty == null)
571                 {
572                         return null;
573                 }
574
575                 pCheck = new (std::nothrow) CheckButton();
576                 rect = pControlProperty->GetRect();
577
578                 Tizen::Base::String styleString;
579                 styleString = pControlProperty->GetStyle();
580
581                 //Construct
582                 if (pControl->GetElement("text", elementString))
583                 {
584                         isText = true;
585                         checkText = elementString;
586                 }
587
588                 if (pControl->GetElement("backgroundStyle", elementString) || pControl->GetElement("BackgroundStyle", elementString))
589                 {
590                         if (elementString.Equals(L"BACKGROUND_STYLE_NONE", false))
591                         {
592                                 backgroundStyle = BACKGROUND_STYLE_NONE;
593                         }
594                 }
595
596                 if (pControl->GetElement("showtitleText", elementString)  || pControl->GetElement("bShowtitleText", elementString))
597                 {
598                         if (elementString.Equals(L"true", false))
599                         {
600                                 showTitle = true;
601                         }
602                 }
603
604                 if (pControl->GetElement("groupStyle", elementString) || pControl->GetElement("GroupStyle", elementString))
605                 {
606                         if (elementString.Equals(L"GROUP_STYLE_NONE", false))
607                         {
608                                 groupStyle = GROUP_STYLE_NONE;
609                         }
610
611                         if (elementString.Equals(L"GROUP_STYLE_SINGLE", false))
612                         {
613                                 groupStyle = GROUP_STYLE_SINGLE;
614                         }
615
616                         if (elementString.Equals(L"GROUP_STYLE_TOP", false))
617                         {
618                                 groupStyle = GROUP_STYLE_TOP;
619                         }
620
621                         if (elementString.Equals(L"GROUP_STYLE_MIDDLE", false))
622                         {
623                                 groupStyle = GROUP_STYLE_MIDDLE;
624                         }
625
626                         if (elementString.Equals(L"GROUP_STYLE_BOTTOM", false))
627                         {
628                                 groupStyle = GROUP_STYLE_BOTTOM;
629                         }
630                 }
631
632                 if (styleString.Equals(L"CHECK_BUTTON_STYLE_ONOFF", false))
633                 {
634                         r = pCheck->Construct(rect, CHECK_BUTTON_STYLE_ONOFF, backgroundStyle, showTitle, checkText, groupStyle);
635                 }
636                 else if (styleString.Equals(L"CHECK_BUTTON_STYLE_ONOFF_WITH_DIVIDER", false))
637                 {
638                         r = pCheck->Construct(rect, CHECK_BUTTON_STYLE_ONOFF_WITH_DIVIDER, backgroundStyle, showTitle, checkText, groupStyle);
639                 }
640                 else if (styleString.Equals(L"CHECK_BUTTON_STYLE_MARK_WITH_DIVIDER", false))
641                 {
642                         r = pCheck->Construct(rect, CHECK_BUTTON_STYLE_MARK_WITH_DIVIDER, backgroundStyle, showTitle, checkText, groupStyle);
643                 }
644                 else if (styleString.Equals(L"CHECK_BUTTON_STYLE_RADIO_WITH_DIVIDER", false))
645                 {
646                         r = pCheck->Construct(rect, CHECK_BUTTON_STYLE_RADIO_WITH_DIVIDER, backgroundStyle, showTitle, checkText, groupStyle);
647                         isRadioStyle = true;
648                 }
649                 else if (styleString.Equals(L"CHECK_BUTTON_STYLE_RADIO", false))
650                 {
651                         r = pCheck->Construct(rect, CHECK_BUTTON_STYLE_RADIO, backgroundStyle, showTitle, checkText, groupStyle);
652                         isRadioStyle = true;
653                 }
654                 else if (styleString.Equals(L"CHECK_BUTTON_STYLE_ONOFF_SLIDING", false))
655                 {
656                         r = pCheck->Construct(rect, CHECK_BUTTON_STYLE_ONOFF_SLIDING, backgroundStyle, showTitle, checkText, groupStyle);
657                 }
658                 else if (styleString.Equals(L"CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON", false))
659                 {
660                         r = pCheck->Construct(rect, CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON, backgroundStyle, showTitle, checkText, groupStyle);
661                 }
662                 else if (styleString.Equals(L"CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON", false))
663                 {
664                         r = pCheck->Construct(rect, CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON, backgroundStyle, showTitle, checkText, groupStyle);
665                         isRadioStyle = true;
666                 }
667                 else
668                 {
669                         r = pCheck->Construct(rect, CHECK_BUTTON_STYLE_MARK, backgroundStyle, showTitle, checkText, groupStyle);
670                 }
671
672                 if (r != E_SUCCESS)
673                 {
674                         delete pCheck;
675                         return null;
676                 }
677
678                 if (showTitle)
679                 {
680                         if (pControl->GetElement("titleText", elementString))
681                         {
682                                 pCheck->SetTitleText(elementString);
683                         }
684
685                         if (pControl->GetElement("colorOfTitleText", elementString))
686                         {
687                                 ConvertStringToColor(elementString, color);
688                                 pCheck->SetTitleTextColor(color);
689                         }
690
691                         if (pControl->GetElement("pressedTitleTextColor", elementString))
692                         {
693                                 ConvertStringToColor(elementString, color);
694                                 pCheck->SetPressedTitleTextColor(color);
695                         }
696
697                         if (pControl->GetElement("disabledTitleTextColor", elementString))
698                         {
699                                 ConvertStringToColor(elementString, color);
700                                 pCheck->SetDisabledTitleTextColor(color);
701                         }
702
703                         if (pControl->GetElement("highlightedTitleTextColor", elementString))
704                         {
705                                 ConvertStringToColor(elementString, color);
706                                 pCheck->SetHighlightedTitleTextColor(color);
707                         }
708                 }
709
710                 if (isText)
711                 {
712                         if (pControl->GetElement("colorOfText", elementString))
713                         {
714                                 ConvertStringToColor(elementString, color);
715                                 pCheck->SetTextColor(color);
716                         }
717
718                         if (pControl->GetElement("pressedTextColor", elementString))
719                         {
720                                 ConvertStringToColor(elementString, color);
721                                 pCheck->SetPressedTextColor(color);
722                         }
723
724                         if (pControl->GetElement("disabledTextColor", elementString))
725                         {
726                                 ConvertStringToColor(elementString, color);
727                                 pCheck->SetDisabledTextColor(color);
728                         }
729
730                         if (pControl->GetElement("highlightedTextColor", elementString))
731                         {
732                                 ConvertStringToColor(elementString, color);
733                                 pCheck->SetHighlightedTextColor(color);
734                         }
735                 }
736
737                 if (isRadioStyle && pControl->GetElement("GroupID", elementString))
738                 {
739                         RadioGroup* pGroup = (RadioGroup*) ((GetContainer())->GetControl(elementString, true));
740
741                         if (pGroup == null)
742                         {
743                                 pGroup = new (std::nothrow) RadioGroup();
744                                 r = pGroup->Construct();
745
746                                 if (r != E_SUCCESS)
747                                 {
748                                         //      SysLogExceptionxception( "[E_SYSTEM] UiBuilder::__MakeCheck: Failed to create Group(%s)",buffer);
749                                         delete pCheck;
750                                         delete pGroup;
751                                         return null;
752                                 }
753                                 pGroup->SetName(elementString);
754                                 GetContainer()->AddControl(*pGroup);
755
756                                 r = pGroup->Add(*pCheck);
757                         }
758                         else
759                         {
760                                 r = pGroup->Add(*pCheck);
761                         }
762                 }
763
764                 if (pControl->GetElement("horizontalAlign", elementString) || pControl->GetElement("hAlign", elementString))
765                 {
766                         if (ConvertHAlignToHorizontalAlignment(elementString, horizontalAlignment))
767                         {
768                                 pCheck->SetTextHorizontalAlignment(horizontalAlignment);
769                         }
770                 }
771
772                 if (pControl->GetElement("verticalAlign", elementString) || pControl->GetElement("vAlign", elementString))
773                 {
774                         if (ConvertVAlignToVerticalAlignment(elementString, verticalAlignment))
775                         {
776                                 pCheck->SetTextVerticalAlignment(verticalAlignment);
777                         }
778                 }
779
780                 if (pControl->GetElement("normalColorOpacity", elementString))
781                 {
782                         Base::Integer::Parse(elementString, opacity);
783                 }
784
785                 if (pControl->GetElement("normalColor", elementString))
786                 {
787                         ConvertStringToColor32(elementString, opacity, color);
788                         pCheck->SetColor(CHECK_BUTTON_STATUS_NORMAL, color);
789                 }
790
791                 if (pControl->GetElement("pressedColorOpacity", elementString))
792                 {
793                         Base::Integer::Parse(elementString, opacity);
794                 }
795
796                 if (pControl->GetElement("pressedColor", elementString))
797                 {
798                         ConvertStringToColor32(elementString, opacity, color);
799                         pCheck->SetColor(CHECK_BUTTON_STATUS_PRESSED, color);
800                 }
801
802                 if (pControl->GetElement("disabledColorOpacity", elementString))
803                 {
804                         Base::Integer::Parse(elementString, opacity);
805                 }
806
807                 if (pControl->GetElement("disabledColor", elementString))
808                 {
809                         ConvertStringToColor32(elementString, opacity, color);
810                         pCheck->SetColor(CHECK_BUTTON_STATUS_DISABLED, color);
811                 }
812
813                 if (pControl->GetElement("highlightedColorOpacity", elementString))
814                 {
815                         Base::Integer::Parse(elementString, opacity);
816                 }
817
818                 if (pControl->GetElement("highlightedColor", elementString))
819                 {
820                         ConvertStringToColor32(elementString, opacity, color);
821                         pCheck->SetColor(CHECK_BUTTON_STATUS_HIGHLIGHTED, color);
822                 }
823 #if 0
824         //-------safety for Minimum size-------------------
825         tempRect = (pControl->GetAttribute(UIBUILDER_ATTRIBUTE_PORTRAIT))->GetRect();
826         if ((pStyleString != null) &&
827             ((strcmp((const char*)pStyleString,"CHECK_BUTTON_STYLE_ONOFF_WITH_DIVIDER") == 0)
828             || (strcmp((const char*)pStyleString,"CHECK_BUTTON_STYLE_ONOFF_WITH_DIVIDER") == 0)
829             || (strcmp((const char*)pStyleString,"CHECK_BUTTON_STYLE_RADIO_WITH_DIVIDER") == 0)))
830         {
831             if (tempRect.w < __BaseProperty(PROPERTY_CHECKBUTTON_MIN_WIDTH_WITH_DIVIDER))
832             {
833                 tempRect.w = __BaseProperty(PROPERTY_CHECKBUTTON_MIN_WIDTH_WITH_DIVIDER);
834             }
835         }
836         else if ((pStyleString != null)  &&
837             ((strcmp((const char*)pStyleString,"CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON") == 0)
838             || (strcmp((const char*)pStyleString,"CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON") == 0)))
839         {
840             if (tempRect.w < __BaseProperty(PROPERTY_CHECKBUTTON_MIN_WIDTH_WITH_DETAILED))
841             {
842                 tempRect.w = __BaseProperty(PROPERTY_CHECKBUTTON_MIN_WIDTH_WITH_DETAILED);
843             }
844         }
845         else if ((pStyleString != null) &&
846             (strcmp((const char*)pStyleString,"CHECK_BUTTON_STYLE_ONOFF_SLIDING") == 0))
847         {
848             if (tempRect.w < __BaseProperty(PROPERTY_CHECKBUTTON_MIN_WIDTH_ONOFF_SLIDING))
849             {
850                 tempRect.w = __BaseProperty(PROPERTY_CHECKBUTTON_MIN_WIDTH_ONOFF_SLIDING);
851             }
852         }
853         else
854         {
855             if (showTitle)
856             {
857                 if (tempRect.w < __BaseProperty(PROPERTY_CHECKBUTTON_MIN_WIDTH_WITH_TITLE))
858                 {
859                     tempRect.w = __BaseProperty(PROPERTY_CHECKBUTTON_MIN_WIDTH_WITH_TITLE);
860                 }
861             }
862             else
863             {
864                 if (tempRect.w < __BaseProperty(PROPERTY_CHECKBUTTON_MIN_WIDTH))
865                 {
866                     tempRect.w = __BaseProperty(PROPERTY_CHECKBUTTON_MIN_WIDTH);
867                 }
868             }
869         }
870
871         if (showTitle)
872         {
873             if (tempRect.h < __BaseProperty(PROPERTY_CHECKBUTTON_MIN_HEIGHT_WITH_TITLE))
874             {
875                 tempRect.h = __BaseProperty(PROPERTY_CHECKBUTTON_MIN_HEIGHT_WITH_TITLE);
876             }
877         }
878         else // no title
879         {
880             if (tempRect.h < __BaseProperty(PROPERTY_CHECKBUTTON_MIN_HEIGHT))
881             {
882                 tempRect.h = __BaseProperty(PROPERTY_CHECKBUTTON_MIN_HEIGHT);
883             }
884         }
885
886         (pControl->GetAttribute(UIBUILDER_ATTRIBUTE_PORTRAIT))->SetRect(tempRect.x,tempRect.y,tempRect.w,tempRect.h);
887
888         tempRect = (pControl->GetAttribute(UIBUILDER_ATTRIBUTE_LANDSCAPE))->GetRect();
889         if ((pStyleString != null) &&
890                 ((strcmp((const char*)pStyleString,"CHECK_BUTTON_STYLE_ONOFF_WITH_DIVIDER") == 0)
891                         || (strcmp((const char*)pStyleString,"CHECK_BUTTON_STYLE_ONOFF_WITH_DIVIDER") == 0)
892                         || (strcmp((const char*)pStyleString,"CHECK_BUTTON_STYLE_RADIO_WITH_DIVIDER") == 0)))
893         {
894             if (tempRect.w < __BaseProperty(PROPERTY_CHECKBUTTON_MIN_WIDTH_WITH_DIVIDER))
895             {
896                 tempRect.w = __BaseProperty(PROPERTY_CHECKBUTTON_MIN_WIDTH_WITH_DIVIDER);
897             }
898         }
899         else if ((pStyleString != null)  &&
900                 ((strcmp((const char*)pStyleString,"CHECK_BUTTON_STYLE_MARK_WITH_DETAILED_BUTTON") == 0)
901                         || (strcmp((const char*)pStyleString,"CHECK_BUTTON_STYLE_RADIO_WITH_DETAILED_BUTTON") == 0)))
902         {
903             if (tempRect.w < __BaseProperty(PROPERTY_CHECKBUTTON_MIN_WIDTH_WITH_DETAILED))
904             {
905                 tempRect.w = __BaseProperty(PROPERTY_CHECKBUTTON_MIN_WIDTH_WITH_DETAILED);
906             }
907         }
908         else if ((pStyleString != null) &&
909                 (strcmp((const char*)pStyleString,"CHECK_BUTTON_STYLE_ONOFF_SLIDING") == 0))
910         {
911             if (tempRect.w < __BaseProperty(PROPERTY_CHECKBUTTON_MIN_WIDTH_ONOFF_SLIDING))
912             {
913                 tempRect.w = __BaseProperty(PROPERTY_CHECKBUTTON_MIN_WIDTH_ONOFF_SLIDING);
914             }
915         }
916         else
917         {
918             if (showTitle)
919             {
920                 if (tempRect.w < __BaseProperty(PROPERTY_CHECKBUTTON_MIN_WIDTH_WITH_TITLE))
921                 {
922                     tempRect.w = __BaseProperty(PROPERTY_CHECKBUTTON_MIN_WIDTH_WITH_TITLE);
923                 }
924             }
925             else
926             {
927                 if (tempRect.w < __BaseProperty(PROPERTY_CHECKBUTTON_MIN_WIDTH))
928                 {
929                     tempRect.w = __BaseProperty(PROPERTY_CHECKBUTTON_MIN_WIDTH);
930                 }
931             }
932         }
933
934         if (showTitle)
935         {
936             if (tempRect.h < __BaseProperty(PROPERTY_CHECKBUTTON_MIN_HEIGHT_WITH_TITLE))
937             {
938                 tempRect.h = __BaseProperty(PROPERTY_CHECKBUTTON_MIN_HEIGHT_WITH_TITLE);
939             }
940         }
941         else // no title
942         {
943             if (tempRect.h < __BaseProperty(PROPERTY_CHECKBUTTON_MIN_HEIGHT))
944             {
945                 tempRect.h = __BaseProperty(PROPERTY_CHECKBUTTON_MIN_HEIGHT);
946             }
947         }
948
949         (pControl->GetAttribute(UIBUILDER_ATTRIBUTE_LANDSCAPE))->SetRect(tempRect.x,tempRect.y,tempRect.w,tempRect.h);
950
951         //--------end safety code------------------------
952
953 #endif
954                 return pCheck;
955         }
956
957 private:
958 }; // _CheckButtonMaker
959
960 _CheckButtonRegister::_CheckButtonRegister()
961 {
962           _UiBuilderControlTableManager* pUiBuilderControlTableManager = _UiBuilderControlTableManager::GetInstance();
963           pUiBuilderControlTableManager->RegisterControl(L"CheckButton", _CheckButtonMaker::GetInstance);
964 }
965 _CheckButtonRegister::~_CheckButtonRegister()
966 {
967           _UiBuilderControlTableManager* pUiBuilderControlTableManager = _UiBuilderControlTableManager::GetInstance();
968           pUiBuilderControlTableManager->UnregisterControl(L"CheckButton");
969 }
970 static _CheckButtonRegister CheckButtonRegisterToUiBuilder;
971 }}} // Tizen::Ui::Controls