void CANavigationBar::showLeftButton() { std::vector<CAButton*>::iterator itr; for (itr = m_pLeftButtons.begin(); itr != m_pLeftButtons.end(); itr++) { (*itr)->removeFromSuperview(); } m_pLeftButtons.clear(); const CAVector<CAObject*>& buttonItems = m_pItem->getLeftButtonItems(); CCRect rect; rect.size.width = _px(80); rect.size.height = this->getBounds().size.height * 0.8f; rect.origin.x = rect.size.width * 0.7f; rect.origin.y = this->getBounds().size.height * 0.5f; for (size_t i=0; i<buttonItems.size(); i++) { CABarButtonItem* item = dynamic_cast<CABarButtonItem*>(buttonItems.at(i)); rect.size.width = item ? item->getItemWidth() : _px(80); rect.origin.x += i * rect.size.width; CAButton* button = CAButton::createWithCenter(rect, CAButtonTypeCustom); this->addSubview(button); if (item == NULL && m_pItem) { button->setImageForState(CAControlStateNormal, CAImage::create("source_material/btn_left_white.png")); button->setImageColorForState(CAControlStateHighlighted, ccc4(255, 255, 200, 255)); button->addTarget(this, CAControl_selector(CANavigationBar::goBack), CAControlEventTouchUpInSide); } else if (item) { if (item->getImage()) { button->setImageForState(CAControlStateNormal, item->getImage()); if (item->getHighlightedImage()) { button->setImageForState(CAControlStateHighlighted, item->getHighlightedImage()); } else { button->setImageColorForState(CAControlStateHighlighted, ccc4(127, 127, 127, 255)); } } else { button->setTitleForState(CAControlStateNormal, item->getTitle()); button->setTitleColorForState(CAControlStateNormal, m_cButtonColor); button->setTitleForState(CAControlStateHighlighted, item->getTitle()); button->setTitleColorForState(CAControlStateHighlighted, ccc4(m_cButtonColor.r/2, m_cButtonColor.g/2, m_cButtonColor.b/2, 255)); } button->addTarget(item->getTarget(), item->getSel(), CAControlEventTouchUpInSide); } m_pLeftButtons.push_back(button); } }
void CANavigationBar::showLeftButton() { std::vector<CAButton*>::iterator itr; for (itr = m_pLeftButtons.begin(); itr != m_pLeftButtons.end(); itr++) { (*itr)->removeFromSuperview(); } m_pLeftButtons.clear(); CCArray* buttonItems = m_pItems.back()->getLeftButtonItems(); CCRect rect = this->getBounds(); rect.size.width = rect.size.height * 0.9f; rect.size.height *= 0.8f; rect.origin.x = rect.size.width * 0.7f; rect.origin.y = this->getBounds().size.height / 2; for (int i=0; i<buttonItems->count(); i++) { rect.origin.x += i * rect.size.width * 1.1f; CAButton* button = CAButton::createWithCenter(rect, CAButtonTypeCustom); this->addSubview(button); CABarButtonItem* item = dynamic_cast<CABarButtonItem*>(buttonItems->objectAtIndex(i)); if (item == NULL && m_pItems.size() > 1) { button->setImageForState(CAControlStateNormal, CAImage::create("source_material/btn_left_white.png")); button->setImageColorForState(CAControlStateHighlighted, ccc4(255, 255, 200, 255)); button->addTarget(this, CAControl_selector(CANavigationBar::goBack), CAControlEventTouchUpInSide); } else if (item) { button->setTitleForState(CAControlStateNormal, item->getTitle()); button->setTitleColorForState(CAControlStateNormal, CAColor_white); button->setTitleForState(CAControlStateHighlighted, item->getTitle()); button->setTitleColorForState(CAControlStateHighlighted, ccc4(255, 255, 200, 255)); button->setImageForState(CAControlStateNormal, item->getImage()); if (item->getHighlightedImage()) { button->setImageForState(CAControlStateHighlighted, item->getHighlightedImage()); } else { button->setImageColorForState(CAControlStateHighlighted, ccc4(255, 255, 200, 255)); } button->addTarget(item->getTarget(), item->getSel(), CAControlEventTouchUpInSide); } m_pLeftButtons.push_back(button); } }