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.
19 * @file FUiCtrl_TableViewItem.cpp
20 * @brief This is the implementation file for _TableViewItem class.
22 * This file contains the implementation of _TableViewItem class.
25 #include <FBaseUtilMath.h>
26 #include <FGrp_BitmapImpl.h>
27 #include "FUi_ResourceManager.h"
28 #include "FUi_UiTouchEvent.h"
29 #include "FUiAnim_VisualElement.h"
30 #include "FUiAnim_ControlVisualElement.h"
31 #include "FUiCtrl_TableViewItem.h"
32 #include "FUiCtrl_TableView.h"
33 #include "FUi_CoordinateSystemUtils.h"
35 #include "FUiCtrl_LabelImpl.h"
36 #include "FUi_Window.h"
38 using namespace Tizen::Base;
39 using namespace Tizen::Base::Runtime;
40 using namespace Tizen::Base::Collection;
41 using namespace Tizen::Ui::Animations;
42 using namespace Tizen::Graphics;
44 namespace Tizen { namespace Ui { namespace Controls
47 _TableViewItemControl::_TableViewItemControl(void)
48 :__pBackgroundBitmap(null)
52 _TableViewItemControl::~_TableViewItemControl(void)
54 if (__pBackgroundBitmap)
56 delete __pBackgroundBitmap;
57 __pBackgroundBitmap = null;
63 _TableViewItemControl::OnDraw(void)
65 Bitmap* pBitmap = GetBackgroundBitmap();
67 FloatRectangle bounds(0.0f, 0.0f, GetBoundsF().width, GetBoundsF().height); // +++ check floating
69 Color bgColor = GetBackgroundColor();
71 Canvas* pCanvas = null;
75 pCanvas = GetCanvasN();
78 SysLog(NID_UI_CTRL, "Cannot get a canvas.");
83 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
86 if (_BitmapImpl::CheckNinePatchedBitmapStrictly(*pBitmap))
88 pCanvas->DrawNinePatchedBitmap(bounds, *pBitmap);
92 FloatRectangle drawingRect(0.0f, 0.0f, bounds.width, bounds.height);
93 pCanvas->DrawBitmap(drawingRect, *pBitmap);
99 if (IsCalledGetCanvasN() == false)
101 GetVisualElement()->SetBackgroundColor(_Colorf((float)bgColor.GetRed() / 255, (float)bgColor.GetGreen() / 255, (float)bgColor.GetBlue() / 255, (float)bgColor.GetAlpha() / 255));
105 pCanvas = GetCanvasN();
108 SysLog(NID_UI_CTRL, "Cannot get a canvas.");
113 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
115 pCanvas->FillRectangle(GetBackgroundColor(), bounds); // +++ check floating
128 _TableViewItemControl::HitTest(const Graphics :: FloatPoint & point)
130 return HIT_TEST_NOWHERE;
133 _TableViewItemControl*
134 _TableViewItemControl::CreateTableViewItemControlN(void)
136 _TableViewItemControl* pItemControl = new (std::nothrow) _TableViewItemControl();
137 SysTryReturn(NID_UI_CTRL, pItemControl, null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
138 SysTryCatch(NID_UI_CTRL, GetLastResult() == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred.", GetErrorMessage(E_SYSTEM));
141 pItemControl->AcquireHandle();
151 _TableViewItemControl::SetBackgroundBitmap(const Bitmap& bitmap)
155 Bitmap* pClonedBitmap = _BitmapImpl::CloneN(bitmap);
159 if (__pBackgroundBitmap != null)
161 delete __pBackgroundBitmap;
164 __pBackgroundBitmap = pClonedBitmap;
173 _TableViewItemControl::GetBackgroundBitmap(void) const
175 return __pBackgroundBitmap;
178 _TableViewItem::_TableViewItem(float itemHeight)
182 , __itemHeight(itemHeight)
183 , __itemGroupIndex(-1)
185 , __checkedState(false)
186 , __enabledState(true)
187 , __itemChanged(true)
188 , __reorderMode(false)
189 , __itemSelected(false)
190 , __itemTouchMoved(false)
191 , __childMarginState(false)
192 , __annexStyle(TABLE_VIEW_ANNEX_STYLE_NORMAL)
193 , __drawingStatus(TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL)
194 , __selectionStyle(TABLE_VIEW_ITEM_SELECTION_STYLE_WHOLE)
195 , __itemType(TABLE_VIEW_ITEM_TYPE_NONE)
196 , __pContextItem(null)
197 , __isContextItem(false)
198 , __isContextItemActivated(false)
199 , __checkItemHeightNeeded(false)
200 , __pItemDivider(null)
201 , __pItemTopDivider(null)
204 , __pItemAnnexLeftDivider(null)
205 , __pItemAnnexRightDivider(null)
207 , __pDrawingProperty(null)
208 , __itemDividerEnabled(true)
209 , __pSimpleItemText(null)
210 , __pSimpleItemBitmap(null)
211 , __simpleItemTextSize(0)
212 , __pHeaderFooterItemText(null)
214 , __touchStartPosition(0.0f, 0.0f)
215 , __annexTouchStartPosition(0)
216 , __annexOnOffHandlerMoved(false)
217 , __annexOnOffHandlerPositionX(0.0f)
218 , __childControlCenterAlign(false)
219 , __customHeight(0.0f)
220 , __animationCount(0)
221 , __pAccessibilityElement(null)
222 , __pAccessibilityOnOffElement(null)
223 , __pPressedTimer(null)
224 , __pReleasedTimer(null)
225 , __isPressedTimerEnabled(false)
226 , __isReleasedTimerEnabled(false)
227 , __pressedControl(TABLE_VIEW_ITEM_PRESSED_NONE)
228 , __releasedControl(TABLE_VIEW_ITEM_PRESSED_NONE)
229 , __pCheckedTimer(null)
230 , __isCheckedTimerEnabled(false)
231 , __isCheckedAnimationEnabled(false)
233 , __checkedBounds(FloatRectangle(0.0f, 0.0f, 0.0f, 0.0f))
234 , __isItemLayoutEnabled(false)
235 , __isMoveItemAnimationEnabled(false)
236 , __isZoomInOutItemAnimationEnabled(false)
237 , __isFadeInOutItemAnimationEnabled(false)
238 , __isAnimationCallbackBlocked(false)
239 , __isItemTapSoundEnabled(true)
240 , __isTabSoundPlayed(false)
241 , __isSelectedDetailButton(false)
242 , __isSimpleLastItem(false)
243 , __isSectionItem(false)
244 , __isTouchPressOnScroll(false)
245 , __isTouchCancelOnPressRelease(false)
246 , __pHighlightVisualElement(null)
247 , __pBitmapVisualElement(null)
248 , __pMoveItemAnimation(null)
249 , __pZoomInOutItemAnimation(null)
250 , __pFadeInOutItemtAnimation(null)
252 for (int i = 0; i < 3; i++)
254 __pItemBgBitmap[i] = null;
257 GET_COLOR_CONFIG(TABLEVIEW::ITEM_BG_NORMAL, __colorItemBg[TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL]); // for support opacity 0x00
258 GET_COLOR_CONFIG(TABLEVIEW::ITEM_BG_PRESSED, __colorItemBg[TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED]);
259 GET_COLOR_CONFIG(TABLEVIEW::ITEM_BG_HIGHLIGHTED, __colorItemBg[TABLE_VIEW_ITEM_DRAWING_STATUS_HIGHLIGHTED]);
261 GET_COLOR_CONFIG(TABLEVIEW::ITEM_TEXT_NORMAL, __simpleItemTextColor[TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL]);
262 GET_COLOR_CONFIG(TABLEVIEW::ITEM_TEXT_PRESSED, __simpleItemTextColor[TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED]);
263 GET_COLOR_CONFIG(TABLEVIEW::ITEM_TEXT_HIGHLIGHTED, __simpleItemTextColor[TABLE_VIEW_ITEM_DRAWING_STATUS_HIGHLIGHTED]);
264 GET_COLOR_CONFIG(TABLEVIEW::GROUPITEM_TEXT_NORMAL, __simpleItemTextColor[TABLE_VIEW_GROUPITEM_DRAWING_STATUS_NORMAL]);
265 GET_COLOR_CONFIG(TABLEVIEW::GROUPITEM_TEXT_PRESSED, __simpleItemTextColor[TABLE_VIEW_GROUPITEM_DRAWING_STATUS_PRESSED]);
266 GET_COLOR_CONFIG(TABLEVIEW::ITEM_TEXT_DISABLED, __simpleItemTextColor[TABLE_VIEW_SIMPLEITEM_DRAWING_STATUS_DISABLED]);
269 _AccessibilityContainer* pContainer = GetAccessibilityContainer();
272 pContainer->Activate(true);
273 pContainer->AddListener(*this);
277 _TableViewItem::~_TableViewItem()
279 __isAnimationCallbackBlocked = true;
281 StopTouchPressedTimer();
282 delete __pPressedTimer;
283 __pPressedTimer = null;
285 StopTouchReleasedTimer();
286 delete __pReleasedTimer;
287 __pReleasedTimer = null;
289 _VisualElement* pVisualElement = GetVisualElement();
290 if (pVisualElement != null)
292 if (__pMoveItemAnimation != null)
294 __pMoveItemAnimation->SetVisualElementAnimationTickEventListener(null);
295 __pMoveItemAnimation->SetVisualElementAnimationStatusEventListener(null);
298 if (__pZoomInOutItemAnimation != null)
300 __pZoomInOutItemAnimation->SetVisualElementAnimationTickEventListener(null);
301 __pZoomInOutItemAnimation->SetVisualElementAnimationStatusEventListener(null);
304 if (__pFadeInOutItemtAnimation != null)
306 __pFadeInOutItemtAnimation->SetVisualElementAnimationTickEventListener(null);
307 __pFadeInOutItemtAnimation->SetVisualElementAnimationStatusEventListener(null);
309 pVisualElement->RemoveAllAnimations();
312 for (int j = 0; j < 3; j++)
314 delete __pItemBgBitmap[j];
315 __pItemBgBitmap[j] = null;
318 if (__pHighlightVisualElement != null)
320 __pHighlightVisualElement->RemoveAllAnimations();
321 __pHighlightVisualElement->SetAnimationProvider(null);
322 __pHighlightVisualElement->Destroy();
323 __pHighlightVisualElement = null;
326 if (__pBitmapVisualElement != null)
328 __pBitmapVisualElement->RemoveAllAnimations();
329 __pBitmapVisualElement->SetAnimationProvider(null);
330 __pBitmapVisualElement->Destroy();
331 __pBitmapVisualElement = null;
336 if (GetParent() != null && __isContextItem == true)
338 GetParent()->DetachChild(*this);
341 delete __pItemDivider;
342 __pItemDivider = null;
344 delete __pItemTopDivider;
345 __pItemTopDivider = null;
347 delete __pItemAnnexLeftDivider;
348 __pItemAnnexLeftDivider = null;
350 delete __pItemAnnexRightDivider;
351 __pItemAnnexRightDivider = null;
362 delete __pHeaderFooterItemText;
363 __pHeaderFooterItemText = null;
365 delete __pMoveItemAnimation;
366 __pMoveItemAnimation = null;
368 delete __pZoomInOutItemAnimation;
369 __pZoomInOutItemAnimation = null;
371 delete __pFadeInOutItemtAnimation;
372 __pFadeInOutItemtAnimation = null;
374 if (__isCheckedTimerEnabled)
376 __pCheckedTimer->Cancel();
379 delete __pCheckedTimer;
380 __pCheckedTimer = null;
382 if (__pAccessibilityElement)
384 _AccessibilityContainer* pContainer = GetAccessibilityContainer();
387 pContainer->RemoveAllElement();
389 __pAccessibilityElement = null;
391 if (__pAccessibilityOnOffElement)
393 __pAccessibilityOnOffElement = null;
399 _TableViewItem::CreateTableViewItemN(float itemHeight)
401 result r = E_SUCCESS;
403 _TableViewItem* pItem = null;
404 pItem = new (std::nothrow) _TableViewItem(itemHeight);
405 SysTryReturn(NID_UI_CTRL, pItem, null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
407 pItem->AcquireHandle();
409 r = pItem->Initialize();
410 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r = E_SYSTEM, "[%s] A system error has been occurred.", GetErrorMessage(E_SYSTEM));
422 _TableViewItem::Initialize(void)
424 GetVisualElement()->SetSurfaceOpaque(false);
426 result r = E_SUCCESS;
428 __pHighlightVisualElement = new (std::nothrow) _VisualElement();
429 SysTryCatch(NID_UI_CTRL, __pHighlightVisualElement != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
431 r = __pHighlightVisualElement->Construct();
432 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Failed to construct Visual Element.", GetErrorMessage(r));
434 r = __pHighlightVisualElement->SetSurfaceOpaque(false);
435 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Failed to set surface opaque.", GetErrorMessage(r));
437 __pHighlightVisualElement->SetImplicitAnimationEnabled(false);
439 r = GetVisualElement()->AttachChild(*__pHighlightVisualElement);
440 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Failed to attach child to the control VisualElement.", GetErrorMessage(r));
442 r = SetItemHighlightBounds(*__pHighlightVisualElement, CalculateItemHighlightBounds());
443 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Failed to set bounds.", GetErrorMessage(r));
445 __pHighlightVisualElement->SetBackgroundColor(_Colorf(0.0f, 0.0f, 0.0f, 0.0f));
446 __pHighlightVisualElement->SetShowState(true);
448 r = __individualSelectionControls.Construct(DEFAULT_CAPTURED_CONTROL_COUNT);
449 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Failed to construct ArrayList", GetErrorMessage(r));
451 SetTouchPressThreshold(SENSITIVE);
453 if (!_FloatCompare(__itemHeight, 0.0f))
455 SetAccessibilityElement();
458 GetAccessibilityContainer()->Activate(false);
463 if (__pHighlightVisualElement != null)
465 __pHighlightVisualElement->RemoveAllAnimations();
466 __pHighlightVisualElement->SetAnimationProvider(null);
467 __pHighlightVisualElement->Destroy();
468 __pHighlightVisualElement = null;
475 _TableViewItem::GetContextItem(void) const
477 return __pContextItem;
481 _TableViewItem::SetContextItem(_TableViewItem* pContextItem)
483 if (pContextItem != null)
485 pContextItem->__isContextItem = true;
488 __pContextItem = pContextItem;
492 _TableViewItem::IsContextItem(void) const
494 return __isContextItem;
498 _TableViewItem::SetContextItemActivation(bool activated)
500 __isContextItemActivated = activated;
504 _TableViewItem::IsContextItemActivated(void) const
506 return __isContextItemActivated;
510 _TableViewItem::CreateItemDimLayer(void)
512 result r = E_SUCCESS;
514 if (__pDimLayer == null)
516 __pDimLayer = _Label::CreateLabelN();
519 SysTryReturn(NID_UI_CTRL, __pDimLayer != null, r, r, "[%s] Propagating.", GetErrorMessage(r));
521 __pDimLayer->SetBackgroundColor(Color(0, 0, 0, BACKGROUND_DIMMED_OPACITY * 0xff));
522 __pDimLayer->SetVisibleState(false);
524 AttachSystemChild(*__pDimLayer);
531 _TableViewItem::CreateItemDivider(void)
533 result r = E_SUCCESS;
535 if (__pItemDivider == null)
537 __pItemDivider = _TableViewItemControl::CreateTableViewItemControlN();
539 SysTryReturn(NID_UI_CTRL, __pItemDivider != null, r, r, "[%s] Propagating.", GetErrorMessage(r));
540 __pItemDivider->SetFocusable(false);
541 AttachSystemChild(*__pItemDivider);
543 _AccessibilityContainer* pContainer = __pItemDivider->GetAccessibilityContainer();
544 pContainer->Activate(false);
547 if (__pItemTopDivider == null)
549 __pItemTopDivider = _TableViewItemControl::CreateTableViewItemControlN();
550 SysTryReturn(NID_UI_CTRL, __pItemTopDivider != null, r, r, "[%s] Propagating.", GetErrorMessage(r));
551 __pItemTopDivider->SetFocusable(false);
552 AttachSystemChild(*__pItemTopDivider);
554 _AccessibilityContainer* pContainer = __pItemTopDivider->GetAccessibilityContainer();
555 pContainer->Activate(false);
562 _TableViewItem::CreateItemAnnexDivider(void)
564 result r = E_SUCCESS;
566 if (__pItemAnnexLeftDivider == null)
568 __pItemAnnexLeftDivider = _TableViewItemControl::CreateTableViewItemControlN();
570 SysTryReturn(NID_UI_CTRL, __pItemAnnexLeftDivider != null, r, r, "[%s] Propagating.", GetErrorMessage(r));
571 __pItemAnnexLeftDivider->SetFocusable(false);
572 AttachSystemChild(*__pItemAnnexLeftDivider);
575 if (__pItemAnnexRightDivider == null)
577 __pItemAnnexRightDivider = _TableViewItemControl::CreateTableViewItemControlN();
578 SysTryReturn(NID_UI_CTRL, __pItemAnnexRightDivider != null, r, r, "[%s] Propagating.", GetErrorMessage(r));
579 __pItemAnnexRightDivider->SetFocusable(false);
580 AttachSystemChild(*__pItemAnnexRightDivider);
587 _TableViewItem::CreateItemCover(void)
589 result r = E_SUCCESS;
591 if (__pItemCover == null)
593 __pItemCover = _TableViewItemControl::CreateTableViewItemControlN();
595 SysTryReturn(NID_UI_CTRL, __pItemCover != null, r, r, "[%s] Propagating.", GetErrorMessage(r));
596 __pItemCover->SetFocusable(false);
597 AttachSystemChild(*__pItemCover);
604 _TableViewItem::CreateCheckBox(void)
606 result r = E_SUCCESS;
608 if (__pItemAnnex == null)
610 float annexWidth = 0.0f;
611 float annexHeight = 0.0f;
612 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, annexWidth);
613 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, annexHeight);
615 __pItemAnnex = new (std::nothrow) Label();
617 SysTryReturn(NID_UI_CTRL, __pItemAnnex != null, r, r, "[%s] Propagating.", GetErrorMessage(r));
619 float leftMargin = 0.0f;
620 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_LEFT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, leftMargin);
622 float itemHeight = ((__customHeight > 0) ? __customHeight : GetBoundsF().height);
623 __pItemAnnex->Construct(FloatRectangle(leftMargin, ((itemHeight - annexHeight) / 2), annexWidth, annexHeight), L"");
624 __pItemAnnex->SetBackgroundColor(Color(0, 0, 0, 0));
625 GetLabelCore(__pItemAnnex)->SetFocusable(true);
627 AttachSystemChild(*GetLabelCore(__pItemAnnex));
635 _TableViewItem::CreateRadioBox(void)
637 result r = E_SUCCESS;
639 if (__pItemAnnex == null)
641 float annexWidth = 0.0f;
642 float annexHeight = 0.0f;
643 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, annexWidth);
644 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, annexHeight);
646 __pItemAnnex = new (std::nothrow) Label();
648 SysTryReturn(NID_UI_CTRL, __pItemAnnex != null, r, r, "[%s] Propagating.", GetErrorMessage(r));
650 float leftMargin = 0.0f;
651 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_LEFT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, leftMargin);
653 float itemHeight = ((__customHeight > 0) ? __customHeight : GetBoundsF().height);
654 __pItemAnnex->Construct(FloatRectangle(leftMargin, ((itemHeight - annexHeight) / 2), annexWidth, annexHeight), L"");
655 __pItemAnnex->SetBackgroundColor(Color(0, 0, 0, 0));
656 GetLabelCore(__pItemAnnex)->SetFocusable(true);
658 AttachSystemChild(*GetLabelCore(__pItemAnnex));
665 _TableViewItem::CreateOnOffButton(void)
667 result r = E_SUCCESS;
669 if (__pItemAnnex == null)
671 float annexWidth = 0.0f;
672 float annexHeight = 0.0f;
674 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_ONOFF_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, annexWidth);
675 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_ONOFF_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, annexHeight);
677 __pItemAnnex = new (std::nothrow) Label();
679 SysTryReturn(NID_UI_CTRL, __pItemAnnex != null, r, r, "[%s] Propagating.", GetErrorMessage(r));
681 float leftMargin = 0.0f;
682 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_LEFT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, leftMargin);
684 leftMargin += __pDrawingProperty->scrollMargin;
686 float itemHeight = ((__customHeight > 0) ? __customHeight : GetBoundsF().height);
687 __pItemAnnex->Construct(FloatRectangle((GetBoundsF().width - annexWidth - leftMargin), ((itemHeight - annexHeight) / 2), annexWidth, annexHeight), L"");
688 __pItemAnnex->SetBackgroundColor(Color(0, 0, 0, 0));
689 GetLabelCore(__pItemAnnex)->SetFocusable(true);
691 AttachSystemChild(*GetLabelCore(__pItemAnnex));
698 _TableViewItem::CreateDetailButton(void)
700 result r = E_SUCCESS;
702 if (__pItemAnnex == null)
704 float annexWidth = 0.0f;
705 float annexHeight = 0.0f;
707 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_MORE_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, annexWidth);
708 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_MORE_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, annexHeight);
709 __pItemAnnex = new (std::nothrow) Label();
711 SysTryReturn(NID_UI_CTRL, __pItemAnnex != null, r, r, "[%s] Propagating.", GetErrorMessage(r));
713 float leftMargin = 0.0f;
714 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_LEFT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, leftMargin);
716 leftMargin += __pDrawingProperty->scrollMargin;
717 float itemHeight = ((__customHeight > 0) ? __customHeight : GetBoundsF().height);
718 __pItemAnnex->Construct(FloatRectangle((GetBoundsF().width - annexWidth - leftMargin), ((itemHeight - annexHeight) / 2), annexWidth, annexHeight), L"");
719 __pItemAnnex->SetBackgroundColor(Color(0, 0, 0, 0));
720 GetLabelCore(__pItemAnnex)->SetFocusable(true);
722 AttachSystemChild(*GetLabelCore(__pItemAnnex));
729 _TableViewItem::GetLabelCore(Label* label)
736 _LabelImpl* pImpl = _LabelImpl::GetInstance(*label);
737 return &pImpl->GetCore();
741 _TableViewItem::ExposeContextItem(FloatRectangle itemBounds, float targetWidth)
744 if (__pDimLayer == null)
746 if (CreateItemDimLayer() != E_SUCCESS)
752 SetBounds(itemBounds);
756 if ((itemBounds.width <= 0) || (itemBounds.width >= targetWidth)) // +++ check floating
763 float rightMargin = 0.0f;
764 float dimLayerOpacity = 0.0f;
766 GET_SHAPE_CONFIG(TABLEVIEW::CONTEXTITEM_RIGHT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, rightMargin);
768 dimLayerOpacity = BACKGROUND_DIMMED_OPACITY - ((itemBounds.width * BACKGROUND_DIMMED_OPACITY) / (targetWidth - rightMargin));
769 dimLayerOpacity = ((dimLayerOpacity < 0) ? 0 : dimLayerOpacity); // +++ check floating
771 __pDimLayer->SetBounds(FloatRectangle(0.0f, 0.0f, itemBounds.width, itemBounds.height));
772 __pDimLayer->SetBackgroundColor(Color(0.0f, 0.0f, 0.0f, dimLayerOpacity * 0xff));
775 __pDimLayer->SetVisibleState(visible);
780 _TableViewItem::DrawItemDimLayer(bool visible)
782 if (__pDimLayer == null)
784 if (CreateItemDimLayer() != E_SUCCESS)
792 FloatDimension itemSize = GetSizeF();
793 __pDimLayer->SetBounds(FloatRectangle(0.0f, 0.0f, itemSize.width, itemSize.height));
794 __pDimLayer->SetBackgroundColor(Color(0, 0, 0, BACKGROUND_DISABLED_OPACITY * 0xff));
797 __pDimLayer->SetVisibleState(visible);
801 _TableViewItem::SetItemWidth(float width)
807 _TableViewItem::SetItemBackgroundBitmap(ListItemState itemState, const Bitmap* pBitmap)
809 Bitmap* pCopyBitmap = null;
811 pCopyBitmap = _BitmapImpl::CloneN(*pBitmap);
812 SysTryReturn(NID_UI_CTRL, pCopyBitmap != null, false, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
814 delete __pItemBgBitmap[itemState];
815 __pItemBgBitmap[itemState] = pCopyBitmap;
818 if (__pItemBgBitmap[TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL] == null &&
819 __pItemBgBitmap[TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED] == null &&
820 __pItemBgBitmap[TABLE_VIEW_ITEM_DRAWING_STATUS_HIGHLIGHTED] == null)
822 if (__pBitmapVisualElement != null)
824 __pBitmapVisualElement->Destroy();
825 __pBitmapVisualElement = null;
830 if (__pBitmapVisualElement == null)
832 FloatRectangle bounds = GetBoundsF();
833 result r = E_SUCCESS;
835 __pBitmapVisualElement = new (std::nothrow) _VisualElement();
836 SysTryCatch(NID_UI_CTRL, __pBitmapVisualElement != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
838 r = __pBitmapVisualElement->Construct();
839 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
841 __pBitmapVisualElement->SetSurfaceOpaque(false);
842 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Failed to set surface opaque.", GetErrorMessage(r));
844 __pBitmapVisualElement->SetImplicitAnimationEnabled(false);
845 __pBitmapVisualElement->SetBounds(FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height));
846 __pBitmapVisualElement->SetShowState(true);
848 GetVisualElement()->AttachChild(*__pBitmapVisualElement);
852 SetItemChanged(true);
855 if (__pBitmapVisualElement != null)
857 __pBitmapVisualElement->RemoveAllAnimations();
858 __pBitmapVisualElement->SetAnimationProvider(null);
859 __pBitmapVisualElement->Destroy();
860 __pBitmapVisualElement = null;
865 Tizen::Graphics::Bitmap*
866 _TableViewItem::GetItemBackgroundBitmap(ListItemState itemState) const
868 return __pItemBgBitmap[itemState];
872 _TableViewItem::SetItemBackgroundColor(ListItemState itemState, const Color bgColor)
874 if (__colorItemBg[itemState] == bgColor)
879 __colorItemBg[itemState] = bgColor;
881 SetItemChanged(true);
885 _TableViewItem::GetItemBackgroundColor(ListItemState itemState) const
887 return __colorItemBg[itemState];
891 _TableViewItem::SetItemStyle(TableViewAnnexStyle style)
893 if (__annexStyle == style)
898 __annexStyle = style;
902 _TableViewItem::SetSelectionStyle(TableViewItemSelectionStyle style)
904 __selectionStyle = style;
909 TableViewItemSelectionStyle
910 _TableViewItem::GetSelectionStyle(void) const
912 return __selectionStyle;
916 _TableViewItem::GetItemHeight(void) const
918 return GetSizeF().height;
922 _TableViewItem::SetItemHeight(int itemHeight)
924 SetItemHeight(_CoordinateSystemUtils::ConvertToFloat(itemHeight));
928 _TableViewItem::SetItemHeight(float itemHeight)
930 if (_FloatCompare(GetSizeF().height, itemHeight))
935 SetSize(FloatDimension(GetSizeF().width, itemHeight));
939 _TableViewItem::SetChecked(bool checked)
941 if (__checkedState == checked)
946 __checkedState = checked;
948 SetItemChanged(true);
952 _TableViewItem::IsChecked(void) const
954 return __checkedState;
958 _TableViewItem::SetCheckedAnimationEnabled(bool enabled)
960 if (__isCheckedAnimationEnabled == enabled)
965 __isCheckedAnimationEnabled = enabled;
967 if (__isCheckedAnimationEnabled == false)
969 StopCheckBoxAnimation();
974 _TableViewItem::SetItemEnabled(bool enabled)
976 if (__enabledState == enabled)
981 __enabledState = enabled;
983 SetEnableState(enabled);
985 SetItemChanged(true);
993 _TableViewItem::IsItemEnabled(void) const
995 return __enabledState;
999 _TableViewItem::SetItemType(const TableViewItemType itemType)
1001 if (__itemType == itemType)
1006 __itemType = itemType;
1008 if (__pContextItem != null)
1010 __pContextItem->SetItemType(__itemType);
1013 if (itemType == TABLE_VIEW_ITEM_TYPE_TITLE)
1016 GET_COLOR_CONFIG(TABLEVIEW::ITEM_BG_PRESSED, titleColor);
1017 if (titleColor == __colorItemBg[TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED])
1019 GET_COLOR_CONFIG(TABLEVIEW::GROUPITEM_BG_PRESSED, __colorItemBg[TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED]);
1021 GetAccessibilityContainer()->Activate(true);
1026 _TableViewItem::SetItemIndex(int groupIndex, int itemIndex)
1028 __itemGroupIndex = groupIndex;
1029 __itemIndex = itemIndex;
1033 _TableViewItem::GetItemIndex(int& groupIndex, int& itemIndex) const
1035 groupIndex = __itemGroupIndex;
1036 itemIndex = __itemIndex;
1041 _TableViewItem::GetItemType(void) const
1047 _TableViewItem::IsReorderMode(void) const
1049 return __reorderMode;
1053 _TableViewItem::SetReorderMode(bool enabled)
1055 __reorderMode = enabled;
1059 _TableViewItem::SetAppInfo(const void* pAppInfo)
1061 __pAppInfo = const_cast<void*>(pAppInfo);
1065 _TableViewItem::GetAppInfo(void) const
1071 _TableViewItem::SetItemChanged(bool changed)
1073 __itemChanged = changed;
1077 _TableViewItem::IsItemChanged(void) const
1079 return __itemChanged;
1083 _TableViewItem::IsAnnexOnOffSliding(void)
1085 return __annexOnOffHandlerMoved;
1089 _TableViewItem::GetItemStyle(void) const
1091 return __annexStyle;
1095 _TableViewItem::DrawItem(FloatRectangle& rcItem, ListItemState itemState, bool itemDivider)
1101 _TableViewItem::SetItemTapSoundEnabled(bool tapSoundEnabled)
1103 bool oldValue = __isItemTapSoundEnabled;
1104 __isItemTapSoundEnabled = tapSoundEnabled;
1109 _TableViewItem::GetItemTapSoundEnabled(void)
1111 return __isItemTapSoundEnabled;
1115 _TableViewItem::DrawAnnexFocus(void)
1119 __pItemAnnex->SetFocus();
1124 Tizen::Graphics::Canvas*
1125 _TableViewItem::OnCanvasRequestedN(const Tizen::Graphics::FloatRectangle& bounds)
1127 Canvas* pCanvas = null;
1129 if (__pBitmapVisualElement != null && __pBitmapVisualElement->GetImageSource().IsEmpty())
1131 Bitmap* pDrawBitmap = __pItemBgBitmap[__drawingStatus];
1132 if (pDrawBitmap != null)
1134 pCanvas = __pBitmapVisualElement->GetCanvasN();
1135 SysTryCatch(NID_UI_CTRL, pCanvas != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
1136 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
1139 pDrawBitmap->IsNinePatchedBitmap();
1140 DrawBitmap(*pCanvas, FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height), *pDrawBitmap);
1150 _TableViewItem::FireItemEvent(bool selectedItem)
1154 || __itemType == TABLE_VIEW_ITEM_TYPE_HEADER
1155 || __itemType == TABLE_VIEW_ITEM_TYPE_FOOTER)
1160 _TableView* pParent = dynamic_cast<_TableView*>(GetParent());
1161 if (pParent == null)
1166 TableViewNotifyType eventType = TABLEVIEW_NOTIFY_TYPE_SELECTED_ITEM;
1168 if ((__annexStyle == TABLE_VIEW_ANNEX_STYLE_MARK)
1169 || (__annexStyle == TABLE_VIEW_ANNEX_STYLE_RADIO)
1170 || (__annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING))
1174 eventType = TABLEVIEW_NOTIFY_TYPE_ANNEX_CHECK;
1178 eventType = TABLEVIEW_NOTIFY_TYPE_ANNEX_UNCHECK;
1181 else if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_DETAILED)
1185 eventType = TABLEVIEW_NOTIFY_TYPE_ANNEX_MORE;
1188 else if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
1192 eventType = TABLEVIEW_NOTIFY_TYPE_SELECTED_ITEM;
1198 eventType = TABLEVIEW_NOTIFY_TYPE_ANNEX_CHECK;
1202 eventType = TABLEVIEW_NOTIFY_TYPE_ANNEX_UNCHECK;
1207 if (__isItemTapSoundEnabled)
1209 if (!__isTabSoundPlayed)
1211 PLAY_FEEDBACK(_RESOURCE_FEEDBACK_PATTERN_TAP, this);
1215 __isTabSoundPlayed = false;
1216 __checkItemHeightNeeded = true;
1218 int groupIndex = -1;
1220 GetItemIndex(groupIndex, itemIndex);
1221 pParent->FireTableViewItemEvent(groupIndex, itemIndex, eventType, this);
1225 _TableViewItem::FireItemSweepEvent(TableViewSweepDirection direction)
1227 if (HasParent() == false)
1232 _TableView* pParent = dynamic_cast<_TableView*>(GetParent());
1233 if (pParent == null)
1238 int groupIndex = -1;
1240 GetItemIndex(groupIndex, itemIndex);
1242 pParent->FireTableViewItemSweepEvent(groupIndex, itemIndex, direction);
1246 _TableViewItem::OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo)
1248 __isTouchCancelOnPressRelease = false;
1250 if (IsContextItem() ||
1251 __isContextItemActivated ||
1252 IsAnimationPlaying() ||
1258 if (IsTouchPressOnScroll())
1263 __annexOnOffHandlerMoved = false;
1264 __touchStartPosition = touchinfo.GetCurrentPosition();
1266 if (&source == this)
1268 __pressedControl = TABLE_VIEW_ITEM_PRESSED_ITEM;
1270 else if (&source == GetLabelCore(__pItemAnnex))
1272 __pressedControl = TABLE_VIEW_ITEM_PRESSED_ANNEX;
1274 if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING ||
1275 __annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
1277 __annexTouchStartPosition = touchinfo.GetCurrentPosition().x;
1280 else if (IsIndividualSelectionEnabled(source))
1282 __pressedControl = TABLE_VIEW_ITEM_PRESSED_INDIVIDUAL;
1286 __pressedControl = TABLE_VIEW_ITEM_PRESSED_NONE;
1289 if (__isReleasedTimerEnabled)
1291 StopTouchReleasedTimer();
1293 _TableView* pParent = dynamic_cast<_TableView*>(GetParent());
1294 if (pParent != null)
1296 int groupIndex = -1;
1298 GetItemIndex(groupIndex, itemIndex);
1299 pParent->FireItemTouchReleasedEventDuringPressing(groupIndex, itemIndex);
1304 if (!IsIndividualSelectionEnabled(source))
1306 __itemSelected = true;
1307 if (unlikely((_AccessibilityManager::IsActivated())))
1309 FireItemTouchPressed();
1313 StartTouchPressedTimer(source, touchinfo);
1322 _TableViewItem::OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo)
1324 if (IsReorderMode())
1329 if (IsTouchPressOnScroll())
1331 SetTouchPressOnScroll(false);
1335 if (&source == this)
1337 __releasedControl = TABLE_VIEW_ITEM_PRESSED_ITEM;
1339 else if (&source == GetLabelCore(__pItemAnnex))
1341 __releasedControl = TABLE_VIEW_ITEM_PRESSED_ANNEX;
1343 else if (IsIndividualSelectionEnabled(source))
1345 __releasedControl = TABLE_VIEW_ITEM_PRESSED_INDIVIDUAL;
1349 __releasedControl = TABLE_VIEW_ITEM_PRESSED_NONE;
1352 __isTabSoundPlayed = IS_PLAYED_FEEDBACK();
1354 if (!__itemTouchMoved && __isPressedTimerEnabled)
1356 StopTouchPressedTimer();
1358 if (!IsContextItem())
1360 FireItemTouchPressed();
1363 StartTouchReleasedTimer();
1367 FireItemTouchReleased();
1372 _TableViewItem::FireItemTouchPressed()
1374 if (__isTouchCancelOnPressRelease == true)
1379 if (__pressedControl == TABLE_VIEW_ITEM_PRESSED_ITEM)
1381 __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED;
1382 SetItemChanged(true);
1385 else if (__pressedControl == TABLE_VIEW_ITEM_PRESSED_ANNEX)
1387 if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_DETAILED)
1389 __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL;
1390 __isSelectedDetailButton = true;
1393 else if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING ||
1394 __annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
1396 __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL;
1400 __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED;
1401 SetItemChanged(true);
1407 if (__pressedControl != TABLE_VIEW_ITEM_PRESSED_INDIVIDUAL)
1409 __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED;
1410 SetItemChanged(true);
1417 _TableViewItem::FireItemTouchReleased()
1419 if (__isTouchCancelOnPressRelease == true)
1424 bool fireItemEvent = false;
1425 bool selectedItem = true;
1427 __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL;
1429 if (__itemSelected == true)
1431 bool checked = IsChecked();
1432 fireItemEvent = true;
1434 if (__releasedControl == TABLE_VIEW_ITEM_PRESSED_ITEM)
1436 if ((__annexStyle == TABLE_VIEW_ANNEX_STYLE_RADIO)
1437 || (__annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING))
1439 SetChecked(!checked);
1441 else if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_MARK)
1443 SetChecked(!checked);
1444 SetCheckedAnimationEnabled(!checked);
1447 else if (__releasedControl == TABLE_VIEW_ITEM_PRESSED_ANNEX)
1449 if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_DETAILED)
1451 __isSelectedDetailButton = false;
1453 selectedItem = false;
1455 else if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING ||
1456 __annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
1458 bool isPreviousChecked = IsChecked();
1459 AdjustAnnexOnOffHandlerPosition();
1460 selectedItem = false;
1461 if (isPreviousChecked == IsChecked())
1463 fireItemEvent = false;
1468 SetChecked(!checked);
1469 SetCheckedAnimationEnabled(!checked);
1474 if (__releasedControl != TABLE_VIEW_ITEM_PRESSED_INDIVIDUAL)
1476 if ((__annexStyle == TABLE_VIEW_ANNEX_STYLE_MARK)
1477 || (__annexStyle == TABLE_VIEW_ANNEX_STYLE_RADIO)
1478 || (__annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING))
1480 SetChecked(!checked);
1481 SetCheckedAnimationEnabled(!checked);
1486 fireItemEvent = false;
1490 SetItemChanged(true);
1495 if (__releasedControl == TABLE_VIEW_ITEM_PRESSED_ANNEX)
1497 if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING ||
1498 __annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
1500 bool isPreviousChecked = IsChecked();
1501 AdjustAnnexOnOffHandlerPosition();
1502 fireItemEvent = true;
1503 if (isPreviousChecked == IsChecked())
1505 fireItemEvent = false;
1511 __itemSelected = false;
1512 __annexOnOffHandlerMoved = false;
1513 __itemTouchMoved = false;
1517 FireItemEvent(selectedItem);
1522 _TableViewItem::OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo)
1524 if (IsReorderMode())
1529 if (IsTouchPressOnScroll())
1531 SetTouchPressOnScroll(false);
1534 if (__isPressedTimerEnabled)
1536 StopTouchPressedTimer();
1539 bool retVal = false;
1541 if (&source == this)
1543 __itemSelected = false;
1544 __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL;
1546 SetItemChanged(true);
1549 else if (&source == GetLabelCore(__pItemAnnex))
1551 if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_DETAILED)
1553 __isSelectedDetailButton = false;
1554 __itemSelected = false;
1557 else if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING ||
1558 __annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
1560 __annexOnOffHandlerMoved = true;
1561 DrawAnnexOnOffHandler(touchinfo.GetCurrentPosition().x);
1566 __itemSelected = false;
1567 __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL;
1569 SetItemChanged(true);
1575 if (!IsIndividualSelectionEnabled(source))
1577 __itemSelected = false;
1578 __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL;
1580 SetItemChanged(true);
1585 __itemTouchMoved = true;
1591 _TableViewItem::OnTouchCanceled(const _Control& source, const _TouchInfo& touchinfo)
1593 __isTouchCancelOnPressRelease = true;
1595 if (__isPressedTimerEnabled)
1597 StopTouchPressedTimer();
1600 __annexOnOffHandlerMoved = false;
1601 __itemTouchMoved = false;
1605 if (&source != this)
1613 _UiTouchEventDelivery
1614 _TableViewItem::OnPreviewTouchPressed(const _Control& source, const _TouchInfo& touchinfo)
1616 if (IsTouchPressOnScroll())
1618 SetTouchPressOnScroll(false);
1619 return _UI_TOUCH_EVENT_DELIVERY_NO;
1621 return _UI_TOUCH_EVENT_DELIVERY_FORCED_YES;
1624 _UiTouchEventDelivery
1625 _TableViewItem::OnPreviewTouchReleased(const _Control& source, const _TouchInfo& touchinfo)
1627 return _UI_TOUCH_EVENT_DELIVERY_FORCED_YES;
1630 _UiTouchEventDelivery
1631 _TableViewItem::OnPreviewTouchMoved(const _Control& source, const _TouchInfo& touchinfo)
1633 return _UI_TOUCH_EVENT_DELIVERY_YES;
1636 _UiTouchEventDelivery
1637 _TableViewItem::OnPreviewTouchCanceled(const _Control& source, const _TouchInfo& touchinfo)
1639 return _UI_TOUCH_EVENT_DELIVERY_FORCED_YES;
1643 _TableViewItem::OnDraw(void)
1645 if (IsItemChanged() == true)
1647 DrawItemBackground();
1651 DrawSectionStyleBackgroundCover();
1653 SetItemChanged(false);
1658 _TableViewItem::OnChildAttached(const _Control& child)
1660 _Control* pControl = const_cast<_Control*>(&child);
1661 _AccessibilityContainer* pContainer = pControl->GetAccessibilityContainer();
1663 if (__individualSelectionControls.Contains(child))
1665 pContainer->Activate(true);
1669 pContainer->Activate(false);
1671 if (!(pControl == static_cast<_Control*>(__pItemAnnexLeftDivider)
1672 || pControl == static_cast<_Control*>(__pItemAnnexRightDivider)
1673 || pControl == static_cast<_Control*>(__pItemCover)
1674 || pControl == static_cast<_Control*>(__pItemDivider)
1675 || pControl== static_cast<_Control*>(__pItemTopDivider)))
1677 GetAccessibilityContainer()->Activate(true);
1681 DeactivateChildAccessibilityContainer(child);
1683 pControl->SetTouchPressThreshold(SENSITIVE);
1685 FloatRectangle bounds = child.GetBoundsF();
1687 if (__pDrawingProperty != null && __pDrawingProperty->groupedLookEnabled)
1689 float groupedBarMargin = 0.0f;
1690 GET_SHAPE_CONFIG(TABLEVIEW::GROUPITEM_BAR_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, groupedBarMargin);
1692 bounds.x += groupedBarMargin;
1695 if ((__annexStyle == TABLE_VIEW_ANNEX_STYLE_MARK) || (__annexStyle == TABLE_VIEW_ANNEX_STYLE_RADIO))
1697 if (GetLabelCore(__pItemAnnex) == &child ||
1698 GetLabelCore(__pSimpleItemBitmap) == &child ||
1699 GetLabelCore(__pSimpleItemText) == &child)
1704 float leftMargin = 0.0f;
1705 float annexWidth = 0.0f;
1707 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_LEFT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, leftMargin);
1708 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, annexWidth);
1710 bounds.x += (leftMargin * 2) + annexWidth;
1713 pControl->SetBounds(bounds);
1717 _TableViewItem::OnChildDetached(const _Control& child)
1719 if (__individualSelectionControls.Contains(child))
1721 __individualSelectionControls.Remove(child, false);
1724 _Label* pSimpleItemTextCore = GetLabelCore(__pSimpleItemText);
1725 _Label* pSimpleItemBitmapCore = GetLabelCore(__pSimpleItemBitmap);
1727 if (&child == pSimpleItemTextCore)
1729 __pSimpleItemText = null;
1732 if (&child == pSimpleItemBitmapCore)
1734 __pSimpleItemBitmap = null;
1739 _TableViewItem::OnTimerExpired(Tizen::Base::Runtime::Timer& timer)
1741 result r = E_SUCCESS;
1743 if (&timer == __pCheckedTimer)
1745 if (__checkedCount < MAX_CHECKED_COUNT)
1747 r = __pCheckedTimer->Start(CHECKED_ANIMATION_DURATION);
1748 SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
1751 r = PlayCheckBoxAnimation();
1752 SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
1754 if (__checkedCount < MAX_CHECKED_COUNT)
1761 __isCheckedAnimationEnabled = false;
1762 __isCheckedTimerEnabled = false;
1765 else if (&timer == __pPressedTimer)
1767 __isPressedTimerEnabled = false;
1768 FireItemTouchPressed();
1770 else if (&timer == __pReleasedTimer)
1772 __isReleasedTimerEnabled = false;
1773 FireItemTouchReleased();
1778 _TableViewItem::StartTouchPressedTimer(const _Control& source, const _TouchInfo& touchinfo)
1780 result r = E_SUCCESS;
1782 if (__pPressedTimer == null)
1784 __pPressedTimer = new (std::nothrow) Timer();
1785 SysTryCatch(NID_UI_CTRL, __pPressedTimer != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
1787 r = __pPressedTimer->Construct(*this);
1788 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage);
1791 if (__isPressedTimerEnabled == false)
1793 r = __pPressedTimer->Start(TOUCH_PRESSED_DURATION);
1794 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating.");
1796 __isPressedTimerEnabled = true;
1802 if (__isPressedTimerEnabled && __pPressedTimer != null)
1804 __pPressedTimer->Cancel();
1807 delete __pPressedTimer;
1808 __pPressedTimer = null;
1814 _TableViewItem::StopTouchPressedTimer(void)
1816 result r = E_SUCCESS;
1818 if (__pPressedTimer == null)
1823 if (__isPressedTimerEnabled)
1825 r = __pPressedTimer->Cancel();
1826 SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
1829 __isPressedTimerEnabled = false;
1835 _TableViewItem::StartTouchReleasedTimer()
1837 result r = E_SUCCESS;
1839 if (__pReleasedTimer == null)
1841 __pReleasedTimer = new (std::nothrow) Timer();
1842 SysTryCatch(NID_UI_CTRL, __pReleasedTimer != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
1845 r = __pReleasedTimer->Construct(*this);
1846 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage);
1849 if (!__isReleasedTimerEnabled)
1851 r = __pReleasedTimer->Start(TOUCH_RELEASED_DURATION);
1852 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating.");
1854 __isReleasedTimerEnabled = true;
1859 if (__isReleasedTimerEnabled && __pReleasedTimer != null)
1861 __pReleasedTimer->Cancel();
1864 delete __pReleasedTimer;
1865 __pReleasedTimer = null;
1871 _TableViewItem::StopTouchReleasedTimer(void)
1873 result r = E_SUCCESS;
1875 if (__pReleasedTimer == null)
1880 if (__isReleasedTimerEnabled)
1882 r = __pReleasedTimer->Cancel();
1883 SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
1886 __isReleasedTimerEnabled = false;
1892 _TableViewItem::OnAncestorInputEnableStateChanged(const _Control& control)
1894 if (__isPressedTimerEnabled)
1896 StopTouchPressedTimer();
1899 __annexOnOffHandlerMoved = false;
1900 __itemTouchMoved = false;
1902 __itemSelected = false;
1903 __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL;
1905 if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_DETAILED)
1907 __isSelectedDetailButton = false;
1910 SetItemChanged(true);
1915 _TableViewItem::StartCheckBoxAnimation(void)
1917 result r = E_SUCCESS;
1919 if (__pCheckedTimer == null)
1921 __pCheckedTimer = new (std::nothrow) Timer();
1922 SysTryCatch(NID_UI_CTRL, __pCheckedTimer != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
1925 r = __pCheckedTimer->Construct(*this);
1926 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage);
1929 if (__isCheckedTimerEnabled == false)
1931 r = __pCheckedTimer->Start(CHECKED_ANIMATION_DURATION);
1932 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating.");
1934 __isCheckedTimerEnabled = true;
1940 if (__isCheckedTimerEnabled)
1942 __pCheckedTimer->Cancel();
1945 delete __pCheckedTimer;
1946 __pCheckedTimer = null;
1952 _TableViewItem::StopCheckBoxAnimation(void)
1954 result r = E_SUCCESS;
1956 SysTryReturnVoidResult(NID_UI_CTRL, __pCheckedTimer != null, E_SYSTEM, "[%s] A system error has been occurred. Timer is invalid.", GetErrorMessage(E_SYSTEM));
1959 if (__isCheckedTimerEnabled)
1961 r = __pCheckedTimer->Cancel();
1962 SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
1966 __isCheckedAnimationEnabled = false;
1967 __isCheckedTimerEnabled = false;
1973 _TableViewItem::PlayCheckBoxAnimation(void)
1975 Bitmap* pCheckBox = null;
1976 Bitmap* pCheckBoxBg = null;
1977 Bitmap* pMergeBitmap = null;
1978 Canvas* pCanvas = null;
1979 result r = E_SUCCESS;
1981 FloatRectangle bounds;
1983 float annexWidth = 0.0f;
1984 float annexHeight = 0.0f;
1986 if (__drawingStatus == TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL)
1988 r = GET_BITMAP_CONFIG_N(TABLEVIEW::CHECKBOX_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pCheckBoxBg);
1990 else if ((__drawingStatus == TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED) || (__drawingStatus == TABLE_VIEW_ITEM_DRAWING_STATUS_HIGHLIGHTED))
1992 r = GET_BITMAP_CONFIG_N(TABLEVIEW::CHECKBOX_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pCheckBoxBg);
1994 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pCheckBoxBg != null), , E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r));
1996 r = GET_BITMAP_CONFIG_N(TABLEVIEW::CHECKBOX_CHECK_MARK_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pCheckBox);
1997 SysTryCatch(NID_UI_CTRL,(r == E_SUCCESS) && (pCheckBox != null), , E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r));
1999 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, annexWidth);
2000 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, annexHeight);
2002 bounds.SetBounds(0, 0, annexWidth, annexHeight);
2004 pCanvas = new (std::nothrow) Canvas();
2005 SysTryCatch(NID_UI_CTRL, pCanvas != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
2007 r = pCanvas->Construct(bounds);
2008 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
2011 DrawBitmap(*pCanvas, CalculateAnnexBitmapBounds(annexWidth, annexHeight, *pCheckBoxBg), *pCheckBoxBg);
2013 __checkedBounds = CalculateAnnexBitmapBounds(annexWidth, annexHeight, *pCheckBox);
2014 if (IsChecked() == true)
2016 if (_BitmapImpl::CheckNinePatchedBitmapStrictly(*pCheckBox))
2018 FloatRectangle drawingRect(__checkedBounds.x, __checkedBounds.y, __checkedBounds.width, __checkedBounds.height);
2019 r = pCanvas->DrawNinePatchedBitmap(drawingRect, *pCheckBox); // +++ check floating
2023 FloatRectangle bitmapSourceRect(0.0f, 0.0f, pCheckBox->GetWidthF()*__checkedCount * 0.1, pCheckBox->GetHeightF());
2024 FloatRectangle drawingRect(__checkedBounds.x, __checkedBounds.y, __checkedBounds.width * __checkedCount * 0.1, __checkedBounds.height);
2025 r = pCanvas->DrawBitmap(drawingRect, *pCheckBox, bitmapSourceRect); // +++ check floating
2029 pMergeBitmap = new (std::nothrow) Bitmap();
2030 SysTryCatch(NID_UI_CTRL, pMergeBitmap != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
2032 pMergeBitmap->Construct(*pCanvas, bounds);
2033 _BitmapImpl::ConvertToNonpremultiplied(*pMergeBitmap, true);
2037 __pItemAnnex->SetBackgroundBitmap(*pMergeBitmap);
2038 __pItemAnnex->Invalidate(false);
2044 delete pMergeBitmap;
2051 _TableViewItem::SetItemLayoutEnabled(bool enabled)
2053 __isItemLayoutEnabled = enabled;
2057 _TableViewItem::GetItemLayoutEnabled(void)
2059 return __isItemLayoutEnabled;
2063 _TableViewItem::OnBoundsChanged(void)
2065 if (__checkItemHeightNeeded && HasParent())
2067 _TableView* pParent = dynamic_cast<_TableView*>(GetParent());
2068 if (pParent != null)
2070 int groupIndex = -1;
2072 GetItemIndex(groupIndex, itemIndex);
2074 pParent->CheckItemHeightAndRefreshLayout(groupIndex, itemIndex);
2077 __checkItemHeightNeeded = false;
2080 AdjustAnnexBounds();
2082 SetItemHighlightBounds(*__pHighlightVisualElement, CalculateItemHighlightBounds());
2084 if (__pHeaderFooterItemText != null)
2086 FloatRectangle textBounds = __pHeaderFooterItemText->GetBoundsF();
2087 textBounds.width = GetBoundsF().width;
2089 if (__itemType == TABLE_VIEW_ITEM_TYPE_FOOTER)
2091 textBounds.x -= __pDrawingProperty->scrollMargin;
2094 __pHeaderFooterItemText->SetBounds(textBounds);
2097 if (__pBitmapVisualElement != null)
2099 FloatRectangle bounds = GetBoundsF();
2100 __pBitmapVisualElement->SetBounds(FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height));
2103 if (__pAccessibilityElement != null)
2105 __pAccessibilityElement->SetBounds(FloatRectangle(0.0f,0.0f, GetBoundsF().width, GetBoundsF().height));
2110 _TableViewItem::SetDrawingProperty(_ItemDrawingProperty* pDrawingProperty)
2113 SysTryReturnVoidResult(NID_UI_CTRL, pDrawingProperty != null, E_INVALID_ARG, "[%s] Invalid argument(s) is used. The pDrawingProperty is null.", GetErrorMessage(E_INVALID_ARG));
2115 __pDrawingProperty = pDrawingProperty;
2117 if (__pDrawingProperty->sectionStyleEnabled == true &&
2123 if (__pDrawingProperty->itemDividerEnabled)
2125 CreateItemDivider();
2131 _ItemDrawingProperty*
2132 _TableViewItem::GetDrawingProperty(void)
2134 return __pDrawingProperty;
2138 _TableViewItem::DrawItemBackground(void)
2140 Canvas* pCanvas = null;
2141 Bitmap* pDrawBitmap = __pItemBgBitmap[__drawingStatus];
2142 Color bgColor = __colorItemBg[__drawingStatus];
2143 FloatRectangle bounds = GetBoundsF();
2145 SetItemHighlightBounds(*__pHighlightVisualElement, CalculateItemHighlightBounds());
2146 __pHighlightVisualElement->SetBackgroundColor(_Colorf(0.0f, 0.0f, 0.0f, 0.0f));
2148 if (pDrawBitmap != null && __enabledState)
2150 if (__pBitmapVisualElement == null)
2155 String imagePath = null;
2156 if (_BitmapImpl::CheckNinePatchedBitmapStrictly(*pDrawBitmap) == false)
2158 imagePath = _BitmapImpl::GetInstance(*pDrawBitmap)->GetFileName();
2161 if (imagePath.IsEmpty() == false)
2163 __pBitmapVisualElement->SetBackgroundColor(_Colorf((float)bgColor.GetRed() /255, (float)bgColor.GetGreen() / 255, (float)bgColor.GetBlue() / 255, (float)bgColor.GetAlpha() / 255));
2164 __pBitmapVisualElement->SetImageSource(imagePath);
2168 pCanvas = __pBitmapVisualElement->GetCanvasN();
2169 SysTryCatch(NID_UI_CTRL, pCanvas != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
2170 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
2173 DrawBitmap(*pCanvas, FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height), *pDrawBitmap);
2177 if (IsContextItem())
2179 DrawContextItemBackground();
2181 else if (__pDrawingProperty->sectionStyleEnabled == true)
2183 DrawSectionStyleBackground();
2189 if (__itemType == TABLE_VIEW_ITEM_TYPE_HEADER || __itemType == TABLE_VIEW_ITEM_TYPE_FOOTER)
2191 SetBackgroundColor(Color(0, 0, 0, 0));
2192 __pHighlightVisualElement->SetBackgroundColor(_Colorf(0.0f, 0.0f, 0.0f, 0.0f));
2194 else if (__itemType == TABLE_VIEW_ITEM_TYPE_TITLE)
2196 __pHighlightVisualElement->SetBackgroundColor(_Colorf((float)bgColor.GetRed() / 255.0f, (float)bgColor.GetGreen() / 255.0f, (float)bgColor.GetBlue() / 255.0f, (float)bgColor.GetAlpha() / 255.0f));
2200 SetBackgroundColor(__colorItemBg[TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL]);
2202 __pHighlightVisualElement->SetBackgroundColor(_Colorf((float)bgColor.GetRed() / 255.0f, (float)bgColor.GetGreen() / 255.0f, (float)bgColor.GetBlue() / 255.0f, (float)bgColor.GetAlpha() / 255.0f));
2204 if (__pDrawingProperty->groupedLookEnabled == true)
2212 GET_COLOR_CONFIG(TABLEVIEW::ITEM_BG_DISABLED, bgColor);
2213 SetBackgroundColor(bgColor);
2214 __pHighlightVisualElement->SetBackgroundColor(_Colorf((float)bgColor.GetRed() / 255.0f, (float)bgColor.GetGreen() / 255.0f, (float)bgColor.GetBlue() / 255.0f, (float)bgColor.GetAlpha() / 255.0f));
2216 if (__pDrawingProperty->groupedLookEnabled == true)
2228 if (__pBitmapVisualElement != null)
2230 __pBitmapVisualElement->RemoveAllAnimations();
2231 __pBitmapVisualElement->SetAnimationProvider(null);
2232 __pBitmapVisualElement->Destroy();
2233 __pBitmapVisualElement = null;
2238 _TableViewItem::DrawGroupedLook(void)
2240 if (IsTitleStyleItem() || IsContextItem())
2246 Color outlineColor = __pDrawingProperty->dividerColor;
2248 float barWidth = 0.0f;
2250 Canvas* pCanvas = GetVisualElement()->GetCanvasN();
2251 SysTryReturnVoidResult(NID_UI_CTRL, pCanvas != null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
2253 FloatRectangle bounds = GetBoundsF();
2254 pCanvas->SetBackgroundColor(GetBackgroundColor());
2257 GET_COLOR_CONFIG(TABLEVIEW::GROUPITEM_BAR_NORMAL, barColor);
2258 GET_SHAPE_CONFIG(TABLEVIEW::GROUPITEM_BAR_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, barWidth);
2260 pCanvas->FillRectangle(barColor, FloatRectangle(0.0f, 0.0f, barWidth, bounds.height));
2262 if (__pDrawingProperty->sectionStyleEnabled == true)
2264 pCanvas->FillRectangle(outlineColor, FloatRectangle(bounds.width - 1.0f, 0.0f, 1.0f, bounds.height));
2266 if (__itemType == TABLE_VIEW_ITEM_TYPE_TOP || __itemType == TABLE_VIEW_ITEM_TYPE_ONE)
2268 pCanvas->FillRectangle(outlineColor, FloatRectangle(0.0f, 0.0f, bounds.width, 1.0f));
2276 _TableViewItem::DrawSectionStyleBackground(void)
2278 Canvas* pCanvas = null;
2279 Bitmap* pSectionBg = null;
2280 Bitmap* pSectionPressBg = null;
2281 Bitmap* pSectionDisabledBg = null;
2282 Bitmap* pReplacementSectionPressBg = null;
2283 Bitmap* pReplacementSectionBg = null;
2284 Color bgColor = __colorItemBg[__drawingStatus];
2285 FloatRectangle bounds = GetBoundsF();
2286 float dividerHeight = 0.0f;
2288 result r = E_SUCCESS;
2290 pCanvas = GetVisualElement()->GetCanvasN();
2291 SysTryReturnVoidResult(NID_UI_CTRL, pCanvas != null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(r));
2293 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
2296 if (__itemType == TABLE_VIEW_ITEM_TYPE_ONE)
2298 r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_SINGLE_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionBg);
2300 else if (__itemType == TABLE_VIEW_ITEM_TYPE_TOP)
2302 r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_TOP_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionBg);
2304 else if (__itemType == TABLE_VIEW_ITEM_TYPE_MIDDLE)
2306 r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_CENTER_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionBg);
2308 else if (__itemType == TABLE_VIEW_ITEM_TYPE_BOTTOM)
2310 r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_BOTTOM_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionBg);
2316 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM) );
2320 if (__drawingStatus == TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED || __drawingStatus == TABLE_VIEW_ITEM_DRAWING_STATUS_HIGHLIGHTED)
2322 if (__itemType == TABLE_VIEW_ITEM_TYPE_ONE)
2324 if (IS_CUSTOM_BITMAP(TABLEVIEW::SECTIONITEM_SINGLE_BG_PRESSED))
2326 r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_SINGLE_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionPressBg);
2327 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM) );
2330 else if (__itemType == TABLE_VIEW_ITEM_TYPE_TOP)
2332 if (IS_CUSTOM_BITMAP(TABLEVIEW::SECTIONITEM_TOP_BG_PRESSED))
2334 r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_TOP_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionPressBg);
2335 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM) );
2338 else if (__itemType == TABLE_VIEW_ITEM_TYPE_MIDDLE)
2340 if (IS_CUSTOM_BITMAP(TABLEVIEW::SECTIONITEM_CENTER_BG_PRESSED))
2342 r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_CENTER_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionPressBg);
2343 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM) );
2346 else if (__itemType == TABLE_VIEW_ITEM_TYPE_BOTTOM)
2348 if (IS_CUSTOM_BITMAP(TABLEVIEW::SECTIONITEM_BOTTOM_BG_PRESSED))
2350 r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_BOTTOM_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionPressBg);
2351 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM) );
2355 GET_FIXED_VALUE_CONFIG(TABLEVIEW::ITEM_DIVIDER_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, dividerHeight);
2357 if (pSectionPressBg)
2359 pReplacementSectionPressBg = Tizen::Graphics::_BitmapImpl::GetColorReplacedBitmapN(*pSectionPressBg, Color::GetColor(COLOR_ID_MAGENTA), bgColor);
2363 pReplacementSectionPressBg = Tizen::Graphics::_BitmapImpl::GetColorReplacedBitmapN(*pSectionBg, Color::GetColor(COLOR_ID_MAGENTA), bgColor);
2366 DrawBitmap(*pCanvas, FloatRectangle(0.0f, dividerHeight, bounds.width, bounds.height - (dividerHeight * 2)), *pReplacementSectionPressBg);
2370 if (bgColor != null)
2372 pReplacementSectionBg = Tizen::Graphics::_BitmapImpl::GetColorReplacedBitmapN(*pSectionBg, Color::GetColor(COLOR_ID_MAGENTA), bgColor);
2376 pReplacementSectionBg = Tizen::Graphics::_BitmapImpl::GetColorReplacedBitmapN(*pSectionBg, Color::GetColor(COLOR_ID_MAGENTA), __pDrawingProperty->sectionStyleBgColor);
2379 DrawBitmap(*pCanvas, FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height), *pReplacementSectionBg);
2384 if (__itemType == TABLE_VIEW_ITEM_TYPE_ONE)
2386 if (IS_CUSTOM_BITMAP(TABLEVIEW::SECTIONITEM_SINGLE_BG_DISABLED))
2388 r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_SINGLE_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionDisabledBg);
2389 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM) );
2392 else if (__itemType == TABLE_VIEW_ITEM_TYPE_TOP)
2394 if (IS_CUSTOM_BITMAP(TABLEVIEW::SECTIONITEM_TOP_BG_DISABLED))
2396 r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_TOP_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionDisabledBg);
2397 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM) );
2400 else if (__itemType == TABLE_VIEW_ITEM_TYPE_MIDDLE)
2402 if (IS_CUSTOM_BITMAP(TABLEVIEW::SECTIONITEM_CENTER_BG_DISABLED))
2404 r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_CENTER_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionDisabledBg);
2405 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM) );
2408 else if (__itemType == TABLE_VIEW_ITEM_TYPE_BOTTOM)
2410 if (IS_CUSTOM_BITMAP(TABLEVIEW::SECTIONITEM_BOTTOM_BG_DISABLED))
2412 r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_BOTTOM_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionDisabledBg);
2413 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM) );
2417 GET_COLOR_CONFIG(TABLEVIEW::ITEM_BG_DISABLED, bgColor);
2418 if (pSectionDisabledBg)
2420 pReplacementSectionBg = Tizen::Graphics::_BitmapImpl::GetColorReplacedBitmapN(*pSectionDisabledBg, Color::GetColor(COLOR_ID_MAGENTA), bgColor);
2424 pReplacementSectionBg = Tizen::Graphics::_BitmapImpl::GetColorReplacedBitmapN(*pSectionBg, Color::GetColor(COLOR_ID_MAGENTA), bgColor);
2426 DrawBitmap(*pCanvas, FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height), *pReplacementSectionBg);
2429 if (__pDrawingProperty->groupedLookEnabled == true)
2433 float barWidth = 0.0f;
2434 float barMargin = 0.0f;
2436 GET_COLOR_CONFIG(TABLEVIEW::GROUPITEM_BAR_NORMAL, barColor);
2437 GET_SHAPE_CONFIG(TABLEVIEW::GROUPITEM_BAR_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, barWidth);
2438 GET_SHAPE_CONFIG(TABLEVIEW::GROUPITEM_BAR_TOP_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, barMargin);
2440 pCanvas->FillRectangle(barColor, FloatRectangle(0.0f, barMargin, barWidth, bounds.height-barMargin));
2445 delete pSectionPressBg;
2446 delete pSectionDisabledBg;
2447 delete pReplacementSectionPressBg;
2448 delete pReplacementSectionBg;
2453 _TableViewItem::DrawSectionStyleBackgroundCover(void)
2455 if (!__pDrawingProperty->sectionStyleEnabled ||
2456 __pItemCover == null)
2461 Bitmap* pSectionBgCoverEf = null;
2462 Bitmap* pReplacementSectionBgEf = null;
2463 Bitmap* pReplacementSectionBg = null;
2464 Bitmap* pSectionBgCoverBg = null;
2465 Bitmap* pMergeBitmap = null;
2466 Canvas* pCanvas = null;
2469 result r = E_SUCCESS;
2470 FloatRectangle bounds = GetBoundsF();
2471 if (__itemType == TABLE_VIEW_ITEM_TYPE_ONE)
2473 r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_SINGLE_COVER_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionBgCoverEf);
2475 else if (__itemType == TABLE_VIEW_ITEM_TYPE_TOP)
2477 r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_TOP_COVER_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionBgCoverEf);
2479 else if (__itemType == TABLE_VIEW_ITEM_TYPE_MIDDLE)
2481 r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_CENTER_COVER_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionBgCoverEf);
2483 else if (__itemType == TABLE_VIEW_ITEM_TYPE_BOTTOM)
2485 r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_BOTTOM_COVER_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionBgCoverEf);
2491 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM) );
2493 if (__itemType == TABLE_VIEW_ITEM_TYPE_ONE)
2495 r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_SINGLE_COVER_ROUND_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionBgCoverBg);
2497 else if (__itemType == TABLE_VIEW_ITEM_TYPE_TOP)
2499 r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_TOP_COVER_ROUND_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionBgCoverBg);
2501 else if (__itemType == TABLE_VIEW_ITEM_TYPE_MIDDLE)
2503 r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_CENTER_COVER_ROUND_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionBgCoverBg);
2505 else if (__itemType == TABLE_VIEW_ITEM_TYPE_BOTTOM)
2507 r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_BOTTOM_COVER_ROUND_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionBgCoverBg);
2513 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM) );
2515 __pItemCover->SetBounds(FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height));
2519 _TableView* pParent = dynamic_cast<_TableView*>(GetParent());
2520 SysTryCatch(NID_UI_CTRL, pParent != null, , E_SYSTEM, "[%s] A system error has been occurred. SectionTableView load failed", GetErrorMessage(E_SYSTEM) );
2522 bgColor = pParent->GetBackgroundColor();
2526 GET_COLOR_CONFIG(TABLEVIEW::ITEM_BG_DISABLED, bgColor);
2529 pReplacementSectionBg = Tizen::Graphics::_BitmapImpl::GetColorReplacedBitmapN(*pSectionBgCoverBg, Color::GetColor(COLOR_ID_MAGENTA), bgColor);
2530 pReplacementSectionBgEf = Tizen::Graphics::_BitmapImpl::GetColorReplacedBitmapN(*pSectionBgCoverEf, Color::GetColor(COLOR_ID_MAGENTA), bgColor);
2532 pCanvas = new (std::nothrow) Canvas();
2533 SysTryCatch(NID_UI_CTRL, pCanvas != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
2534 pCanvas->Construct(FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height));
2535 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
2538 DrawBitmap(*pCanvas, FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height), *pReplacementSectionBg);
2539 DrawBitmap(*pCanvas, FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height), *pReplacementSectionBgEf);
2541 pMergeBitmap = new (std::nothrow) Bitmap();
2542 SysTryCatch(NID_UI_CTRL, pMergeBitmap != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
2544 pMergeBitmap->Construct(*pCanvas, FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height));
2546 _BitmapImpl::ConvertToNonpremultiplied(*pMergeBitmap, true);
2548 __pItemCover->SetBackgroundBitmap(*pMergeBitmap);
2551 delete pSectionBgCoverEf;
2552 delete pReplacementSectionBgEf;
2553 delete pReplacementSectionBg;
2554 delete pSectionBgCoverBg;
2556 delete pMergeBitmap;
2560 _TableViewItem::DrawContextItemBackground(void)
2562 Canvas* pCanvas = null;
2563 Bitmap* pContextBg = null;
2564 Bitmap* pContextBgEf = null;
2565 Bitmap* pReplacementContextBg = null;
2566 Color bgColor = __colorItemBg[__drawingStatus];
2568 FloatRectangle bounds = GetBoundsF();
2569 result r = E_SUCCESS;
2571 r = GET_BITMAP_CONFIG_N(TABLEVIEW::QUICK_MENU_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pContextBg);
2572 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. ContextItem image load failed", GetErrorMessage(E_SYSTEM));
2574 r = GET_BITMAP_CONFIG_N(TABLEVIEW::QUICK_MENU_BG_EFFECT, BITMAP_PIXEL_FORMAT_ARGB8888, pContextBgEf);
2575 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. ContextItem image load failed", GetErrorMessage(E_SYSTEM));
2577 pCanvas = GetVisualElement()->GetCanvasN();
2578 SysTryCatch(NID_UI_CTRL, pCanvas != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
2580 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
2585 if (bgColor == null)
2587 GET_COLOR_CONFIG(TABLEVIEW::CONTEXTITEM_BG_NORMAL, bgColor);
2592 GET_COLOR_CONFIG(TABLEVIEW::ITEM_BG_DISABLED, bgColor);
2594 pReplacementContextBg = Tizen::Graphics::_BitmapImpl::GetColorReplacedBitmapN(*pContextBg, Color::GetColor(COLOR_ID_MAGENTA), bgColor);
2595 SysTryCatch(NID_UI_CTRL, pReplacementContextBg != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
2597 DrawBitmap(*pCanvas, FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height), *pReplacementContextBg);
2598 DrawBitmap(*pCanvas, FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height), *pContextBgEf);
2603 delete pContextBgEf;
2604 delete pReplacementContextBg;
2609 _TableViewItem::CreateAnnexStyle(void)
2611 switch (__annexStyle)
2613 case TABLE_VIEW_ANNEX_STYLE_MARK:
2616 case TABLE_VIEW_ANNEX_STYLE_RADIO:
2619 case TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING:
2620 CreateOnOffButton();
2622 case TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING_WITH_DIVIDER:
2623 CreateItemAnnexDivider();
2624 CreateOnOffButton();
2626 case TABLE_VIEW_ANNEX_STYLE_DETAILED:
2627 CreateDetailButton();
2635 _TableViewItem::DrawAnnexStyle(void)
2637 switch (__annexStyle)
2639 case TABLE_VIEW_ANNEX_STYLE_MARK:
2642 case TABLE_VIEW_ANNEX_STYLE_RADIO:
2645 case TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING:
2648 case TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING_WITH_DIVIDER:
2649 DrawItemAnnexDivider();
2652 case TABLE_VIEW_ANNEX_STYLE_DETAILED:
2661 _TableViewItem::DrawCheckBox(void)
2663 Bitmap* pCheckBox = null;
2664 Bitmap* pCheckBoxBg = null;
2665 Bitmap* pMergeBitmap = null;
2666 Canvas* pCanvas = null;
2667 result r = E_SUCCESS;
2669 FloatRectangle bounds;
2670 float annexWidth = 0.0f;
2671 float annexHeight = 0.0f;
2675 if (__drawingStatus == TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL)
2677 r = GET_BITMAP_CONFIG_N(TABLEVIEW::CHECKBOX_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pCheckBoxBg);
2678 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pCheckBoxBg != null), , E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r));
2680 r = GET_BITMAP_CONFIG_N(TABLEVIEW::CHECKBOX_CHECK_MARK_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pCheckBox);
2681 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pCheckBox != null), , E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r));
2683 else if ((__drawingStatus == TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED) || (__drawingStatus == TABLE_VIEW_ITEM_DRAWING_STATUS_HIGHLIGHTED))
2685 r = GET_BITMAP_CONFIG_N(TABLEVIEW::CHECKBOX_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pCheckBoxBg);
2686 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pCheckBoxBg != null), , E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r));
2688 r = GET_BITMAP_CONFIG_N(TABLEVIEW::CHECKBOX_CHECK_MARK_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pCheckBox);
2689 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pCheckBox != null), , E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r));
2695 r = GET_BITMAP_CONFIG_N(TABLEVIEW::CHECKBOX_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pCheckBoxBg);
2696 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pCheckBoxBg != null), , E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r));
2698 r = GET_BITMAP_CONFIG_N(TABLEVIEW::CHECKBOX_CHECK_MARK_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pCheckBox);
2699 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pCheckBox != null), , E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r));
2702 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, annexWidth);
2703 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, annexHeight);
2705 bounds.SetBounds(0.0f, 0.0f, annexWidth, annexHeight);
2707 pCanvas = new (std::nothrow) Canvas();
2708 SysTryCatch(NID_UI_CTRL, pCanvas != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
2710 pCanvas->Construct(bounds);
2711 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
2714 DrawBitmap(*pCanvas, CalculateAnnexBitmapBounds(annexWidth, annexHeight, *pCheckBoxBg), *pCheckBoxBg);
2716 if (__isCheckedAnimationEnabled == true)
2718 StartCheckBoxAnimation();
2722 if (IsChecked() == true && pCheckBox != null)
2724 DrawBitmap(*pCanvas, CalculateAnnexBitmapBounds(annexWidth, annexHeight, *pCheckBox), *pCheckBox);
2728 pMergeBitmap = new (std::nothrow) Bitmap();
2729 SysTryCatch(NID_UI_CTRL, pMergeBitmap != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
2731 pMergeBitmap->Construct(*pCanvas, bounds);
2732 _BitmapImpl::ConvertToNonpremultiplied(*pMergeBitmap, true);
2734 __pItemAnnex->SetBackgroundBitmap(*pMergeBitmap);
2735 __pItemAnnex->Invalidate(false);
2740 delete pMergeBitmap;
2747 _TableViewItem::DrawRadioBox(void)
2749 Bitmap* pRadioButton = null;
2750 Bitmap* pRadioButtonBg = null;
2751 Bitmap* pMergeBitmap = null;
2752 Canvas* pCanvas = null;
2753 result r = E_SUCCESS;
2755 FloatRectangle bounds;
2756 float annexWidth = 0.0f;
2757 float annexHeight = 0.0f;
2761 if (__drawingStatus == TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL)
2763 r = GET_BITMAP_CONFIG_N(TABLEVIEW::RADIOBUTTON_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pRadioButtonBg);
2764 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pRadioButtonBg != null), , E_SYSTEM, "[%s] A system error has been occurred. RadioButtonBg image load failed", GetErrorMessage(E_SYSTEM));
2766 r = GET_BITMAP_CONFIG_N(TABLEVIEW::RADIOBUTTON_BUTTON_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pRadioButton);
2767 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pRadioButton != null), , E_SYSTEM, "[%s] A system error has been occurred.CheckBox image load failed", GetErrorMessage(E_SYSTEM));
2769 else if ((__drawingStatus == TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED) || (__drawingStatus == TABLE_VIEW_ITEM_DRAWING_STATUS_HIGHLIGHTED))
2771 r = GET_BITMAP_CONFIG_N(TABLEVIEW::RADIOBUTTON_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pRadioButtonBg);
2772 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pRadioButtonBg != null), , E_SYSTEM, "[%s] A system error has been occurred. RadioButtonBg image load failed", GetErrorMessage(E_SYSTEM));
2775 r = GET_BITMAP_CONFIG_N(TABLEVIEW::RADIOBUTTON_BUTTON_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pRadioButton);
2776 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pRadioButton != null), , E_SYSTEM, "[%s] A system error has been occurred.CheckBox image load failed", GetErrorMessage(E_SYSTEM));
2781 r = GET_BITMAP_CONFIG_N(TABLEVIEW::RADIOBUTTON_NORMAL_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pRadioButtonBg);
2782 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pRadioButtonBg != null), , E_SYSTEM, "[%s] A system error has been occurred. RadioButtonBg image load failed", GetErrorMessage(E_SYSTEM));
2784 r = GET_BITMAP_CONFIG_N(TABLEVIEW::RADIOBUTTON_BUTTON_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pRadioButton);
2785 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pRadioButton != null), , E_SYSTEM, "[%s] A system error has been occurred.CheckBox image load failed", GetErrorMessage(E_SYSTEM));
2788 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, annexWidth);
2789 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, annexHeight);
2790 bounds.SetBounds(0.0f, 0.0f, annexWidth, annexHeight);
2792 pCanvas = new (std::nothrow) Canvas();
2793 SysTryCatch(NID_UI_CTRL, pCanvas != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
2795 pCanvas->Construct(bounds);
2796 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
2799 DrawBitmap(*pCanvas, CalculateAnnexBitmapBounds(annexWidth, annexHeight, *pRadioButtonBg), *pRadioButtonBg);
2801 if (pRadioButton != null && IsChecked() == true)
2803 DrawBitmap(*pCanvas, CalculateAnnexBitmapBounds(annexWidth, annexHeight, *pRadioButton), *pRadioButton);
2806 pMergeBitmap = new (std::nothrow) Bitmap();
2807 SysTryCatch(NID_UI_CTRL, pMergeBitmap != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
2809 pMergeBitmap->Construct(*pCanvas, bounds);
2810 _BitmapImpl::ConvertToNonpremultiplied(*pMergeBitmap, true);
2812 __pItemAnnex->SetBackgroundBitmap(*pMergeBitmap);
2813 __pItemAnnex->Invalidate(false);
2816 delete pRadioButton;
2817 delete pRadioButtonBg;
2818 delete pMergeBitmap;
2825 _TableViewItem::DrawOnOffButton(void)
2827 Bitmap* pOnOffButton = null;
2828 Bitmap* pOnOffButtonHandler = null;
2829 Bitmap* pMergeBitmap = null;
2830 Canvas* pCanvas = null;
2831 result r = E_SUCCESS;
2833 FloatRectangle bounds;
2834 FloatRectangle backgroundBounds;
2835 FloatRectangle handlerBounds;
2836 float annexWidth = 0.0f;
2837 float annexHeight = 0.0f;
2838 float annexMargin = 0.0f;
2840 if (IsChecked() == true)
2844 r = GET_BITMAP_CONFIG_N(TABLEVIEW::ONOFFBUTTON_ON_HANDLER, BITMAP_PIXEL_FORMAT_ARGB8888, pOnOffButtonHandler);
2848 r = GET_BITMAP_CONFIG_N(TABLEVIEW::ONOFFBUTTON_ON_HANDLER_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pOnOffButtonHandler);
2855 r = GET_BITMAP_CONFIG_N(TABLEVIEW::ONOFFBUTTON_OFF_HANDLER, BITMAP_PIXEL_FORMAT_ARGB8888, pOnOffButtonHandler);
2859 r = GET_BITMAP_CONFIG_N(TABLEVIEW::ONOFFBUTTON_OFF_HANDLER_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pOnOffButtonHandler);
2862 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pOnOffButtonHandler != null), , E_SYSTEM, "[%s] A system error has been occurred. OnOffButtonHandler image load failed", GetErrorMessage(E_SYSTEM));
2866 r = GET_BITMAP_CONFIG_N(TABLEVIEW::ONOFFBUTTON_BG, BITMAP_PIXEL_FORMAT_ARGB8888, pOnOffButton);
2870 r = GET_BITMAP_CONFIG_N(TABLEVIEW::ONOFFBUTTON_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pOnOffButton);
2872 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pOnOffButton != null), , E_SYSTEM, "[%s] A system error has been occurred. OnOffButton image load failed", GetErrorMessage(E_SYSTEM));
2874 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_ONOFF_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, annexWidth);
2875 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_ONOFF_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, annexHeight);
2876 bounds.SetBounds(0, 0, annexWidth, annexHeight);
2878 pCanvas = new (std::nothrow) Canvas();
2879 SysTryCatch(NID_UI_CTRL, pCanvas != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
2881 pCanvas->Construct(bounds);
2882 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
2885 backgroundBounds = CalculateAnnexBitmapBounds(annexWidth, annexHeight, *pOnOffButton);
2886 DrawBitmap(*pCanvas, backgroundBounds, *pOnOffButton);
2888 handlerBounds = CalculateAnnexBitmapBounds(annexWidth, annexHeight, *pOnOffButtonHandler);
2889 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_ONOFF_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, annexMargin);
2890 if (IsChecked() == true)
2892 handlerBounds.x = backgroundBounds.width - handlerBounds.width - annexMargin;
2896 handlerBounds.x = backgroundBounds.x + annexMargin;
2899 DrawBitmap(*pCanvas, handlerBounds, *pOnOffButtonHandler);
2901 pMergeBitmap = new (std::nothrow) Bitmap();
2902 SysTryCatch(NID_UI_CTRL, pMergeBitmap != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
2904 pMergeBitmap->Construct(*pCanvas, bounds);
2905 _BitmapImpl::ConvertToNonpremultiplied(*pMergeBitmap, true);
2907 __pItemAnnex->SetBackgroundBitmap(*pMergeBitmap);
2908 __pItemAnnex->Invalidate(false);
2911 delete pOnOffButton;
2912 delete pOnOffButtonHandler;
2913 delete pMergeBitmap;
2920 _TableViewItem::AdjustAnnexOnOffHandlerPosition()
2922 float annexWidth = 0.0f;
2923 float annexHeight = 0.0f;
2924 float annexMargin = 0.0f;
2926 float annexStartPositionX = 0.0f;
2927 float annexEndPositionX = 0.0f;
2928 float handlerPositionX = 0.0f;
2929 FloatRectangle handlerBounds;
2930 result r = E_SUCCESS;
2932 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_ONOFF_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, annexMargin);
2934 Bitmap* pOnOffButtonHandler = null;
2935 if (IsChecked() == true)
2937 r = GET_BITMAP_CONFIG_N(TABLEVIEW::ONOFFBUTTON_ON_HANDLER, BITMAP_PIXEL_FORMAT_ARGB8888, pOnOffButtonHandler);
2941 r = GET_BITMAP_CONFIG_N(TABLEVIEW::ONOFFBUTTON_OFF_HANDLER, BITMAP_PIXEL_FORMAT_ARGB8888, pOnOffButtonHandler);
2943 SysTryReturnVoidResult(NID_UI_CTRL, (r == E_SUCCESS) && (pOnOffButtonHandler != null), E_SYSTEM, "[%s] A system error has been occurred. OnOffHandlerButton button image load failed.", GetErrorMessage(E_SYSTEM));
2945 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_ONOFF_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, annexWidth);
2946 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_ONOFF_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, annexHeight);
2948 annexStartPositionX = __pItemAnnex->GetBoundsF().x;
2949 annexEndPositionX = annexStartPositionX + annexWidth + annexMargin;
2951 handlerBounds = CalculateAnnexBitmapBounds(annexWidth, annexHeight, *pOnOffButtonHandler);
2953 if (__annexOnOffHandlerMoved)
2955 if (annexStartPositionX <= __annexOnOffHandlerPositionX
2956 && annexEndPositionX >= __annexOnOffHandlerPositionX)
2958 if (((annexEndPositionX - annexStartPositionX) / 2) < (__annexOnOffHandlerPositionX + (handlerBounds.width / 2)) - annexStartPositionX )
2960 handlerPositionX = annexEndPositionX;
2965 handlerPositionX = annexStartPositionX;
2972 SetChecked(!IsChecked());
2975 handlerPositionX = annexEndPositionX;
2979 handlerPositionX = annexStartPositionX;
2983 DrawAnnexOnOffHandler(handlerPositionX);
2985 delete pOnOffButtonHandler;
2991 _TableViewItem::DrawAnnexOnOffHandler(float touchEndPosition)
2993 if (__pItemAnnex == null)
2998 Bitmap* pOnOffButton = null;
2999 Bitmap* pOnOffButtonHandler = null;
3000 Bitmap* pMergeBitmap = null;
3001 Canvas* pCanvas = null;
3002 result r = E_SUCCESS;
3004 FloatRectangle backgroundBounds;
3005 FloatRectangle handlerBounds;
3006 float annexWidth = 0.0f;
3007 float annexHeight = 0.0f;
3008 float annexMargin = 0.0f;
3009 float annexX = 0.0f;
3010 float nextHandlerX = 0.0f;
3012 r = GET_BITMAP_CONFIG_N(TABLEVIEW::ONOFFBUTTON_BG, BITMAP_PIXEL_FORMAT_ARGB8888, pOnOffButton);
3013 SysTryReturnVoidResult(NID_UI_CTRL, (r == E_SUCCESS) && (pOnOffButton != null), E_SYSTEM, "[%s] A system error has been occurred. OnOffButton image load failed", GetErrorMessage(E_SYSTEM));
3015 if (IsChecked() == true)
3017 r = GET_BITMAP_CONFIG_N(TABLEVIEW::ONOFFBUTTON_ON_HANDLER, BITMAP_PIXEL_FORMAT_ARGB8888, pOnOffButtonHandler);
3021 r = GET_BITMAP_CONFIG_N(TABLEVIEW::ONOFFBUTTON_OFF_HANDLER, BITMAP_PIXEL_FORMAT_ARGB8888, pOnOffButtonHandler);
3023 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pOnOffButtonHandler != null), , E_SYSTEM, "[%s] A system error has been occurred. OnOffHandlerButton button image load failed.", GetErrorMessage(E_SYSTEM));
3025 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_ONOFF_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, annexWidth);
3026 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_ONOFF_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, annexHeight);
3027 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_ONOFF_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, annexMargin);
3029 pCanvas = new (std::nothrow) Canvas();
3030 SysTryCatch(NID_UI_CTRL, pCanvas != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
3032 pCanvas->Construct(FloatRectangle(0, 0, annexWidth, annexHeight));
3033 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
3036 backgroundBounds = CalculateAnnexBitmapBounds(annexWidth, annexHeight, *pOnOffButton);
3037 DrawBitmap(*pCanvas, backgroundBounds, *pOnOffButton);
3039 handlerBounds = CalculateAnnexBitmapBounds(annexWidth, annexHeight, *pOnOffButtonHandler);
3040 handlerBounds.y = backgroundBounds.y;
3044 handlerBounds.x = backgroundBounds.width - handlerBounds.width - annexMargin;
3048 handlerBounds.x = backgroundBounds.x + annexMargin;
3051 nextHandlerX = handlerBounds.x + (touchEndPosition - __annexTouchStartPosition);
3052 annexX = __pItemAnnex->GetBoundsF().x;
3054 if ((annexX + nextHandlerX + handlerBounds.width) < (annexX + annexWidth + annexMargin)
3055 && (annexX + nextHandlerX) > annexX)
3057 handlerBounds.x = nextHandlerX;
3059 else if (_FloatCompareGE((annexX + nextHandlerX + handlerBounds.width), (annexX + annexWidth + annexMargin)))
3061 handlerBounds.x = backgroundBounds.width - handlerBounds.width - annexMargin;
3063 else if (_FloatCompareLE((annexX + nextHandlerX), annexX))
3065 handlerBounds.x = backgroundBounds.x + annexMargin;
3068 __annexOnOffHandlerPositionX = annexX + handlerBounds.x;
3069 DrawBitmap(*pCanvas, handlerBounds, *pOnOffButtonHandler);
3071 pMergeBitmap = new (std::nothrow) Bitmap();
3072 SysTryCatch(NID_UI_CTRL, pMergeBitmap != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
3074 pMergeBitmap->Construct(*pCanvas, FloatRectangle(0, 0, annexWidth, annexHeight));
3075 _BitmapImpl::ConvertToNonpremultiplied(*pMergeBitmap, true);
3077 __pItemAnnex->SetBackgroundBitmap(*pMergeBitmap);
3078 __pItemAnnex->Invalidate(false);
3081 delete pOnOffButton;
3082 delete pOnOffButtonHandler;
3083 delete pMergeBitmap;
3090 _TableViewItem::DrawDetailButton(void)
3092 Bitmap* pDetail = null;
3093 Bitmap* pDetailBg = null;
3094 Bitmap* pDetailBgEffect = null;
3095 Bitmap* pDetailEffect = null;
3096 Bitmap* pReplacementDetail = null;
3097 Bitmap* pReplacementDetailBg = null;
3098 Bitmap* pMergeBitmap = null;
3099 Canvas* pCanvas = null;
3100 Color replacementNewColor;
3101 Color replacementNewBgColor;
3102 result r = E_SUCCESS;
3104 FloatRectangle bounds;
3105 float annexWidth = 0.0f;
3106 float annexHeight = 0.0f;
3107 bool themeBackgroundBitmap = false;
3109 themeBackgroundBitmap = IS_CUSTOM_BITMAP(TABLEVIEW::CIRCLE_BUTTON_BG_NORMAL);
3113 r = GET_BITMAP_CONFIG_N(TABLEVIEW::CIRCLE_BUTTON_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pDetailBg);
3114 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pDetailBg != null), , E_SYSTEM, "[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
3116 if (__isSelectedDetailButton)
3118 if (!themeBackgroundBitmap)
3120 r = GET_BITMAP_CONFIG_N(TABLEVIEW::CIRCLE_BUTTON_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pDetailBgEffect);
3121 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pDetailBgEffect != null), , E_SYSTEM, "[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
3123 r = GET_BITMAP_CONFIG_N(TABLEVIEW::CIRCLE_BUTTON_REVEAL_EFFECT, BITMAP_PIXEL_FORMAT_ARGB8888, pDetailEffect);
3124 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pDetailEffect != null), , E_SYSTEM,"[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
3127 r = GET_BITMAP_CONFIG_N(TABLEVIEW::CIRCLE_BUTTON_REVEAL_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pDetail);
3128 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pDetail != null), , E_SYSTEM, "[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
3130 GET_COLOR_CONFIG(TABLEVIEW::ITEM_ANNEX_DETAIL_PRESSED, replacementNewColor);
3131 GET_COLOR_CONFIG(TABLEVIEW::ITEM_ANNEX_DETAIL_BG_PRESSED, replacementNewBgColor);
3135 if (!themeBackgroundBitmap)
3137 r = GET_BITMAP_CONFIG_N(TABLEVIEW::CIRCLE_BUTTON_BG_EFFECT, BITMAP_PIXEL_FORMAT_ARGB8888, pDetailBgEffect);
3138 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pDetailBgEffect != null), , E_SYSTEM, "[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
3140 r = GET_BITMAP_CONFIG_N(TABLEVIEW::CIRCLE_BUTTON_REVEAL_EFFECT, BITMAP_PIXEL_FORMAT_ARGB8888, pDetailEffect);
3141 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pDetailEffect != null), , E_SYSTEM, "[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
3144 r = GET_BITMAP_CONFIG_N(TABLEVIEW::CIRCLE_BUTTON_REVEAL_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pDetail);
3145 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pDetail != null), , E_SYSTEM, "[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
3147 GET_COLOR_CONFIG(TABLEVIEW::ITEM_ANNEX_DETAIL_NORMAL, replacementNewColor);
3148 GET_COLOR_CONFIG(TABLEVIEW::ITEM_ANNEX_DETAIL_BG_NORMAL, replacementNewBgColor);
3154 if (!themeBackgroundBitmap)
3156 r = GET_BITMAP_CONFIG_N(TABLEVIEW::CIRCLE_BUTTON_BG_EFFECT_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pDetailBgEffect);
3157 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pDetailBgEffect != null), , E_SYSTEM, "[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
3159 r = GET_BITMAP_CONFIG_N(TABLEVIEW::CIRCLE_BUTTON_REVEAL_EFFECT, BITMAP_PIXEL_FORMAT_ARGB8888, pDetailEffect);
3160 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pDetailEffect != null), , E_SYSTEM, "[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
3163 r = GET_BITMAP_CONFIG_N(TABLEVIEW::CIRCLE_BUTTON_REVEAL_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pDetail);
3164 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pDetail != null), , E_SYSTEM, "[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
3166 r = GET_BITMAP_CONFIG_N(TABLEVIEW::CIRCLE_BUTTON_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pDetailBg);
3167 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pDetailBg != null), , E_SYSTEM, "[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
3169 GET_COLOR_CONFIG(TABLEVIEW::ITEM_ANNEX_DETAIL_NORMAL, replacementNewColor);
3171 pReplacementDetailBg = Tizen::Graphics::_BitmapImpl::GetColorReplacedBitmapN(*pDetailBg, Color::GetColor(COLOR_ID_MAGENTA), replacementNewBgColor);
3172 SysTryCatch(NID_UI_CTRL, pReplacementDetailBg != null, r = E_SYSTEM, E_SYSTEM, "[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
3174 pReplacementDetail = Tizen::Graphics::_BitmapImpl::GetColorReplacedBitmapN(*pDetail, Color::GetColor(COLOR_ID_MAGENTA), replacementNewColor);
3175 SysTryCatch(NID_UI_CTRL, pReplacementDetail != null, r = E_SYSTEM, E_SYSTEM, "[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
3177 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_MORE_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, annexWidth);
3178 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_MORE_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, annexHeight);
3180 bounds.SetBounds(0, 0, annexWidth, annexHeight);
3182 pCanvas = new (std::nothrow) Canvas();
3183 SysTryCatch(NID_UI_CTRL, pCanvas != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
3185 pCanvas->Construct(bounds);
3186 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
3189 DrawBitmap(*pCanvas, CalculateAnnexBitmapBounds(annexWidth, annexHeight, *pReplacementDetailBg), *pReplacementDetailBg);
3190 if (pDetailBgEffect)
3192 DrawBitmap(*pCanvas, CalculateAnnexBitmapBounds(annexWidth, annexHeight, *pDetailBgEffect), *pDetailBgEffect);
3194 DrawBitmap(*pCanvas, CalculateAnnexBitmapBounds(annexWidth, annexHeight, *pReplacementDetail), *pReplacementDetail);
3197 DrawBitmap(*pCanvas, CalculateAnnexBitmapBounds(annexWidth, annexHeight, *pDetailEffect), *pDetailEffect);
3200 pMergeBitmap = new (std::nothrow) Bitmap();
3201 SysTryCatch(NID_UI_CTRL, pMergeBitmap != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
3202 pMergeBitmap->Construct(*pCanvas, bounds);
3203 _BitmapImpl::ConvertToNonpremultiplied(*pMergeBitmap, true);
3205 __pItemAnnex->SetBackgroundBitmap(*pMergeBitmap);
3206 __pItemAnnex->Invalidate(false);
3211 delete pDetailBgEffect;
3212 delete pDetailEffect;
3213 delete pReplacementDetail;
3214 delete pReplacementDetailBg;
3215 delete pMergeBitmap;
3222 _TableViewItem::DrawItemDivider(void)
3224 if (__pItemDivider == null || __pItemTopDivider == null)
3229 if (__pDrawingProperty->itemDividerEnabled == false ||
3230 __itemType == TABLE_VIEW_ITEM_TYPE_HEADER ||
3231 __itemType == TABLE_VIEW_ITEM_TYPE_FOOTER ||
3232 __itemDividerEnabled == false ||
3235 __pItemDivider->SetVisibleState(false);
3236 __pItemTopDivider->SetVisibleState(false);
3241 FloatRectangle dividerBottomBounds;
3242 FloatRectangle dividerTopBounds;
3244 Color bottomLineColor;
3245 Color customDividerColor;
3246 FloatRectangle bounds;
3247 FloatPoint bottomPoint;
3249 __pItemDivider->SetVisibleState(true);
3250 __pItemTopDivider->SetVisibleState(true);
3252 if ( __drawingStatus == TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED ||
3253 __drawingStatus == TABLE_VIEW_ITEM_DRAWING_STATUS_HIGHLIGHTED)
3255 if (__colorItemBg[TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL] != __colorItemBg[TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED])
3257 if (__itemType != TABLE_VIEW_ITEM_TYPE_TITLE)
3259 __pItemDivider->SetVisibleState(false);
3262 __pItemTopDivider->SetVisibleState(false);
3266 if (__itemType == TABLE_VIEW_ITEM_TYPE_TITLE)
3268 if (__pItemBgBitmap[__drawingStatus] != null)
3270 __pItemDivider->SetVisibleState(false);
3274 float lineHeight = 0.0f;
3275 float lineLeftMargin = 0.0f;
3276 float lineBottomMargin = 0.0f;
3277 bounds = GetBoundsF();
3279 if (__drawingStatus == TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL)
3281 GET_COLOR_CONFIG(TABLEVIEW::GROUPITEM_INDEX_BAR_NORMAL, bottomLineColor);
3285 GET_COLOR_CONFIG(TABLEVIEW::GROUPITEM_INDEX_BAR_PRESSED, bottomLineColor);
3288 GET_SHAPE_CONFIG(TABLEVIEW::GROUPITEM_INDEX_BAR_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, lineHeight);
3289 GET_SHAPE_CONFIG(TABLEVIEW::GROUPITEM_INDEX_BAR_LEFT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, lineLeftMargin);
3290 GET_SHAPE_CONFIG(TABLEVIEW::GROUPITEM_INDEX_BAR_BOTTOM_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, lineBottomMargin);
3292 lineHeight = Tizen::Graphics::CoordinateSystem::ConvertToLogicalY(lineHeight);
3293 lineBottomMargin = Tizen::Graphics::CoordinateSystem::ConvertToLogicalY(lineBottomMargin);
3294 bottomPoint = Tizen::Graphics::CoordinateSystem::AlignToDevice(FloatPoint(lineLeftMargin, bounds.height));
3295 dividerBottomBounds = FloatRectangle(bottomPoint.x, bottomPoint.y - lineBottomMargin, bounds.width - lineLeftMargin * 2.0f, lineHeight);
3300 float lineLeftMargin = 0.0f;
3301 float lineHeight = 0.0f;
3302 bounds = GetBoundsF();
3304 if (!IsContextItem())
3306 if (!__isSimpleLastItem)
3308 if (__itemType == TABLE_VIEW_ITEM_TYPE_BOTTOM || __itemType == TABLE_VIEW_ITEM_TYPE_ONE)
3310 __pItemDivider->SetVisibleState(false);
3311 __pItemTopDivider->SetVisibleState(false);
3316 customDividerColor = __pDrawingProperty->dividerColor;
3317 GET_COLOR_CONFIG(TABLEVIEW::ITEM_DIVIDER_TOP_BG_NORMAL, topLineColor);
3318 GET_COLOR_CONFIG(TABLEVIEW::ITEM_DIVIDER_BOTTOM_BG_NORMAL, bottomLineColor);
3319 GET_FIXED_VALUE_CONFIG(TABLEVIEW::ITEM_DIVIDER_LEFT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, lineLeftMargin);
3320 GET_FIXED_VALUE_CONFIG(TABLEVIEW::ITEM_DIVIDER_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, lineHeight);
3322 lineLeftMargin = Tizen::Graphics::CoordinateSystem::ConvertToLogicalX(lineLeftMargin);
3323 lineHeight = Tizen::Graphics::CoordinateSystem::ConvertToLogicalY(lineHeight);
3324 bottomPoint = Tizen::Graphics::CoordinateSystem::AlignToDevice(FloatPoint(lineLeftMargin, (bounds.height)));
3326 dividerTopBounds.SetBounds(lineLeftMargin, bottomPoint.y - (lineHeight * 2.0f), bounds.width - lineLeftMargin * 2.0f, lineHeight);
3327 dividerBottomBounds.SetBounds(lineLeftMargin, bottomPoint.y - lineHeight, bounds.width - lineLeftMargin * 2.0f, lineHeight);
3330 if (__pItemDivider->GetVisibleState())
3332 __pItemDivider->SetBounds(dividerBottomBounds);
3333 if (customDividerColor == bottomLineColor || __itemType == TABLE_VIEW_ITEM_TYPE_TITLE)
3335 __pItemDivider->SetBackgroundColor(bottomLineColor);
3339 __pItemDivider->SetBackgroundColor(customDividerColor);
3340 __pItemDivider->GetVisualElement()->SetOpacity(ITEM_BOTTOM_DIVIDER_OPACITY);
3342 __pItemDivider->Invalidate();
3345 if (__pItemTopDivider->GetVisibleState())
3347 __pItemTopDivider->SetBounds(dividerTopBounds);
3348 if (customDividerColor == bottomLineColor)
3350 __pItemTopDivider->SetBackgroundColor(topLineColor);
3354 __pItemTopDivider->SetBackgroundColor(customDividerColor);
3355 __pItemTopDivider->GetVisualElement()->SetOpacity(ITEM_TOP_DIVIDER_OPACITY);
3357 __pItemTopDivider->Invalidate();
3362 _TableViewItem::DrawItemAnnexDivider(void)
3364 if (__itemType == TABLE_VIEW_ITEM_TYPE_HEADER || __itemType == TABLE_VIEW_ITEM_TYPE_FOOTER)
3366 if (__pItemAnnexLeftDivider != null)
3368 __pItemAnnexLeftDivider->SetVisibleState(false);
3371 if (__pItemAnnexRightDivider != null)
3373 __pItemAnnexRightDivider->SetVisibleState(false);
3378 Color dividerLeftColor;
3379 Color dividerRightColor;
3380 Color customDividerColor;
3381 Color bottomLineColor;
3382 FloatRectangle bounds = GetBoundsF();
3383 float dividerHeight = 0;
3384 float itemHeight = 0;
3385 float dividerWidth = 0.0f;
3386 float dividerTopMargin = 0.0f;
3387 float annexWidth = 0.0f;
3388 float annexLeftMargin = 0.0f;
3389 float itemLeftMargin = 0.0f;
3391 customDividerColor = __pDrawingProperty->dividerColor;
3392 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_LEFT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, itemLeftMargin);
3393 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, annexLeftMargin);
3394 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_ONOFF_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, annexWidth);
3395 GET_COLOR_CONFIG(TABLEVIEW::ITEM_ANNEX_DIVIDER_LEFT_BG_NORMAL, dividerLeftColor);
3396 GET_COLOR_CONFIG(TABLEVIEW::ITEM_ANNEX_DIVIDER_RIGHT_BG_NORMAL, dividerRightColor);
3397 GET_COLOR_CONFIG(TABLEVIEW::ITEM_DIVIDER_BOTTOM_BG_NORMAL, bottomLineColor);
3398 GET_FIXED_VALUE_CONFIG(TABLEVIEW::ITEM_ANNEX_DIVIDER_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, dividerWidth);
3399 GET_FIXED_VALUE_CONFIG(TABLEVIEW::ITEM_ANNEX_DIVIDER_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, dividerTopMargin);
3401 itemLeftMargin += __pDrawingProperty->scrollMargin;
3402 itemHeight = ((__customHeight > 0) ? __customHeight : GetBoundsF().height);
3403 dividerHeight = itemHeight - (dividerTopMargin*2);
3404 dividerHeight = (dividerHeight > 0) ? dividerHeight : 0;
3405 __pItemAnnexLeftDivider->SetBounds(FloatRectangle((GetBoundsF().width - annexWidth - (itemLeftMargin + annexLeftMargin) - (dividerWidth*2)), dividerTopMargin, dividerWidth, dividerHeight));
3406 __pItemAnnexRightDivider->SetBounds(FloatRectangle((GetBoundsF().width - annexWidth - (itemLeftMargin + annexLeftMargin) - dividerWidth), dividerTopMargin, dividerWidth, dividerHeight));
3408 if (customDividerColor == bottomLineColor)
3410 __pItemAnnexLeftDivider->SetBackgroundColor(dividerLeftColor);
3414 __pItemAnnexLeftDivider->SetBackgroundColor(customDividerColor);
3415 __pItemAnnexLeftDivider->GetVisualElement()->SetOpacity(ITEM_TOP_DIVIDER_OPACITY);
3418 if (customDividerColor == bottomLineColor)
3420 __pItemAnnexRightDivider->SetBackgroundColor(dividerRightColor);
3424 __pItemAnnexRightDivider->SetBackgroundColor(customDividerColor);
3425 __pItemAnnexRightDivider->GetVisualElement()->SetOpacity(ITEM_BOTTOM_DIVIDER_OPACITY);
3428 __pItemAnnexLeftDivider->Invalidate();
3429 __pItemAnnexRightDivider->Invalidate();
3432 if (__pItemAnnexLeftDivider != null)
3434 _AccessibilityContainer* pContainer = __pItemAnnexLeftDivider->GetAccessibilityContainer();
3435 pContainer->Activate(false);
3438 if (__pItemAnnexRightDivider != null)
3440 _AccessibilityContainer* pContainer = __pItemAnnexRightDivider->GetAccessibilityContainer();
3441 pContainer->Activate(false);
3447 _TableViewItem::DrawBitmap(Canvas& canvas, const FloatRectangle& bounds, const Bitmap& bitmap)
3449 result r = E_SUCCESS;
3450 if (_BitmapImpl::CheckNinePatchedBitmapStrictly(bitmap))
3452 r = canvas.DrawNinePatchedBitmap(bounds, bitmap);
3453 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Fail to draw ninepatched bitmap.");
3457 r = canvas.DrawBitmap(bounds, bitmap);
3458 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Fail to draw bitmap.");
3465 _TableViewItem::SetItemHighlightBounds(_VisualElement& highlightVisualElement, const FloatRectangle& bounds)
3467 return highlightVisualElement.SetBounds(bounds);
3471 _TableViewItem::CalculateItemHighlightBounds(void)
3473 FloatRectangle itemBounds = GetBoundsF();
3474 return FloatRectangle(0.0f, 0.0f, itemBounds.width, itemBounds.height);
3478 _TableViewItem::CalculateAnnexBitmapBounds(float annexWidth, float annexHeight, const Bitmap& bitmap)
3480 FloatRectangle bounds;
3483 float leftMargin = 0;
3484 float topMargin = 0;
3486 if (annexWidth > bitmap.GetWidthF())
3488 leftMargin = (annexWidth - bitmap.GetWidthF()) / 2;
3489 width = bitmap.GetWidthF();
3496 if (annexHeight > bitmap.GetHeightF())
3498 topMargin = (annexHeight - bitmap.GetHeightF()) / 2;
3499 height = bitmap.GetHeightF();
3503 height = annexHeight;
3506 bounds.SetBounds(leftMargin, topMargin, width, height);
3512 _TableViewItem::IsTitleStyleItem(void) const
3514 if (__itemType == TABLE_VIEW_ITEM_TYPE_TITLE || __itemType == TABLE_VIEW_ITEM_TYPE_HEADER || __itemType == TABLE_VIEW_ITEM_TYPE_FOOTER)
3523 _TableViewItem::IsValidSelectionState(void)
3525 _TableView* pParent = dynamic_cast<_TableView*>(GetParent());
3526 if (pParent == null)
3531 if (pParent->GetPressedItemCount() > 0)
3540 _TableViewItem::DrawSimpleItem(void)
3542 if (__pSimpleItemText != null)
3544 Color textColor = __simpleItemTextColor[__drawingStatus];
3547 textColor = __simpleItemTextColor[TABLE_VIEW_SIMPLEITEM_DRAWING_STATUS_DISABLED];
3550 if (__itemType == TABLE_VIEW_ITEM_TYPE_TITLE)
3552 if (__drawingStatus == TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL)
3554 textColor = __simpleItemTextColor[TABLE_VIEW_GROUPITEM_DRAWING_STATUS_NORMAL];
3558 textColor = __simpleItemTextColor[TABLE_VIEW_GROUPITEM_DRAWING_STATUS_PRESSED];
3562 __pSimpleItemText->SetTextColor(textColor);
3563 __pSimpleItemText->Invalidate(false);
3567 _TableViewItem::SetSimpleItemContents(const Tizen::Base::String& text, const Tizen::Graphics::Bitmap* pBitmap, bool groupType)
3569 result r = E_SUCCESS;
3570 bool textOnly = true;
3572 if (pBitmap != null)
3577 r = CreateSimpleItemContents(textOnly);
3578 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
3580 FloatRectangle bitmapRect = FloatRectangle(0.0f, 0.0f, 0.0f, 0.0f);
3581 FloatRectangle textRect = FloatRectangle(0.0f, 0.0f, 0.0f, 0.0f);
3582 float leftMargin = 0.0f;
3583 float annexMargin = 0.0f;
3584 float elementWidth = 0;
3585 float elementHeight = 0;
3586 float itemHeight = GetBoundsF().height;
3587 float itemWidth = GetBoundsF().width;
3588 float annexWidth = GetAnnexWidth(__annexStyle);
3592 if (__simpleItemTextSize == 0)
3594 GET_SHAPE_CONFIG(TABLEVIEW::GROUPITEM_DEFAULT_FONT_SIZE, _CONTROL_ORIENTATION_PORTRAIT, __simpleItemTextSize);
3596 GET_SHAPE_CONFIG(TABLEVIEW::GROUPITEM_LEFT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, leftMargin);
3600 if (__simpleItemTextSize == 0)
3602 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_DEFAULT_FONT_SIZE, _CONTROL_ORIENTATION_PORTRAIT, __simpleItemTextSize);
3604 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_LEFT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, leftMargin);
3609 elementWidth = itemHeight * SIMPLE_ITEM_ELEMENT_BITMAP_SIZE_RATIO;
3610 elementHeight = elementWidth;
3612 bitmapRect.x = leftMargin;
3613 bitmapRect.y = (itemHeight - elementHeight) / 2;
3614 bitmapRect.width = elementWidth;
3615 bitmapRect.height = elementHeight;
3618 if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_NORMAL)
3620 textRect.x = bitmapRect.x + elementWidth + leftMargin;
3621 elementWidth = itemWidth - textRect.x - leftMargin;
3625 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, annexMargin);
3626 if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_MARK || __annexStyle == TABLE_VIEW_ANNEX_STYLE_RADIO)
3628 bitmapRect.x = leftMargin + annexWidth + annexMargin;
3629 textRect.x = bitmapRect.x + elementWidth + leftMargin;
3630 elementWidth = itemWidth - textRect.x - leftMargin;
3634 textRect.x = bitmapRect.x + elementWidth + leftMargin;
3635 elementWidth = itemWidth - textRect.x - annexWidth - leftMargin - annexMargin;
3640 textRect.width = elementWidth < 0 ? 0 : elementWidth;;
3641 textRect.height = itemHeight;
3643 if (__pSimpleItemBitmap != null && pBitmap != null)
3645 __pSimpleItemBitmap->SetBackgroundBitmap(*pBitmap);
3646 __pSimpleItemBitmap->SetBounds(bitmapRect);
3648 _Label* pSimpleItemBitmapCore = GetLabelCore(__pSimpleItemBitmap);
3649 if (!pSimpleItemBitmapCore->HasParent())
3651 r = AttachChild(*pSimpleItemBitmapCore);
3652 SysTryReturn(NID_UI_CTRL, __pSimpleItemBitmap != null, r, r, "[%s] Propagating.", GetErrorMessage(r));
3656 if (__pSimpleItemText != null)
3658 __pSimpleItemText->SetTextConfig(__simpleItemTextSize, LABEL_TEXT_STYLE_NORMAL);
3659 __pSimpleItemText->SetText(text);
3660 __pSimpleItemText->SetBounds(textRect);
3662 _Label* pSimpleItemTextCore = GetLabelCore(__pSimpleItemText);
3663 if (!pSimpleItemTextCore->HasParent())
3665 r = AttachChild(*pSimpleItemTextCore);
3666 SysTryReturn(NID_UI_CTRL, __pSimpleItemText != null, r, r, "[%s] Propagating.", GetErrorMessage(r));
3674 _TableViewItem::CreateSimpleItemContents(bool textOnly)
3676 result r = E_SUCCESS;
3678 if (__pSimpleItemText == null)
3680 __pSimpleItemText = new (std::nothrow) Label();
3682 r = GetLastResult();
3683 SysTryReturn(NID_UI_CTRL, __pSimpleItemText != null, r, r, "[%s] Propagating.", GetErrorMessage(r));
3685 __pSimpleItemText->Construct(FloatRectangle(0.0f, 0.0f, 0.0f, 0.0f), L"");
3687 __pSimpleItemText->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
3688 __pSimpleItemText->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
3689 if (__itemType == TABLE_VIEW_ITEM_TYPE_TITLE)
3691 __pSimpleItemText->SetTextColor(__simpleItemTextColor[TABLE_VIEW_GROUPITEM_DRAWING_STATUS_NORMAL]);
3695 __pSimpleItemText->SetTextColor(__simpleItemTextColor[TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL]);
3697 __pSimpleItemText->SetBackgroundColor(Color(0, 0, 0, 0));
3698 GetLabelCore(__pSimpleItemText)->SetFocusable(true);
3704 if (__pSimpleItemBitmap == null)
3706 __pSimpleItemBitmap = new (std::nothrow) Label();
3708 r = GetLastResult();
3709 SysTryReturn(NID_UI_CTRL, __pSimpleItemBitmap != null, r, r, "[%s] Propagating.", GetErrorMessage(r));
3711 __pSimpleItemBitmap->Construct(FloatRectangle(0.0f, 0.0f, 0.0f, 0.0f), L"");
3712 __pSimpleItemBitmap->SetBackgroundColor(Color(0, 0, 0, 0));
3713 GetLabelCore(__pSimpleItemBitmap)->SetFocusable(true);
3719 if (__pSimpleItemBitmap != null)
3721 delete __pSimpleItemBitmap;
3722 __pSimpleItemBitmap = null;
3730 _TableViewItem::SetSimpleTextColor(const Tizen::Graphics::Color& color, TableViewItemDrawingStatus status)
3732 __simpleItemTextColor[status] = color;
3737 Tizen::Graphics::Color
3738 _TableViewItem::GetSimpleItemTextColor(TableViewItemDrawingStatus status) const
3740 return __simpleItemTextColor[status];
3744 _TableViewItem::SetSimpleGroupItemTextColor(const Tizen::Graphics::Color& color, TableViewItemDrawingStatus status)
3746 if (status == TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL)
3748 __simpleItemTextColor[TABLE_VIEW_GROUPITEM_DRAWING_STATUS_NORMAL] = color;
3750 else if (status == TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED)
3752 __simpleItemTextColor[TABLE_VIEW_GROUPITEM_DRAWING_STATUS_PRESSED] = color;
3758 Tizen::Graphics::Color
3759 _TableViewItem::GetSimpleGroupItemTextColor(TableViewItemDrawingStatus status) const
3761 if (status == TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED)
3763 return __simpleItemTextColor[TABLE_VIEW_GROUPITEM_DRAWING_STATUS_PRESSED];
3767 return __simpleItemTextColor[TABLE_VIEW_GROUPITEM_DRAWING_STATUS_NORMAL];
3772 _TableViewItem::SetSimpleItemTextSize(int size)
3774 if (__simpleItemTextSize == size)
3779 __simpleItemTextSize = size;
3781 if (__pSimpleItemText != null)
3783 __pSimpleItemText->SetTextConfig(__simpleItemTextSize, LABEL_TEXT_STYLE_NORMAL);
3789 _TableViewItem::GetSimpleItemTextSize(void) const
3791 return __simpleItemTextSize;
3795 _TableViewItem::SetSectionHeaderFooterContents(const Tizen::Base::String& text, HorizontalAlignment alignment, bool isHeader)
3797 if (__pHeaderFooterItemText == null)
3799 result r = E_SUCCESS;
3800 float contentsHeight = 0.0f;
3801 float positionY = 0.0f;
3804 GET_COLOR_CONFIG(TABLEVIEW::GROUPITEM_TEXT_NORMAL, textColor);
3805 GET_SHAPE_CONFIG(TABLEVIEW::GROUPITEM_DEFAULT_TEXT_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, contentsHeight);
3807 __pHeaderFooterItemText = new (std::nothrow) Label();
3809 r = GetLastResult();
3810 SysTryReturn(NID_UI_CTRL, __pHeaderFooterItemText != null, r, r, "[%s] Propagating.", GetErrorMessage(r));
3814 positionY = GetBoundsF().height - contentsHeight;
3816 __pHeaderFooterItemText->Construct(FloatRectangle(0.0f, positionY, GetBoundsF().width, contentsHeight), text);
3817 __pHeaderFooterItemText->SetTextHorizontalAlignment(alignment);
3818 __pHeaderFooterItemText->SetTextColor(textColor);
3819 __pHeaderFooterItemText->SetBackgroundColor(Color(0, 0, 0, 0));
3821 _Label* pHeaderFooterItemTextCore = GetLabelCore(__pHeaderFooterItemText);
3822 pHeaderFooterItemTextCore->SetFocusable(false);
3823 AttachChild(*pHeaderFooterItemTextCore);
3830 _TableViewItem::SetSectionHeaderFooterAlignment(HorizontalAlignment alignment)
3832 if (__pHeaderFooterItemText != null)
3834 __pHeaderFooterItemText->SetTextHorizontalAlignment(alignment);
3835 __pHeaderFooterItemText->Invalidate(false);
3842 _TableViewItem::GetAnnexWidth(TableViewAnnexStyle style)
3844 float annexWidth = 0.0f;
3845 float annexDividerWidth = 0.0f;
3849 case TABLE_VIEW_ANNEX_STYLE_NORMAL:
3853 case TABLE_VIEW_ANNEX_STYLE_MARK:
3854 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, annexWidth);
3857 case TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING:
3858 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_ONOFF_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, annexWidth);
3861 case TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING_WITH_DIVIDER:
3862 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, annexDividerWidth);
3863 GET_FIXED_VALUE_CONFIG(TABLEVIEW::ITEM_ANNEX_DIVIDER_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, annexDividerWidth);
3864 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_ONOFF_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, annexWidth);
3865 annexWidth = annexWidth + (annexDividerWidth*2) + annexDividerWidth;
3868 case TABLE_VIEW_ANNEX_STYLE_DETAILED:
3869 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_MORE_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, annexWidth);
3872 case TABLE_VIEW_ANNEX_STYLE_RADIO:
3873 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, annexWidth);
3884 _TableViewItem::SetDrawingStatus(TableViewItemDrawingStatus status)
3886 __drawingStatus = status;
3889 TableViewItemDrawingStatus
3890 _TableViewItem::GetDrawingStatus(void)
3892 return __drawingStatus;
3896 _TableViewItem::SetPressedControl(TableViewItemPressedControl pressedControl)
3898 __pressedControl = pressedControl;
3900 if (__pressedControl == TABLE_VIEW_ITEM_PRESSED_ITEM)
3902 __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED;
3904 else if (__pressedControl == TABLE_VIEW_ITEM_PRESSED_ANNEX)
3906 if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_DETAILED)
3908 __isSelectedDetailButton = true;
3909 __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL;
3911 else if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING ||
3912 __annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
3914 __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL;
3918 __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED;
3923 if (__pressedControl != TABLE_VIEW_ITEM_PRESSED_INDIVIDUAL)
3925 __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED;
3930 TableViewItemPressedControl
3931 _TableViewItem::GetPressedControl(void)
3933 return __pressedControl;
3937 _TableViewItem::AdjustChildControlMargin(void)
3939 if (__childMarginState)
3944 if (IsTitleStyleItem())
3949 __childMarginState = true;
3953 if (__pDrawingProperty->groupedLookEnabled)
3955 float groupedBarMargin = 0.0f;
3956 GET_SHAPE_CONFIG(TABLEVIEW::GROUPITEM_BAR_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, groupedBarMargin);
3958 margin = margin + groupedBarMargin;
3963 _VisualElement* pVisualElement = GetVisualElement();
3965 if (pVisualElement != null)
3967 FloatPoint position;
3969 position.SetPosition(margin, 0.0f);
3970 pVisualElement->ScrollByPoint(position, false);
3976 _TableViewItem::AdjustContextItemBounds(void)
3978 _TableViewItem* pContextItem = GetContextItem();
3980 if (pContextItem == null)
3985 FloatDimension contextItemSize = pContextItem->GetSizeF();
3986 FloatDimension itemSize = GetSizeF();
3988 if (!_FloatCompare(contextItemSize.height, itemSize.height))
3990 contextItemSize.height = itemSize.height;
3992 pContextItem->SetSize(contextItemSize);
3995 pContextItem->AdjustChildControlCenterAlign();
3999 _TableViewItem::AdjustAnnexBounds(void)
4001 if (__pItemAnnex == null || __isMoveItemAnimationEnabled || __isZoomInOutItemAnimationEnabled ||__isFadeInOutItemAnimationEnabled)
4007 if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING || __annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING_WITH_DIVIDER || __annexStyle == TABLE_VIEW_ANNEX_STYLE_DETAILED)
4009 _Label* pAnnexCore = GetLabelCore(__pItemAnnex);
4010 if (pAnnexCore->HasParent())
4012 FloatRectangle annexBounds = __pItemAnnex->GetBoundsF();
4013 float annexPositionX = annexBounds.x;
4014 float leftMargin = 0.0f;
4016 GET_SHAPE_CONFIG(TABLEVIEW::ITEM_LEFT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, leftMargin);
4017 leftMargin += __pDrawingProperty->scrollMargin;
4019 annexPositionX = GetBoundsF().width - annexBounds.width - leftMargin;
4021 if (!_FloatCompare(annexPositionX, annexBounds.x))
4023 __pItemAnnex->SetPosition(FloatPoint(annexPositionX, annexBounds.y));
4025 if (__pAccessibilityOnOffElement != null)
4027 __pAccessibilityOnOffElement->SetBounds(__pItemAnnex->GetBoundsF());
4034 FloatRectangle itemBounds = GetBoundsF();
4035 FloatRectangle annexBounds = __pItemAnnex->GetBoundsF();
4037 if (__customHeight > 0)
4039 itemBounds.height = __customHeight;
4042 annexBounds.y = (itemBounds.height - annexBounds.height) / 2;
4043 __pItemAnnex->SetPosition(FloatPoint(annexBounds.x, annexBounds.y));
4044 if (__pAccessibilityOnOffElement != null)
4046 __pAccessibilityOnOffElement->SetBounds(__pItemAnnex->GetBoundsF());
4051 _TableViewItem::SetItemCustomHeight(float height)
4053 __customHeight = height;
4057 _TableViewItem::GetItemCustomHeight(void)
4059 return __customHeight;
4063 _TableViewItem::AdjustChildControlCenterAlign(void)
4065 if (__childControlCenterAlign)
4067 FloatDimension itemSize = GetSizeF();
4069 int childControlCount = GetChildCount();
4071 for (int i = 0; i < childControlCount; i++)
4073 _Control* pChildControl = GetChild(i);
4075 if (pChildControl == null)
4080 if (__pItemDivider == pChildControl)
4082 float positionX = pChildControl->GetPositionF().x;
4083 pChildControl->SetPosition(FloatPoint(positionX, itemSize.height - 1));
4087 if (__pItemTopDivider == pChildControl)
4089 float positionX = pChildControl->GetPositionF().x;
4090 pChildControl->SetPosition(FloatPoint(positionX, 0));
4094 FloatRectangle itemBounds = pChildControl->GetBoundsF();
4096 itemBounds.y = (itemSize.height - itemBounds.height) / 2;
4098 pChildControl->SetPosition(FloatPoint(itemBounds.x, itemBounds.y));
4104 _TableViewItem::SetChildControlCenterAlign(bool centerAlign)
4106 __childControlCenterAlign = centerAlign;
4110 _TableViewItem::GetLastTouchPressedPosition(void)
4112 return _CoordinateSystemUtils::ConvertToInteger(__touchStartPosition);
4116 _TableViewItem::GetLastTouchPressedPositionF(void)
4118 return __touchStartPosition;
4122 _TableViewItem::SetLastTouchPressedPosition(FloatPoint position)
4124 // This function was made to modify of ListView::RefreshList().
4125 // This function could adversely affect touch event handling. So, you should be used with caution.
4126 __touchStartPosition = position;
4130 _TableViewItem::SetLastTouchPressedPosition(Point position)
4132 // This function was made to modify of ListView::RefreshList().
4133 // This function could adversely affect touch event handling. So, you should be used with caution.
4134 __touchStartPosition = _CoordinateSystemUtils::ConvertToFloat(position);
4138 _TableViewItem::GetSelectionState(void)
4140 return __itemSelected;
4144 _TableViewItem::SetSelectionState(bool selected)
4146 // This function was made to modify of ListView::RefreshList().
4147 // This function could adversely affect touch event handling. So, you should be used with caution.
4148 __itemSelected = selected;
4152 _TableViewItem::MoveItem(FloatPoint position, int duration, int delay)
4154 _VisualElement* pVisualElement = GetVisualElement();
4155 VisualElementValueAnimation* pAnimation = null;
4156 String animationName = L"MOVE_ITEM";
4157 FloatPoint itemPosition = GetPositionF();
4158 result r = E_SUCCESS;
4160 if (position == itemPosition)
4165 if (__pMoveItemAnimation == null)
4167 __pMoveItemAnimation = new (std::nothrow) VisualElementValueAnimation;
4168 SysTryCatch(NID_UI_CTRL, __pMoveItemAnimation != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
4170 __pMoveItemAnimation->SetVisualElementAnimationTickEventListener(this);
4171 r = GetLastResult();
4172 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
4174 __pMoveItemAnimation->SetVisualElementAnimationStatusEventListener(this);
4175 r = GetLastResult();
4176 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
4179 pAnimation = __pMoveItemAnimation;
4181 pAnimation->SetTimingFunction(VisualElementAnimation::GetTimingFunctionByName("EaseInOut"));
4182 pAnimation->SetDuration(duration);
4183 pAnimation->SetDelay(delay);
4184 pAnimation->SetStartValue(Variant(GetPositionF()));
4185 pAnimation->SetEndValue(Variant(position));
4187 if (pVisualElement->AddAnimation(animationName, *pAnimation) != E_SUCCESS)
4198 delete __pMoveItemAnimation;
4199 __pMoveItemAnimation = null;
4205 _TableViewItem::ZoomInOutItem(bool zoomOut, int duration, int delay)
4207 _VisualElement* pVisualElement = GetVisualElement();
4208 VisualElementValueAnimation* pAnimation = null;
4209 String animationName = L"ZOOM_IN_OUT_ITEM";
4210 FloatDimension itemSize = GetSizeF();
4211 FloatDimension startValue;
4212 FloatDimension endValue;
4213 result r = E_SUCCESS;
4215 if (__pZoomInOutItemAnimation == null)
4217 __pZoomInOutItemAnimation = new (std::nothrow) VisualElementValueAnimation;
4218 SysTryCatch(NID_UI_CTRL, __pZoomInOutItemAnimation != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
4220 __pZoomInOutItemAnimation->SetVisualElementAnimationTickEventListener(this);
4221 r = GetLastResult();
4222 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
4224 __pZoomInOutItemAnimation->SetVisualElementAnimationStatusEventListener(this);
4225 r = GetLastResult();
4226 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
4229 pAnimation = __pZoomInOutItemAnimation;
4233 startValue = itemSize;
4234 endValue = FloatDimension(itemSize.width, itemSize.height / 2);
4235 pAnimation->SetTimingFunction(VisualElementAnimation::GetTimingFunctionByName(L"EaseOut"));
4239 startValue = FloatDimension(itemSize.width, itemSize.height / 2);
4240 endValue = itemSize;
4241 pAnimation->SetTimingFunction(VisualElementAnimation::GetTimingFunctionByName(L"EaseIn"));
4244 pAnimation->SetDuration(duration);
4245 pAnimation->SetDelay(delay);
4246 pAnimation->SetStartValue(Variant(startValue));
4247 pAnimation->SetEndValue(Variant(endValue));
4249 if (pVisualElement->AddAnimation(animationName, *pAnimation) != E_SUCCESS)
4259 delete __pZoomInOutItemAnimation;
4260 __pZoomInOutItemAnimation = null;
4266 _TableViewItem::FadeInOutItem(bool fadeOut, int duration, int delay)
4268 _VisualElement* pVisualElement = GetVisualElement();
4269 VisualElementValueAnimation* pAnimation = null;
4270 String animationName = L"FADE_IN_OUT_ITEM";
4271 float startValue = 0.0f;
4272 float endValue = 1.0f;
4273 result r = E_SUCCESS;
4275 if (__pFadeInOutItemtAnimation == null)
4277 __pFadeInOutItemtAnimation = new (std::nothrow) VisualElementValueAnimation;
4278 SysTryCatch(NID_UI_CTRL, __pFadeInOutItemtAnimation != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
4280 __pFadeInOutItemtAnimation->SetVisualElementAnimationTickEventListener(this);
4281 r = GetLastResult();
4282 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
4284 __pFadeInOutItemtAnimation->SetVisualElementAnimationStatusEventListener(this);
4285 r = GetLastResult();
4286 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
4289 pAnimation = __pFadeInOutItemtAnimation;
4295 pAnimation->SetTimingFunction(VisualElementAnimation::GetTimingFunctionByName(L"EaseOut"));
4299 pAnimation->SetTimingFunction(VisualElementAnimation::GetTimingFunctionByName(L"EaseIn"));
4302 pAnimation->SetTimingFunction(VisualElementAnimation::GetTimingFunctionByName("EaseIn"));
4303 pAnimation->SetDuration(duration);
4304 pAnimation->SetDelay(delay);
4305 pAnimation->SetStartValue(Variant(startValue));
4306 pAnimation->SetEndValue(Variant(endValue));
4308 if (pVisualElement->AddAnimation(animationName, *pAnimation) != E_SUCCESS)
4313 pVisualElement->SetOpacity(startValue);
4321 delete __pFadeInOutItemtAnimation;
4322 __pFadeInOutItemtAnimation = null;
4328 _TableViewItem::SetIndividualSelectionEnabled(const _Control& control, bool enable)
4330 result r = E_SUCCESS;
4333 if (!__individualSelectionControls.Contains(control))
4335 r = __individualSelectionControls.Add(control);
4338 _AccessibilityContainer* pContainer = const_cast<_Control*>(&control)->GetAccessibilityContainer();
4339 pContainer->Activate(true);
4340 int controlCount = 0;
4341 for (int i=0; i<GetChildCount(); i++)
4343 _Control* pChildControl = GetChild(i);
4344 if (pChildControl == static_cast<_Control*>(__pItemAnnexLeftDivider)
4345 || pChildControl == static_cast<_Control*>(__pItemAnnexRightDivider)
4346 || pChildControl == static_cast<_Control*>(__pItemCover)
4347 || pChildControl == static_cast<_Control*>(__pItemDivider)
4348 || pChildControl== static_cast<_Control*>(__pItemTopDivider))
4356 if (controlCount == 0 || __individualSelectionControls.GetCount() == controlCount)
4358 GetAccessibilityContainer()->Activate(false);
4362 GetAccessibilityContainer()->Activate(true);
4367 if (__individualSelectionControls.Contains(control))
4369 r = __individualSelectionControls.Remove(control, false);
4376 _TableViewItem::IsIndividualSelectionEnabled(const _Control& control)
4378 return __individualSelectionControls.Contains(control);
4382 _TableViewItem::AddRef(void)
4384 return ++__refCount;
4388 _TableViewItem::Release(void)
4391 if (__refCount <= 0)
4401 _TableViewItem::IsAnimationPlaying(void)
4403 if (__animationCount > 0)
4412 _TableViewItem::StopAllAnimation(void)
4414 _VisualElement* pVisualElement = GetVisualElement();
4416 pVisualElement->RemoveAllAnimations();
4420 _TableViewItem::SetItemDividerEnabled(bool enable)
4422 __itemDividerEnabled = enable;
4426 _TableViewItem::OnTickOccurred(const Tizen::Ui::Animations::VisualElementAnimation& animation, const Tizen::Base::String& keyName, Tizen::Ui::Animations::VisualElement& target, const Tizen::Ui::Variant& currentValue)
4428 if (keyName == L"MOVE_ITEM")
4430 FloatPoint position = currentValue.ToFloatPoint();
4431 SetPosition(position);
4433 else if (keyName == L"FADE_IN_OUT_ITEM")
4435 float opacity = currentValue.ToFloat();
4437 _VisualElement* pVisualElement = GetVisualElement();
4439 if (pVisualElement != null)
4441 pVisualElement->SetOpacity(opacity);
4444 else if (keyName == L"ZOOM_IN_OUT_ITEM")
4446 FloatDimension size = currentValue.ToFloatDimension();
4452 _TableViewItem::OnVisualElementAnimationStarted(const Tizen::Ui::Animations::VisualElementAnimation& animation, const Tizen::Base::String& keyName, Tizen::Ui::Animations::VisualElement& target)
4454 if (keyName == L"MOVE_ITEM")
4456 __isMoveItemAnimationEnabled = true;
4458 else if (keyName == L"FADE_IN_OUT_ITEM")
4460 __isFadeInOutItemAnimationEnabled = true;
4462 else if (keyName == L"ZOOM_IN_OUT_ITEM")
4464 __isZoomInOutItemAnimationEnabled = true;
4469 _TableViewItem::OnVisualElementAnimationRepeated(const Tizen::Ui::Animations::VisualElementAnimation& animation, const Tizen::Base::String& keyName, Tizen::Ui::Animations::VisualElement& target, long currentRepeatCount)
4474 _TableViewItem::OnVisualElementAnimationFinished(const Tizen::Ui::Animations::VisualElementAnimation& animation, const Tizen::Base::String& keyName, Tizen::Ui::Animations::VisualElement& target, bool completedNormally)
4476 if (__isAnimationCallbackBlocked)
4481 bool tableViewItemAnimation = true;
4482 const VisualElementValueAnimation *pAnimation = dynamic_cast<const VisualElementValueAnimation*>(&(animation));
4484 if (keyName == L"MOVE_ITEM")
4486 if (pAnimation != null)
4488 FloatPoint position = pAnimation->GetEndValue().ToFloatPoint();
4490 SetPosition(position);
4492 __isMoveItemAnimationEnabled = false;
4494 else if (keyName == L"FADE_IN_OUT_ITEM")
4496 if (pAnimation != null)
4498 float opacity = pAnimation->GetEndValue().ToFloat();
4500 _VisualElement* pVisualElement = GetVisualElement();
4502 if (pVisualElement != null)
4504 pVisualElement->SetOpacity(opacity);
4508 __isFadeInOutItemAnimationEnabled = false;
4510 else if (keyName == L"ZOOM_IN_OUT_ITEM")
4512 if (pAnimation != null)
4514 FloatDimension size = pAnimation->GetEndValue().ToFloatDimension();
4518 __isZoomInOutItemAnimationEnabled = false;
4522 tableViewItemAnimation = false;
4525 if (tableViewItemAnimation)
4534 _TableViewItem::OnAttachedToMainTree(void)
4536 if (!_FloatCompare(GetBoundsF().height, 0.0f))
4538 SetAccessibilityElement();
4545 _TableViewItem::SetAccessibilityElement(void)
4547 _AccessibilityContainer* pContainer = GetAccessibilityContainer();
4549 if (pContainer != null)
4551 if (__pAccessibilityElement == null)
4553 __pAccessibilityElement = new (std::nothrow) _AccessibilityElement(true);
4554 SysTryReturnVoidResult(NID_UI_CTRL, __pAccessibilityElement, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
4556 __pAccessibilityElement->SetTrait(ACCESSIBILITY_TRAITS_NONE);
4557 __pAccessibilityElement->SetName(L"TableViewItem");
4559 pContainer->AddElement(*__pAccessibilityElement);
4561 __pAccessibilityElement->SetBounds(FloatRectangle(0.0f,0.0f, GetBoundsF().width, GetBoundsF().height));
4563 if (__pAccessibilityOnOffElement == null && __annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
4565 __pAccessibilityOnOffElement = new (std::nothrow) _AccessibilityElement(true);
4566 SysTryReturnVoidResult(NID_UI_CTRL, __pAccessibilityOnOffElement, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
4568 __pAccessibilityOnOffElement->SetTraitWithStringId("IDS_TPLATFORM_BODY_ON_OFF_BUTTON_T_TTS");
4569 __pAccessibilityOnOffElement->SetName(L"OnOffButton");
4570 __pAccessibilityOnOffElement->SetHintWithStringId("IDS_TPLATFORM_BODY_DOUBLE_TAP_TO_MOVE_TO_CONTENT_T_TTS");
4572 pContainer->AddElement(*__pAccessibilityOnOffElement);
4573 __pAccessibilityOnOffElement->SetBounds(FloatRectangle(0.0f, 0.0f, 0.0f, 0.0f));
4578 _AccessibilityElement*
4579 _TableViewItem::GetAccessibilityElement(void)
4581 return __pAccessibilityElement;
4584 _TableViewItem::SetAccessibilityElementTrait(void)
4586 if (__pAccessibilityElement == null)
4590 int groupIndex = -1;
4593 switch (__annexStyle)
4595 case TABLE_VIEW_ANNEX_STYLE_NORMAL:
4596 GetItemIndex(groupIndex, itemIndex);
4597 if (groupIndex != -1 && itemIndex == -1)
4599 __pAccessibilityElement->SetTraitWithStringId("IDS_TPLATFORM_BODY_GROUP_INDEX");
4603 case TABLE_VIEW_ANNEX_STYLE_MARK:
4604 __pAccessibilityElement->SetTraitWithStringId("IDS_TPLATFORM_BODY_TICKBOX_T_TTS");
4607 case TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING:
4608 __pAccessibilityElement->SetTraitWithStringId("IDS_TPLATFORM_BODY_ON_OFF_BUTTON_T_TTS");
4611 case TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING_WITH_DIVIDER:
4614 case TABLE_VIEW_ANNEX_STYLE_DETAILED:
4615 __pAccessibilityElement->SetTraitWithStringId("IDS_TPLATFORM_BODY_BUTTON_T_TTS");
4618 case TABLE_VIEW_ANNEX_STYLE_RADIO:
4619 __pAccessibilityElement->SetTraitWithStringId("IDS_TPLATFORM_BODY_RADIO_BUTTON_T_TTS");
4627 _TableViewItem::SetAccessibilityElementValue(void)
4629 if (__pAccessibilityElement == null)
4634 switch (__annexStyle)
4636 case TABLE_VIEW_ANNEX_STYLE_MARK:
4639 __pAccessibilityElement->SetValueWithStringId("IDS_TPLATFORM_BODY_TICK_T_TTS");
4643 __pAccessibilityElement->SetValueWithStringId("IDS_TPLATFORM_BODY_UNTICK_T_TTS");
4647 case TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING:
4650 __pAccessibilityElement->SetValueWithStringId("IDS_TPLATFORM_BODY_ON");
4654 __pAccessibilityElement->SetValueWithStringId("IDS_TPLATFORM_BODY_OFF");
4658 case TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING_WITH_DIVIDER:
4661 if (__pAccessibilityOnOffElement != null)
4663 __pAccessibilityOnOffElement->SetValueWithStringId("IDS_TPLATFORM_BODY_ON");
4668 if (__pAccessibilityOnOffElement != null)
4670 __pAccessibilityOnOffElement->SetValueWithStringId("IDS_TPLATFORM_BODY_OFF");
4675 case TABLE_VIEW_ANNEX_STYLE_RADIO:
4678 __pAccessibilityElement->SetValueWithStringId("IDS_TPLATFORM_BODY_SELECTED_T_TTS");
4682 __pAccessibilityElement->SetValueWithStringId("IDS_TPLATFORM_BODY_NOT_SELECTED_T_TTS");
4691 _TableViewItem::SetAccessibilityElementLabel(void)
4693 if (__pAccessibilityElement == null)
4698 if (__pAccessibilityElement->IsPublicLabelUpdated())
4703 String accessibilityLabel;
4704 String space = L" ";
4705 int childControlCount = GetChildCount();
4707 for (int i = 0; i < childControlCount; i++)
4709 _Control* pChildControl = GetChild(i);
4711 if (pChildControl == null)
4716 if (__pItemDivider == pChildControl || __pItemTopDivider == pChildControl || __pItemCover == pChildControl)
4721 accessibilityLabel += GetChildAccessibilityLabelContent(*pChildControl);
4722 accessibilityLabel += space;
4725 __pAccessibilityElement->SetLabel(accessibilityLabel);
4730 _TableViewItem::OnAccessibilityFocusMovedNext(const _AccessibilityContainer& control, const _AccessibilityElement& element)
4736 _TableViewItem::OnAccessibilityFocusMovedPrevious(const _AccessibilityContainer& control, const _AccessibilityElement& element)
4742 _TableViewItem::OnAccessibilityReadElement(const _AccessibilityContainer& control, const _AccessibilityElement& element)
4748 _TableViewItem::OnAccessibilityReadingElement(const _AccessibilityContainer& control, const _AccessibilityElement& element)
4750 SetAccessibilityElementLabel();
4751 SetAccessibilityElementTrait();
4752 SetAccessibilityElementValue();
4757 _TableViewItem::OnAccessibilityFocusIn(const _AccessibilityContainer& control, const _AccessibilityElement& element)
4763 _TableViewItem::OnAccessibilityFocusOut(const _AccessibilityContainer& control, const _AccessibilityElement& element)
4769 _TableViewItem::OnAccessibilityActionPerformed(const _AccessibilityContainer& control, const _AccessibilityElement& element)
4771 switch (__annexStyle)
4773 case TABLE_VIEW_ANNEX_STYLE_NORMAL:
4776 case TABLE_VIEW_ANNEX_STYLE_MARK:
4780 GET_STRING_CONFIG(IDS_TPLATFORM_BODY_TICK_T_TTS,string);
4781 _AccessibilityManager::GetInstance()->ReadContent(string);
4786 GET_STRING_CONFIG(IDS_TPLATFORM_BODY_UNTICK_T_TTS,string);
4787 _AccessibilityManager::GetInstance()->ReadContent(string);
4790 case TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING:
4794 GET_STRING_CONFIG(IDS_TPLATFORM_BODY_ON,string);
4795 _AccessibilityManager::GetInstance()->ReadContent(string);
4800 GET_STRING_CONFIG(IDS_TPLATFORM_BODY_OFF,string);
4801 _AccessibilityManager::GetInstance()->ReadContent(string);
4805 case TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING_WITH_DIVIDER:
4806 if (&element == __pAccessibilityOnOffElement && IsEnabled())
4812 GET_STRING_CONFIG(IDS_TPLATFORM_BODY_OFF,string);
4813 _AccessibilityManager::GetInstance()->ReadContent(string);
4819 GET_STRING_CONFIG(IDS_TPLATFORM_BODY_ON,string);
4820 _AccessibilityManager::GetInstance()->ReadContent(string);
4825 case TABLE_VIEW_ANNEX_STYLE_DETAILED:
4828 case TABLE_VIEW_ANNEX_STYLE_RADIO:
4832 GET_STRING_CONFIG(IDS_TPLATFORM_OPT_SELECT,string);
4833 _AccessibilityManager::GetInstance()->ReadContent(string);
4838 GET_STRING_CONFIG(IDS_TPLATFORM_BODY_NOT_SELECTED_T_TTS,string);
4839 _AccessibilityManager::GetInstance()->ReadContent(string);
4850 _TableViewItem::OnAccessibilityValueIncreased(const _AccessibilityContainer& control, const _AccessibilityElement& element)
4856 _TableViewItem::OnAccessibilityValueDecreased(const _AccessibilityContainer& control, const _AccessibilityElement& element)
4862 _TableViewItem::OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo)
4864 __isTouchCancelOnPressRelease = false;
4866 if (!IsFocusModeStateEnabled())
4871 _TableView* pParent = dynamic_cast<_TableView*>(GetParent());
4872 _KeyCode keyCode = keyInfo.GetKeyCode();
4873 IListT<_Control*>* pFocusList = GetFocusListN();
4874 SysTryReturn(NID_UI_CTRL, pFocusList != null, true, GetLastResult(), "[%s] propagating.", GetErrorMessage(GetLastResult()));
4876 _Control* pChildControl = null;
4877 _Control* pFocusedControl = null;
4878 _Window* pTop = source.GetRootWindow();
4882 pFocusedControl = pTop->GetCurrentFocusControl();
4885 int count = pFocusList->GetCount();
4887 if (pFocusedControl == null)
4897 for (int i=count-1; i>=0; i--)
4899 pFocusList->GetAt(i, pChildControl);
4900 if (pChildControl == null)
4905 if (pChildControl->IsFocused())
4909 pChildControl = null;
4913 for (int j=i-1; j>=0; j--)
4915 pFocusList->GetAt(j, pChildControl);
4916 if (pChildControl == null)
4921 if (pChildControl->IsFocusable() && pChildControl->GetEnableState()
4922 && pChildControl->GetVisibleState())
4928 pChildControl = null;
4935 if (pChildControl && pChildControl->GetEnableState()
4936 && pChildControl->GetVisibleState() && pChildControl->IsFocusable())
4938 if (pParent != null)
4940 pParent->SetAnnexFocused(true);
4942 pChildControl->SetFocused(true);
4943 pChildControl->DrawFocus();
4947 _Control* pParentControl = pFocusedControl->GetParent();
4948 _TableViewItem* pItem = dynamic_cast<_TableViewItem*>(pParentControl);
4950 if (pItem != null && pItem->GetEnableState() && !pItem->IsFocused()
4951 && pItem->GetVisibleState() && pItem->IsFocusable())
4953 if (pParent != null)
4955 pParent->SetAnnexFocused(false);
4957 pItem->SetFocused(true);
4967 if (pChildControl == null)
4969 for (int i=0; i<count; i++)
4971 pFocusList->GetAt(i, pChildControl);
4972 if (pChildControl == null)
4977 if (pChildControl->IsFocusable() && pChildControl->GetEnableState()
4978 && pChildControl->GetVisibleState())
4984 pChildControl = null;
4991 for (int i=0; i<count; i++)
4993 pFocusList->GetAt(i, pChildControl);
4994 if (pChildControl == null)
4999 if (pChildControl->IsFocused())
5003 pChildControl = null;
5007 for (int j=i+1; j<count; j++)
5009 pFocusList->GetAt(j, pChildControl);
5010 if (pChildControl == null)
5015 if (pChildControl->IsFocusable() && pChildControl->GetEnableState()
5016 && pChildControl->GetVisibleState())
5022 pChildControl = null;
5030 if (pChildControl && pChildControl->GetEnableState() && pChildControl->GetVisibleState()
5031 && pChildControl->IsFocusable())
5033 if (pParent != null)
5035 pParent->SetAnnexFocused(true);
5037 pChildControl->SetFocused(true);
5038 pChildControl->DrawFocus();
5043 if (&source == this)
5045 __pressedControl = TABLE_VIEW_ITEM_PRESSED_ITEM;
5047 else if (&source == GetLabelCore(__pItemAnnex))
5049 __pressedControl = TABLE_VIEW_ITEM_PRESSED_ANNEX;
5051 else if (IsIndividualSelectionEnabled(source))
5053 __pressedControl = TABLE_VIEW_ITEM_PRESSED_INDIVIDUAL;
5057 __pressedControl = TABLE_VIEW_ITEM_PRESSED_NONE;
5059 __itemSelected = true;
5060 FireItemTouchPressed();
5066 __annexOnOffHandlerMoved = false;
5067 __itemTouchMoved = false;
5069 __itemSelected = false;
5070 __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL;
5072 if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_DETAILED)
5074 __isSelectedDetailButton = false;
5077 SetItemChanged(true);
5087 _TableViewItem::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
5089 if (!IsFocusModeStateEnabled())
5094 _KeyCode keyCode = keyInfo.GetKeyCode();
5096 if (keyCode == _KEY_ENTER)
5098 _TableView* pParent = dynamic_cast<_TableView*>(GetParent());
5099 SysTryReturn(NID_UI_CTRL, pParent != null, true, GetLastResult(), "[%s] propagating.", GetErrorMessage(GetLastResult()));
5101 pParent->StopExpandCollapseAnimation();
5102 if (&source == this)
5104 __releasedControl = TABLE_VIEW_ITEM_PRESSED_ITEM;
5106 else if (&source == GetLabelCore(__pItemAnnex))
5108 __releasedControl = TABLE_VIEW_ITEM_PRESSED_ANNEX;
5110 else if (IsIndividualSelectionEnabled(source))
5112 __releasedControl = TABLE_VIEW_ITEM_PRESSED_INDIVIDUAL;
5116 __releasedControl = TABLE_VIEW_ITEM_PRESSED_NONE;
5118 FireItemTouchReleased();
5121 else if (keyCode == _KEY_LEFT || keyCode == _KEY_RIGHT)
5130 _TableViewItem::OnFocusModeStateChanged(void)
5132 __releasedControl = TABLE_VIEW_ITEM_PRESSED_NONE;
5138 _TableViewItem::ResetItemState(void)
5140 __itemSelected = false;
5141 __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL;
5143 if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_DETAILED)
5145 __isSelectedDetailButton = false;
5148 SetItemChanged(true);
5153 _TableViewItem::GetPreviousFocusChildControl(const _Control& source)
5155 _Control* pParentControl = null;
5156 float sourcePosition = 0.0f;
5158 _Control* pSource = const_cast<_Control*>(&source);
5159 _TableViewItem* pItem = dynamic_cast<_TableViewItem*>(pSource);
5162 pParentControl = pSource;
5163 sourcePosition = pParentControl->GetBoundsF().width;
5167 pParentControl = source.GetParent();
5168 sourcePosition = source.GetBoundsF().x;
5171 if (pParentControl == null)
5176 int childControlCount = pParentControl->GetChildCount();
5177 float position = 0.0f;
5178 _Control* destination = null;
5180 for (int i=0; i<childControlCount; i++)
5182 _Control* pChildControl = pParentControl->GetChild(i);
5183 if (pChildControl != null && pChildControl->IsFocusable())
5185 float childPosition = pChildControl->GetBoundsF().x;
5186 if (childPosition < sourcePosition)
5188 if (childPosition > position)
5190 position = childPosition;
5191 destination = pChildControl;
5193 else if (_FloatCompare(position, 0.0f))
5195 position = childPosition;
5196 destination = pChildControl;
5205 _TableViewItem::GetNextFocusChildControl(const _Control& source)
5207 _Control* pParentControl = null;
5208 float sourcePosition = 0.0f;
5210 _Control* pSource = const_cast<_Control*>(&source);
5211 _TableViewItem* pItem = dynamic_cast<_TableViewItem*>(pSource);
5214 pParentControl = pSource;
5215 sourcePosition = 0.0f;
5219 pParentControl = source.GetParent();
5220 sourcePosition = source.GetBoundsF().x;
5223 if (pParentControl == null)
5228 int childControlCount = pParentControl->GetChildCount();
5229 float position = 0.0f;
5230 _Control* destination = null;
5232 for (int i=0; i<childControlCount; i++)
5234 _Control* pChildControl = pParentControl->GetChild(i);
5235 if (pChildControl != null && pChildControl->IsFocusable())
5237 float childPosition = pChildControl->GetBoundsF().x;
5238 if (childPosition > sourcePosition)
5240 if (childPosition < position)
5242 position = childPosition;
5243 destination = pChildControl;
5245 else if (_FloatCompare(position, 0.0f))
5247 position = childPosition;
5248 destination = pChildControl;
5257 _TableViewItem::IsChildControlFocusManage(void) const
5263 _TableViewItem::SetSimpleLastItemEnabled(bool enable)
5265 __isSimpleLastItem = enable;
5269 _TableViewItem::SetSectionItem(bool isSectionItem)
5271 __isSectionItem = isSectionItem;
5275 _TableViewItem::SetTouchPressOnScroll(bool isTouch)
5277 __isTouchPressOnScroll = isTouch;
5281 _TableViewItem::IsTouchPressOnScroll(void) const
5283 return __isTouchPressOnScroll;
5287 _TableViewItem::OnVisibleStateChanged(void)
5296 _TableViewItem::OnAncestorEnableStateChanged(const _Control& control)
5305 _TableViewItem::OnAncestorVisibleStateChanged(const _Control& control)
5314 _TableViewItem::OnFocusableStateChanged(bool focusableState)
5316 if (IsFocused() && !focusableState)
5323 _TableViewItem::SetPublicLabelUpdate(bool resetPublicLabelUpdate)
5325 if (__pAccessibilityElement)
5327 __pAccessibilityElement->SetPublicLabelUpdate(resetPublicLabelUpdate);
5332 _TableViewItem::GetChildAccessibilityLabelContent(const _Control& source)
5334 String accessibilityLabel = L"";
5335 String space = L" ";
5337 if (IsIndividualSelectionEnabled(source))
5339 return accessibilityLabel;
5342 if (!source.IsVisible() || !source.GetEnableState())
5344 return accessibilityLabel;
5347 _Control* pSource = const_cast<_Control*>(&source);
5351 _AccessibilityContainer* pContainer = pSource->GetAccessibilityContainer();
5352 LinkedListT<_AccessibilityElement*> accessibilityElements;
5353 _AccessibilityElement* pElement = null;
5357 pContainer->GetElements(accessibilityElements);
5358 int elementCount = accessibilityElements.GetCount();
5360 for (int i = 0; i < elementCount; i++)
5362 if (accessibilityElements.GetAt(i, pElement) == E_SUCCESS)
5364 accessibilityLabel += pElement->GetLabel();
5365 accessibilityLabel += space;
5371 //check for children
5372 int childControlCount = source.GetChildCount();
5374 for (int i = 0; i < childControlCount; i++)
5376 _Control* pChildControl = source.GetChild(i);
5378 if (pChildControl == null)
5383 accessibilityLabel += GetChildAccessibilityLabelContent(*pChildControl);
5386 return accessibilityLabel;
5390 _TableViewItem::DeactivateChildAccessibilityContainer(const _Control& source)
5392 _Control* pControl = const_cast<_Control*>(&source);
5396 _AccessibilityContainer* pContainer = pControl->GetAccessibilityContainer();
5400 if (__individualSelectionControls.Contains(source))
5402 pContainer->Activate(true);
5406 pContainer->Activate(false);
5411 //check for children
5412 int childControlCount = source.GetChildCount();
5414 for (int i = 0; i < childControlCount; i++)
5416 _Control* pChildControl = source.GetChild(i);
5418 if (pChildControl == null)
5423 DeactivateChildAccessibilityContainer(*pChildControl);
5427 }}} // Tizen::Ui::Controls