void UIListView::copySpecialProperties(UIWidget *widget) { UIListView* listView = static_cast<UIListView*>(widget); if (listView) { UILayout::copySpecialProperties(widget); setDirection(listView->m_eDirection); initChildWithDataLength(listView->m_nDataLength); setUpdateChild(listView->getUpdateChild()); setUpdateDataIndex(listView->getUpdateDataIndex()); setUpdateSuccess(listView->getUpdateSuccess()); } }
void UIListView::initChildWithDataLength(int length) { _dataLength = length; _begin = 0; _end = 0; // init child pool ccArray* arrayChildren = _children->data; int times = arrayChildren->num; for (int i = 0; i < times; ++i) { UIWidget* child = dynamic_cast<UIWidget*>(arrayChildren->arr[i]); setUpdateChild(child); setUpdateDataIndex(i); initChildEvent(); _childPool->addObject(child); _end = i; } }
void UIListView::getAndCallback() { UIWidget* child = getChildFromUpdatePool(); if (child == NULL) { return; } switch (_direction) { case LISTVIEW_DIR_VERTICAL: // vertical switch (_moveDirection) { case LISTVIEW_MOVE_DIR_UP: // up ++_end; setUpdateChild(child); setUpdateDataIndex(_end); updateChildEvent(); if (_updateSuccess == false) { --_end; _childPool->insertObject(child, 0); return; } ++_begin; break; case LISTVIEW_MOVE_DIR_DOWN: // down --_begin; setUpdateChild(child); setUpdateDataIndex(_begin); updateChildEvent(); if (_updateSuccess == false) { ++_begin; _childPool->addObject(child); return; } --_end; break; default: break; } break; case LISTVIEW_DIR_HORIZONTAL: // horizontal switch (_moveDirection) { case LISTVIEW_MOVE_DIR_LEFT: // left ++_end; setUpdateChild(child); setUpdateDataIndex(_end); updateChildEvent(); if (_updateSuccess == false) { --_end; _childPool->insertObject(child, 0); return; } ++_begin; break; case LISTVIEW_MOVE_DIR_RIGHT: // right --_begin; setUpdateChild(child); setUpdateDataIndex(_begin); updateChildEvent(); if (_updateSuccess == false) { ++_begin; _childPool->addObject(child); return; } --_end; break; default: break; } break; default: break; } switch (_direction) { case LISTVIEW_DIR_VERTICAL: // vertical switch (_moveDirection) { case LISTVIEW_MOVE_DIR_UP: // up _childPool->addObject(child); break; case LISTVIEW_MOVE_DIR_DOWN: // down _childPool->insertObject(child, 0); break; default: break; } break; case LISTVIEW_DIR_HORIZONTAL: // horizontal switch (_moveDirection) { case LISTVIEW_MOVE_DIR_LEFT: // left _childPool->addObject(child); break; case LISTVIEW_MOVE_DIR_RIGHT: // right _childPool->insertObject(child, 0); break; default: break; } break; default: break; } }
void UIListView::getAndCallback() { UIWidget* child = getChildFromUpdatePool(); if (child == NULL) { return; } switch (m_eDirection) { case SCROLLVIEW_DIR_VERTICAL: // vertical switch (m_eMoveDirection) { case SCROLLVIEW_MOVE_DIR_UP: // up ++m_nEnd; setUpdateChild(child); setUpdateDataIndex(m_nEnd); updateChildEvent(); if (m_bUpdateSuccess == false) { --m_nEnd; m_pChildPool->insertObject(child, 0); // m_pChildPool->push_front(child); return; } ++m_nBegin; break; case SCROLLVIEW_MOVE_DIR_DOWN: // down --m_nBegin; setUpdateChild(child); setUpdateDataIndex(m_nBegin); updateChildEvent(); if (m_bUpdateSuccess == false) { ++m_nBegin; m_pChildPool->addObject(child); // m_pChildPool->push_back(child); return; } --m_nEnd; break; default: break; } break; case SCROLLVIEW_DIR_HORIZONTAL: // horizontal switch (m_eMoveDirection) { case SCROLLVIEW_MOVE_DIR_LEFT: // left ++m_nEnd; setUpdateChild(child); setUpdateDataIndex(m_nEnd); updateChildEvent(); if (m_bUpdateSuccess == false) { --m_nEnd; m_pChildPool->insertObject(child, 0); // m_pChildPool->push_front(child); return; } ++m_nBegin; break; case SCROLLVIEW_MOVE_DIR_RIGHT: // right --m_nBegin; setUpdateChild(child); setUpdateDataIndex(m_nBegin); updateChildEvent(); if (m_bUpdateSuccess == false) { ++m_nBegin; m_pChildPool->addObject(child); // m_pChildPool->push_back(child); return; } --m_nEnd; break; default: break; } break; default: break; } switch (m_eDirection) { case SCROLLVIEW_DIR_VERTICAL: // vertical switch (m_eMoveDirection) { case SCROLLVIEW_MOVE_DIR_UP: // up m_pChildPool->addObject(child); // m_pChildPool->push_back(child); break; case SCROLLVIEW_MOVE_DIR_DOWN: // down m_pChildPool->insertObject(child, 0); // m_pChildPool->push_front(child); break; default: break; } break; case SCROLLVIEW_DIR_HORIZONTAL: // horizontal switch (m_eMoveDirection) { case SCROLLVIEW_MOVE_DIR_LEFT: // left m_pChildPool->addObject(child); // m_pChildPool->push_back(child); break; case SCROLLVIEW_MOVE_DIR_RIGHT: // right m_pChildPool->insertObject(child, 0); // m_pChildPool->push_front(child); break; default: break; } break; default: break; } }