From 91c9b3addf5f3db972fd28752855eda811221afe Mon Sep 17 00:00:00 2001 From: Hannes Schulze Date: Fri, 2 May 2025 15:16:35 +0200 Subject: different action depending on file extension --- lib/nes/app/ui/screen-browser.cc | 35 +++++++++++++++++++++++++---------- lib/nes/app/ui/screen-browser.hh | 2 +- 2 files changed, 26 insertions(+), 11 deletions(-) (limited to 'lib/nes/app/ui') diff --git a/lib/nes/app/ui/screen-browser.cc b/lib/nes/app/ui/screen-browser.cc index 84fb647..080f869 100644 --- a/lib/nes/app/ui/screen-browser.cc +++ b/lib/nes/app/ui/screen-browser.cc @@ -8,6 +8,29 @@ namespace nes::app { + namespace + { + auto default_file_action(string_view const file_name) -> action + { + if (file_name.has_suffix(".nes")) + { + return action::launch_game(file_name); + } + else if (file_name.has_suffix(".aes")) + { + return action::prompt_key(file_name); + } + else if (file_name.has_suffix(".txt")) + { + return action::view_file(file_name); + } + else + { + return action::show_error("Unable to open file", status::error_unknown_file_type); + } + } + } // namespace + auto screen_browser::selection_impl::render_item( renderer& renderer, item const& item, i32 const x, i32 const y, u32 const width, color const c) const -> void { @@ -111,14 +134,6 @@ namespace nes::app return action::go_to_title(); } } - else if (event == input_event::key_down(key::letter_d)) - { - auto const selected = selection_.get_selected(); - if (selected && selected->entry.get_type() == file_browser::entry_type::file) - { - return action::prompt_key(selected->entry.get_name()); - } - } else if (event == input_event::key_down(key::enter)) { auto const selected = selection_.get_selected(); @@ -144,7 +159,7 @@ namespace nes::app } else if (selected->entry.get_type() == file_browser::entry_type::file) { - return action::launch_game(selected->entry.get_name()); + return default_file_action(selected->entry.get_name()); } } } @@ -163,4 +178,4 @@ namespace nes::app // Always show at least one page. selection_.set_page_count(max(u32{ 1 }, page_count)); } -} // namespace nes::app \ No newline at end of file +} // namespace nes::app diff --git a/lib/nes/app/ui/screen-browser.hh b/lib/nes/app/ui/screen-browser.hh index 4ba6e73..d31bef3 100644 --- a/lib/nes/app/ui/screen-browser.hh +++ b/lib/nes/app/ui/screen-browser.hh @@ -49,4 +49,4 @@ namespace nes::app private: auto refresh() -> void; }; -} // namespace nes::app \ No newline at end of file +} // namespace nes::app -- cgit v1.3.1