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.
19 * @file FUiCtrl_TableViewItemImpl.cpp
20 * @brief This is the implementation file for _TableViewItemImpl class.
22 * This file contains the implementation of _TableViewItemImpl class.
25 #include <FUiAnimControlAnimator.h>
26 #include <FUiCtrlTableViewContextItem.h>
27 #include <FGrp_CanvasGpPrimitive.h>
28 #include "FUiCtrl_TableViewItemImpl.h"
29 #include "FUiCtrl_TableViewItem.h"
30 #include "FUi_LayoutImpl.h"
31 #include "FUi_ResourceManager.h"
32 #include "FUi_ResourceSizeInfo.h"
33 #include "FUi_ResourceManager.h"
34 #include "FUi_CoordinateSystemUtils.h"
36 using namespace Tizen::Base;
37 using namespace Tizen::Graphics;
39 namespace Tizen { namespace Ui { namespace Controls
42 Tizen::Graphics::Dimension
43 _TableViewItemImpl::TableViewItemSizeInfo::GetDefaultMinimumSize(_ControlOrientation orientation) const
45 return Dimension(0.0f, 0.0f);
48 Tizen::Graphics::FloatDimension
49 _TableViewItemImpl::TableViewItemSizeInfo::GetDefaultMinimumSizeF(_ControlOrientation orientation) const
51 return FloatDimension(0.0f, 0.0f);
55 _TableViewItemImpl::GetInstance(TableViewItemBase& tableViewItem)
57 return static_cast <_TableViewItemImpl*>(tableViewItem._pControlImpl);
60 const _TableViewItemImpl*
61 _TableViewItemImpl::GetInstance(const TableViewItemBase& tableViewItem)
63 return static_cast <const _TableViewItemImpl*>(tableViewItem._pControlImpl);
66 _TableViewItemImpl::_TableViewItemImpl(TableViewItemBase* pPublic, _TableViewItem* pCore, Layout* pPublicPortraitLayout, Layout* pPublicLandscapeLayout)
67 : _ContainerImpl(pPublic, pCore, pPublicPortraitLayout, pPublicLandscapeLayout)
69 if (pPublicPortraitLayout != null || pPublicLandscapeLayout != null)
71 GetCore().SetItemLayoutEnabled(true);
75 _TableViewItemImpl::~_TableViewItemImpl(void)
81 _TableViewItemImpl::GetPublicClassName(void) const
83 return "Tizen::Ui::Controls::TableViewItem";
87 _TableViewItemImpl::GetPublic(void) const
89 return static_cast <const TableViewItem&>(_ContainerImpl::GetPublic());
93 _TableViewItemImpl::GetPublic(void)
95 return static_cast <TableViewItem&>(_ContainerImpl::GetPublic());
99 _TableViewItemImpl::GetCore(void) const
101 return static_cast <const _TableViewItem&>(_ControlImpl::GetCore());
105 _TableViewItemImpl::GetCore(void)
107 return static_cast <_TableViewItem&>(_ControlImpl::GetCore());
111 _TableViewItemImpl::CreateTableViewItemImplN(TableViewItemBase* pPublic, const Tizen::Graphics::FloatDimension& itemSize, TableViewAnnexStyle style, Layout* pPublicPortraitLayout, Layout* pPublicLandscapeLayout)
113 result r = E_SUCCESS;
115 r = GET_SIZE_INFO(TableViewItem).CheckInitialSizeValidF(FloatDimension(itemSize.width, itemSize.height), _CONTROL_ORIENTATION_PORTRAIT);
116 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
118 if (pPublicPortraitLayout != null)
120 _LayoutImpl* pPortraitLayoutImpl = _LayoutImpl::GetInstance(*pPublicPortraitLayout);
121 SysTryReturn(NID_UI_CTRL, pPortraitLayoutImpl != null, null, E_INVALID_ARG, "[E_INVALID_ARG] Portrait layout is invalid object");
124 if (pPublicLandscapeLayout != null)
126 _LayoutImpl* pLandscapeLayoutImpl = _LayoutImpl::GetInstance(*pPublicLandscapeLayout);
127 SysTryReturn(NID_UI_CTRL, pLandscapeLayoutImpl != null, null, E_INVALID_ARG, "[E_INVALID_ARG] Landscape layout is invalid object");
130 _TableViewItem* pCore = _TableViewItem::CreateTableViewItemN(itemSize.height);
131 SysTryReturn(NID_UI_CTRL, pCore != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
133 _TableViewItemImpl* pImpl = new (std::nothrow) _TableViewItemImpl(pPublic, pCore, pPublicPortraitLayout, pPublicLandscapeLayout);
134 SysTryReturn(NID_UI_CTRL, pImpl != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
136 r = pImpl->Construct(itemSize, style);
137 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
139 r = pImpl->SetSize(itemSize);
140 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
151 _TableViewItemImpl::Construct(const FloatDimension& itemSize, const TableViewAnnexStyle style)
153 result r = E_SUCCESS;
155 SysTryReturn(NID_UI_CTRL, (itemSize.width >= 0 && itemSize.height >= 0), E_INVALID_ARG, E_INVALID_ARG, ("[E_INVALID_ARG] The item size should be greater than 0")); //CONVERTFLOAT_1
157 GetCore().SetItemStyle(style);
158 GetCore().SetItemWidth(itemSize.width);
164 _TableViewItemImpl::SetContextItem(_TableViewItemImpl* pItem)
168 GetCore().SetContextItem(null);
172 GetCore().SetContextItem(&pItem->GetCore());
174 _TableViewItemImpl* pItemImpl = pItem;
176 TableViewContextItem* pContextItem = static_cast <TableViewContextItem*>(&pItemImpl->_ContainerImpl::GetPublic());
177 pItemImpl->GetCore().SetAppInfo(pContextItem);
183 _TableViewItemImpl::SetSelectionStyle(TableViewItemSelectionStyle style)
185 return GetCore().SetSelectionStyle(style);
188 TableViewItemSelectionStyle
189 _TableViewItemImpl::GetSelectionStyle(void) const
191 return GetCore().GetSelectionStyle();
195 _TableViewItemImpl::SetBackgroundBitmap(TableViewItemDrawingStatus status, const Bitmap* pBitmap)
197 SysTryReturn(NID_UI_CTRL, pBitmap, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] It is invalid argument");
199 ListItemState itemState;
203 case TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL:
204 itemState = LIST_ITEM_STATE_NORMAL;
207 case TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED:
208 itemState = LIST_ITEM_STATE_PRESSED;
211 case TABLE_VIEW_ITEM_DRAWING_STATUS_HIGHLIGHTED:
212 itemState = LIST_ITEM_STATE_HIGHLIGHTED;
219 GetCore().SetItemBackgroundBitmap(itemState, pBitmap);
225 _TableViewItemImpl::SetBackgroundColor(TableViewItemDrawingStatus status, const Color& color)
227 ListItemState itemState;
231 case TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL:
232 itemState = LIST_ITEM_STATE_NORMAL;
235 case TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED:
236 itemState = LIST_ITEM_STATE_PRESSED;
239 case TABLE_VIEW_ITEM_DRAWING_STATUS_HIGHLIGHTED:
240 itemState = LIST_ITEM_STATE_HIGHLIGHTED;
247 GetCore().SetItemBackgroundColor(itemState, color);
253 _TableViewItemImpl::GetBackgroundColor(TableViewItemDrawingStatus status) const
255 ListItemState itemState;
258 case TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL:
259 itemState = LIST_ITEM_STATE_NORMAL;
262 case TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED:
263 itemState = LIST_ITEM_STATE_PRESSED;
266 case TABLE_VIEW_ITEM_DRAWING_STATUS_HIGHLIGHTED:
267 itemState = LIST_ITEM_STATE_HIGHLIGHTED;
274 return GetCore().GetItemBackgroundColor(itemState);
278 _TableViewItemImpl::SetSimpleItemContents(const Tizen::Base::String& text, const Tizen::Graphics::Bitmap* pBitmap, bool groupType)
280 return GetCore().SetSimpleItemContents(text, pBitmap, groupType);
284 _TableViewItemImpl::SetSimpleItemTextColor(const Tizen::Graphics::Color& color, TableViewItemDrawingStatus status)
286 return GetCore().SetSimpleTextColor(color, status);
289 Tizen::Graphics::Color
290 _TableViewItemImpl::GetSimpleItemTextColor(TableViewItemDrawingStatus status) const
292 return GetCore().GetSimpleItemTextColor(status);
296 _TableViewItemImpl::SetSimpleItemTextSize(int size)
298 return GetCore().SetSimpleItemTextSize(size);
302 _TableViewItemImpl::GetSimpleItemTextSize(void) const
304 return GetCore().GetSimpleItemTextSize();
308 _TableViewItemImpl::GetAnnexWidth(TableViewAnnexStyle style)
310 return _TableViewItem::GetAnnexWidth(style);
314 _TableViewItemImpl::SetIndividualSelectionEnabled(const Tizen::Ui::_ControlImpl& controlImpl, bool enable)
316 return GetCore().SetIndividualSelectionEnabled(controlImpl.GetCore(), enable);
320 _TableViewItemImpl::IsIndividualSelectionEnabled(const Tizen::Ui::_ControlImpl& controlImpl)
322 return GetCore().IsIndividualSelectionEnabled(controlImpl.GetCore());
326 }}} // Tizen::Ui::Controls