diff options
Diffstat (limited to 'lib/nes/app')
| -rw-r--r-- | lib/nes/app/graphics/tiles/CMakeLists.txt | 5 | ||||
| -rw-r--r-- | lib/nes/app/graphics/tiles/icon_document.png | bin | 0 -> 4238 bytes | |||
| -rw-r--r-- | lib/nes/app/ui/screen-browser.cc | 33 |
3 files changed, 28 insertions, 10 deletions
diff --git a/lib/nes/app/graphics/tiles/CMakeLists.txt b/lib/nes/app/graphics/tiles/CMakeLists.txt index 5dced68..bdb6f48 100644 --- a/lib/nes/app/graphics/tiles/CMakeLists.txt +++ b/lib/nes/app/graphics/tiles/CMakeLists.txt @@ -77,7 +77,8 @@ nes_generate_tiles( TYPE mask FILES icon_directory.png - icon_cartridge.png) + icon_cartridge.png + icon_document.png) nes_generate_tiles( nes @@ -97,4 +98,4 @@ nes_generate_tiles( nes banner TYPE image - FILES banner.png)
\ No newline at end of file + FILES banner.png) diff --git a/lib/nes/app/graphics/tiles/icon_document.png b/lib/nes/app/graphics/tiles/icon_document.png Binary files differnew file mode 100644 index 0000000..f6f2eb1 --- /dev/null +++ b/lib/nes/app/graphics/tiles/icon_document.png diff --git a/lib/nes/app/ui/screen-browser.cc b/lib/nes/app/ui/screen-browser.cc index 080f869..085378f 100644 --- a/lib/nes/app/ui/screen-browser.cc +++ b/lib/nes/app/ui/screen-browser.cc @@ -4,6 +4,7 @@ #include "nes/app/graphics/tiles/icons.hh" #include "nes/app/input/input-device-keyboard.hh" #include "nes/common/containers/path-view.hh" +#include "nes/common/containers/string-view.hh" #include "nes/common/utils.hh" namespace nes::app @@ -12,15 +13,15 @@ namespace nes::app { auto default_file_action(string_view const file_name) -> action { - if (file_name.has_suffix(".nes")) + if (file_name.has_suffix(".nes", case_sensitive::no)) { return action::launch_game(file_name); } - else if (file_name.has_suffix(".aes")) + else if (file_name.has_suffix(".aes", case_sensitive::no)) { return action::prompt_key(file_name); } - else if (file_name.has_suffix(".txt")) + else if (file_name.has_suffix(".txt", case_sensitive::no)) { return action::view_file(file_name); } @@ -29,16 +30,32 @@ namespace nes::app return action::show_error("Unable to open file", status::error_unknown_file_type); } } + + auto default_entry_icon(file_browser::entry const& entry) -> mask_tile + { + switch (entry.get_type()) + { + case file_browser::entry_type::directory: + return tiles::icon_directory; + case file_browser::entry_type::file: + if (entry.get_name().has_suffix(".nes", case_sensitive::no) || + entry.get_name().has_suffix(".nes", case_sensitive::no)) + { + return tiles::icon_cartridge; + } + else + { + return tiles::icon_document; + } + } + return tiles::icon_document; + } } // 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 { - switch (item.entry.get_type()) - { - case file_browser::entry_type::file: renderer.render_mask_tile(x, y, tiles::icon_cartridge, c); break; - case file_browser::entry_type::directory: renderer.render_mask_tile(x, y, tiles::icon_directory, c); break; - } + renderer.render_mask_tile(x, y, default_entry_icon(item.entry), c); renderer.render_text(x + 2, y, item.entry.get_name(), c, text_attributes{} .set_ellipsize_mode(ellipsize_mode::end) |
