mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-18 16:27:34 +01:00
[escher] StackViewController: add a method to return the
topViewController
This commit is contained in:
@@ -18,6 +18,7 @@ public:
|
||||
|
||||
int depth();
|
||||
View * view() override;
|
||||
ViewController * topViewController();
|
||||
const char * title() override;
|
||||
bool handleEvent(Ion::Events::Event event) override;
|
||||
void didBecomeFirstResponder() override;
|
||||
|
||||
@@ -92,6 +92,13 @@ const char * StackViewController::title() {
|
||||
return vc->title();
|
||||
}
|
||||
|
||||
ViewController * StackViewController::topViewController() {
|
||||
if (m_numberOfChildren < 1) {
|
||||
return nullptr;
|
||||
}
|
||||
return m_childrenFrame[m_numberOfChildren-1].viewController();
|
||||
}
|
||||
|
||||
void StackViewController::push(ViewController * vc, KDColor textColor, KDColor backgroundColor, KDColor separatorColor) {
|
||||
Frame frame = Frame(vc, textColor, backgroundColor, separatorColor);
|
||||
/* Add the frame to the model */
|
||||
@@ -112,7 +119,7 @@ void StackViewController::push(ViewController * vc, KDColor textColor, KDColor b
|
||||
|
||||
void StackViewController::pop() {
|
||||
assert(m_numberOfChildren > 0);
|
||||
ViewController * vc = m_childrenFrame[m_numberOfChildren-1].viewController();
|
||||
ViewController * vc = topViewController();
|
||||
if (vc->title() != nullptr && vc->displayParameter() != ViewController::DisplayParameter::DoNotShowOwnTitle) {
|
||||
m_view.popStack();
|
||||
}
|
||||
@@ -131,7 +138,7 @@ void StackViewController::pushModel(Frame frame) {
|
||||
}
|
||||
|
||||
void StackViewController::setupActiveViewController() {
|
||||
ViewController * vc = m_childrenFrame[m_numberOfChildren-1].viewController();
|
||||
ViewController * vc = topViewController();
|
||||
vc->setParentResponder(this);
|
||||
m_view.shouldDisplayStackHearders(vc->displayParameter() != ViewController::DisplayParameter::WantsMaximumSpace);
|
||||
m_view.setContentView(vc->view());
|
||||
@@ -141,7 +148,7 @@ void StackViewController::setupActiveViewController() {
|
||||
}
|
||||
|
||||
void StackViewController::didBecomeFirstResponder() {
|
||||
ViewController * vc = m_childrenFrame[m_numberOfChildren-1].viewController();
|
||||
ViewController * vc = topViewController();
|
||||
Container::activeApp()->setFirstResponder(vc);
|
||||
}
|
||||
|
||||
@@ -170,7 +177,7 @@ void StackViewController::viewWillAppear() {
|
||||
}
|
||||
}
|
||||
/* Load the visible controller view */
|
||||
ViewController * vc = m_childrenFrame[m_numberOfChildren-1].viewController();
|
||||
ViewController * vc = topViewController();
|
||||
if (m_numberOfChildren > 0 && vc) {
|
||||
m_view.setContentView(vc->view());
|
||||
m_view.shouldDisplayStackHearders(vc->displayParameter() != ViewController::DisplayParameter::WantsMaximumSpace);
|
||||
@@ -180,7 +187,7 @@ void StackViewController::viewWillAppear() {
|
||||
}
|
||||
|
||||
void StackViewController::viewDidDisappear() {
|
||||
ViewController * vc = m_childrenFrame[m_numberOfChildren-1].viewController();
|
||||
ViewController * vc = topViewController();
|
||||
if (m_numberOfChildren > 0 && vc) {
|
||||
vc->viewDidDisappear();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user