[escher] Change dynamic view controller paradigm

Change-Id: I57fd41c9b9ad8a1e8b684b97fdf80ddffd71881d
This commit is contained in:
Émilie Feral
2017-05-03 10:26:44 +02:00
parent a1f3c21d9b
commit 70fc734f7b
61 changed files with 338 additions and 475 deletions

View File

@@ -57,8 +57,10 @@ KDRect ModalViewController::ContentView::frame() {
}
void ModalViewController::ContentView::layoutSubviews() {
assert(m_regularView != nullptr);
m_regularView->setFrame(bounds());
if (numberOfSubviews() == 2) {
assert(m_currentModalView != nullptr);
m_currentModalView->setFrame(frame());
}
}
@@ -110,8 +112,6 @@ void ModalViewController::displayModalViewController(ViewController * vc, float
m_currentModalViewController = vc;
vc->setParentResponder(this);
m_previousResponder = app()->firstResponder();
m_regularViewController->viewDidDisappear();
vc->loadView();
m_contentView.presentModalView(vc->view(), verticalAlignment, horizontalAlignment, topMargin, leftMargin, bottomMargin, rightMargin);
m_currentModalViewController->viewWillAppear();
app()->setFirstResponder(vc);
@@ -119,10 +119,8 @@ void ModalViewController::displayModalViewController(ViewController * vc, float
void ModalViewController::dismissModalViewController() {
m_currentModalViewController->viewDidDisappear();
m_regularViewController->viewWillAppear();
app()->setFirstResponder(m_previousResponder);
m_contentView.dismissModalView();
m_currentModalViewController->unloadView();
m_currentModalViewController = nullptr;
}
@@ -145,6 +143,8 @@ bool ModalViewController::handleEvent(Ion::Events::Event event) {
}
void ModalViewController::viewWillAppear() {
m_contentView.setMainView(m_regularViewController->view());
m_contentView.layoutSubviews();
if (m_contentView.isDisplayingModal()) {
m_currentModalViewController->viewWillAppear();
}
@@ -157,19 +157,3 @@ void ModalViewController::viewDidDisappear() {
}
m_regularViewController->viewDidDisappear();
}
void ModalViewController::loadView() {
if (m_contentView.isDisplayingModal()) {
m_currentModalViewController->loadView();
}
m_regularViewController->loadView();
m_contentView.setMainView(m_regularViewController->view());
m_contentView.layoutSubviews();
}
void ModalViewController::unloadView() {
if (m_contentView.isDisplayingModal()) {
m_currentModalViewController->unloadView();
}
m_regularViewController->unloadView();
}