feat(files+gb): file browser launches .gb via GameBoy, preserve mDNS
This commit is contained in:
@@ -1,3 +1,9 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include <string>
|
#include <string>
|
||||||
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); } // namespace
|
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
|
||||||
|
|||||||
@@ -1,3 +1,24 @@
|
|||||||
#include <Tactility/StringUtils.h>
|
#include <Tactility/StringUtils.h>
|
||||||
#include <Tactility/TactilityCore.h>
|
#include <Tactility/TactilityCore.h>
|
||||||
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) { return string::lowercase(filename).ends_with(".png"); } bool isSupportedTextFile(const std::string& filename) { 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"); } 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"); } } // namespace
|
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) {
|
||||||
|
return string::lowercase(filename).ends_with(".png");
|
||||||
|
}
|
||||||
|
bool isSupportedTextFile(const std::string& filename) {
|
||||||
|
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");
|
||||||
|
}
|
||||||
|
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
|
||||||
|
|||||||
@@ -239,6 +239,15 @@ void View::viewFile(const std::string& path, const std::string& filename) {
|
|||||||
if (loader) {
|
if (loader) {
|
||||||
loader->start("one.tactility.mp3player", bundle);
|
loader->start("one.tactility.mp3player", bundle);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
} else if (isSupportedGameBoyFile(filename)) {
|
||||||
|
#ifdef ESP_PLATFORM
|
||||||
|
auto bundle = std::make_shared<Bundle>();
|
||||||
|
bundle->putString("file", processed_filepath);
|
||||||
|
auto loader = service::loader::findLoaderService();
|
||||||
|
if (loader) {
|
||||||
|
loader->start("one.tactility.gameboy", bundle);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
LOG_W(TAG, "Opening files of this type is not supported");
|
LOG_W(TAG, "Opening files of this type is not supported");
|
||||||
|
|||||||
Reference in New Issue
Block a user