Пример #1
0
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());
    }
}
Пример #2
0
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;
    }
}
Пример #3
0
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;
    }
}