From 948228ff228465e93f04bf6e6c265e656d397d15 Mon Sep 17 00:00:00 2001 From: Vinay Dutt Vyas Date: Thu, 18 Apr 2013 17:29:35 +0530 Subject: [PATCH] Use tableview resources in lists Change-Id: I93ca927f94417b134293fc04eb04744b45a5fced --- src/ui/controls/FUiCtrl_CustomListElements.cpp | 84 ++++++- src/ui/controls/FUiCtrl_CustomListImpl.cpp | 23 -- src/ui/controls/FUiCtrl_ExpandableListImpl.cpp | 50 +--- src/ui/controls/FUiCtrl_GroupedListImpl.cpp | 23 -- src/ui/controls/FUiCtrl_ListBaseImpl.cpp | 271 +++++++++++++++++++-- src/ui/controls/FUiCtrl_ListImpl.cpp | 23 -- .../controls/FUiCtrl_SlidableGroupedListImpl.cpp | 20 +- src/ui/controls/FUiCtrl_SlidableListImpl.cpp | 24 -- src/ui/inc/FUiCtrl_CustomListElements.h | 2 +- src/ui/inc/FUiCtrl_ListBaseImpl.h | 18 +- src/ui/resource/FUi_ResourceListConfig.cpp | 7 - 11 files changed, 369 insertions(+), 176 deletions(-) diff --git a/src/ui/controls/FUiCtrl_CustomListElements.cpp b/src/ui/controls/FUiCtrl_CustomListElements.cpp index 78f43d7..0a84533 100644 --- a/src/ui/controls/FUiCtrl_CustomListElements.cpp +++ b/src/ui/controls/FUiCtrl_CustomListElements.cpp @@ -271,9 +271,9 @@ _CheckElementModel::GetData(Rectangle& bitmapBounds, bool& isDividerEnabled, boo } Bitmap* -_CheckElementModel::GetCheckBitmap(void) const +_CheckElementModel::GetCheckBitmap(_BitmapType checkBoxStatus) const { - return __pCheckBitmaps[__checkBoxStatus]; + return __pCheckBitmaps[checkBoxStatus]; } result @@ -603,6 +603,8 @@ _CheckElementView::OnDraw(void) bool rightDivider = false; Bitmap* pCheckBitmap = null; + _ListBaseImpl* pListBaseImpl = _CustomListItemImpl::GetListBaseImplFromElement(*this); + _CheckElementModel* __pCheckElementModel = dynamic_cast<_CheckElementModel*>(__pElementBaseModel); SysTryCatch(NID_UI_CTRL, (__pCheckElementModel), , E_SYSTEM, "[E_SYSTEM] A system error has occured. Failed to get _CheckElementModel."); @@ -633,9 +635,85 @@ _CheckElementView::OnDraw(void) pCanvas->SetBackgroundColor(Color(0, 0, 0, 0)); } - pCheckBitmap = __pCheckElementModel->GetCheckBitmap(); + if (__pressedState == true && pListBaseImpl->GetAnnexStyle() != TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING + && pListBaseImpl->GetAnnexStyle() != TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING_WITH_DIVIDER) + { + if (__pCheckElementModel->GetCheckBoxStatus() == CHECK_BOX_UNCHECKED) + { + pCheckBitmap = __pCheckElementModel->GetCheckBitmap(BITMAP_UNCHECKED_PRESSED); + } + else + { + pCheckBitmap = __pCheckElementModel->GetCheckBitmap(BITMAP_CHECKED_PRESSED); + } + } + else + { + if (pListBaseImpl->GetAnnexStyle() == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING || + pListBaseImpl->GetAnnexStyle() == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING_WITH_DIVIDER) + { + if (IsEnabled() == true) + { + if (__pCheckElementModel->GetCheckBoxStatus() == CHECK_BOX_CHECKED) + { + pCheckBitmap = __pCheckElementModel->GetCheckBitmap(BITMAP_CHECKED); + } + else + { + pCheckBitmap = __pCheckElementModel->GetCheckBitmap(BITMAP_UNCHECKED); + } + } + else + { + if (__pCheckElementModel->GetCheckBoxStatus() == CHECK_BOX_CHECKED) + { + pCheckBitmap = __pCheckElementModel->GetCheckBitmap(BITMAP_CHECKED_DISABLED); + } + else + { + pCheckBitmap = __pCheckElementModel->GetCheckBitmap(BITMAP_UNCHECKED_DISABLED); + } + } + } + else + { + if (IsEnabled() == true) + { + if (__pCheckElementModel->GetCheckBoxStatus() == CHECK_BOX_CHECKED) + { + pCheckBitmap = __pCheckElementModel->GetCheckBitmap(BITMAP_CHECKED); + } + else + { + pCheckBitmap = __pCheckElementModel->GetCheckBitmap(BITMAP_UNCHECKED); + } + } + else + { + if (__pCheckElementModel->GetCheckBoxStatus() != CHECK_BOX_UNCHECKED) + { + pCheckBitmap = __pCheckElementModel->GetCheckBitmap(BITMAP_CHECKED_DISABLED); + } + else + { + pCheckBitmap = __pCheckElementModel->GetCheckBitmap(BITMAP_UNCHECKED); + } + } + } + } pCanvas->Clear(); + + if (bitmapBounds.width > pCheckBitmap->GetWidth()) + { + bitmapBounds.width = pCheckBitmap->GetWidth(); + } + + if (bitmapBounds.height > pCheckBitmap->GetHeight()) + { + bitmapBounds.height = pCheckBitmap->GetHeight(); + } + pCanvas->DrawBitmap(bitmapBounds, *pCheckBitmap); if (isDividerEnabled) diff --git a/src/ui/controls/FUiCtrl_CustomListImpl.cpp b/src/ui/controls/FUiCtrl_CustomListImpl.cpp index 5cceba4..6e6d8f1 100644 --- a/src/ui/controls/FUiCtrl_CustomListImpl.cpp +++ b/src/ui/controls/FUiCtrl_CustomListImpl.cpp @@ -418,29 +418,6 @@ _CustomListImpl::SetItemEnabled(int index, bool enable) SysTryReturnResult(NID_UI_CTRL, (index >= 0 && index < GetItemCount()), E_SYSTEM, "[E_SYSTEM] A system error has occurred. The index %d is invalid.", index); - _CheckElementModel* pCheckElementModel = GetCheckElementAt(-1, index); - - if (pCheckElementModel) - { - if (enable) - { - if (pCheckElementModel->GetCheckBoxStatus() == CHECK_BOX_DISABLED) - { - pCheckElementModel->SetCheckBoxStatus(CHECK_BOX_CHECKED); - } - } - else - { - if (pCheckElementModel->GetCheckBoxStatus() == CHECK_BOX_CHECKED) - { - if (_annexStyle == TABLE_VIEW_ANNEX_STYLE_MARK) - { - pCheckElementModel->SetCheckBoxStatus(CHECK_BOX_DISABLED); - } - } - } - } - r = GetCore().SetItemEnabled(0, index, enable); SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, E_SYSTEM, E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r)); diff --git a/src/ui/controls/FUiCtrl_ExpandableListImpl.cpp b/src/ui/controls/FUiCtrl_ExpandableListImpl.cpp index 109d96f..fe82257 100644 --- a/src/ui/controls/FUiCtrl_ExpandableListImpl.cpp +++ b/src/ui/controls/FUiCtrl_ExpandableListImpl.cpp @@ -1065,33 +1065,10 @@ _ExpandableListImpl::SetItemEnabled(int mainIndex, bool enable) SysTryReturnResult(NID_UI_CTRL, (mainIndex >= 0 && mainIndex < GetGroupCount()), E_INVALID_ARG, "Invalid argument used. mainIndex = %d", mainIndex); - _CheckElementModel* pCheckElement = GetCheckElementAt(mainIndex, -1); - SysTryReturnResult(NID_UI_CTRL, pCheckElement, E_SYSTEM, "A system error has occurred. Failed to get checkElement at mainIndex(%d).", mainIndex); - - if (pCheckElement) - { - if (enable) - { - if (pCheckElement->GetCheckBoxStatus() == CHECK_BOX_DISABLED) - { - pCheckElement->SetCheckBoxStatus(CHECK_BOX_CHECKED); - } - } - else - { - if (pCheckElement->GetCheckBoxStatus() == CHECK_BOX_CHECKED) - { - if (_annexStyle == TABLE_VIEW_ANNEX_STYLE_MARK) - { - pCheckElement->SetCheckBoxStatus(CHECK_BOX_DISABLED); - } - } - } - } - r = GetCore().SetItemEnabled(mainIndex, -1, enable); SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, E_SYSTEM, E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r)); + DrawItem(mainIndex, -1); return r; } @@ -1111,33 +1088,10 @@ _ExpandableListImpl::SetSubItemEnabled(int mainIndex, int subIndex, bool enable) result r = E_SUCCESS; - _CheckElementModel* pCheckElement = GetCheckElementAt(mainIndex, subIndex); - SysTryReturnResult(NID_UI_CTRL, pCheckElement, E_SYSTEM, "A system error has occurred. Failed to get checkElement at mainIndex(%d) subIndex(%d).", mainIndex, subIndex); - - if (pCheckElement) - { - if (enable) - { - if (pCheckElement->GetCheckBoxStatus() == CHECK_BOX_DISABLED) - { - pCheckElement->SetCheckBoxStatus(CHECK_BOX_CHECKED); - } - } - else - { - if (pCheckElement->GetCheckBoxStatus() == CHECK_BOX_CHECKED) - { - if (_annexStyle == TABLE_VIEW_ANNEX_STYLE_MARK) - { - pCheckElement->SetCheckBoxStatus(CHECK_BOX_DISABLED); - } - } - } - } - r = GetCore().SetItemEnabled(mainIndex, subIndex, enable); SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, E_SYSTEM, E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r)); + DrawItem(mainIndex, subIndex); return r; } diff --git a/src/ui/controls/FUiCtrl_GroupedListImpl.cpp b/src/ui/controls/FUiCtrl_GroupedListImpl.cpp index 2dcf93e..0e9e118 100644 --- a/src/ui/controls/FUiCtrl_GroupedListImpl.cpp +++ b/src/ui/controls/FUiCtrl_GroupedListImpl.cpp @@ -681,29 +681,6 @@ _GroupedListImpl::SetItemEnabled(int groupIndex, int itemIndex, bool enable) SysTryReturnResult(NID_UI_CTRL, (itemIndex >= 0 && itemIndex < GetSubItemCountAt(groupIndex)), E_INVALID_ARG, "Invalid argument used. itemIndex(%d)", itemIndex); - _CheckElementModel* pCheckElementModel = GetCheckElementAt(groupIndex, itemIndex); - - if (pCheckElementModel) - { - if (enable) - { - if (pCheckElementModel->GetCheckBoxStatus() == CHECK_BOX_DISABLED) - { - pCheckElementModel->SetCheckBoxStatus(CHECK_BOX_CHECKED); - } - } - else - { - if (pCheckElementModel->GetCheckBoxStatus() == CHECK_BOX_CHECKED) - { - if (_annexStyle == TABLE_VIEW_ANNEX_STYLE_MARK) - { - pCheckElementModel->SetCheckBoxStatus(CHECK_BOX_DISABLED); - } - } - } - } - result r = E_SUCCESS; r = GetCore().SetItemEnabled(groupIndex, itemIndex, enable); diff --git a/src/ui/controls/FUiCtrl_ListBaseImpl.cpp b/src/ui/controls/FUiCtrl_ListBaseImpl.cpp index 221fbca..cc16d89 100644 --- a/src/ui/controls/FUiCtrl_ListBaseImpl.cpp +++ b/src/ui/controls/FUiCtrl_ListBaseImpl.cpp @@ -28,6 +28,7 @@ #include "FUiCtrl_CustomListItemImpl.h" #include "FUiCtrl_Label.h" #include "FUi_CoordinateSystemUtils.h" +#include "FGrp_BitmapImpl.h" using namespace Tizen::Base::Collection; using namespace Tizen::Base; @@ -69,40 +70,272 @@ _ListBaseImpl::~_ListBaseImpl(void) pCore->DetachAllChildren(); } +Bitmap* +_ListBaseImpl::CreateMergedBitmapN(Bitmap& pNormalBitmap, Bitmap* pSelectedBitmap) +{ + Bitmap* pMergeBitmap = null; + Canvas* pCanvas = null; + + Rectangle bitmapBounds; + Color canvasBackgroundColor; + + result r = E_SUCCESS; + + bitmapBounds = Rectangle(0, 0, pNormalBitmap.GetWidth(), pNormalBitmap.GetHeight()); + + pCanvas = new (std::nothrow) Canvas(); + SysTryReturn(NID_UI_CTRL, pCanvas != null, null, E_OUT_OF_MEMORY, "Memory allocation failed."); + + GET_COLOR_CONFIG(TABLEVIEW::ITEM_ANNEX_CANVAS_BG_NORMAL, canvasBackgroundColor); + + pCanvas->Construct(bitmapBounds); + pCanvas->SetBackgroundColor(Color(canvasBackgroundColor.GetRed(), canvasBackgroundColor.GetGreen(), canvasBackgroundColor.GetBlue(), 0)); + pCanvas->Clear(); + + if (_BitmapImpl::CheckNinePatchedBitmapStrictly(pNormalBitmap)) + { + pCanvas->DrawNinePatchedBitmap(bitmapBounds, pNormalBitmap); + } + else + { + pCanvas->DrawBitmap(bitmapBounds, pNormalBitmap); + } + + if (pSelectedBitmap != null) + { + if (_BitmapImpl::CheckNinePatchedBitmapStrictly(*pSelectedBitmap)) + { + pCanvas->DrawNinePatchedBitmap(bitmapBounds, *pSelectedBitmap); + } + else + { + pCanvas->DrawBitmap(bitmapBounds, *pSelectedBitmap); + } + } + + pMergeBitmap = new (std::nothrow) Bitmap(); + SysTryCatch(NID_UI_CTRL, pMergeBitmap != null, , E_OUT_OF_MEMORY, "Memory allocation failed."); + + r = pMergeBitmap->Construct(*pCanvas, bitmapBounds); + SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "A system error has occurred. Failed to construct an item."); + + + delete pCanvas; + return pMergeBitmap; + +CATCH: + delete pCanvas; + delete pMergeBitmap; + + return null; +} + + +Bitmap* +_ListBaseImpl::CreateOnOffMergedBitmapN(Bitmap& pNormalBitmap, Bitmap& pSelectedBitmap, _CheckBoxBitmapType status) +{ + Bitmap* pMergeBitmap = null; + Canvas* pCanvas = null; + + Rectangle bitmapBounds; + + result r = E_SUCCESS; + + Rectangle handlerBounds; + Color canvasBackgroundColor; + + bitmapBounds = Rectangle(0, 0, pNormalBitmap.GetWidth(), pNormalBitmap.GetHeight()); + + if (status == CHECK_BOX_UNCHECKED) + { + handlerBounds = Rectangle(0, 0, pSelectedBitmap.GetWidth(), pSelectedBitmap.GetHeight()); + } + else + { + handlerBounds.x = pNormalBitmap.GetWidth() - pSelectedBitmap.GetWidth(); + handlerBounds.y = 0; + handlerBounds.width = pSelectedBitmap.GetWidth(); + handlerBounds.height = pSelectedBitmap.GetHeight(); + } + + pCanvas = new (std::nothrow) Canvas(); + SysTryReturn(NID_UI_CTRL, pCanvas != null, null, E_OUT_OF_MEMORY, "Memory allocation failed."); + + GET_COLOR_CONFIG(TABLEVIEW::ITEM_ANNEX_CANVAS_BG_NORMAL, canvasBackgroundColor); + + pCanvas->Construct(bitmapBounds); + pCanvas->SetBackgroundColor(Color(canvasBackgroundColor.GetRed(), canvasBackgroundColor.GetGreen(), canvasBackgroundColor.GetBlue(), 0)); + pCanvas->Clear(); + + if (_BitmapImpl::CheckNinePatchedBitmapStrictly(pNormalBitmap)) + { + pCanvas->DrawNinePatchedBitmap(bitmapBounds, pNormalBitmap); + } + else + { + pCanvas->DrawBitmap(bitmapBounds, pNormalBitmap); + } + + if(_BitmapImpl::CheckNinePatchedBitmapStrictly(pSelectedBitmap)) + { + pCanvas->DrawNinePatchedBitmap(handlerBounds, pSelectedBitmap); + } + else + { + pCanvas->DrawBitmap(handlerBounds, pSelectedBitmap); + } + + pMergeBitmap = new (std::nothrow) Bitmap(); + SysTryCatch(NID_UI_CTRL, pMergeBitmap != null, , E_OUT_OF_MEMORY, "Memory allocation failed."); + + r = pMergeBitmap->Construct(*pCanvas, bitmapBounds); + SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "A system error has occurred. Failed to construct an item."); + + delete pCanvas; + return pMergeBitmap; + +CATCH: + delete pCanvas; + delete pMergeBitmap; + + return null; +} + result _ListBaseImpl::LoadDefaultBitmap(void) { + Bitmap* pNormalBitmap = null; + Bitmap* pSelectedBitmap = null; + Bitmap* pHandlerBitmap = null; + Bitmap* pDisabledNormalBitmap = null; + Bitmap* pDisabledSelectedBitmap = null; + Bitmap* pDisabledHandlerBitmap = null; + Bitmap* pPressedBitmap = null; + result r = E_SUCCESS; if (_annexStyle == TABLE_VIEW_ANNEX_STYLE_RADIO) { - r = GET_BITMAP_CONFIG_N(LIST::BUTTON_RADIO_BITMAP, BITMAP_PIXEL_FORMAT_ARGB8888, _pCheckBitmaps[CHECK_BOX_UNCHECKED]); - SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r)); - - r = GET_BITMAP_CONFIG_N(LIST::BUTTON_RADIO_SELECTED_BITMAP, BITMAP_PIXEL_FORMAT_ARGB8888, _pCheckBitmaps[CHECK_BOX_CHECKED]); - SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r)); + r = GET_BITMAP_CONFIG_N(TABLEVIEW::RADIOBUTTON_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pNormalBitmap); + SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), r, GetErrorMessage(r), "[%s] Propagating.", GetErrorMessage(r)); + + _pCheckBitmaps[BITMAP_UNCHECKED] = CreateMergedBitmapN(*pNormalBitmap, pSelectedBitmap); + + r = GET_BITMAP_CONFIG_N(TABLEVIEW::RADIOBUTTON_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pPressedBitmap); + SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); + + _pCheckBitmaps[BITMAP_UNCHECKED_PRESSED] = CreateMergedBitmapN(*pPressedBitmap, pSelectedBitmap); + + r = GET_BITMAP_CONFIG_N(TABLEVIEW::RADIOBUTTON_BUTTON_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSelectedBitmap); + SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); + + _pCheckBitmaps[BITMAP_CHECKED] = CreateMergedBitmapN(*pNormalBitmap, pSelectedBitmap); + + _pCheckBitmaps[BITMAP_CHECKED_PRESSED] = CreateMergedBitmapN(*pPressedBitmap, pSelectedBitmap); + + r = GET_BITMAP_CONFIG_N(TABLEVIEW::RADIOBUTTON_NORMAL_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pDisabledNormalBitmap); + SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); + + r = GET_BITMAP_CONFIG_N(TABLEVIEW::RADIOBUTTON_BUTTON_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pSelectedBitmap); + SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); + + _pCheckBitmaps[BITMAP_CHECKED_DISABLED] = CreateMergedBitmapN(*pDisabledNormalBitmap, pSelectedBitmap); } - else if (_annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING) + else if (_annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING || _annexStyle == TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING_WITH_DIVIDER) { - r = GET_BITMAP_CONFIG_N(LIST::BUTTON_OFF_BITMAP, BITMAP_PIXEL_FORMAT_ARGB8888, _pCheckBitmaps[CHECK_BOX_UNCHECKED]); - SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r)); - - r = GET_BITMAP_CONFIG_N(LIST::BUTTON_ON_BITMAP, BITMAP_PIXEL_FORMAT_ARGB8888, _pCheckBitmaps[CHECK_BOX_CHECKED]); - SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r)); + r = GET_BITMAP_CONFIG_N(TABLEVIEW::ONOFFBUTTON_HANDLER, BITMAP_PIXEL_FORMAT_ARGB8888, pHandlerBitmap); + SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), r, GetErrorMessage(r), "[%s] Propagating.", GetErrorMessage(r)); + + r = GET_BITMAP_CONFIG_N(TABLEVIEW::ONOFFBUTTON_OFF, BITMAP_PIXEL_FORMAT_ARGB8888, pNormalBitmap); + SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); + + _pCheckBitmaps[BITMAP_UNCHECKED] = CreateOnOffMergedBitmapN(*pNormalBitmap, *pHandlerBitmap, CHECK_BOX_UNCHECKED); + + delete pNormalBitmap; + pNormalBitmap = null; + + r = GET_BITMAP_CONFIG_N(TABLEVIEW::ONOFFBUTTON_ON, BITMAP_PIXEL_FORMAT_ARGB8888, pNormalBitmap); + SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); + + _pCheckBitmaps[BITMAP_CHECKED] = CreateOnOffMergedBitmapN(*pNormalBitmap, *pHandlerBitmap, CHECK_BOX_CHECKED); + + r = GET_BITMAP_CONFIG_N(TABLEVIEW::ONOFFBUTTON_ON_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pDisabledNormalBitmap); + SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); + + r = GET_BITMAP_CONFIG_N(TABLEVIEW::ONOFFBUTTON_HANDLER_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pDisabledHandlerBitmap); + SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); + + _pCheckBitmaps[BITMAP_CHECKED_DISABLED] = CreateOnOffMergedBitmapN(*pDisabledNormalBitmap, *pDisabledHandlerBitmap, CHECK_BOX_CHECKED); + + delete pDisabledNormalBitmap; + pDisabledNormalBitmap = null; + + r = GET_BITMAP_CONFIG_N(TABLEVIEW::ONOFFBUTTON_OFF_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pDisabledNormalBitmap); + SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); + + _pCheckBitmaps[BITMAP_UNCHECKED_DISABLED] = CreateOnOffMergedBitmapN(*pDisabledNormalBitmap, *pDisabledHandlerBitmap, CHECK_BOX_UNCHECKED); } else { - r = GET_BITMAP_CONFIG_N(LIST::CHECK_BG_BITMAP, BITMAP_PIXEL_FORMAT_ARGB8888, _pCheckBitmaps[CHECK_BOX_UNCHECKED]); - SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r)); - - r = GET_BITMAP_CONFIG_N(LIST::CHECK_MARK_BG_BITMAP, BITMAP_PIXEL_FORMAT_ARGB8888, _pCheckBitmaps[CHECK_BOX_CHECKED]); - SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r)); - - r = GET_BITMAP_CONFIG_N(LIST::CHECK_DIM_BITMAP, BITMAP_PIXEL_FORMAT_ARGB8888, _pCheckBitmaps[CHECK_BOX_DISABLED]); - SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r)); + r = GET_BITMAP_CONFIG_N(TABLEVIEW::CHECKBOX_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pNormalBitmap); + SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), r, GetErrorMessage(r), "[%s] Propagating.", GetErrorMessage(r)); + + _pCheckBitmaps[BITMAP_UNCHECKED] = CreateMergedBitmapN(*pNormalBitmap, pSelectedBitmap); + + r = GET_BITMAP_CONFIG_N(TABLEVIEW::CHECKBOX_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pPressedBitmap); + SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); + + _pCheckBitmaps[BITMAP_UNCHECKED_PRESSED] = CreateMergedBitmapN(*pPressedBitmap, pSelectedBitmap); + + r = GET_BITMAP_CONFIG_N(TABLEVIEW::CHECKBOX_CHECK_MARK_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSelectedBitmap); + SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); + + _pCheckBitmaps[BITMAP_CHECKED] = CreateMergedBitmapN(*pNormalBitmap, pSelectedBitmap); + + delete pSelectedBitmap; + pSelectedBitmap = null; + + r = GET_BITMAP_CONFIG_N(TABLEVIEW::CHECKBOX_CHECK_MARK_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pSelectedBitmap); + SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); + + _pCheckBitmaps[BITMAP_CHECKED_PRESSED] = CreateMergedBitmapN(*pPressedBitmap, pSelectedBitmap); + + r = GET_BITMAP_CONFIG_N(TABLEVIEW::CHECKBOX_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pDisabledNormalBitmap); + SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); + + r = GET_BITMAP_CONFIG_N(TABLEVIEW::CHECKBOX_CHECK_MARK_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pDisabledSelectedBitmap); + SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r)); + + _pCheckBitmaps[BITMAP_CHECKED_DISABLED] = CreateMergedBitmapN(*pDisabledNormalBitmap, pDisabledSelectedBitmap); } + + delete pNormalBitmap; + delete pSelectedBitmap; + delete pHandlerBitmap; + delete pDisabledNormalBitmap; + delete pDisabledSelectedBitmap; + delete pDisabledHandlerBitmap; + delete pPressedBitmap; return r; + +CATCH: + delete pNormalBitmap; + delete pSelectedBitmap; + delete pHandlerBitmap; + delete pDisabledNormalBitmap; + delete pDisabledSelectedBitmap; + delete pDisabledHandlerBitmap; + delete pPressedBitmap; + + return r; + +} + +Tizen::Ui::Controls::TableViewAnnexStyle +_ListBaseImpl::GetAnnexStyle(void) +{ + return _annexStyle; } Tizen::Graphics::Bitmap** diff --git a/src/ui/controls/FUiCtrl_ListImpl.cpp b/src/ui/controls/FUiCtrl_ListImpl.cpp index 9549ff4..ed2553b 100644 --- a/src/ui/controls/FUiCtrl_ListImpl.cpp +++ b/src/ui/controls/FUiCtrl_ListImpl.cpp @@ -734,29 +734,6 @@ _ListImpl::SetItemEnabled(int index, bool enable) SysTryReturnResult(NID_UI_CTRL, (index >= 0 && index < GetItemCount()), E_SYSTEM, "A system error has occurred. The current value of index(%d) is invalid.", index); - _CheckElementModel* pCheckElementModel = GetCheckElementAt(-1, index); - - if (pCheckElementModel) - { - if (enable) - { - if (pCheckElementModel->GetCheckBoxStatus() == CHECK_BOX_DISABLED) - { - pCheckElementModel->SetCheckBoxStatus(CHECK_BOX_CHECKED); - } - } - else - { - if (pCheckElementModel->GetCheckBoxStatus() == CHECK_BOX_CHECKED) - { - if (_annexStyle == TABLE_VIEW_ANNEX_STYLE_MARK) - { - pCheckElementModel->SetCheckBoxStatus(CHECK_BOX_DISABLED); - } - } - } - } - r = GetCore().SetItemEnabled(0, index, enable); SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, E_SYSTEM, E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r)); diff --git a/src/ui/controls/FUiCtrl_SlidableGroupedListImpl.cpp b/src/ui/controls/FUiCtrl_SlidableGroupedListImpl.cpp index 19815d8..b4f23e4 100644 --- a/src/ui/controls/FUiCtrl_SlidableGroupedListImpl.cpp +++ b/src/ui/controls/FUiCtrl_SlidableGroupedListImpl.cpp @@ -1869,17 +1869,31 @@ _SlidableGroupedListImpl::SetItemChecked(int groupIndex, int index, bool check) result _SlidableGroupedListImpl::SetLoadedItemEnabled(int groupIndex, int index, bool enable) { + result r = E_SUCCESS; SysTryReturn(NID_UI_CTRL, (groupIndex >= 0 && groupIndex < __groupsList.GetCount()), - E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument is used. groupIndex (%d).", groupIndex); + E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument is used. groupIndex (%d).", groupIndex); _SlidableGroupObject* pGroupObject = dynamic_cast<_SlidableGroupObject*>(__groupsList.GetAt(groupIndex)); SysTryReturn(NID_UI_CTRL, pGroupObject, E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error has occurred. Failed to get _SlidableGroupObject at groupIndex (%d).", groupIndex); SysTryReturn(NID_UI_CTRL, (index >= 0 && index < pGroupObject->__itemCount), - E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument is used. index (%d).", index); + E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument is used. index (%d).", index); + + CustomListItem* pCustomListItem = GetCustomListItemAt(groupIndex, index); + SysTryReturnResult(NID_UI_CTRL, pCustomListItem, E_SYSTEM, "[E_SYSTEM] A system error has occurred. Failed to get an item at %d index.", index); + + _CustomListItemImpl* pCustomListItemImpl = pCustomListItem->__pCustomListItemImpl; + SysTryReturnResult(NID_UI_CTRL, pCustomListItemImpl, E_SYSTEM, "[E_SYSTEM] A system error has occurred. Item instance must not be null."); + + _TableViewItemData* pTableViewItemData = pCustomListItemImpl->__pTableViewItemData; + SysTryReturnResult(NID_UI_CTRL, pTableViewItemData, E_SYSTEM, "[E_SYSTEM] A system error has occurred. Failed to get an item at %d index.", index); + + r = GetCore().SetItemEnabled(groupIndex, index, enable); + SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, E_SYSTEM, E_SYSTEM, "[%s] Failed to set an item enabled at index %d.", GetErrorMessage(r), index); - return GetCore().SetItemEnabled(groupIndex, index, enable); + pTableViewItemData->Invalidate(true); + return r; } result diff --git a/src/ui/controls/FUiCtrl_SlidableListImpl.cpp b/src/ui/controls/FUiCtrl_SlidableListImpl.cpp index ae565d9..0bfed83 100644 --- a/src/ui/controls/FUiCtrl_SlidableListImpl.cpp +++ b/src/ui/controls/FUiCtrl_SlidableListImpl.cpp @@ -1423,30 +1423,6 @@ _SlidableListImpl::SetLoadedItemEnabled(int index, bool enable) _TableViewItemData* pTableViewItemData = pCustomListItemImpl->__pTableViewItemData; SysTryReturnResult(NID_UI_CTRL, pTableViewItemData, E_SYSTEM, "[E_SYSTEM] A system error has occurred. Failed to get an item at %d index.", index); - _CheckElementModel* pCheckElementModel = pCustomListItem->__pCustomListItemImpl->GetCheckElement(); - SysTryReturnResult(NID_UI_CTRL, pCheckElementModel, E_SYSTEM, "[E_SYSTEM] A system error has occurred. CheckElement instance must not be null."); - - if (pCheckElementModel) - { - if (enable) - { - if (pCheckElementModel->GetCheckBoxStatus() == CHECK_BOX_DISABLED) - { - pCheckElementModel->SetCheckBoxStatus(CHECK_BOX_CHECKED); - } - } - else - { - if (pCheckElementModel->GetCheckBoxStatus() == CHECK_BOX_CHECKED) - { - if (_annexStyle == TABLE_VIEW_ANNEX_STYLE_MARK) - { - pCheckElementModel->SetCheckBoxStatus(CHECK_BOX_DISABLED); - } - } - } - } - r = GetCore().SetItemEnabled(0, index, enable); SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, E_SYSTEM, E_SYSTEM, "[%s] Failed to set an item enabled at index %d.", GetErrorMessage(r), index); diff --git a/src/ui/inc/FUiCtrl_CustomListElements.h b/src/ui/inc/FUiCtrl_CustomListElements.h index 01b60e5..3440c9c 100644 --- a/src/ui/inc/FUiCtrl_CustomListElements.h +++ b/src/ui/inc/FUiCtrl_CustomListElements.h @@ -173,7 +173,7 @@ public: _CheckElementModel(void); ~_CheckElementModel(void); void GetData(Tizen::Graphics::Rectangle& bitmapBounds, bool& isDividerEnabled, bool& leftDivider, bool& rightDivider) const; - Tizen::Graphics::Bitmap* GetCheckBitmap(void) const; + Tizen::Graphics::Bitmap* GetCheckBitmap(_BitmapType bitmapType) const; void SetCheckBoxStatus(_CheckBoxBitmapType checkBoxStatus); _CheckBoxBitmapType GetCheckBoxStatus(void); diff --git a/src/ui/inc/FUiCtrl_ListBaseImpl.h b/src/ui/inc/FUiCtrl_ListBaseImpl.h index 8317bb0..5cb9b07 100644 --- a/src/ui/inc/FUiCtrl_ListBaseImpl.h +++ b/src/ui/inc/FUiCtrl_ListBaseImpl.h @@ -41,10 +41,20 @@ typedef enum _CheckBoxBitmapType { CHECK_BOX_UNCHECKED = 0, CHECK_BOX_CHECKED, - CHECK_BOX_DISABLED, CHECK_BOX_MAX }_CheckBoxStatus; +enum _BitmapType +{ + BITMAP_CHECKED = 0, + BITMAP_UNCHECKED, + BITMAP_CHECKED_DISABLED, + BITMAP_UNCHECKED_DISABLED, + BITMAP_CHECKED_PRESSED, + BITMAP_UNCHECKED_PRESSED, + BITMAP_MAX +}; + class _ListBaseImpl : public _ControlImpl , public Tizen::Ui::ITouchEventListener @@ -53,6 +63,10 @@ public: _ListBaseImpl(Control* pList, _TableView* pCore); ~_ListBaseImpl(void); + Tizen::Ui::Controls::TableViewAnnexStyle GetAnnexStyle(void); + Tizen::Graphics::Bitmap* CreateMergedBitmapN(Tizen::Graphics::Bitmap& pNormalBitmap, Tizen::Graphics::Bitmap* pSelectedBitmap); + Tizen::Graphics::Bitmap* CreateOnOffMergedBitmapN(Tizen::Graphics::Bitmap& pNormalBitmap, Tizen::Graphics::Bitmap& pSelectedBitmap, _CheckBoxBitmapType status); + result LoadDefaultBitmap(void); Tizen::Graphics::Bitmap** GetCheckBitmaps(void); _TableView& GetCore(void); @@ -124,7 +138,7 @@ private: protected: TableViewAnnexStyle _annexStyle; - Tizen::Graphics::Bitmap* _pCheckBitmaps[CHECK_BOX_MAX]; + Tizen::Graphics::Bitmap* _pCheckBitmaps[BITMAP_MAX]; int _currentRadioIndex; int _currentRadioGroupIndex; bool _isDividerEnabled; diff --git a/src/ui/resource/FUi_ResourceListConfig.cpp b/src/ui/resource/FUi_ResourceListConfig.cpp index a2b0bdc..046f675 100644 --- a/src/ui/resource/FUi_ResourceListConfig.cpp +++ b/src/ui/resource/FUi_ResourceListConfig.cpp @@ -32,13 +32,6 @@ START_UI_CONFIG(LIST); ADD_COLOR_CONFIG(ELEMENT_TEXT_PRESSED, $F011L1P); ADD_COLOR_CONFIG(ELEMENT_TEXT_HIGHLIGHTED, $F011L1P); ADD_COLOR_CONFIG(ELEMENT_TEXT_DISABLED, $F011L1D); - ADD_IMAGE_CONFIG(CHECK_BG_BITMAP, #00_check_bg.png); - ADD_IMAGE_CONFIG(CHECK_MARK_BG_BITMAP, #00_check_checking.png); - ADD_IMAGE_CONFIG(CHECK_DIM_BITMAP, #00_check_dim.png); - ADD_IMAGE_CONFIG(BUTTON_RADIO_BITMAP, #00_button_radio_normal2.png); - ADD_IMAGE_CONFIG(BUTTON_RADIO_SELECTED_BITMAP, #00_button_radio_normal1.png); - ADD_IMAGE_CONFIG(BUTTON_OFF_BITMAP, #00_button_off.png); - ADD_IMAGE_CONFIG(BUTTON_ON_BITMAP, #00_button_on.png); ADD_IMAGE_CONFIG(BUTTON_EXPAND_GROUP, #00_button_expand_opened.png); ADD_IMAGE_CONFIG(BUTTON_COLLAPSE_GROUP, #00_button_expand_closed.png); -- 2.7.4