From 647992e666617d287a06b4ffbd1db9ab6cbd524d Mon Sep 17 00:00:00 2001 From: Zach Hilman Date: Sun, 28 Apr 2019 18:44:46 -0400 Subject: settings: Add option to set BCAT backend --- src/yuzu/configuration/config.cpp | 16 ++++++++++++++++ src/yuzu/configuration/config.h | 2 ++ 2 files changed, 18 insertions(+) (limited to 'src/yuzu') diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index 92d9fb161..ac7a77365 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp @@ -525,6 +525,13 @@ void Config::ReadDebuggingValues() { qt_config->endGroup(); } +void Config::ReadServiceValues() { + qt_config->beginGroup("Services"); + Settings::values.bcat_backend = ReadSetting("bcat_backend", "boxcat").toString().toStdString(); + Settings::values.bcat_boxcat_local = ReadSetting("bcat_boxcat_local", false).toBool(); + qt_config->endGroup(); +} + void Config::ReadDisabledAddOnValues() { const auto size = qt_config->beginReadArray(QStringLiteral("DisabledAddOns")); @@ -769,6 +776,7 @@ void Config::ReadValues() { ReadMiscellaneousValues(); ReadDebuggingValues(); ReadWebServiceValues(); + ReadServiceValues(); ReadDisabledAddOnValues(); ReadUIValues(); } @@ -866,6 +874,7 @@ void Config::SaveValues() { SaveMiscellaneousValues(); SaveDebuggingValues(); SaveWebServiceValues(); + SaveServiceValues(); SaveDisabledAddOnValues(); SaveUIValues(); } @@ -963,6 +972,13 @@ void Config::SaveDebuggingValues() { qt_config->endGroup(); } +void Config::SaveServiceValues() { + qt_config->beginGroup("Services"); + WriteSetting("bcat_backend", QString::fromStdString(Settings::values.bcat_backend), "null"); + WriteSetting("bcat_boxcat_local", Settings::values.bcat_boxcat_local, false); + qt_config->endGroup(); +} + void Config::SaveDisabledAddOnValues() { qt_config->beginWriteArray(QStringLiteral("DisabledAddOns")); diff --git a/src/yuzu/configuration/config.h b/src/yuzu/configuration/config.h index 6b523ecdd..ba6888004 100644 --- a/src/yuzu/configuration/config.h +++ b/src/yuzu/configuration/config.h @@ -42,6 +42,7 @@ private: void ReadCoreValues(); void ReadDataStorageValues(); void ReadDebuggingValues(); + void ReadServiceValues(); void ReadDisabledAddOnValues(); void ReadMiscellaneousValues(); void ReadPathValues(); @@ -65,6 +66,7 @@ private: void SaveCoreValues(); void SaveDataStorageValues(); void SaveDebuggingValues(); + void SaveServiceValues(); void SaveDisabledAddOnValues(); void SaveMiscellaneousValues(); void SavePathValues(); -- cgit v1.2.3 From f0551aef0912c02e273021fd5186f49283ebcb14 Mon Sep 17 00:00:00 2001 From: Zach Hilman Date: Sun, 28 Apr 2019 19:01:23 -0400 Subject: yuzu: Add UI tab to configure BCAT services Also displays current events if boxcat is selected. --- src/yuzu/CMakeLists.txt | 6 ++ src/yuzu/configuration/configure.ui | 11 +++ src/yuzu/configuration/configure_dialog.cpp | 1 + src/yuzu/configuration/configure_service.cpp | 129 +++++++++++++++++++++++++++ src/yuzu/configuration/configure_service.h | 34 +++++++ src/yuzu/configuration/configure_service.ui | 121 +++++++++++++++++++++++++ 6 files changed, 302 insertions(+) create mode 100644 src/yuzu/configuration/configure_service.cpp create mode 100644 src/yuzu/configuration/configure_service.h create mode 100644 src/yuzu/configuration/configure_service.ui (limited to 'src/yuzu') diff --git a/src/yuzu/CMakeLists.txt b/src/yuzu/CMakeLists.txt index dc6fa07fc..fffb20220 100644 --- a/src/yuzu/CMakeLists.txt +++ b/src/yuzu/CMakeLists.txt @@ -66,6 +66,8 @@ add_executable(yuzu configuration/configure_profile_manager.cpp configuration/configure_profile_manager.h configuration/configure_profile_manager.ui + configuration/configure_service.cpp + configuration/configure_service.h configuration/configure_system.cpp configuration/configure_system.h configuration/configure_system.ui @@ -186,6 +188,10 @@ if (YUZU_USE_QT_WEB_ENGINE) target_compile_definitions(yuzu PRIVATE -DYUZU_USE_QT_WEB_ENGINE) endif () +if (YUZU_ENABLE_BOXCAT) + target_compile_definitions(yuzu PRIVATE -DYUZU_ENABLE_BOXCAT) +endif () + if(UNIX AND NOT APPLE) install(TARGETS yuzu RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}/bin") endif() diff --git a/src/yuzu/configuration/configure.ui b/src/yuzu/configuration/configure.ui index 49fadd0ef..372427ae2 100644 --- a/src/yuzu/configuration/configure.ui +++ b/src/yuzu/configuration/configure.ui @@ -98,6 +98,11 @@ Web + + + Services + + @@ -178,6 +183,12 @@
configuration/configure_hotkeys.h
1 + + ConfigureService + QWidget +
configuration/configure_service.h
+ 1 +
diff --git a/src/yuzu/configuration/configure_dialog.cpp b/src/yuzu/configuration/configure_dialog.cpp index 7c875ae87..520b7e193 100644 --- a/src/yuzu/configuration/configure_dialog.cpp +++ b/src/yuzu/configuration/configure_dialog.cpp @@ -44,6 +44,7 @@ void ConfigureDialog::ApplyConfiguration() { ui->audioTab->ApplyConfiguration(); ui->debugTab->ApplyConfiguration(); ui->webTab->ApplyConfiguration(); + ui->serviceTab->ApplyConfiguration(); Settings::Apply(); Settings::LogSettings(); } diff --git a/src/yuzu/configuration/configure_service.cpp b/src/yuzu/configuration/configure_service.cpp new file mode 100644 index 000000000..fca785d0e --- /dev/null +++ b/src/yuzu/configuration/configure_service.cpp @@ -0,0 +1,129 @@ +// Copyright 2019 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include +#include +#include "core/hle/service/bcat/backend/boxcat.h" +#include "core/settings.h" +#include "ui_configure_service.h" +#include "yuzu/configuration/configure_service.h" + +namespace { +QString FormatEventStatusString(const Service::BCAT::EventStatus& status) { + QString out; + + if (status.header.has_value()) { + out += QStringLiteral("%1
").arg(QString::fromStdString(*status.header)); + } + + if (status.events.size() == 1) { + out += QStringLiteral("%1
").arg(QString::fromStdString(status.events.front())); + } else { + for (const auto event : status.events) { + out += QStringLiteral("- %1
").arg(QString::fromStdString(event)); + } + } + + if (status.footer.has_value()) { + out += QStringLiteral("%1
").arg(QString::fromStdString(*status.footer)); + } + + return out; +} +} // Anonymous namespace + +ConfigureService::ConfigureService(QWidget* parent) + : QWidget(parent), ui(std::make_unique()), watcher(this) { + ui->setupUi(this); + + ui->bcat_source->addItem(QStringLiteral("None")); + ui->bcat_empty_label->setHidden(true); + ui->bcat_empty_header->setHidden(true); + +#ifdef YUZU_ENABLE_BOXCAT + ui->bcat_source->addItem(QStringLiteral("Boxcat"), QStringLiteral("boxcat")); +#endif + + connect(ui->bcat_source, QOverload::of(&QComboBox::currentIndexChanged), this, + &ConfigureService::OnBCATImplChanged); + + this->setConfiguration(); +} + +ConfigureService::~ConfigureService() = default; + +void ConfigureService::applyConfiguration() { + Settings::values.bcat_backend = ui->bcat_source->currentText().toLower().toStdString(); +} + +void ConfigureService::retranslateUi() { + ui->retranslateUi(this); +} + +void ConfigureService::setConfiguration() { + int index = ui->bcat_source->findData(QString::fromStdString(Settings::values.bcat_backend)); + ui->bcat_source->setCurrentIndex(index == -1 ? 0 : index); +} + +std::pair ConfigureService::BCATDownloadEvents() { + std::optional global; + std::map map; + const auto res = Service::BCAT::Boxcat::GetStatus(global, map); + + switch (res) { + case Service::BCAT::Boxcat::StatusResult::Offline: + return {"", tr("The boxcat service is offline or you are not connected to the internet.")}; + case Service::BCAT::Boxcat::StatusResult::ParseError: + return {"", + tr("There was an error while processing the boxcat event data. Contact the yuzu " + "developers.")}; + case Service::BCAT::Boxcat::StatusResult::BadClientVersion: + return {"", + tr("The version of yuzu you are using is either too new or too old for the server. " + "Try updating to the latest official release of yuzu.")}; + } + + if (map.empty()) { + return {QStringLiteral("Current Boxcat Events"), + tr("There are currently no events on boxcat.")}; + } + + QString out; + for (const auto& [key, value] : map) { + out += QStringLiteral("%1%2
%3") + .arg(out.isEmpty() ? "" : "
") + .arg(QString::fromStdString(key)) + .arg(FormatEventStatusString(value)); + } + return {QStringLiteral("Current Boxcat Events"), out}; +} + +void ConfigureService::OnBCATImplChanged() { +#ifdef YUZU_ENABLE_BOXCAT + const auto boxcat = ui->bcat_source->currentText() == QStringLiteral("Boxcat"); + ui->bcat_empty_header->setHidden(!boxcat); + ui->bcat_empty_label->setHidden(!boxcat); + ui->bcat_empty_header->setText(""); + ui->bcat_empty_label->setText(tr("Yuzu is retrieving the latest boxcat status...")); + + if (!boxcat) + return; + + const auto future = QtConcurrent::run([this] { return BCATDownloadEvents(); }); + + watcher.setFuture(future); + connect(&watcher, &QFutureWatcher>::finished, this, + [this] { OnUpdateBCATEmptyLabel(watcher.result()); }); +#endif +} + +void ConfigureService::OnUpdateBCATEmptyLabel(std::pair string) { +#ifdef YUZU_ENABLE_BOXCAT + const auto boxcat = ui->bcat_source->currentText() == QStringLiteral("Boxcat"); + if (boxcat) { + ui->bcat_empty_header->setText(string.first); + ui->bcat_empty_label->setText(string.second); + } +#endif +} diff --git a/src/yuzu/configuration/configure_service.h b/src/yuzu/configuration/configure_service.h new file mode 100644 index 000000000..ee50d5a79 --- /dev/null +++ b/src/yuzu/configuration/configure_service.h @@ -0,0 +1,34 @@ +// Copyright 2019 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include +#include +#include + +namespace Ui { +class ConfigureService; +} + +class ConfigureService : public QWidget { + Q_OBJECT + +public: + explicit ConfigureService(QWidget* parent = nullptr); + ~ConfigureService() override; + + void applyConfiguration(); + void retranslateUi(); + +private: + void setConfiguration(); + + std::pair BCATDownloadEvents(); + void OnBCATImplChanged(); + void OnUpdateBCATEmptyLabel(std::pair string); + + std::unique_ptr ui; + QFutureWatcher> watcher; +}; diff --git a/src/yuzu/configuration/configure_service.ui b/src/yuzu/configuration/configure_service.ui new file mode 100644 index 000000000..f5b683d25 --- /dev/null +++ b/src/yuzu/configuration/configure_service.ui @@ -0,0 +1,121 @@ + + + ConfigureService + + + + 0 + 0 + 433 + 561 + + + + Form + + + + + + + + BCAT + + + + + + + 260 + 16777215 + + + + BCAT is Nintendo's way of sending data to games to engage its community and unlock additional content. + + + true + + + + + + + + 16777215 + 16777215 + + + + BCAT Backend + + + + + + + true + + + + 260 + 16777215 + + + + + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + + + + + <html><head/><body><p><a href="https://yuzu-emu.org/help/feature/boxcat"><span style=" text-decoration: underline; color:#0000ff;">Learn more about BCAT, Boxcat, and Current Events</span></a></p></body></html> + + + + + + + + + + + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + -- cgit v1.2.3 From 02f8f1bb3e424c029d3074da0e7586f5c05f5131 Mon Sep 17 00:00:00 2001 From: Zach Hilman Date: Sun, 28 Apr 2019 21:00:14 -0400 Subject: configure_service: Allow Qt to open external links --- src/yuzu/configuration/configure_service.ui | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/yuzu') diff --git a/src/yuzu/configuration/configure_service.ui b/src/yuzu/configuration/configure_service.ui index f5b683d25..9668dd557 100644 --- a/src/yuzu/configuration/configure_service.ui +++ b/src/yuzu/configuration/configure_service.ui @@ -78,6 +78,9 @@ <html><head/><body><p><a href="https://yuzu-emu.org/help/feature/boxcat"><span style=" text-decoration: underline; color:#0000ff;">Learn more about BCAT, Boxcat, and Current Events</span></a></p></body></html> + + true + -- cgit v1.2.3 From bcf1eafb8bd1a810fd33a7e7e06a86173b4bfb9f Mon Sep 17 00:00:00 2001 From: Zach Hilman Date: Thu, 20 Jun 2019 20:31:17 -0400 Subject: boxcat: Implement events global field --- externals/libzip | 2 +- src/core/hle/service/bcat/backend/backend.cpp | 13 ++++++++----- src/core/hle/service/bcat/backend/boxcat.cpp | 5 ++--- src/core/hle/service/bcat/module.cpp | 8 ++++---- src/yuzu/configuration/config.cpp | 17 +++++++++++------ src/yuzu/configuration/configure_service.cpp | 24 +++++++++++++++--------- src/yuzu/configuration/configure_service.h | 6 +++--- 7 files changed, 44 insertions(+), 31 deletions(-) (limited to 'src/yuzu') diff --git a/externals/libzip b/externals/libzip index bebbb54c8..bd7a8103e 160000 --- a/externals/libzip +++ b/externals/libzip @@ -1 +1 @@ -Subproject commit bebbb54c8e691f019415fcb852ef4d53ebbc5000 +Subproject commit bd7a8103e96bc6d50164447f6b7b57bb786d8e2a diff --git a/src/core/hle/service/bcat/backend/backend.cpp b/src/core/hle/service/bcat/backend/backend.cpp index e389ad568..9b677debe 100644 --- a/src/core/hle/service/bcat/backend/backend.cpp +++ b/src/core/hle/service/bcat/backend/backend.cpp @@ -13,7 +13,7 @@ namespace Service::BCAT { ProgressServiceBackend::ProgressServiceBackend(std::string event_name) : impl{} { auto& kernel{Core::System::GetInstance().Kernel()}; event = Kernel::WritableEvent::CreateEventPair( - kernel, Kernel::ResetType::OneShot, "ProgressServiceBackend:UpdateEvent:" + event_name); + kernel, Kernel::ResetType::Automatic, "ProgressServiceBackend:UpdateEvent:" + event_name); } Kernel::SharedPtr ProgressServiceBackend::GetEvent() { @@ -48,8 +48,10 @@ void ProgressServiceBackend::StartDownloadingFile(std::string_view dir_name, impl.status = DeliveryCacheProgressImpl::Status::Downloading; impl.current_downloaded_bytes = 0; impl.current_total_bytes = file_size; - std::memcpy(impl.current_directory.data(), dir_name.data(), std::min(dir_name.size(), 0x31ull)); - std::memcpy(impl.current_file.data(), file_name.data(), std::min(file_name.size(), 0x31ull)); + std::memcpy(impl.current_directory.data(), dir_name.data(), + std::min(dir_name.size(), 0x31ull)); + std::memcpy(impl.current_file.data(), file_name.data(), + std::min(file_name.size(), 0x31ull)); SignalUpdate(); } @@ -68,7 +70,8 @@ void ProgressServiceBackend::CommitDirectory(std::string_view dir_name) { impl.current_file.fill(0); impl.current_downloaded_bytes = 0; impl.current_total_bytes = 0; - std::memcpy(impl.current_directory.data(), dir_name.data(), std::min(dir_name.size(), 0x31ull)); + std::memcpy(impl.current_directory.data(), dir_name.data(), + std::min(dir_name.size(), 0x31ull)); SignalUpdate(); } @@ -121,7 +124,7 @@ bool NullBackend::Clear(u64 title_id) { void NullBackend::SetPassphrase(u64 title_id, const Passphrase& passphrase) { LOG_DEBUG(Service_BCAT, "called, title_id={:016X}, passphrase = {}", title_id, - Common::HexArrayToString(passphrase)); + Common::HexToString(passphrase)); } std::optional> NullBackend::GetLaunchParameter(TitleIDVersion title) { diff --git a/src/core/hle/service/bcat/backend/boxcat.cpp b/src/core/hle/service/bcat/backend/boxcat.cpp index 3754594df..5bc2e22d7 100644 --- a/src/core/hle/service/bcat/backend/boxcat.cpp +++ b/src/core/hle/service/bcat/backend/boxcat.cpp @@ -214,8 +214,7 @@ private: std::vector bytes(file.GetSize()); file.ReadBytes(bytes.data(), bytes.size()); const auto digest = DigestFile(bytes); - headers.insert( - {std::string("If-None-Match"), Common::HexArrayToString(digest, false)}); + headers.insert({std::string("If-None-Match"), Common::HexToString(digest, false)}); } } @@ -402,7 +401,7 @@ bool Boxcat::Clear(u64 title_id) { void Boxcat::SetPassphrase(u64 title_id, const Passphrase& passphrase) { LOG_DEBUG(Service_BCAT, "called, title_id={:016X}, passphrase={}", title_id, - Common::HexArrayToString(passphrase)); + Common::HexToString(passphrase)); } std::optional> Boxcat::GetLaunchParameter(TitleIDVersion title) { diff --git a/src/core/hle/service/bcat/module.cpp b/src/core/hle/service/bcat/module.cpp index d5f9e9d3b..1b9a75a1c 100644 --- a/src/core/hle/service/bcat/module.cpp +++ b/src/core/hle/service/bcat/module.cpp @@ -195,7 +195,7 @@ private: const auto passphrase_raw = ctx.ReadBuffer(); LOG_DEBUG(Service_BCAT, "called, title_id={:016X}, passphrase={}", title_id, - Common::HexVectorToString(passphrase_raw)); + Common::HexToString(passphrase_raw)); if (title_id == 0) { LOG_ERROR(Service_BCAT, "Invalid title ID!"); @@ -335,7 +335,7 @@ private: rb.Push(ERROR_NO_OPEN_ENTITY); } - size = std::min(current_file->GetSize() - offset, size); + size = std::min(current_file->GetSize() - offset, size); const auto buffer = current_file->ReadBytes(size, offset); ctx.WriteBuffer(buffer); @@ -437,7 +437,7 @@ private: } const auto files = current_dir->GetFiles(); - write_size = std::min(write_size, files.size()); + write_size = std::min(write_size, files.size()); std::vector entries(write_size); std::transform( files.begin(), files.begin() + write_size, entries.begin(), [](const auto& file) { @@ -519,7 +519,7 @@ private: LOG_DEBUG(Service_BCAT, "called, size={:016X}", size); - size = std::min(size, entries.size() - next_read_index); + size = std::min(size, entries.size() - next_read_index); ctx.WriteBuffer(entries.data() + next_read_index, size * sizeof(DirectoryName)); next_read_index += size; diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index ac7a77365..4cb27ddb2 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp @@ -526,9 +526,13 @@ void Config::ReadDebuggingValues() { } void Config::ReadServiceValues() { - qt_config->beginGroup("Services"); - Settings::values.bcat_backend = ReadSetting("bcat_backend", "boxcat").toString().toStdString(); - Settings::values.bcat_boxcat_local = ReadSetting("bcat_boxcat_local", false).toBool(); + qt_config->beginGroup(QStringLiteral("Services")); + Settings::values.bcat_backend = + ReadSetting(QStringLiteral("bcat_backend"), QStringLiteral("boxcat")) + .toString() + .toStdString(); + Settings::values.bcat_boxcat_local = + ReadSetting(QStringLiteral("bcat_boxcat_local"), false).toBool(); qt_config->endGroup(); } @@ -973,9 +977,10 @@ void Config::SaveDebuggingValues() { } void Config::SaveServiceValues() { - qt_config->beginGroup("Services"); - WriteSetting("bcat_backend", QString::fromStdString(Settings::values.bcat_backend), "null"); - WriteSetting("bcat_boxcat_local", Settings::values.bcat_boxcat_local, false); + qt_config->beginGroup(QStringLiteral("Services")); + WriteSetting(QStringLiteral("bcat_backend"), + QString::fromStdString(Settings::values.bcat_backend), QStringLiteral("null")); + WriteSetting(QStringLiteral("bcat_boxcat_local"), Settings::values.bcat_boxcat_local, false); qt_config->endGroup(); } diff --git a/src/yuzu/configuration/configure_service.cpp b/src/yuzu/configuration/configure_service.cpp index fca785d0e..86160b479 100644 --- a/src/yuzu/configuration/configure_service.cpp +++ b/src/yuzu/configuration/configure_service.cpp @@ -48,20 +48,20 @@ ConfigureService::ConfigureService(QWidget* parent) connect(ui->bcat_source, QOverload::of(&QComboBox::currentIndexChanged), this, &ConfigureService::OnBCATImplChanged); - this->setConfiguration(); + this->SetConfiguration(); } ConfigureService::~ConfigureService() = default; -void ConfigureService::applyConfiguration() { +void ConfigureService::ApplyConfiguration() { Settings::values.bcat_backend = ui->bcat_source->currentText().toLower().toStdString(); } -void ConfigureService::retranslateUi() { +void ConfigureService::RetranslateUi() { ui->retranslateUi(this); } -void ConfigureService::setConfiguration() { +void ConfigureService::SetConfiguration() { int index = ui->bcat_source->findData(QString::fromStdString(Settings::values.bcat_backend)); ui->bcat_source->setCurrentIndex(index == -1 ? 0 : index); } @@ -73,13 +73,14 @@ std::pair ConfigureService::BCATDownloadEvents() { switch (res) { case Service::BCAT::Boxcat::StatusResult::Offline: - return {"", tr("The boxcat service is offline or you are not connected to the internet.")}; + return {QStringLiteral(""), + tr("The boxcat service is offline or you are not connected to the internet.")}; case Service::BCAT::Boxcat::StatusResult::ParseError: - return {"", + return {QStringLiteral(""), tr("There was an error while processing the boxcat event data. Contact the yuzu " "developers.")}; case Service::BCAT::Boxcat::StatusResult::BadClientVersion: - return {"", + return {QStringLiteral(""), tr("The version of yuzu you are using is either too new or too old for the server. " "Try updating to the latest official release of yuzu.")}; } @@ -90,9 +91,14 @@ std::pair ConfigureService::BCATDownloadEvents() { } QString out; + + if (global.has_value()) { + out += QStringLiteral("%1
").arg(QString::fromStdString(*global)); + } + for (const auto& [key, value] : map) { out += QStringLiteral("%1%2
%3") - .arg(out.isEmpty() ? "" : "
") + .arg(out.isEmpty() ? QStringLiteral("") : QStringLiteral("
")) .arg(QString::fromStdString(key)) .arg(FormatEventStatusString(value)); } @@ -104,7 +110,7 @@ void ConfigureService::OnBCATImplChanged() { const auto boxcat = ui->bcat_source->currentText() == QStringLiteral("Boxcat"); ui->bcat_empty_header->setHidden(!boxcat); ui->bcat_empty_label->setHidden(!boxcat); - ui->bcat_empty_header->setText(""); + ui->bcat_empty_header->setText(QStringLiteral("")); ui->bcat_empty_label->setText(tr("Yuzu is retrieving the latest boxcat status...")); if (!boxcat) diff --git a/src/yuzu/configuration/configure_service.h b/src/yuzu/configuration/configure_service.h index ee50d5a79..efc8e21a8 100644 --- a/src/yuzu/configuration/configure_service.h +++ b/src/yuzu/configuration/configure_service.h @@ -19,11 +19,11 @@ public: explicit ConfigureService(QWidget* parent = nullptr); ~ConfigureService() override; - void applyConfiguration(); - void retranslateUi(); + void ApplyConfiguration(); + void RetranslateUi(); private: - void setConfiguration(); + void SetConfiguration(); std::pair BCATDownloadEvents(); void OnBCATImplChanged(); -- cgit v1.2.3 From e55d086cc93ea33829e77a2e92be52bcf900767b Mon Sep 17 00:00:00 2001 From: Zach Hilman Date: Wed, 2 Oct 2019 08:35:39 -0400 Subject: qt: Add service dialog --- src/core/hle/service/bcat/backend/boxcat.cpp | 11 +++++------ src/yuzu/CMakeLists.txt | 1 + src/yuzu/configuration/configure_dialog.cpp | 4 +++- src/yuzu/configuration/configure_service.cpp | 19 ++++++++++--------- src/yuzu/configuration/configure_service.h | 2 +- 5 files changed, 20 insertions(+), 17 deletions(-) (limited to 'src/yuzu') diff --git a/src/core/hle/service/bcat/backend/boxcat.cpp b/src/core/hle/service/bcat/backend/boxcat.cpp index 36eb2c094..e6ee0810b 100644 --- a/src/core/hle/service/bcat/backend/boxcat.cpp +++ b/src/core/hle/service/bcat/backend/boxcat.cpp @@ -364,18 +364,17 @@ void SynchronizeInternal(DirectoryGetter dir_getter, TitleIDVersion title, bool Boxcat::Synchronize(TitleIDVersion title, ProgressServiceBackend& progress) { is_syncing.exchange(true); - std::thread([this, title, &progress] { - SynchronizeInternal(dir_getter, title, progress); - }).detach(); + std::thread([this, title, &progress] { SynchronizeInternal(dir_getter, title, progress); }) + .detach(); return true; } bool Boxcat::SynchronizeDirectory(TitleIDVersion title, std::string name, ProgressServiceBackend& progress) { is_syncing.exchange(true); - std::thread([this, title, name, &progress] { - SynchronizeInternal(dir_getter, title, progress, name); - }).detach(); + std::thread( + [this, title, name, &progress] { SynchronizeInternal(dir_getter, title, progress, name); }) + .detach(); return true; } diff --git a/src/yuzu/CMakeLists.txt b/src/yuzu/CMakeLists.txt index fffb20220..ff1c1d985 100644 --- a/src/yuzu/CMakeLists.txt +++ b/src/yuzu/CMakeLists.txt @@ -68,6 +68,7 @@ add_executable(yuzu configuration/configure_profile_manager.ui configuration/configure_service.cpp configuration/configure_service.h + configuration/configure_service.ui configuration/configure_system.cpp configuration/configure_system.h configuration/configure_system.ui diff --git a/src/yuzu/configuration/configure_dialog.cpp b/src/yuzu/configuration/configure_dialog.cpp index 520b7e193..25b2e1b05 100644 --- a/src/yuzu/configuration/configure_dialog.cpp +++ b/src/yuzu/configuration/configure_dialog.cpp @@ -75,7 +75,8 @@ Q_DECLARE_METATYPE(QList); void ConfigureDialog::PopulateSelectionList() { const std::array>, 4> items{ {{tr("General"), {ui->generalTab, ui->webTab, ui->debugTab, ui->gameListTab}}, - {tr("System"), {ui->systemTab, ui->profileManagerTab, ui->filesystemTab, ui->audioTab}}, + {tr("System"), + {ui->systemTab, ui->profileManagerTab, ui->serviceTab, ui->filesystemTab, ui->audioTab}}, {tr("Graphics"), {ui->graphicsTab}}, {tr("Controls"), {ui->inputTab, ui->hotkeysTab}}}, }; @@ -109,6 +110,7 @@ void ConfigureDialog::UpdateVisibleTabs() { {ui->webTab, tr("Web")}, {ui->gameListTab, tr("Game List")}, {ui->filesystemTab, tr("Filesystem")}, + {ui->serviceTab, tr("Services")}, }; [[maybe_unused]] const QSignalBlocker blocker(ui->tabWidget); diff --git a/src/yuzu/configuration/configure_service.cpp b/src/yuzu/configuration/configure_service.cpp index 86160b479..81c9e933f 100644 --- a/src/yuzu/configuration/configure_service.cpp +++ b/src/yuzu/configuration/configure_service.cpp @@ -20,7 +20,7 @@ QString FormatEventStatusString(const Service::BCAT::EventStatus& status) { if (status.events.size() == 1) { out += QStringLiteral("%1
").arg(QString::fromStdString(status.events.front())); } else { - for (const auto event : status.events) { + for (const auto& event : status.events) { out += QStringLiteral("- %1
").arg(QString::fromStdString(event)); } } @@ -34,7 +34,7 @@ QString FormatEventStatusString(const Service::BCAT::EventStatus& status) { } // Anonymous namespace ConfigureService::ConfigureService(QWidget* parent) - : QWidget(parent), ui(std::make_unique()), watcher(this) { + : QWidget(parent), ui(std::make_unique()) { ui->setupUi(this); ui->bcat_source->addItem(QStringLiteral("None")); @@ -62,7 +62,8 @@ void ConfigureService::RetranslateUi() { } void ConfigureService::SetConfiguration() { - int index = ui->bcat_source->findData(QString::fromStdString(Settings::values.bcat_backend)); + const int index = + ui->bcat_source->findData(QString::fromStdString(Settings::values.bcat_backend)); ui->bcat_source->setCurrentIndex(index == -1 ? 0 : index); } @@ -73,14 +74,14 @@ std::pair ConfigureService::BCATDownloadEvents() { switch (res) { case Service::BCAT::Boxcat::StatusResult::Offline: - return {QStringLiteral(""), + return {QString{}, tr("The boxcat service is offline or you are not connected to the internet.")}; case Service::BCAT::Boxcat::StatusResult::ParseError: - return {QStringLiteral(""), + return {QString{}, tr("There was an error while processing the boxcat event data. Contact the yuzu " "developers.")}; case Service::BCAT::Boxcat::StatusResult::BadClientVersion: - return {QStringLiteral(""), + return {QString{}, tr("The version of yuzu you are using is either too new or too old for the server. " "Try updating to the latest official release of yuzu.")}; } @@ -98,11 +99,11 @@ std::pair ConfigureService::BCATDownloadEvents() { for (const auto& [key, value] : map) { out += QStringLiteral("%1%2
%3") - .arg(out.isEmpty() ? QStringLiteral("") : QStringLiteral("
")) + .arg(out.isEmpty() ? QString{} : QStringLiteral("
")) .arg(QString::fromStdString(key)) .arg(FormatEventStatusString(value)); } - return {QStringLiteral("Current Boxcat Events"), out}; + return {QStringLiteral("Current Boxcat Events"), std::move(out)}; } void ConfigureService::OnBCATImplChanged() { @@ -110,7 +111,7 @@ void ConfigureService::OnBCATImplChanged() { const auto boxcat = ui->bcat_source->currentText() == QStringLiteral("Boxcat"); ui->bcat_empty_header->setHidden(!boxcat); ui->bcat_empty_label->setHidden(!boxcat); - ui->bcat_empty_header->setText(QStringLiteral("")); + ui->bcat_empty_header->setText(QString{}); ui->bcat_empty_label->setText(tr("Yuzu is retrieving the latest boxcat status...")); if (!boxcat) diff --git a/src/yuzu/configuration/configure_service.h b/src/yuzu/configuration/configure_service.h index efc8e21a8..f5c1b703a 100644 --- a/src/yuzu/configuration/configure_service.h +++ b/src/yuzu/configuration/configure_service.h @@ -30,5 +30,5 @@ private: void OnUpdateBCATEmptyLabel(std::pair string); std::unique_ptr ui; - QFutureWatcher> watcher; + QFutureWatcher> watcher{this}; }; -- cgit v1.2.3