Make sure screen manager and other screens are properly calling onShow and onHide.
This commit is contained in:
parent
a8c14d2b6f
commit
615bcd1fde
8 changed files with 37 additions and 13 deletions
|
@ -9,17 +9,18 @@ Manager &Manager::getInstance() { return mManager; }
|
|||
|
||||
Manager::Manager() {}
|
||||
|
||||
void Manager::pushScreen(Screen::Base::Ptr aScreen) {
|
||||
mScreens.back()->OnHide();
|
||||
mScreens.push_back(std::move(aScreen));
|
||||
mScreens.back()->Show();
|
||||
}
|
||||
|
||||
void Manager::pushScreen(Screen::Base::Ptr aScreen,
|
||||
lv_scr_load_anim_t aPushAnimation) {
|
||||
aScreen->SetPushAnimation(aPushAnimation);
|
||||
pushScreen(std::move(aScreen));
|
||||
}
|
||||
|
||||
void Manager::pushScreen(Screen::Base::Ptr aScreen) {
|
||||
mScreens.push_back(std::move(aScreen));
|
||||
mScreens.back()->Show();
|
||||
}
|
||||
|
||||
void Manager::pushPopUp(Page::Base::Ptr aPopUpPage,
|
||||
lv_scr_load_anim_t aPushAnimation) {
|
||||
pushScreen(std::make_unique<PopUpScreen>(std::move(aPopUpPage)),
|
||||
|
@ -41,12 +42,15 @@ UI::Screen::Base::Ptr Manager::popScreen(Screen::Base *aScreenToRemove) {
|
|||
// Make sure to show correct top of stack
|
||||
// since we popped the top screen off
|
||||
mScreens.back()->Show();
|
||||
// Make sure to notify the screen that just got moved off top
|
||||
retVal->OnHide();
|
||||
// In order to make sure the Transition can complete
|
||||
// flag the removed screen to stay alive in case it falls
|
||||
// out of scope and gets deleted quickly after this.
|
||||
retVal->SetKeepAliveTime(mScreens.back()->GetTransitionTime() + 500);
|
||||
}
|
||||
}
|
||||
// In order to make sure the Transition can complete
|
||||
// flag the removed screen to stay alive in case it falls
|
||||
// out of scope and gets deleted quickly after this.
|
||||
retVal->SetKeepAliveTime(mScreens.back()->GetTransitionTime() + 500);
|
||||
|
||||
return retVal;
|
||||
}
|
||||
|
||||
|
|
|
@ -7,6 +7,9 @@ class DisplaySettings : public Base {
|
|||
public:
|
||||
DisplaySettings(std::shared_ptr<DisplayAbstract> aDisplay);
|
||||
|
||||
void OnShow() override{};
|
||||
void OnHide() override{};
|
||||
|
||||
private:
|
||||
std::shared_ptr<DisplayAbstract> mDisplay;
|
||||
};
|
||||
|
|
|
@ -72,4 +72,8 @@ void TabView::OnLvglEvent(lv_event_t *anEvent) {
|
|||
if (anEvent->code == LV_EVENT_VALUE_CHANGED) {
|
||||
HandleTabChange();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TabView::OnShow() { mTabs[GetCurrentTabIdx()]->OnShow(); }
|
||||
|
||||
void TabView::OnHide() { mTabs[GetCurrentTabIdx()]->OnHide(); }
|
|
@ -36,10 +36,11 @@ public:
|
|||
|
||||
bool KeyEvent(KeyPressAbstract::KeyEvent aKeyEvent) override;
|
||||
|
||||
void OnShow() override;
|
||||
void OnHide() override;
|
||||
|
||||
protected:
|
||||
void OnLvglEvent(lv_event_t *anEvent) override;
|
||||
void OnShow() override {}
|
||||
void OnHide() override {}
|
||||
|
||||
private:
|
||||
void HandleTabChange();
|
||||
|
|
|
@ -26,6 +26,9 @@ bool HomeScreen::OnKeyEvent(KeyPressAbstract::KeyEvent aKeyEvent) {
|
|||
return false;
|
||||
};
|
||||
|
||||
void HomeScreen::OnShow() { mTabView.OnShow(); };
|
||||
void HomeScreen::OnHide() { mTabView.OnHide(); };
|
||||
|
||||
bool HomeScreen::KeyEvent(KeyPressAbstract::KeyEvent aKeyEvent) {
|
||||
if (OnKeyEvent(aKeyEvent)) {
|
||||
return true;
|
||||
|
|
|
@ -16,6 +16,8 @@ public:
|
|||
bool KeyEvent(KeyPressAbstract::KeyEvent aKeyEvent) override;
|
||||
|
||||
protected:
|
||||
void OnShow() override;
|
||||
void OnHide() override;
|
||||
bool OnKeyEvent(KeyPressAbstract::KeyEvent aKeyEvent) override;
|
||||
|
||||
private:
|
||||
|
|
|
@ -21,4 +21,7 @@ PopUpScreen::PopUpScreen(Page::Base::Ptr aPage)
|
|||
|
||||
bool PopUpScreen::OnKeyEvent(KeyPressAbstract::KeyEvent aKeyEvent) {
|
||||
return mContentPage->OnKeyEvent(aKeyEvent);
|
||||
}
|
||||
}
|
||||
|
||||
void PopUpScreen::OnShow() { mContentPage->OnShow(); };
|
||||
void PopUpScreen::OnHide() { mContentPage->OnHide(); };
|
|
@ -13,6 +13,10 @@ public:
|
|||
|
||||
bool OnKeyEvent(KeyPressAbstract::KeyEvent aKeyEvent) override;
|
||||
|
||||
protected:
|
||||
void OnShow() override;
|
||||
void OnHide() override;
|
||||
|
||||
private:
|
||||
UI::Page::Base::Ptr mContentPage;
|
||||
std::unique_ptr<Widget::Button> mExitButton;
|
||||
|
|
Loading…
Add table
Reference in a new issue