From 428459b1b57c0a1d1e9f698e0350736d14ff2d77 Mon Sep 17 00:00:00 2001 From: BernardoGiordano Date: Sun, 8 Dec 2019 22:40:19 +0100 Subject: [PATCH] Warn the user if they're performing backups under applet mode. (Fixes the aborted by user issue) --- switch/source/KeyboardManager.cpp | 12 +++++++----- switch/source/io.cpp | 21 +++++++++++++-------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/switch/source/KeyboardManager.cpp b/switch/source/KeyboardManager.cpp index 9b23aa7..1dbf621 100644 --- a/switch/source/KeyboardManager.cpp +++ b/switch/source/KeyboardManager.cpp @@ -29,11 +29,13 @@ KeyboardManager::KeyboardManager(void) { systemKeyboardAvailable = false; - SwkbdConfig kbd; - res = swkbdCreate(&kbd, 0); - if (R_SUCCEEDED(res)) { - systemKeyboardAvailable = true; - swkbdClose(&kbd); + if (appletGetAppletType() == AppletType_Application) { + SwkbdConfig kbd; + res = swkbdCreate(&kbd, 0); + if (R_SUCCEEDED(res)) { + systemKeyboardAvailable = true; + swkbdClose(&kbd); + } } } diff --git a/switch/source/io.cpp b/switch/source/io.cpp index d131e26..69af260 100644 --- a/switch/source/io.cpp +++ b/switch/source/io.cpp @@ -191,14 +191,19 @@ std::tuple io::backup(size_t index, u128 uid, size_t } else { if (isNewFolder) { - std::pair keyboardResponse = KeyboardManager::get().keyboard(suggestion); - if (keyboardResponse.first) { - customPath = StringUtils::removeForbiddenCharacters(keyboardResponse.second); + if (KeyboardManager::get().isSystemKeyboardAvailable().first) { + std::pair keyboardResponse = KeyboardManager::get().keyboard(suggestion); + if (keyboardResponse.first) { + customPath = StringUtils::removeForbiddenCharacters(keyboardResponse.second); + } + else { + FileSystem::unmount(); + Logger::getInstance().log(Logger::INFO, "Copy operation aborted by the user through the system keyboard."); + return std::make_tuple(false, 0, "Operation aborted by the user."); + } } else { - FileSystem::unmount(); - Logger::getInstance().log(Logger::INFO, "Copy operation aborted by the user through the system keyboard."); - return std::make_tuple(false, 0, "Operation aborted by the user."); + customPath = suggestion; } } else { @@ -243,8 +248,8 @@ std::tuple io::backup(size_t index, u128 uid, size_t // TODO: figure out if this code can be accessed at all auto systemKeyboardAvailable = KeyboardManager::get().isSystemKeyboardAvailable(); if (!systemKeyboardAvailable.first) { - return std::make_tuple( - false, systemKeyboardAvailable.second, "System keyboard applet not accessible.\nThe suggested destination folder was used\ninstead."); + return std::make_tuple(true, systemKeyboardAvailable.second, + "Progress correctly saved to disk.\nSystem keyboard applet was not\naccessible. The suggested destination\nfolder was used instead."); } ret = std::make_tuple(true, 0, "Progress correctly saved to disk.");