Files
Upsilon/escher/include/escher/modal_view_controller.h
Léa Saviot 8778516fe2 [escher] expressionLayoutFieldDidChangeSize reloads only the modalView
Change-Id: Ib406c7d10e2befae9d660e025c84df58a2e9b70c
2018-04-25 15:15:12 +02:00

55 lines
1.8 KiB
C++

#ifndef ESCHER_MODAL_VIEW_CONTROLLER_H
#define ESCHER_MODAL_VIEW_CONTROLLER_H
#include <escher/view_controller.h>
#include <escher/stack_view.h>
class ModalViewController : public ViewController {
public:
ModalViewController(Responder * parentResponder, ViewController * child);
View * view() override;
bool handleEvent(Ion::Events::Event event) override;
void didBecomeFirstResponder() override;
void displayModalViewController(ViewController * vc, float verticalAlignment, float horizontalAlignment,
KDCoordinate topMargin = 0, KDCoordinate leftMargin = 0, KDCoordinate bottomMargin = 0, KDCoordinate rightMargin = 0);
void reloadModalViewController();
void dismissModalViewController();
bool isDisplayingModal();
void viewWillAppear() override;
void viewDidDisappear() override;
protected:
void reloadView();
private:
class ContentView : public View {
public:
ContentView();
void setMainView(View * regularView);
int numberOfSubviews() const override;
View * subviewAtIndex(int index) override;
void layoutSubviews() override;
void presentModalView(View * modalView, float verticalAlignment, float horizontalAlignment,
KDCoordinate topMargin, KDCoordinate leftMargin, KDCoordinate bottomMargin, KDCoordinate rightMargin);
void dismissModalView();
bool isDisplayingModal() const;
void reload();
private:
KDRect modalViewFrame() const;
View * m_regularView;
View * m_currentModalView;
bool m_isDisplayingModal;
float m_verticalAlignment;
float m_horizontalAlignment;
KDCoordinate m_topMargin;
KDCoordinate m_leftMargin;
KDCoordinate m_bottomMargin;
KDCoordinate m_rightMargin;
};
ContentView m_contentView;
Responder * m_previousResponder;
ViewController * m_currentModalViewController;
ViewController * m_regularViewController;
};
#endif