summaryrefslogtreecommitdiff
path: root/lib/nes/app
diff options
context:
space:
mode:
authorHannes Schulze <hannes.hs.schulze@fau.de>2025-05-02 16:33:38 +0200
committerHannes Schulze <hannes.hs.schulze@fau.de>2025-05-02 16:34:44 +0200
commitf6b813084eb34142bfcccc1a43ba52352e9d1205 (patch)
tree8b8b0042a7506601b69dde868b8912247708478d /lib/nes/app
parenteee3d6fed878dd8e647798e1de7288c90a816804 (diff)
use different icon for documents
Diffstat (limited to 'lib/nes/app')
-rw-r--r--lib/nes/app/graphics/tiles/CMakeLists.txt5
-rw-r--r--lib/nes/app/graphics/tiles/icon_document.pngbin0 -> 4238 bytes
-rw-r--r--lib/nes/app/ui/screen-browser.cc33
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
new file mode 100644
index 0000000..f6f2eb1
--- /dev/null
+++ b/lib/nes/app/graphics/tiles/icon_document.png
Binary files differ
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)