Merge pull request #112 from klockee/interactive_titlebar

Added interactive titlebar
This commit is contained in:
Erwin Ried 2020-08-02 17:25:20 +02:00 committed by GitHub
commit 4eb3979ace
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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,
&button_back,
&title,
&button_title,
&button_speaker,
&button_stealth,
//&button_textentry,
@ -138,6 +139,10 @@ SystemStatusView::SystemStatusView(
if (this->on_back)
this->on_back();
};
button_title.on_select = [this](ImageButton&) {
this->on_title();
};
button_speaker.on_select = [this](ImageButton&) {
this->on_speaker();
@ -194,8 +199,23 @@ void SystemStatusView::refresh() {
}
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) {
@ -282,6 +302,10 @@ void SystemStatusView::on_camera() {
}
}
void SystemStatusView::on_title() {
nav_.push<AboutView>();
}
/* Navigation ************************************************************/
bool NavigationView::is_top() const {
@ -515,8 +539,11 @@ SystemView::SystemView(
});
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_title_image_enabled(this->navigation_view.is_top());
this->status_view.set_dirty();
this->status_view.set_title(new_view.title());
};
// portapack::persistent_memory::set_playdead_sequence(0x8D1);

View File

@ -106,10 +106,11 @@ public:
SystemStatusView(NavigationView& nav);
void set_back_enabled(bool new_value);
void set_title_image_enabled(bool new_value);
void set_title(const std::string new_value);
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_;
@ -130,6 +131,13 @@ private:
default_title,
};
ImageButton button_title {
{2, 0, 80, 16},
&bitmap_titlebar_image,
Color::white(),
Color::dark_grey()
};
ImageButton button_speaker {
{ 17 * 8, 0, 2 * 8, 1 * 16 },
&bitmap_icon_speaker_mute,
@ -188,6 +196,7 @@ private:
void on_bias_tee();
//void on_textentry();
void on_camera();
void on_title();
void refresh();
MessageHandlerRegistration message_handler_refresh {

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB