From bcf1eafb8bd1a810fd33a7e7e06a86173b4bfb9f Mon Sep 17 00:00:00 2001 From: Zach Hilman Date: Thu, 20 Jun 2019 20:31:17 -0400 Subject: [PATCH] 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(-) 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();