Пример #1
0
void CAListView::recoveryCollectionCell()
{
	CCRect rect = this->getBounds();
	rect.origin = getContentOffset();
    rect.origin.y -= rect.size.height * 0.1f;
    rect.size.height *= 1.2f;
    
	std::map<unsigned int, CAListViewCell*>::iterator itr;
	for (itr = m_pUsedListCells.begin(); itr != m_pUsedListCells.end(); itr++)
	{
		CAListViewCell* cell = itr->second;
		CC_CONTINUE_IF(cell == NULL);

		CCRect cellRect = cell->getFrame();
		CC_CONTINUE_IF(rect.intersectsRect(cellRect));

		m_pFreedListCells[cell->getReuseIdentifier()].pushBack(cell);
		cell->removeFromSuperview();
		cell->resetListViewCell();
		itr->second = NULL;
        
        
        CAView* line = m_pUsedLines[itr->first];
        CC_CONTINUE_IF(line == NULL);
        m_pFreedLines.pushBack(line);
        line->removeFromSuperview();
        m_pUsedLines[itr->first] = NULL;
	}
}
Пример #2
0
void CAListView::clearData()
{
	std::map<unsigned int, CAView*>::iterator it = m_pUsedLines.begin();
	for (; it != m_pUsedLines.end(); ++it)
	{
		CAView* view = it->second;
		CC_CONTINUE_IF(view == NULL);
		m_pFreedLines.pushBack(view);
		view->removeFromSuperview();
	}
	m_pUsedLines.clear();

	m_mpUsedListCells.clear();

	for (int i = 0; i < m_vpUsedListCells.size(); i++)
	{
		CAListViewCell* cell = m_vpUsedListCells.at(i);
		CC_CONTINUE_IF(cell == NULL);
		m_mpFreedListCells[cell->getReuseIdentifier()].pushBack(cell);
		cell->removeFromSuperview();
		cell->resetListViewCell();
	}
	m_vpUsedListCells.clear();

	m_pSelectedListCells.clear();
	
	m_nIndexs = 0;
	m_rIndexRects.clear();
	m_rLineRects.clear();
	m_rHeaderRect = m_rFooterRect = DRectZero;
	m_pHighlightedListCells = NULL;
}
Пример #3
0
CAListViewCell* ListViewTest::listViewCellAtIndex(CAListView *listView, const DSize& cellSize, unsigned int index)
{
    CAListViewCell* cell = (CAListViewCell*)listView->dequeueReusableCellWithIdentifier("ListViewCell");
    if (cell==NULL)
    {
        cell = CAListViewCell::create("ListViewCell");
        
        CALabel* test = CALabel::createWithLayout(DLayout(DHorizontalLayout_L_W(0, 200), DVerticalLayoutFill));
        test->setColor(ccc4(51, 204, 255, 255));
        test->setTextAlignment(CATextAlignmentCenter);
        test->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);
        test->setFontSize(28);
        test->setTag(100);
        cell->addSubview(test);
        
        CAButton* btn = CAButton::createWithLayout(DLayout(DHorizontalLayout_W_C(100, 0.85), DVerticalLayout_H_C(50, 0.5)), CAButtonTypeSquareRect);
        btn->setTitleForState(CAControlStateNormal, "btn");
        btn->setTag(200);
        cell->addSubview(btn);
        btn->setTouchEventScrollHandOverToSuperview(false);
    }
    char temptext[10];
    sprintf(temptext, "cell-%d",index);
    CALabel* test = (CALabel*)cell->getSubviewByTag(100);
    test->setText(temptext);
    
    return cell;
}
void SessionsViewController::listViewDidDeselectCellAtIndex(CAListView *listView, unsigned int index)
{
    CAListViewCell* cell = listView->cellForRowAtIndex(index);
    if (cell) {
        CALabel* text = (CALabel*)cell->getSubviewByTag(100);
        if (text) {
            text->setColor(SAP_GRAY);
        }
    }
}
Пример #5
0
CAListViewCell* CAListViewCell::create(const std::string& reuseIdentifier)
{
	CAListViewCell* cell = new CAListViewCell();
	if (cell && cell->initWithReuseIdentifier(reuseIdentifier))
	{
		cell->autorelease();
		return cell;
	}
	CC_SAFE_DELETE(cell);
	return NULL;
}
Пример #6
0
CAListViewCell* CAListView::dequeueReusableCellWithIdentifier(const char* reuseIdentifier)
{
	CAListViewCell* cell = NULL;

	if (reuseIdentifier && !m_pFreedListCells[reuseIdentifier].empty())
	{
		cell = m_pFreedListCells[reuseIdentifier].back();
		cell->retain()->autorelease();
		m_pFreedListCells[reuseIdentifier].popBack();
	}
    
	return cell;
}
Пример #7
0
void CAListView::loadCell()
{
	DRect rect = this->getBounds();
	rect.origin = getContentOffset();
    rect.origin.y -= rect.size.height * 0.1f;
    rect.origin.x -= rect.size.width * 0.1f;
    rect.size.width *= 1.2f;
    rect.size.height *= 1.2f;
    
	std::map<unsigned int, CAListViewCell*>::iterator itr;
	for (itr = m_mpUsedListCells.begin(); itr != m_mpUsedListCells.end(); itr++)
	{
		CC_CONTINUE_IF(itr->second != NULL);

		unsigned int index = itr->first;
		DRect cellRect = m_rIndexRects[index];
		CC_CONTINUE_IF(!rect.intersectsRect(cellRect));

		CAListViewCell* cell = m_pListViewDataSource->listViewCellAtIndex(this, cellRect.size, index);
		if (cell)
		{
            cell->m_nIndex = index;
            cell->updateDisplayedAlpha(this->getAlpha());
			addSubview(cell);
			cell->setFrame(cellRect);
            m_mpUsedListCells[index] = cell;
            m_vpUsedListCells.pushBack(cell);
		}

		if (m_pSelectedListCells.count(index))
		{
			cell->setControlState(CAControlStateSelected);
		}
        
        if (m_pListViewDataSource)
        {
            m_pListViewDataSource->listViewWillDisplayCellAtIndex(this, cell, index);
        }
        
        CAView* view = this->dequeueReusableLine();
        DRect lineRect = m_rLineRects[index];
        if (view == NULL)
        {
            view = CAView::createWithFrame(lineRect, m_obSeparatorColor);
        }
        m_pUsedLines[index] = view;
        this->insertSubview(view, 1);
		view->setFrame(lineRect);
	}
}
Пример #8
0
bool CAListView::ccTouchBegan(CATouch *pTouch, CAEvent *pEvent)
{
	if (!m_vTouches.empty())
	{
        m_vTouches.replace(0, pTouch);
		return true;
	}
    bool isInertia = m_tInertia.getLength() < 1.0f;
	if (!CAScrollView::ccTouchBegan(pTouch, pEvent))
		return false;

	if (m_bAllowsSelection && this->isScrollWindowNotOutSide() == false && isInertia)
	{
		DPoint point = m_pContainer->convertTouchToNodeSpace(pTouch);

		std::map<unsigned int, CAListViewCell*>::iterator itr;
		for (itr = m_mpUsedListCells.begin(); itr != m_mpUsedListCells.end(); ++itr)
		{
			CAListViewCell* pCell = itr->second;
			CC_CONTINUE_IF(pCell == NULL);

			if (pCell->getFrame().containsPoint(point) && pCell->isVisible())
			{
				CC_BREAK_IF(pCell->getControlState() == CAControlStateDisabled);

                if (m_pHighlightedListCells != pCell)
                {
                    if (m_pHighlightedListCells)
                    {
                        m_pHighlightedListCells->setControlStateNormal();
                    }
                    m_pHighlightedListCells = pCell;
                }

				CC_BREAK_IF(pCell->getControlState() == CAControlStateSelected);

                CAViewAnimation::beginAnimations(m_s__StrID, NULL);
                CAViewAnimation::setAnimationDuration(0.05f);
                CAViewAnimation::setAnimationDidStopSelector(pCell, CAViewAnimation0_selector(CAListViewCell::setControlStateHighlighted));
                CAViewAnimation::commitAnimations();
				break;
			}
		}
	}
	return true;
}
void SessionsViewController::listViewDidSelectCellAtIndex(CAListView *listView, unsigned int index)
{
	m_navTimeType = index;
    m_timeTblId = index;
	refreshTableByTime(m_navTimeType);
    CAListViewCell* cell = listView->cellForRowAtIndex(index);
    if (cell) {
        CALabel* text = (CALabel*)cell->getSubviewByTag(100);
        if (text) {
            text->setColor(CAColor_white);
        }
    }
    /*
    if (listView->getTag() == 100) {
        CAView * lable = listView->getSubviewByTag(100);
        //->setColor(ccc4(0x96, 0x96, 0x96, 255));
    }*/
}
Пример #10
0
bool CAListView::ccTouchBegan(CATouch *pTouch, CAEvent *pEvent)
{
	if (m_pTouches->count() > 0)
	{
		m_pTouches->replaceObjectAtIndex(0, pTouch);
		return true;
	}
    bool isInertia = m_tInertia.getLength() < 1.0f;
	if (!CAScrollView::ccTouchBegan(pTouch, pEvent))
		return false;

	if (m_bAllowsSelection && this->isScrollWindowNotOutSide() == false && isInertia)
	{
		CCPoint point = m_pContainer->convertTouchToNodeSpace(pTouch);

		std::map<unsigned int, CAListViewCell*>::iterator itr;
		for (itr = m_pUsedListCells.begin(); itr != m_pUsedListCells.end(); ++itr)
		{
			CAListViewCell* pCell = itr->second;
			CC_CONTINUE_IF(pCell == NULL);

			if (pCell->getFrame().containsPoint(point) && pCell->isVisible())
			{
				CC_BREAK_IF(pCell->getControlState() == CAControlStateDisabled);

				if (m_pHighlightedListCells)
				{
					m_pHighlightedListCells->setControlStateNormal();
				}

				m_pHighlightedListCells = pCell;

				CC_BREAK_IF(pCell->getControlState() == CAControlStateSelected);

				CCDelayTime* delayTime = CCDelayTime::create(0.05f);
				CCCallFunc* func = CCCallFunc::create(pCell, callfunc_selector(CAListViewCell::setControlStateHighlighted));
				CCSequence* actions = CCSequence::create(delayTime, func, NULL);
				m_pContainer->runAction(actions);
				break;
			}
		}
	}
	return true;
}
Пример #11
0
CAListViewCell* CDListViewTest::listViewCellAtIndex(CAListView *listView, const DSize& cellSize, unsigned int index)
{
    CAListViewCell* cell = (CAListViewCell*)listView->dequeueReusableCellWithIdentifier("ListViewCell");
    if (!cell)
    {
        cell = CAListViewCell::create("ListViewCell");
        CALabel* test = CALabel::createWithLayout(DLayoutFill);
        test->setColor(ccc4(51, 204, 255, 255));
        test->setTextAlignment(CATextAlignmentCenter);
        test->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);
        test->setFontSize(28);
        test->setTag(100);
        cell->addSubview(test);
    }
    char temptext[10];
    sprintf(temptext, "cell-%d",index);
    CALabel* test = (CALabel*)cell->getSubviewByTag(100);
    test->setText(temptext);
    
    return cell;
}
Пример #12
0
void CAListView::mouseMoved(CATouch* pTouch, CAEvent* pEvent)
{
    if (m_bAllowsSelection)
    {
        DPoint point = m_pContainer->convertTouchToNodeSpace(pTouch);
        
        std::map<unsigned int, CAListViewCell*>::iterator itr;
        for (itr = m_mpUsedListCells.begin(); itr != m_mpUsedListCells.end(); ++itr)
        {
            CAListViewCell* pCell = itr->second;
            CC_CONTINUE_IF(pCell == NULL);
            
            if (pCell->getFrame().containsPoint(point) && pCell->isVisible())
            {
                CC_BREAK_IF(pCell->getControlState() == CAControlStateDisabled);
                
                if (m_pHighlightedListCells)
                {
                    unsigned int index = m_pHighlightedListCells->getIndex();
                    if (m_pSelectedListCells.count(index))
                    {
                        m_pHighlightedListCells->setControlStateHighlighted();
                    }
                    else
                    {
                        m_pHighlightedListCells->setControlStateNormal();
                    }
                    
                }
                
                m_pHighlightedListCells = pCell;
                pCell->setControlStateHighlighted();

                break;
            }
        }
    }
}
Пример #13
0
void CAListView::reloadData()
{
	if (m_pListViewDataSource == NULL)
		return;
    
    this->reloadViewSizeData();
    
    this->removeAllSubviews();
    
    m_pUsedLines.clear();
	m_pUsedListCells.clear();
	m_pFreedListCells.clear();
    m_pSelectedListCells.clear();
	
	CCRect winRect = this->getBounds();
    winRect.origin = this->getContentOffset();
    
	if (m_nListHeaderHeight > 0)
	{
		if (m_pListHeaderView)
		{
			m_pListHeaderView->setFrame(m_rHeaderRect);
			addSubview(m_pListHeaderView);
		}
	}

	unsigned int cellCount = m_pListViewDataSource->numberOfIndex(this);
	for (unsigned i = 0; i < cellCount; i++)
	{
		if (m_nIndexs > 0)
		{
			std::pair<std::map<unsigned int, CAListViewCell*>::iterator, bool> itrResult =
				m_pUsedListCells.insert(std::make_pair(i, (CAListViewCell*)NULL));

			CC_CONTINUE_IF(!winRect.intersectsRect(m_rIndexRects[i]));

			CAListViewCell* pCellView = m_pListViewDataSource->listViewCellAtIndex(this, m_rIndexRects[i].size, i);
			if (pCellView)
			{
				pCellView->m_nIndex = i;
				pCellView->setFrame(m_rIndexRects[i]);
				addSubview(pCellView);
				itrResult.first->second = pCellView;
			}
		}
        
		if (m_nSeparatorViewHeight > 0)
		{
			CAView* view = CAView::createWithFrame(m_rLineRects[i], m_obSeparatorColor);
			addSubview(view);
            m_pUsedLines[i] = view;
		}
	}

	if (m_nListFooterHeight > 0)
	{
		if (m_pListFooterView)
		{
			m_pListFooterView->setFrame(m_rFooterRect);
			addSubview(m_pListFooterView);
		}
	}
    this->layoutPullToRefreshView();
    this->startDeaccelerateScroll();
}
CAListViewCell* SessionsViewController::listViewCellAtIndex(CAListView *listView, const DSize& cellSize, unsigned int index)
{
    CAListViewCell* cell = NULL;
    if (listView->getTag() == 1)
    {
        DSize _size = cellSize;
        cell = (CAListViewCell*)listView->dequeueReusableCellWithIdentifier("ListViewCell");
        if (!cell)
        {
            cell = CAListViewCell::create("ListViewCell");
            cell->setColor(ccc4(0xEB, 0xEB, 0xEB, 0xff));
            CALabel* test = CALabel::createWithCenter(DRect(_size.width/2,
                                                            _size.height/2,
                                                            _size.width,
                                                            _size.height));
            test->setTextAlignment(CATextAlignmentCenter);
            test->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);
            test->setFontSize((28));
            test->setTag(100);
            CAScale9ImageView* sView = CAScale9ImageView::createWithImage(CAImage::create("common/gray_bg.png"));
            sView->setFrame(DRect((0), (0), _size.width, _size.height));
            cell->setBackgroundView(sView);
            cell->addSubview(test);
        }
        CALabel* test = (CALabel*)cell->getSubviewByTag(100);
        if (m_timeTblId == index)
            test->setColor(CAColor_white); // ccc4(0x96, 0x96, 0x96, 255)
        else
            test->setColor(SAP_GRAY);
        if (index == 0)
        {
            test->setText("All");
        }
        else
        {
            test->setText(crossapp_format_string("%2d:00", index + 8));
        }
    }
    /*
    else if(listView->getTag() == 2)
    {
        DSize _size = cellSize;
        cell = (CAListViewCell*)listView->dequeueReusableCellWithIdentifier("ListViewCell");
        if (!cell)
        {
            cell = CAListViewCell::create("ListViewCell");
            CAButton* button = CAButton::createWithFrame(DRect((20), (20), (120), (40)), CAButtonTypeCustom);

            CAScale9ImageView* sView = CAScale9ImageView::createWithFrame(DRect((0), (0), (120), (40)));
            sView->setImage(CAImage::create("common/seggreen_bg.png"));
            sView->setTouchEnabled(false);
            button->addSubview(sView);
            //button->setBackgroundViewForState(CAControlStateAll, sView);
            sView = CAScale9ImageView::createWithFrame(DRect((0), (0), (120), (40)));
            sView->setImage(CAImage::create("common/seggreen_bg.png"));
            sView->setColor(ccc4(0x86, 0xBD, 0x45, 0xff));
            button->setBackgroundViewForState(CAControlStateSelected, sView);
            button->setTitleForState(CAControlStateAll, filterItem[index * 2]);
            button->setTitleColorForState(CAControlStateAll, ccc4(0xA0, 0xA0, 0xA0, 0xA0));
            button->setTitleFontSize((20));
            button->setAllowsSelected(true);
            button->addTarget(this, CAControl_selector(SessionsViewController::buttonCallBack), CAControlEventTouchUpInSide);
            button->setTag(310 + index * 2);
            //m_listButton[index * 2] = button;
            cell->addSubview(button);
            
            button = CAButton::createWithFrame(DRect((20), (70), (120), (40)), CAButtonTypeCustom);
            sView = CAScale9ImageView::createWithFrame(DRect((0), (0), (120), (40)));
            sView->setImage(CAImage::create("common/seggreen_bg.png"));
            sView->setTouchEnabled(false);
            button->addSubview(sView);
            //button->setBackgroundViewForState(CAControlStateAll, sView);
            //button->addSubview(sView);
            //button->setBackgroundViewForState(CAControlStateAll, sView);
            sView = CAScale9ImageView::createWithFrame(DRect((0), (0), (120), (40)));
            sView->setImage(CAImage::create("common/btn_round.png"));
            sView->setColor(ccc4(0x86, 0xBD, 0x45, 0xff));
            button->setBackgroundViewForState(CAControlStateSelected, sView);
            button->setTitleForState(CAControlStateAll, filterItem[index * 2 + 1]);
            button->setTitleColorForState(CAControlStateAll, CAColor_gray);
            button->setTitleFontSize((20));
            button->setAllowsSelected(true);
            button->addTarget(this, CAControl_selector(SessionsViewController::buttonCallBack), CAControlEventTouchUpInSide);
            button->setTag(310 + index * 2 + 1);
            //m_listButton[index * 2 + 1] = button;
            cell->addSubview(button);
            
            //sView = CAScale9ImageView::createWithImage(CAImage::create("common/gray_bg.png"));
            //sView->setFrame(DRect((0), (0), _size.width, _size.height));
            //sView->setColor(CAColor_clear);
            //cell->setAlpha(0);
            //cell->setBackgroundView(sView);
                            
        }
        
    }*/
    return cell;
}