Files
Upsilon/escher/include/escher/tab_view_controller.h
Émilie Feral 747bcb808a [escher] Clean tab view controller
Change-Id: Ia56e0d9d4efd9bad87e7ef4c7a183f0c7efedaad
2017-05-31 12:21:46 +02:00

53 lines
1.5 KiB
C++

#ifndef ESCHER_TAB_VIEW_CONTROLLER_H
#define ESCHER_TAB_VIEW_CONTROLLER_H
#include <escher/view_controller.h>
#include <escher/tab_view_data_source.h>
#include <escher/tab_view.h>
class TabViewController : public ViewController {
public:
TabViewController(Responder * parentResponder, TabViewDataSource * dataSource, ViewController * one, ViewController * two, ViewController * three, ViewController * four = nullptr);
View * view() override;
int activeTab() const;
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 didEnterResponderChain(Responder * previousResponder) override;
void willResignFirstResponder() override;
void viewWillAppear() override;
void viewDidDisappear() override;
private:
ViewController * activeViewController();
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;
TabViewDataSource * m_dataSource;
};
#endif