feat(files+gb): file browser launches .gb via GameBoy, preserve mDNS
This commit is contained in:
@@ -1,11 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#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);
|
||||
bool isSupportedGameBoyFile(const std::string& filename);
|
||||
} // namespace
|
||||
|
||||
@@ -1,29 +1,24 @@
|
||||
#include <Tactility/StringUtils.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) {
|
||||
// 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
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include <Tactility/app/files/SupportedFiles.h>
|
||||
#include <Tactility/Bundle.h>
|
||||
#include <Tactility/app/files/View.h>
|
||||
|
||||
#include <Tactility/Platform.h>
|
||||
@@ -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>();
|
||||
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>();
|
||||
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");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user