Files
Upsilon/escher/include/escher/tab_view_controller.h
Émilie Feral 68db109faf [escher] add a third tab in tab view controller
Change-Id: Ia0c3f252a3779e9506c25bd894aac43f486cba8b
2016-10-12 17:38:53 +02:00

50 lines
1.3 KiB
C++

#ifndef ESCHER_TAB_VIEW_CONTROLLER_H
#define ESCHER_TAB_VIEW_CONTROLLER_H
#include <escher/view_controller.h>
#include <escher/tab_view.h>
class TabViewController : public ViewController {
public:
TabViewController(Responder * parentResponder, ViewController * one, ViewController * two, ViewController * three);
//TabViewController(ViewController ** children, uint8_t numberOfChildren);
View * view() override;
void setSelectedTab(int8_t index);
void setActiveTab(int8_t index);
uint8_t numberOfTabs();
const char * tabName(uint8_t index);
bool handleEvent(Ion::Events::Event event) override;
void didBecomeFirstResponder() override;
void didResignFirstResponder() override;
private:
class ContentView : public View {
public:
ContentView();
void setActiveView(View * view);
TabView m_tabView;
protected:
#if ESCHER_VIEW_LOGGING
const char * className() const override;
#endif
private:
int numberOfSubviews() const override;
View * subviewAtIndex(int index) override;
void layoutSubviews() override;
View * m_activeView;
};
ContentView m_view;
static constexpr uint8_t k_maxNumberOfChildren = 4;
ViewController * m_children[k_maxNumberOfChildren];
uint8_t m_numberOfChildren;
int8_t m_activeChildIndex;
int8_t m_selectedChildIndex;
};
#endif