diff --git a/Tactility/Private/Tactility/app/files/SupportedFiles.h b/Tactility/Private/Tactility/app/files/SupportedFiles.h index b62dde77..914ee6c3 100644 --- a/Tactility/Private/Tactility/app/files/SupportedFiles.h +++ b/Tactility/Private/Tactility/app/files/SupportedFiles.h @@ -1,11 +1,9 @@ #pragma once - #include - namespace tt::app::files { - bool isSupportedAppFile(const std::string& filename); bool isSupportedImageFile(const std::string& filename); bool isSupportedTextFile(const std::string& filename); - +bool isSupportedAudioFile(const std::string& filename); +bool isSupportedGameBoyFile(const std::string& filename); } // namespace diff --git a/Tactility/Source/app/files/SupportedFiles.cpp b/Tactility/Source/app/files/SupportedFiles.cpp index 9d914e24..4a2c85ff 100644 --- a/Tactility/Source/app/files/SupportedFiles.cpp +++ b/Tactility/Source/app/files/SupportedFiles.cpp @@ -1,29 +1,24 @@ #include #include - namespace tt::app::files { - constexpr auto* TAG = "Files"; - bool isSupportedAppFile(const std::string& filename) { return filename.ends_with(".app"); } - bool isSupportedImageFile(const std::string& filename) { - // Currently only the PNG library is built into Tactility return string::lowercase(filename).ends_with(".png"); } - bool isSupportedTextFile(const std::string& filename) { - std::string filename_lower = string::lowercase(filename); - return filename_lower.ends_with(".txt") || - filename_lower.ends_with(".ini") || - filename_lower.ends_with(".json") || - filename_lower.ends_with(".yaml") || - filename_lower.ends_with(".yml") || - filename_lower.ends_with(".lua") || - filename_lower.ends_with(".js") || - filename_lower.ends_with(".properties"); + std::string l = string::lowercase(filename); + return l.ends_with(".txt") || l.ends_with(".ini") || l.ends_with(".json") || l.ends_with(".yaml") || l.ends_with(".yml") || + l.ends_with(".lua") || l.ends_with(".js") || l.ends_with(".properties"); } - -} // namespace tt::app::filebrowser +bool isSupportedAudioFile(const std::string& filename) { + std::string l = string::lowercase(filename); + return l.ends_with(".mp3") || l.ends_with(".wav") || l.ends_with(".ogg") || l.ends_with(".flac"); +} +bool isSupportedGameBoyFile(const std::string& filename) { + std::string l = string::lowercase(filename); + return l.ends_with(".gb") || l.ends_with(".gbc") || l.ends_with(".sgb"); +} +} // namespace diff --git a/Tactility/Source/app/files/View.cpp b/Tactility/Source/app/files/View.cpp index fce5d182..70ffe8e4 100644 --- a/Tactility/Source/app/files/View.cpp +++ b/Tactility/Source/app/files/View.cpp @@ -1,4 +1,5 @@ #include +#include #include #include @@ -228,9 +229,26 @@ void View::viewFile(const std::string& path, const std::string& filename) { if (kernel::getPlatform() == kernel::PlatformEsp) { notes::start(processed_filepath); } else { - // Remove forward slash, because we need a relative path notes::start(processed_filepath.substr(1)); } + } else if (isSupportedAudioFile(filename)) { +#ifdef ESP_PLATFORM + auto bundle = std::make_shared(); + bundle->putString("file", processed_filepath); + auto loader = service::loader::findLoaderService(); + if (loader) { + loader->start("one.tactility.mp3player", bundle); + } +#endif + } else if (isSupportedGameBoyFile(filename)) { +#ifdef ESP_PLATFORM + auto bundle = std::make_shared(); + bundle->putString("file", processed_filepath); + auto loader = service::loader::findLoaderService(); + if (loader) { + loader->start("one.tactility.gameboy", bundle); + } +#endif } else { LOG_W(TAG, "Opening files of this type is not supported"); }