bool
_SlidableGroupedListItemProvider::DeleteItem(int groupIndex, int itemIndex, TableViewItem* pItem)
{
- if (__pListImpl->__directDelete == false)
+ if (__pListImpl->__isUnloading == true)
+ {
+ __pListImpl->RemoveFromItemsList(groupIndex, (itemIndex - __pListImpl->GetTopItemIndex(groupIndex)));
+ }
+ else if (__pListImpl->__directDelete == false)
{
if (((groupIndex == __pListImpl->__topGroup) && (itemIndex <= __pListImpl->GetTopItemIndex(__pListImpl->__topGroup))) || (__pListImpl->__forceScroll == true))
{
, __groupItemHeight(0)
, __itemCacheSize(0)
, __pItemFormat(null)
+ , __isUnloading(false)
{
}
SysTryReturn(NID_UI_CTRL, __pItemProvider, E_SYSTEM, E_SYSTEM,
"[E_SYSTEM] A system error has occurred. ISlidableGroupedListEventListener not set.");
- __directDelete = true;
-
for (groupCount = __groupsList.GetCount() - 1; groupCount >= 0; groupCount--)
{
itemCount = GetSubItemCountAt(groupCount);
for (itemIndex = itemCount - 1; itemIndex >= 0; itemIndex--)
{
- RemoveFromItemsList(groupCount, itemIndex);
+ __isUnloading = true;
+
+ r = GetCore().RefreshTableView(groupCount, (itemIndex + GetTopItemIndex(groupCount)), TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
- r = GetCore().RefreshTableView(groupCount, itemIndex, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
+ __isUnloading = false;
if (r != E_SUCCESS)
{
SysLog(NID_UI_CTRL, "Group item with index %d not removed successFully.", groupCount);
}
}
- __directDelete = false;
-
return E_SUCCESS;
}
SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, false, E_SYSTEM, "[E_SYSTEM] A system error has occurred. Failed to remove an item.");
}
- _TableViewItemData* pTableViewItemData = dynamic_cast<_TableViewItemData*>(pItem);
- delete pTableViewItemData;
+ delete pItem;
+ pItem = null;
return true;
}