_Tab::_Tab(void)
: __pTabPresenter(null)
+ , __isInFocusMode(false)
, __style(_TAB_STYLE_TEXT)
+ , __currentHighlightedItemIndex(-1)
, __tabStatus(_TAB_STATUS_NORMAL)
, __pActionEvent(null)
, __pGestureLongPress(null)
delete __pTabPresenter;
__pTabPresenter = null;
- if (__pActionEvent)
- {
- delete __pActionEvent;
- __pActionEvent = null;
- }
+ delete __pActionEvent;
+ __pActionEvent = null;
__tabItems.RemoveAll(true);
__pGestureLongPress = null;
}
- if (__pBackgroundBitmap)
- {
- delete __pBackgroundBitmap;
- __pBackgroundBitmap = null;
- }
+ delete __pBackgroundBitmap;
+ __pBackgroundBitmap = null;
- if (__pDisabledBackgroundBitmap)
- {
- delete __pDisabledBackgroundBitmap;
- __pDisabledBackgroundBitmap = null;
- }
+ delete __pDisabledBackgroundBitmap;
+ __pDisabledBackgroundBitmap = null;
- if (__pPressedItemBackgroundBitmap)
- {
- delete __pPressedItemBackgroundBitmap;
- __pPressedItemBackgroundBitmap = null;
- }
+ delete __pPressedItemBackgroundBitmap;
+ __pPressedItemBackgroundBitmap = null;
- if (__pPressedItemBackgroundEffectBitmap)
- {
- delete __pPressedItemBackgroundEffectBitmap;
- __pPressedItemBackgroundEffectBitmap = null;
- }
+ delete __pPressedItemBackgroundEffectBitmap;
+ __pPressedItemBackgroundEffectBitmap = null;
- if (__pSelectedItemBackgroundBitmap)
- {
- delete __pSelectedItemBackgroundBitmap;
- __pSelectedItemBackgroundBitmap = null;
- }
+ delete __pSelectedItemBackgroundBitmap;
+ __pSelectedItemBackgroundBitmap = null;
- if (__pHighlightedItemBackgroundBitmap)
- {
- delete __pHighlightedItemBackgroundBitmap;
- __pHighlightedItemBackgroundBitmap = null;
- }
+ delete __pHighlightedItemBackgroundBitmap;
+ __pHighlightedItemBackgroundBitmap = null;
RemoveAllAccessibilityElement();
}
SysTryReturnResult(NID_UI_CTRL, itemCount < _TAB_ITEM_MAXCOUNT, E_SYSTEM, "A system error has occurred. The tab has maximum number of items.");
- _TabItem *pItem = new (std::nothrow) _TabItem;
+ _TabItem* pItem = new (std::nothrow) _TabItem;
SysTryReturnResult(NID_UI_CTRL, pItem != null, E_OUT_OF_MEMORY, "Memory allocation failed.");
pItem->SetIcon(icon);
__pTabPresenter->SetRecalculateItemBounds(true);
+ if (__pTabPresenter->GetItemStatus(__currentHighlightedItemIndex) == _TABITEM_STATUS_HIGHLIGHTED)
+ {
+ __pTabPresenter->SetItemStatus(__currentHighlightedItemIndex, _TABITEM_STATUS_NORMAL);
+ }
+ __currentHighlightedItemIndex = 0;
+
+ AddAccessibilityElement(pItem->GetItemBounds(), pItem->GetText(), pItem->GetStatus());
+
return __tabItems.Add(*pItem);
}
SysTryReturnResult(NID_UI_CTRL, itemCount < _TAB_ITEM_MAXCOUNT, E_SYSTEM, "A system error has occurred. The tab has maximum number of items.");
- _TabItem *pItem = new (std::nothrow) _TabItem;
+ _TabItem* pItem = new (std::nothrow) _TabItem;
SysTryReturnResult(NID_UI_CTRL, pItem != null, E_OUT_OF_MEMORY, "Memory allocation failed.");
pItem->SetIcon(icon);
__pTabPresenter->SetRecalculateItemBounds(true);
+ if (__pTabPresenter->GetItemStatus(__currentHighlightedItemIndex) == _TABITEM_STATUS_HIGHLIGHTED)
+ {
+ __pTabPresenter->SetItemStatus(__currentHighlightedItemIndex, _TABITEM_STATUS_NORMAL);
+ }
+ __currentHighlightedItemIndex = 0;
+
+ AddAccessibilityElement(pItem->GetItemBounds(), pItem->GetText(), pItem->GetStatus());
+
return __tabItems.Add(*pItem);
}
SysTryReturnResult(NID_UI_CTRL, itemCount < _TAB_ITEM_MAXCOUNT, E_SYSTEM, "A system error has occurred. The tab has maximum number of items.");
- _TabItem *pItem = new (std::nothrow) _TabItem;
+ _TabItem* pItem = new (std::nothrow) _TabItem;
SysTryReturnResult(NID_UI_CTRL, pItem != null, E_OUT_OF_MEMORY, "Memory allocation failed.");
pItem->SetText(text);
__pTabPresenter->SetRecalculateItemBounds(true);
+ if (__pTabPresenter->GetItemStatus(__currentHighlightedItemIndex) == _TABITEM_STATUS_HIGHLIGHTED)
+ {
+ __pTabPresenter->SetItemStatus(__currentHighlightedItemIndex, _TABITEM_STATUS_NORMAL);
+ }
+ __currentHighlightedItemIndex = 0;
+
+ AddAccessibilityElement(pItem->GetItemBounds(), pItem->GetText(), pItem->GetStatus());
return __tabItems.Add(*pItem);
}
SysTryReturnResult(NID_UI_CTRL, itemCount < _TAB_ITEM_MAXCOUNT, E_SYSTEM, "A system error has occurred. The tab has maximum number of items.");
- _TabItem *pItem = new (std::nothrow) _TabItem;
+ _TabItem* pItem = new (std::nothrow) _TabItem;
SysTryReturnResult(NID_UI_CTRL, pItem != null, E_OUT_OF_MEMORY, "Memory allocation failed.");
pItem->SetIcon(icon);
if (selectedIndex >= index)
{
- _TabItem *pSelectedItem = null;
+ _TabItem* pSelectedItem = null;
pSelectedItem = GetItemAt(selectedIndex);
if (pSelectedItem != null)
{
SetSelectedItemIndex(selectedIndex);
}
+ if (__pTabPresenter->GetItemStatus(__currentHighlightedItemIndex) == _TABITEM_STATUS_HIGHLIGHTED)
+ {
+ __pTabPresenter->SetItemStatus(__currentHighlightedItemIndex, _TABITEM_STATUS_NORMAL);
+ }
+ __currentHighlightedItemIndex = 0;
+
+ InsertAccessibilityElementAt(index, pItem->GetItemBounds(), pItem->GetText(), pItem->GetStatus());
+
return r;
}
SysTryReturnResult(NID_UI_CTRL, itemCount < _TAB_ITEM_MAXCOUNT, E_SYSTEM, "A system error has occurred. The tab has maximum number of items.");
- _TabItem *pItem = new (std::nothrow) _TabItem;
+ _TabItem* pItem = new (std::nothrow) _TabItem;
SysTryReturnResult(NID_UI_CTRL, pItem != null, E_OUT_OF_MEMORY, "Memory allocation failed.");
pItem->SetIcon(icon);
if (selectedIndex >= index)
{
- _TabItem *pSelectedItem = null;
+ _TabItem* pSelectedItem = null;
pSelectedItem = GetItemAt(selectedIndex);
if (pSelectedItem != null)
{
SetSelectedItemIndex(selectedIndex);
}
+ if (__pTabPresenter->GetItemStatus(__currentHighlightedItemIndex) == _TABITEM_STATUS_HIGHLIGHTED)
+ {
+ __pTabPresenter->SetItemStatus(__currentHighlightedItemIndex, _TABITEM_STATUS_NORMAL);
+ }
+ __currentHighlightedItemIndex = 0;
+
+ InsertAccessibilityElementAt(index, pItem->GetItemBounds(), pItem->GetText(), pItem->GetStatus());
+
return r;
}
SysTryReturnResult(NID_UI_CTRL, itemCount < _TAB_ITEM_MAXCOUNT, E_SYSTEM, "A system error has occurred. The tab has maximum number of items.");
- _TabItem *pItem = new (std::nothrow) _TabItem;
+ _TabItem* pItem = new (std::nothrow) _TabItem;
SysTryReturnResult(NID_UI_CTRL, pItem != null, E_OUT_OF_MEMORY, "Memory allocation failed.");
pItem->SetText(text);
if (selectedIndex >= index)
{
- _TabItem *pSelectedItem = null;
+ _TabItem* pSelectedItem = null;
pSelectedItem = GetItemAt(selectedIndex);
if (pSelectedItem != null)
{
SetSelectedItemIndex(selectedIndex);
}
+ if (__pTabPresenter->GetItemStatus(__currentHighlightedItemIndex) == _TABITEM_STATUS_HIGHLIGHTED)
+ {
+ __pTabPresenter->SetItemStatus(__currentHighlightedItemIndex, _TABITEM_STATUS_NORMAL);
+ }
+ __currentHighlightedItemIndex = 0;
+
+ InsertAccessibilityElementAt(index, pItem->GetItemBounds(), pItem->GetText(), pItem->GetStatus());
+
return r;
}
return E_SYSTEM;
}
- _TabItem *pItem = static_cast<_TabItem*>(__tabItems.GetAt(index));
+ _TabItem* pItem = static_cast<_TabItem*>(__tabItems.GetAt(index));
result r = GetLastResult();
SysTryReturnResult(NID_UI_CTRL, pItem != null, r, "[%s] Propagating.", GetErrorMessage(r));
pItem->SetActionId(actionId);
pItem->SetUpdateState(true);
+ UpdateAccessibilityLabel(index, text);
+
return E_SUCCESS;
}
return E_SYSTEM;
}
- _TabItem *pItem = static_cast<_TabItem*>(__tabItems.GetAt(index));
+ _TabItem* pItem = static_cast<_TabItem*>(__tabItems.GetAt(index));
result r = GetLastResult();
SysTryReturnResult(NID_UI_CTRL, pItem != null, r, "[%s] Propagating.", GetErrorMessage(r));
return E_SYSTEM;
}
- _TabItem *pItem = static_cast<_TabItem*>(__tabItems.GetAt(index));
+ _TabItem* pItem = static_cast<_TabItem*>(__tabItems.GetAt(index));
result r = GetLastResult();
SysTryReturnResult(NID_UI_CTRL, pItem != null, r, "[%s] Propagating.", GetErrorMessage(r));
pItem->SetActionId(actionId);
pItem->SetUpdateState(true);
+ UpdateAccessibilityLabel(index, text);
+
return E_SUCCESS;
}
if (selectedIndex >= index)
{
- _TabItem *pSelectedItem = null;
+ _TabItem* pSelectedItem = null;
pSelectedItem = GetItemAt(selectedIndex);
if (pSelectedItem != null)
{
SetSelectedItemIndex(0);
+ if (__pTabPresenter->GetItemStatus(__currentHighlightedItemIndex) == _TABITEM_STATUS_HIGHLIGHTED)
+ {
+ __pTabPresenter->SetItemStatus(__currentHighlightedItemIndex, _TABITEM_STATUS_NORMAL);
+ }
+ if (GetItemCount() > 0)
+ {
+ __currentHighlightedItemIndex = 0;
+ }
+ else
+ {
+ __currentHighlightedItemIndex = -1;
+ }
+
+ RemoveAccessibilityElementAt(index);
+
return r;
}
result
_Tab::RemoveAllItems(void)
{
+ if (__pTabPresenter->GetItemStatus(__currentHighlightedItemIndex) == _TABITEM_STATUS_HIGHLIGHTED)
+ {
+ __pTabPresenter->SetItemStatus(__currentHighlightedItemIndex, _TABITEM_STATUS_NORMAL);
+ }
+ __currentHighlightedItemIndex = -1;
+
__pTabPresenter->SetRecalculateItemBounds(true);
SetSelectedItemIndex(0);
SetFirstDrawnItemIndex(-1);
__tabItems.RemoveAll(true);
+ RemoveAllAccessibilityElement();
+
return E_SUCCESS;
}
_Tab::LoadBitmap(void)
{
result r = E_SUCCESS;
- Bitmap* pPressedItemBackgroundBitmap = null;
- Bitmap* pItemBackgroundBitmap = null;
- Bitmap* pDisabledBackgroundBitmap = null;
- Bitmap* pSelectedItemBackgroundBitmap = null;
- Bitmap* pPressedItemBackgroundEffectBitmap = null;
- Bitmap* pHighlightedItemBackgroundBitmap = null;
Color pressedEffectColor;
GET_COLOR_CONFIG(TAB::ITEM_BG_EFFECT_PRESSED, pressedEffectColor);
- r = GET_BITMAP_CONFIG_N(TAB::ITEM_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pDisabledBackgroundBitmap);
+ r = GET_REPLACED_BITMAP_CONFIG_N(TAB::ITEM_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, GetDisabledItemBackgroundColor(), __pDisabledBackgroundBitmap);
SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "Failed to locate disabled item background bitmap.");
- if (pDisabledBackgroundBitmap)
- {
- __pDisabledBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pDisabledBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA), GetDisabledItemBackgroundColor());
- SysTryLog(NID_UI_CTRL, (__pDisabledBackgroundBitmap != null), "Failed to locate disabled item background bitmap.");
-
- delete pDisabledBackgroundBitmap;
- }
- r = GET_BITMAP_CONFIG_N(TAB::ITEM_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pItemBackgroundBitmap);
+ r = GET_REPLACED_BITMAP_CONFIG_N(TAB::ITEM_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, GetItemBackgroundColor(), __pBackgroundBitmap);
SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "Failed to locate item background bitmap.");
- if (pItemBackgroundBitmap)
- {
- __pBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pItemBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA), GetItemBackgroundColor());
- SysTryLog(NID_UI_CTRL, (__pBackgroundBitmap != null), "Failed to locate item background bitmap.");
- delete pItemBackgroundBitmap;
- }
-
- r = GET_BITMAP_CONFIG_N(TAB::ITEM_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pPressedItemBackgroundBitmap);
+ r = GET_REPLACED_BITMAP_CONFIG_N(TAB::ITEM_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, GetPressedItemBackgroundColor(), __pPressedItemBackgroundBitmap);
SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "Failed to locate pressed item background bitmap.");
- if (pPressedItemBackgroundBitmap)
- {
- __pPressedItemBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pPressedItemBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA), GetPressedItemBackgroundColor());
- SysTryLog(NID_UI_CTRL, (__pPressedItemBackgroundBitmap != null), "Failed to locate pressed item background bitmap.");
-
- delete pPressedItemBackgroundBitmap;
- }
-
- r = GET_BITMAP_CONFIG_N(TAB::ITEM_BG_SELECTED, BITMAP_PIXEL_FORMAT_ARGB8888, pSelectedItemBackgroundBitmap);
+ r = GET_REPLACED_BITMAP_CONFIG_N(TAB::ITEM_BG_SELECTED, BITMAP_PIXEL_FORMAT_ARGB8888, GetSelectedItemBackgroundColor(), __pSelectedItemBackgroundBitmap);
SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "Failed to locate selected item background bitmap.");
- if (pSelectedItemBackgroundBitmap)
- {
- __pSelectedItemBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pSelectedItemBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA), GetSelectedItemBackgroundColor());
- SysTryLog(NID_UI_CTRL, (__pSelectedItemBackgroundBitmap != null), "Failed to locate selected item background bitmap.");
-
- delete pSelectedItemBackgroundBitmap;
- }
-
- r = GET_BITMAP_CONFIG_N(TAB::ITEM_BG_EFFECT_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pPressedItemBackgroundEffectBitmap);
+ r = GET_REPLACED_BITMAP_CONFIG_N(TAB::ITEM_BG_EFFECT_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pressedEffectColor, __pPressedItemBackgroundEffectBitmap);
SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "Failed to locate selected item background bitmap.");
- if (pPressedItemBackgroundEffectBitmap)
- {
- __pPressedItemBackgroundEffectBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pPressedItemBackgroundEffectBitmap, Color::GetColor(COLOR_ID_MAGENTA), pressedEffectColor);
- SysTryLog(NID_UI_CTRL, (__pPressedItemBackgroundEffectBitmap != null), "Failed to locate selected item background bitmap.");
-
- delete pPressedItemBackgroundEffectBitmap;
- }
-
- r = GET_BITMAP_CONFIG_N(TAB::ITEM_BG_HIGHLIGHTED, BITMAP_PIXEL_FORMAT_ARGB8888, pHighlightedItemBackgroundBitmap);
+ r = GET_REPLACED_BITMAP_CONFIG_N(TAB::ITEM_BG_HIGHLIGHTED, BITMAP_PIXEL_FORMAT_ARGB8888, GetHighlightedItemBackgroundColor(), __pHighlightedItemBackgroundBitmap);
SysTryLog(NID_UI_CTRL, r == E_SUCCESS, "Failed to locate highlighted item background bitmap.");
- if (pHighlightedItemBackgroundBitmap)
- {
- __pHighlightedItemBackgroundBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pHighlightedItemBackgroundBitmap, Color::GetColor(COLOR_ID_MAGENTA), GetHighlightedItemBackgroundColor());
- SysTryLog(NID_UI_CTRL, (__pHighlightedItemBackgroundBitmap != null), "Failed to locate highlighted item background bitmap.");
-
- delete pHighlightedItemBackgroundBitmap;
- }
return r;
}
int itemIndex = GetItemIndexFromActionId(actionId);
- _TabItem *pItem = null;
+ _TabItem* pItem = null;
if (itemIndex < 0)
{
for (index = 0; index < itemCount; index++)
{
- const _TabItem *pItem = dynamic_cast<const _TabItem*>(__tabItems.GetAt(index));
+ const _TabItem* pItem = dynamic_cast<const _TabItem*>(__tabItems.GetAt(index));
if (pItem != null)
{
int
_Tab::GetItemActionIdAt(int index) const
{
- if (__tabItems.GetAt(index) == null )
+ if (__tabItems.GetAt(index) == null)
{
return -1;
}
- const _TabItem *pItem = dynamic_cast<const _TabItem*>(__tabItems.GetAt(index));
+ const _TabItem* pItem = dynamic_cast<const _TabItem*>(__tabItems.GetAt(index));
SysTryReturn(NID_UI_CTRL, pItem != null, E_SYSTEM, E_SYSTEM,"[E_SYSTEM] A system error has occurred. Failed to get an item at index (%d).", index);
return pItem->GetActionId();
_TabItem*
_Tab::GetItemAt(int index)
{
- if (__tabItems.GetAt(index) == null )
+ if (__tabItems.GetAt(index) == null)
{
return null;
}
- _TabItem *pItem = static_cast<_TabItem*>(__tabItems.GetAt(index));
+ _TabItem* pItem = static_cast<_TabItem*>(__tabItems.GetAt(index));
result r = GetLastResult();
SysTryReturn(NID_UI_CTRL, pItem != null, null, r, "[%s] Propagating.", GetErrorMessage(r));
return __pTabPresenter->IsEditModeEnabled();
}
+bool
+_Tab::IsInFocusMode(void) const
+{
+ return __isInFocusMode;
+}
+
result
_Tab::SetBackgroundBitmap(const Bitmap& bitmap)
{
SysTryReturn(NID_UI_CTRL, (pBitmap), GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
- if (__pBackgroundBitmap)
+ if (__pBackgroundBitmap != null)
{
delete __pBackgroundBitmap;
__pBackgroundBitmap = null;
__pBackgroundBitmap = pBitmap;
- if (__pDisabledBackgroundBitmap)
+ if (__pDisabledBackgroundBitmap != null)
{
delete __pDisabledBackgroundBitmap;
__pDisabledBackgroundBitmap = null;
SysTryReturn(NID_UI_CTRL, (pBitmap), GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
- if (__pSelectedItemBackgroundBitmap)
+ if (__pSelectedItemBackgroundBitmap != null)
{
delete __pSelectedItemBackgroundBitmap;
__pSelectedItemBackgroundBitmap = null;
SysTryReturn(NID_UI_CTRL, (pBitmap), GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
- if (__pHighlightedItemBackgroundBitmap)
+ if (__pHighlightedItemBackgroundBitmap != null)
{
delete __pHighlightedItemBackgroundBitmap;
__pHighlightedItemBackgroundBitmap = null;
return _TabStyle(__style);
}
+int
+_Tab::GetCurrentHighlightedItemIndex(void) const
+{
+ return __currentHighlightedItemIndex;
+}
+
void
_Tab::AddActionEventListener(const _IActionEventListener& listener)
{
{
return true;
}
-
return __pTabPresenter->OnTouchPressed(source, touchinfo);
}
return true;
}
- if (__pActionEvent)
+ if (__pActionEvent != null)
{
IEventArg* pEventArg = _ActionEvent::CreateActionEventArgN(pItem->GetActionId());
SysTryReturn(NID_UI_CTRL, pEventArg, GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
pContainer = GetAccessibilityContainer();
- if (pContainer)
+ if (pContainer != null)
{
pContainer->Activate(true);
pContainer->AddListener(*this);
return;
}
-void
-_Tab::AddAccessibilityElement(const FloatRectangle& itemBounds, const String& itemText, _TabItemStatus status)
+bool
+_Tab::OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo)
{
- _AccessibilityContainer* pContainer = GetAccessibilityContainer();
+ if (this != &source)
+ {
+ return false;
+ }
+ _KeyCode keyCode = keyInfo.GetKeyCode();
+ int itemCount = __pTabPresenter->GetItemCount();
+ if (itemCount == 0 || !__isInFocusMode)
+ {
+ return false;
+ }
- if (pContainer != null)
+ if (keyCode == _KEY_RIGHT)
{
- _AccessibilityElement* pAccessibilityElement = new (std::nothrow) _AccessibilityElement(true);
- SysTryReturnVoidResult(NID_UI_CTRL, pAccessibilityElement != null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
+ if (__currentHighlightedItemIndex < (itemCount - 1))
+ {
+ if (__pTabPresenter->GetItemStatus(__currentHighlightedItemIndex) != _TABITEM_STATUS_SELECTED)
+ {
+ __pTabPresenter->SetItemStatus(__currentHighlightedItemIndex, _TABITEM_STATUS_NORMAL);
+ }
- pAccessibilityElement->SetTrait(L"Tab");
- pAccessibilityElement->SetHint(L"Double tap to move to contents");
- pAccessibilityElement->SetBounds(itemBounds);
+ __currentHighlightedItemIndex++;
- if (GetStyle() != _TAB_STYLE_ICON)
- {
- pAccessibilityElement->SetLabel(itemText);
+ if (__pTabPresenter->GetItemStatus(__currentHighlightedItemIndex) != _TABITEM_STATUS_SELECTED)
+ {
+ __pTabPresenter->SetItemStatus(__currentHighlightedItemIndex, _TABITEM_STATUS_HIGHLIGHTED);
+ }
+ __pTabPresenter->ShiftToFocusedItem(__currentHighlightedItemIndex, _FOCUS_DIRECTION_MOVE_RIGHT);
}
+ return true;
+ }
- if (status == _TABITEM_STATUS_SELECTED)
- {
- pAccessibilityElement->SetStatus("Selected");
- pAccessibilityElement->SetHintDisabled(true);
- }
- else
+ if (keyCode == _KEY_LEFT)
+ {
+ if (__currentHighlightedItemIndex >= -1)
{
- pAccessibilityElement->SetStatus("");
- pAccessibilityElement->SetHintDisabled(false);
+ if (__pTabPresenter->GetItemStatus(__currentHighlightedItemIndex) != _TABITEM_STATUS_SELECTED)
+ {
+ __pTabPresenter->SetItemStatus(__currentHighlightedItemIndex, _TABITEM_STATUS_NORMAL);
+ }
+ if (__currentHighlightedItemIndex == -1)
+ {
+ __currentHighlightedItemIndex = 0;
+ }
+ if (__currentHighlightedItemIndex > 0)
+ {
+ __currentHighlightedItemIndex--;
+ }
+ if (__pTabPresenter->GetItemStatus(__currentHighlightedItemIndex) != _TABITEM_STATUS_SELECTED)
+ {
+ __pTabPresenter->SetItemStatus(__currentHighlightedItemIndex, _TABITEM_STATUS_HIGHLIGHTED);
+ }
+ __pTabPresenter->ShiftToFocusedItem(__currentHighlightedItemIndex, _FOCUS_DIRECTION_MOVE_LEFT);
}
+ return true;
+ }
- pContainer->AddElement(*pAccessibilityElement);
- __accessibilityElements.Add(pAccessibilityElement);
+ if (keyCode == _KEY_ENTER && __currentHighlightedItemIndex != -1)
+ {
+ __pTabPresenter->SetItemStatus(__currentHighlightedItemIndex, _TABITEM_STATUS_SELECTED);
+ __pTabPresenter->SetSelectedItemIndex(__currentHighlightedItemIndex);
+ Invalidate();
+ return true;
}
+ return false;
+}
+bool
+_Tab::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
+{
+ return false;
+}
+
+void
+_Tab::OnDrawFocus(void)
+{
+ if (__pTabPresenter->GetItemCount() > 0)
+ {
+ __currentHighlightedItemIndex = 0;
+ }
+ else
+ {
+ __currentHighlightedItemIndex = -1;
+ }
+ if (__pTabPresenter->GetItemStatus(__currentHighlightedItemIndex) != _TABITEM_STATUS_SELECTED)
+ {
+ __pTabPresenter->SetItemStatus(__currentHighlightedItemIndex, _TABITEM_STATUS_HIGHLIGHTED);
+ }
+ __pTabPresenter->ShiftToFocusedItem(__currentHighlightedItemIndex, _FOCUS_DIRECTION_MOVE_LEFT);
+ __isInFocusMode = true;
return;
}
void
-_Tab::RemoveAllAccessibilityElement(void)
+_Tab::OnFocusModeStateChanged(void)
+{
+ if (__pTabPresenter->GetItemStatus(__currentHighlightedItemIndex) == _TABITEM_STATUS_HIGHLIGHTED)
+ {
+ __pTabPresenter->SetItemStatus(__currentHighlightedItemIndex, _TABITEM_STATUS_NORMAL);
+ }
+ __currentHighlightedItemIndex = -1;
+ __isInFocusMode = false;
+ Invalidate();
+}
+
+void
+_Tab::AddAccessibilityElement(const FloatRectangle& itemBounds, const String& itemText, _TabItemStatus status)
+{
+ _AccessibilityContainer* pContainer = GetAccessibilityContainer();
+ SysTryReturnVoidResult(NID_UI_CTRL, (pContainer != null), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+
+ _AccessibilityElement* pAccessibilityElement = new (std::nothrow) _AccessibilityElement(true);
+ SysTryReturnVoidResult(NID_UI_CTRL, pAccessibilityElement != null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
+
+ pAccessibilityElement->SetTraitWithStringId("IDS_TPLATFORM_BODY_TAB_T_TTS");
+ pAccessibilityElement->SetHintWithStringId("IDS_TPLATFORM_BODY_DOUBLE_TAP_TO_MOVE_TO_CONTENT_T_TTS");
+
+ if (GetStyle() != _TAB_STYLE_ICON)
+ {
+ pAccessibilityElement->SetLabel(itemText);
+ }
+
+ if (status == _TABITEM_STATUS_SELECTED)
+ {
+ pAccessibilityElement->SetStatusWithStringId("IDS_TPLATFORM_BODY_SELECTED_T_TTS");
+ pAccessibilityElement->SetHintDisabled(true);
+ }
+ else
+ {
+ pAccessibilityElement->SetStatus("");
+ pAccessibilityElement->SetHintDisabled(false);
+ }
+
+ pContainer->AddElement(*pAccessibilityElement);
+ __accessibilityElements.Add(pAccessibilityElement);
+
+ return;
+}
+
+void
+_Tab::InsertAccessibilityElementAt(int index, const FloatRectangle& itemBounds, const String& itemText, _TabItemStatus status)
+{
+ _AccessibilityContainer* pContainer = GetAccessibilityContainer();
+ SysTryReturnVoidResult(NID_UI_CTRL, (pContainer != null), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+
+ _AccessibilityElement* pAccessibilityElement = new (std::nothrow) _AccessibilityElement(true);
+ SysTryReturnVoidResult(NID_UI_CTRL, pAccessibilityElement != null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
+
+ pAccessibilityElement->SetTraitWithStringId("IDS_TPLATFORM_BODY_TAB_T_TTS");
+ pAccessibilityElement->SetHintWithStringId("IDS_TPLATFORM_BODY_DOUBLE_TAP_TO_MOVE_TO_CONTENT_T_TTS");
+
+ if (GetStyle() != _TAB_STYLE_ICON)
+ {
+ pAccessibilityElement->SetLabel(itemText);
+ }
+
+ if (status == _TABITEM_STATUS_SELECTED)
+ {
+ pAccessibilityElement->SetStatusWithStringId("IDS_TPLATFORM_BODY_SELECTED_T_TTS");
+ pAccessibilityElement->SetHintDisabled(true);
+ }
+ else
+ {
+ pAccessibilityElement->SetStatus("");
+ pAccessibilityElement->SetHintDisabled(false);
+ }
+
+ pContainer->InsertElement(*pAccessibilityElement, index);
+ __accessibilityElements.InsertAt(pAccessibilityElement, index);
+
+ return;
+}
+
+void
+_Tab::RemoveAccessibilityElementAt(int index)
{
+ _AccessibilityElement* pAccessibilityElement = null;
_AccessibilityContainer* pContainer = GetAccessibilityContainer();
+ SysTryReturnVoidResult(NID_UI_CTRL, (pContainer != null), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
- if (pContainer == null)
+ if ((__accessibilityElements.GetAt(index, pAccessibilityElement)) == E_SUCCESS)
{
- return;
+ __accessibilityElements.RemoveAt(index);
+ pContainer->RemoveElement(*pAccessibilityElement);
}
+ return;
+}
+
+void
+_Tab::RemoveAllAccessibilityElement(void)
+{
_AccessibilityElement* pAccessibilityElement = null;
+ _AccessibilityContainer* pContainer = GetAccessibilityContainer();
+ SysTryReturnVoidResult(NID_UI_CTRL, (pContainer != null), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
while (__accessibilityElements.GetCount() > 0)
{
if ((__accessibilityElements.GetAt(0, pAccessibilityElement)) == E_SUCCESS)
{
- pContainer->RemoveElement(*pAccessibilityElement);
__accessibilityElements.RemoveAt(0);
+ pContainer->RemoveElement(*pAccessibilityElement);
}
- else
+ }
+
+ return;
+}
+
+void
+_Tab::UpdateAccessibilityElement(void)
+{
+ _TabItemStatus itemStatus = _TABITEM_STATUS_NORMAL;
+ _TabItem* pItem = null;
+ _AccessibilityElement* pAccessibilityElement = null;
+ _AccessibilityContainer* pContainer = GetAccessibilityContainer();
+ SysTryReturnVoidResult(NID_UI_CTRL, (pContainer != null), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+
+ int count = __accessibilityElements.GetCount();
+
+ FloatRectangle bounds(0.0f, 0.0f, 0.0f, 0.0f);
+
+ for (int i = 0; i < count; i++)
+ {
+ if ((__accessibilityElements.GetAt(i, pAccessibilityElement)) == E_SUCCESS)
{
- __accessibilityElements.RemoveAt(0);
+ pItem = GetItemAt(i);
+ if (pItem != null)
+ {
+ bounds = pItem->GetItemBounds();
+ itemStatus = pItem->GetStatus();
+ }
+
+ if (pAccessibilityElement != null)
+ {
+ pAccessibilityElement->SetBounds(bounds);
+
+ if (itemStatus == _TABITEM_STATUS_SELECTED)
+ {
+ pAccessibilityElement->SetStatusWithStringId("IDS_TPLATFORM_BODY_SELECTED_T_TTS");
+ pAccessibilityElement->SetHintDisabled(true);
+ }
+ else
+ {
+ pAccessibilityElement->SetStatus("");
+ pAccessibilityElement->SetHintDisabled(false);
+ }
+ }
+ }
+ }
+
+ return;
+}
+
+void
+_Tab::UpdateAccessibilityLabel(int index, const String& text)
+{
+ _AccessibilityElement* pAccessibilityElement = null;
+ _AccessibilityContainer* pContainer = GetAccessibilityContainer();
+ SysTryReturnVoidResult(NID_UI_CTRL, (pContainer != null), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+
+ if ((__accessibilityElements.GetAt(index, pAccessibilityElement)) == E_SUCCESS)
+ {
+ if (pAccessibilityElement != null)
+ {
+ pAccessibilityElement->SetLabel(text);
}
}
bool
_Tab::OnAccessibilityFocusMovedNext(const _AccessibilityContainer& control, const _AccessibilityElement& element)
{
- ClearLastResult();
-
- return __pTabPresenter->OnAccessibilityFocusMovedNext(control, element);
+ return false;
}
bool
_Tab::OnAccessibilityFocusMovedPrevious(const _AccessibilityContainer& control, const _AccessibilityElement& element)
{
- ClearLastResult();
-
- return __pTabPresenter->OnAccessibilityFocusMovedPrevious(control, element);
+ return false;
}
bool
bool
_Tab::OnAccessibilityFocusIn(const _AccessibilityContainer& control, const _AccessibilityElement& element)
{
- return false;
+ FloatRectangle bounds = element.GetBounds();
+
+ if (bounds.x < 0)
+ {
+ if (bounds.x == -bounds.width)
+ {
+ __pTabPresenter->MovePrevious();
+ }
+ else
+ {
+ __pTabPresenter->MoveToFirst();
+ }
+ }
+ else if (bounds.x + bounds.width > GetBounds().width)
+ {
+ if (bounds.x == GetBounds().width)
+ {
+ __pTabPresenter->MoveNext();
+ }
+ else
+ {
+ __pTabPresenter->MoveToLast(bounds.x);
+ }
+ }
+
+ return true;
}
bool
}
bool
-_Tab::OnAccessibilityValueIncreased(const Tizen::Ui::_AccessibilityContainer&, const Tizen::Ui::_AccessibilityElement&)
+_Tab::OnAccessibilityValueIncreased(const _AccessibilityContainer& control, const _AccessibilityElement& element)
{
return false;
}
bool
-_Tab::OnAccessibilityValueDecreased(const Tizen::Ui::_AccessibilityContainer&, const Tizen::Ui::_AccessibilityElement&)
+_Tab::OnAccessibilityValueDecreased(const _AccessibilityContainer& control, const _AccessibilityElement& element)
{
return false;
}