#include #include extern "C" { #include } TabView::TabView() : View(), m_numberOfTabs(0), m_activeTabIndex(0) { } void TabView::drawRect(KDRect rect) const { KDFillRect(rect, KDColorRGB(0xb5, 0x1d, 0xab)); } void TabView::addTabNamed(const char * name) { assert(m_numberOfTabs < k_maxNumberOfTabs); uint8_t tabIndex = m_numberOfTabs; m_cells[tabIndex].setName(name); m_numberOfTabs++; //setSubview(&m_cells[tabIndex], tabIndex); markRectAsDirty(bounds()); } void TabView::setActiveIndex(int index) { assert(index < m_numberOfTabs); if (m_activeTabIndex == index) { return; } m_cells[m_activeTabIndex].setActive(false); m_activeTabIndex = index; m_cells[m_activeTabIndex].setActive(true); } int TabView::numberOfSubviews() const { return m_numberOfTabs; } View * TabView::subviewAtIndex(int index) { assert(index < m_numberOfTabs); return &m_cells[index]; } void TabView::layoutSubviews() { // Simple layout: all tabs have the same length KDCoordinate tabLength = m_frame.width/m_numberOfTabs; for (int i=0; i