Added interactive titlebar!

This commit is contained in:
BuildTools 2020-08-01 21:55:09 -04:00
parent f21e26eaa3
commit 246e628df8
4 changed files with 2043 additions and 1985 deletions

File diff suppressed because it is too large Load Diff

View File

@ -106,6 +106,7 @@ SystemStatusView::SystemStatusView(
&backdrop, &backdrop,
&button_back, &button_back,
&title, &title,
&button_title,
&button_speaker, &button_speaker,
&button_stealth, &button_stealth,
//&button_textentry, //&button_textentry,
@ -139,6 +140,10 @@ SystemStatusView::SystemStatusView(
this->on_back(); this->on_back();
}; };
button_title.on_select = [this](ImageButton&) {
this->on_title();
};
button_speaker.on_select = [this](ImageButton&) { button_speaker.on_select = [this](ImageButton&) {
this->on_speaker(); this->on_speaker();
}; };
@ -194,8 +199,23 @@ void SystemStatusView::refresh() {
} }
void SystemStatusView::set_back_enabled(bool new_value) { void SystemStatusView::set_back_enabled(bool new_value) {
button_back.set_foreground(new_value ? Color::white() : Color::dark_grey());
button_back.set_focusable(new_value); if(new_value){
add_child(&button_back);
}
else{
remove_child(&button_back);
}
}
void SystemStatusView::set_title_image_enabled(bool new_value) {
if(new_value){
add_child(&button_title);
}
else{
remove_child(&button_title);
}
} }
void SystemStatusView::set_title(const std::string new_value) { void SystemStatusView::set_title(const std::string new_value) {
@ -282,6 +302,10 @@ void SystemStatusView::on_camera() {
} }
} }
void SystemStatusView::on_title() {
nav_.push<AboutView>();
}
/* Navigation ************************************************************/ /* Navigation ************************************************************/
bool NavigationView::is_top() const { bool NavigationView::is_top() const {
@ -515,9 +539,12 @@ SystemView::SystemView(
}); });
navigation_view.on_view_changed = [this](const View& new_view) { navigation_view.on_view_changed = [this](const View& new_view) {
this->status_view.set_back_enabled(!this->navigation_view.is_top()); this->status_view.set_back_enabled(!this->navigation_view.is_top());
this->status_view.set_title_image_enabled(this->navigation_view.is_top());
this->status_view.set_dirty();
this->status_view.set_title(new_view.title()); this->status_view.set_title(new_view.title());
}; };
// portapack::persistent_memory::set_playdead_sequence(0x8D1); // portapack::persistent_memory::set_playdead_sequence(0x8D1);
// Initial view // Initial view

View File

@ -106,10 +106,11 @@ public:
SystemStatusView(NavigationView& nav); SystemStatusView(NavigationView& nav);
void set_back_enabled(bool new_value); void set_back_enabled(bool new_value);
void set_title_image_enabled(bool new_value);
void set_title(const std::string new_value); void set_title(const std::string new_value);
private: private:
static constexpr auto default_title = "MAYHEM v1.1.1"; // TODO: Move the version somewhere static constexpr auto default_title = " v1.1.1"; // TODO: Move the version somewhere
NavigationView& nav_; NavigationView& nav_;
@ -130,6 +131,13 @@ private:
default_title, default_title,
}; };
ImageButton button_title {
{2, 0, 80, 16},
&bitmap_titlebar_image,
Color::white(),
Color::dark_grey()
};
ImageButton button_speaker { ImageButton button_speaker {
{ 17 * 8, 0, 2 * 8, 1 * 16 }, { 17 * 8, 0, 2 * 8, 1 * 16 },
&bitmap_icon_speaker_mute, &bitmap_icon_speaker_mute,
@ -188,6 +196,7 @@ private:
void on_bias_tee(); void on_bias_tee();
//void on_textentry(); //void on_textentry();
void on_camera(); void on_camera();
void on_title();
void refresh(); void refresh();
MessageHandlerRegistration message_handler_refresh { MessageHandlerRegistration message_handler_refresh {

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB