diff options
| author | liamwhite <liamwhite@users.noreply.github.com> | 2024-02-22 23:04:28 -0500 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-22 23:04:28 -0500 | 
| commit | 9dc624f5dc7a12fd4070c5e596c4c1bafa1bbe41 (patch) | |
| tree | c15e26376a558448e001973717df45ce601aeddd | |
| parent | dad9ea3e076763cbfd0c29497552531cb7c45edf (diff) | |
| parent | 864b0465000ba28df3c768d69c065630df6f16e4 (diff) | |
Merge pull request #13121 from german77/clean-shortcut
yuzu: Fix shortcut error message
| -rw-r--r-- | src/yuzu/main.cpp | 84 | 
1 files changed, 42 insertions, 42 deletions
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index b2ae3db52..5c2a5bfe6 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -3010,9 +3010,6 @@ bool GMainWindow::MakeShortcutIcoPath(const u64 program_id, const std::string_vi  void GMainWindow::OnGameListCreateShortcut(u64 program_id, const std::string& game_path,                                             GameListShortcutTarget target) { -    std::string game_title; -    QString qt_game_title; -    std::filesystem::path out_icon_path;      // Get path to yuzu executable      const QStringList args = QApplication::arguments();      std::filesystem::path yuzu_command = args[0].toStdString(); @@ -3029,48 +3026,51 @@ void GMainWindow::OnGameListCreateShortcut(u64 program_id, const std::string& ga          shortcut_path =              QStandardPaths::writableLocation(QStandardPaths::ApplicationsLocation).toStdString();      } -    // Icon path and title -    if (std::filesystem::exists(shortcut_path)) { -        // Get title from game file -        const FileSys::PatchManager pm{program_id, system->GetFileSystemController(), -                                       system->GetContentProvider()}; -        const auto control = pm.GetControlMetadata(); -        const auto loader = -            Loader::GetLoader(*system, vfs->OpenFile(game_path, FileSys::OpenMode::Read)); -        game_title = fmt::format("{:016X}", program_id); -        if (control.first != nullptr) { -            game_title = control.first->GetApplicationName(); -        } else { -            loader->ReadTitle(game_title); -        } -        // Delete illegal characters from title -        const std::string illegal_chars = "<>:\"/\\|?*."; -        for (auto it = game_title.rbegin(); it != game_title.rend(); ++it) { -            if (illegal_chars.find(*it) != std::string::npos) { -                game_title.erase(it.base() - 1); -            } -        } -        qt_game_title = QString::fromStdString(game_title); -        // Get icon from game file -        std::vector<u8> icon_image_file{}; -        if (control.second != nullptr) { -            icon_image_file = control.second->ReadAllBytes(); -        } else if (loader->ReadIcon(icon_image_file) != Loader::ResultStatus::Success) { -            LOG_WARNING(Frontend, "Could not read icon from {:s}", game_path); + +    if (!std::filesystem::exists(shortcut_path)) { +        GMainWindow::CreateShortcutMessagesGUI( +            this, GMainWindow::CREATE_SHORTCUT_MSGBOX_ERROR, +            QString::fromStdString(shortcut_path.generic_string())); +        LOG_ERROR(Frontend, "Invalid shortcut target {}", shortcut_path.generic_string()); +        return; +    } + +    // Get title from game file +    const FileSys::PatchManager pm{program_id, system->GetFileSystemController(), +                                   system->GetContentProvider()}; +    const auto control = pm.GetControlMetadata(); +    const auto loader = +        Loader::GetLoader(*system, vfs->OpenFile(game_path, FileSys::OpenMode::Read)); +    std::string game_title = fmt::format("{:016X}", program_id); +    if (control.first != nullptr) { +        game_title = control.first->GetApplicationName(); +    } else { +        loader->ReadTitle(game_title); +    } +    // Delete illegal characters from title +    const std::string illegal_chars = "<>:\"/\\|?*."; +    for (auto it = game_title.rbegin(); it != game_title.rend(); ++it) { +        if (illegal_chars.find(*it) != std::string::npos) { +            game_title.erase(it.base() - 1);          } -        QImage icon_data = -            QImage::fromData(icon_image_file.data(), static_cast<int>(icon_image_file.size())); -        if (GMainWindow::MakeShortcutIcoPath(program_id, game_title, out_icon_path)) { -            if (!SaveIconToFile(out_icon_path, icon_data)) { -                LOG_ERROR(Frontend, "Could not write icon to file"); -            } +    } +    const QString qt_game_title = QString::fromStdString(game_title); +    // Get icon from game file +    std::vector<u8> icon_image_file{}; +    if (control.second != nullptr) { +        icon_image_file = control.second->ReadAllBytes(); +    } else if (loader->ReadIcon(icon_image_file) != Loader::ResultStatus::Success) { +        LOG_WARNING(Frontend, "Could not read icon from {:s}", game_path); +    } +    QImage icon_data = +        QImage::fromData(icon_image_file.data(), static_cast<int>(icon_image_file.size())); +    std::filesystem::path out_icon_path; +    if (GMainWindow::MakeShortcutIcoPath(program_id, game_title, out_icon_path)) { +        if (!SaveIconToFile(out_icon_path, icon_data)) { +            LOG_ERROR(Frontend, "Could not write icon to file");          } -    } else { -        GMainWindow::CreateShortcutMessagesGUI(this, GMainWindow::CREATE_SHORTCUT_MSGBOX_ERROR, -                                               qt_game_title); -        LOG_ERROR(Frontend, "Invalid shortcut target"); -        return;      } +  #if defined(__linux__)      // Special case for AppImages      // Warn once if we are making a shortcut to a volatile AppImage  | 
