Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / controls / FUiCtrl_RadioGroupImpl.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_RadioGroupImpl.cpp
19  * @brief               This is the implementation file for the _RadioGroupImpl class.
20  */
21
22 #include <FBaseResult.h>
23 #include <FBaseSysLog.h>
24 #include "FUi_ResourceSizeInfo.h"
25 #include "FUi_ResourceManager.h"
26 #include "FUiCtrl_RadioGroupImpl.h"
27 #include "FUiCtrl_CheckButtonImpl.h"
28 #include "FUiCtrl_RadioGroup.h"
29
30 using namespace Tizen::Base;
31 using namespace Tizen::Graphics;
32
33 namespace Tizen { namespace Ui { namespace Controls
34 {
35
36 Dimension
37 _RadioGroupImpl::RadioGroupSizeInfo::GetDefaultMinimumSize(_ControlOrientation orientation) const
38 {
39         result r = E_SUCCESS;
40         Dimension dimension(0, 0);
41
42         r = GET_DIMENSION_CONFIG(RADIOGROUP::MIN_SIZE, orientation, dimension);
43         SysTryReturn(NID_UI, r == E_SUCCESS, dimension, r, "[%s] A system error occurred.", GetErrorMessage(r));
44
45         SetLastResult(r);
46
47         return dimension;
48 }
49
50 _RadioGroupImpl*
51 _RadioGroupImpl::GetInstance(RadioGroup& radioGroup)
52 {
53         return static_cast<_RadioGroupImpl*> (radioGroup._pControlImpl);
54 }
55
56 const _RadioGroupImpl*
57 _RadioGroupImpl::GetInstance(const RadioGroup& radioGroup)
58 {
59         return static_cast<const _RadioGroupImpl*> (radioGroup._pControlImpl);
60 }
61
62 _RadioGroupImpl::_RadioGroupImpl(RadioGroup* pPublic, _RadioGroup* pCore)
63         : _ControlImpl(pPublic, pCore)
64 {
65         ClearLastResult();
66         SetFocusableChangable(false);
67 }
68
69 _RadioGroupImpl::~_RadioGroupImpl(void)
70 {
71         ClearLastResult();
72 }
73
74 _RadioGroupImpl*
75 _RadioGroupImpl::CreateRadioGroupImplN(RadioGroup* pControl)
76 {
77         result r = E_SUCCESS;
78
79         _RadioGroup* pCore = _RadioGroup::CreateRadioGroupN();
80         SysTryReturn(NID_UI_CTRL, pCore, null, E_SYSTEM, "[%s] Propagating.", GetErrorMessage(GetLastResult()));
81
82         _RadioGroupImpl* pImpl = new (std::nothrow) _RadioGroupImpl(pControl, pCore);
83         r = _ControlImpl::CheckConstruction(pCore, pImpl);
84         SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
85
86         ClearLastResult();
87
88         return pImpl;
89 }
90
91 Color
92 _RadioGroupImpl::GetColorOnError(void)
93 {
94         return Color(0XFFFFFFFF);
95 }
96
97 const char*
98 _RadioGroupImpl::GetPublicClassName(void) const
99 {
100         return "Tizen::Ui::Controls::RadioGroup";
101 }
102
103 const RadioGroup&
104 _RadioGroupImpl::GetPublic(void) const
105 {
106         return static_cast<const RadioGroup&>(_ControlImpl::GetPublic());
107 }
108
109 RadioGroup&
110 _RadioGroupImpl::GetPublic(void)
111 {
112         return static_cast<RadioGroup&>(_ControlImpl::GetPublic());
113 }
114
115 const _RadioGroup&
116 _RadioGroupImpl::GetCore(void) const
117 {
118         return static_cast<const _RadioGroup&>(_ControlImpl::GetCore());
119 }
120
121 _RadioGroup&
122 _RadioGroupImpl::GetCore(void)
123 {
124         return static_cast <_RadioGroup&>(_ControlImpl::GetCore());
125 }
126
127 result
128 _RadioGroupImpl::OnAttachedToMainTree(void)
129 {
130         result r = SetFocusable(false);
131         _ControlImpl::OnAttachedToMainTree();
132
133         return r;
134 }
135
136 result
137 _RadioGroupImpl::Add(const CheckButton& checkButton)
138 {
139         const _CheckButton& _checkButton = _CheckButtonImpl::GetInstance(checkButton)->GetCore();
140
141         result r = GetCore().Add(const_cast<_CheckButton&>(_checkButton));
142         SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "[%s] Propagating.", GetErrorMessage(r));
143
144         return r;
145 }
146 result
147 _RadioGroupImpl::Remove(const CheckButton& checkButton)
148 {
149         const _CheckButton& _checkButton = _CheckButtonImpl::GetInstance(checkButton)->GetCore();
150
151         result r = GetCore().Remove(const_cast<_CheckButton&>(_checkButton));
152         SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "[%s] Propagating.", GetErrorMessage(r));
153
154         return r;
155 }
156
157 int
158 _RadioGroupImpl::GetItemCount(void) const
159 {
160         ClearLastResult();
161
162         return GetCore().GetItemCount();
163 }
164
165 result
166 _RadioGroupImpl::SetSelectedItem(const CheckButton& checkButton)
167 {
168         const _CheckButton& _checkButton = _CheckButtonImpl::GetInstance(checkButton)->GetCore();
169
170         result r = GetCore().SetSelectedItem(const_cast<_CheckButton&>(_checkButton));
171         SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "[%s] Propagating.", GetErrorMessage(r));
172
173         return r;
174 }
175
176 const CheckButton*
177 _RadioGroupImpl::GetSelectedItem(void) const
178 {
179         ClearLastResult();
180
181         const _CheckButton* _pCheckButton = GetCore().GetSelectedItem();
182
183         if (!_pCheckButton)
184         {
185                 return null;
186         }
187
188         _CheckButtonImpl* pCheckButtonImpl = static_cast<_CheckButtonImpl*>(_pCheckButton->GetUserData());
189         if (!pCheckButtonImpl)
190         {
191                 return null;
192         }
193
194         const CheckButton* pCheckButton = dynamic_cast<CheckButton*>(&(pCheckButtonImpl->GetPublic()));
195         if (!pCheckButton)
196         {
197                 return null;
198         }
199
200         return pCheckButton;
201 }
202
203 }}} // Tizen::Ui::Controls