boxcat: Implement events global field
This commit is contained in:
		
							
								
								
									
										2
									
								
								externals/libzip
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								externals/libzip
									
									
									
									
										vendored
									
									
								
							 Submodule externals/libzip updated: bebbb54c8e...bd7a8103e9
									
								
							| @@ -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<Kernel::ReadableEvent> 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<u64>(dir_name.size(), 0x31ull)); | ||||
|     std::memcpy(impl.current_file.data(), file_name.data(), | ||||
|                 std::min<u64>(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<u64>(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<std::vector<u8>> NullBackend::GetLaunchParameter(TitleIDVersion title) { | ||||
|   | ||||
| @@ -214,8 +214,7 @@ private: | ||||
|                 std::vector<u8> 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<std::vector<u8>> Boxcat::GetLaunchParameter(TitleIDVersion title) { | ||||
|   | ||||
| @@ -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<u64>(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<u64>(write_size, files.size()); | ||||
|         std::vector<DeliveryCacheDirectoryEntry> 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<u64>(size, entries.size() - next_read_index); | ||||
|         ctx.WriteBuffer(entries.data() + next_read_index, size * sizeof(DirectoryName)); | ||||
|         next_read_index += size; | ||||
|  | ||||
|   | ||||
| @@ -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(); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -48,20 +48,20 @@ ConfigureService::ConfigureService(QWidget* parent) | ||||
|     connect(ui->bcat_source, QOverload<int>::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<QString, QString> 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<QString, QString> ConfigureService::BCATDownloadEvents() { | ||||
|     } | ||||
|  | ||||
|     QString out; | ||||
|  | ||||
|     if (global.has_value()) { | ||||
|         out += QStringLiteral("%1<br>").arg(QString::fromStdString(*global)); | ||||
|     } | ||||
|  | ||||
|     for (const auto& [key, value] : map) { | ||||
|         out += QStringLiteral("%1<b>%2</b><br>%3") | ||||
|                    .arg(out.isEmpty() ? "" : "<br>") | ||||
|                    .arg(out.isEmpty() ? QStringLiteral("") : QStringLiteral("<br>")) | ||||
|                    .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) | ||||
|   | ||||
| @@ -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<QString, QString> BCATDownloadEvents(); | ||||
|     void OnBCATImplChanged(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user