More fixes

This commit is contained in:
boludoz 2023-10-07 15:20:48 -03:00
parent 6f664f6811
commit 46efdeb984
3 changed files with 21 additions and 14 deletions

View file

@ -13,7 +13,8 @@ namespace Common::FS {
std::u8string ToU8String(std::wstring_view w_string) {
try {
auto utf8_string = boost::locale::conv::utf_to_utf<char>(w_string.data(), w_string.data() + w_string.size());
auto utf8_string = boost::locale::conv::utf_to_utf<char>(w_string.data(),
w_string.data() + w_string.size());
return std::u8string(utf8_string.begin(), utf8_string.end());
} catch (const boost::locale::conv::conversion_error) {
return std::u8string{reinterpret_cast<const char8_t*>(w_string.data())};
@ -36,7 +37,8 @@ std::u8string_view BufferToU8StringView(std::span<const u8> buffer) {
std::wstring ToWString(std::u8string_view utf8_string) {
try {
return boost::locale::conv::utf_to_utf<wchar_t>(utf8_string.data(), utf8_string.data() + utf8_string.size());
return boost::locale::conv::utf_to_utf<wchar_t>(utf8_string.data(),
utf8_string.data() + utf8_string.size());
} catch (const boost::locale::conv::conversion_error) {
return std::wstring(utf8_string.begin(), utf8_string.end());
} catch (const boost::locale::conv::invalid_charset_error) {

View file

@ -2825,11 +2825,12 @@ void GMainWindow::OnGameListNavigateToGamedbEntry(u64 program_id,
bool GMainWindow::SaveShortcutLink(const std::filesystem::path& shortcut_path_, const auto& comment,
const std::filesystem::path& icon_path_,
const std::filesystem::path& command_, const auto& arguments,
const auto& categories, const auto& keywords) {
const auto& categories, const auto& keywords, const auto& name_) {
const auto shortcut_path = shortcut_path_.string();
const auto icon_path = icon_path_.string();
const auto command = command_.string();
const auto name = name_.string();
// This desktop file template was writing referencing
// https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.0.html
@ -2837,7 +2838,7 @@ bool GMainWindow::SaveShortcutLink(const std::filesystem::path& shortcut_path_,
shortcut_contents.append("[Desktop Entry]\n");
shortcut_contents.append("Type=Application\n");
shortcut_contents.append("Version=1.0\n");
shortcut_contents.append(fmt::format("Name={:s}\n", title));
shortcut_contents.append(fmt::format("Name={:s}\n", name));
shortcut_contents.append(fmt::format("Comment={:s}\n", comment));
shortcut_contents.append(fmt::format("Icon={:s}\n", icon_path));
shortcut_contents.append(fmt::format("TryExec={:s}\n", command));
@ -2860,7 +2861,7 @@ bool GMainWindow::SaveShortcutLink(const std::filesystem::path& shortcut_path_,
bool GMainWindow::SaveShortcutLink(const std::filesystem::path& shortcut_path, const auto& comment,
const std::filesystem::path& icon_path,
const std::filesystem::path& command, const auto& arguments,
const auto& categories, const auto& keywords) {
const auto& categories, const auto& keywords, const auto& name) {
// Initialize COM
CoInitialize(NULL);
@ -2920,12 +2921,10 @@ bool GMainWindow::SaveShortcutLink(const std::filesystem::path& shortcut_path, c
return shortcut_success;
}
#else
bool GMainWindow::SaveShortcutLink(const std::filesystem::path& shortcut_path_,
const std::string& comment,
bool GMainWindow::SaveShortcutLink(const std::filesystem::path& shortcut_path_, const auto& comment,
const std::filesystem::path& icon_path_,
const std::filesystem::path& command_,
const std::string& arguments, const std::string& categories,
const std::string& keywords) {
const std::filesystem::path& command_, const auto& arguments,
const auto& categories, const auto& keywords, const auto& name) {
return false;
}
@ -3054,12 +3053,15 @@ void GMainWindow::OnGameListCreateShortcut(u64 program_id, const QString& game_p
QImage icon_jpeg =
QImage::fromData(icon_image_file.data(), static_cast<int>(icon_image_file.size()));
#if defined(__linux__) || defined(__FreeBSD__)
// Convert and write the icon as a PNG
if (!icon_jpeg.save(QString::fromStdString(icon_path.string()))) {
LOG_ERROR(Frontend, "Could not write icon as PNG to file");
} else {
LOG_INFO(Frontend, "Wrote an icon to {}", icon_path.string());
}
const auto name = title;
#elif defined(_WIN32)
// ICO is only for Windows
@ -3092,6 +3094,9 @@ void GMainWindow::OnGameListCreateShortcut(u64 program_id, const QString& game_p
const std::string comment =
tr("Start %1 with the yuzu Emulator").arg(QString::fromStdString(title)).toStdString();
const std::string keywords = u8"Switch;Nintendo;";
const std::string categories = u8"Game;Emulator;Qt;";
#elif defined(_WIN32)
QMessageBox::StandardButtons buttons = QMessageBox::Yes | QMessageBox::No;
int result = QMessageBox::information(
@ -3121,20 +3126,20 @@ void GMainWindow::OnGameListCreateShortcut(u64 program_id, const QString& game_p
}
const std::filesystem::path sanitized_title = title_u8 + u8".lnk";
const std::filesystem::path shortcut_path = target_directory / (sanitized_title);
const std::u8string keywords = u8"Switch;Nintendo;";
const std::u8string categories = u8"Game;Emulator;Qt;";
const auto name = title_u8;
#else
const std::string comment{};
const std::string arguments{};
const std::string categories{};
const std::string keywords{};
const auto name = title;
#endif
if (GMainWindow::SaveShortcutLink(shortcut_path, comment, icon_path, yuzu_command, arguments,
categories, keywords)) {
categories, keywords, name)) {
LOG_INFO(Frontend, "Wrote a shortcut to {}", shortcut_path.string());
QMessageBox::information(

View file

@ -426,7 +426,7 @@ private:
bool SaveShortcutLink(const std::filesystem::path& shortcut_path, const auto& comment,
const std::filesystem::path& icon_path,
const std::filesystem::path& command, const auto& arguments,
const auto& categories, const auto& keywords);
const auto& categories, const auto& keywords, const auto& name);
std::unique_ptr<Ui::MainWindow> ui;