qt: Add service dialog

This commit is contained in:
Zach Hilman 2019-10-02 08:35:39 -04:00
parent 5d86c52a3a
commit e55d086cc9
5 changed files with 20 additions and 17 deletions

View file

@ -364,18 +364,17 @@ void SynchronizeInternal(DirectoryGetter dir_getter, TitleIDVersion title,
bool Boxcat::Synchronize(TitleIDVersion title, ProgressServiceBackend& progress) { bool Boxcat::Synchronize(TitleIDVersion title, ProgressServiceBackend& progress) {
is_syncing.exchange(true); is_syncing.exchange(true);
std::thread([this, title, &progress] { std::thread([this, title, &progress] { SynchronizeInternal(dir_getter, title, progress); })
SynchronizeInternal(dir_getter, title, progress); .detach();
}).detach();
return true; return true;
} }
bool Boxcat::SynchronizeDirectory(TitleIDVersion title, std::string name, bool Boxcat::SynchronizeDirectory(TitleIDVersion title, std::string name,
ProgressServiceBackend& progress) { ProgressServiceBackend& progress) {
is_syncing.exchange(true); is_syncing.exchange(true);
std::thread([this, title, name, &progress] { std::thread(
SynchronizeInternal(dir_getter, title, progress, name); [this, title, name, &progress] { SynchronizeInternal(dir_getter, title, progress, name); })
}).detach(); .detach();
return true; return true;
} }

View file

@ -68,6 +68,7 @@ add_executable(yuzu
configuration/configure_profile_manager.ui configuration/configure_profile_manager.ui
configuration/configure_service.cpp configuration/configure_service.cpp
configuration/configure_service.h configuration/configure_service.h
configuration/configure_service.ui
configuration/configure_system.cpp configuration/configure_system.cpp
configuration/configure_system.h configuration/configure_system.h
configuration/configure_system.ui configuration/configure_system.ui

View file

@ -75,7 +75,8 @@ Q_DECLARE_METATYPE(QList<QWidget*>);
void ConfigureDialog::PopulateSelectionList() { void ConfigureDialog::PopulateSelectionList() {
const std::array<std::pair<QString, QList<QWidget*>>, 4> items{ const std::array<std::pair<QString, QList<QWidget*>>, 4> items{
{{tr("General"), {ui->generalTab, ui->webTab, ui->debugTab, ui->gameListTab}}, {{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("Graphics"), {ui->graphicsTab}},
{tr("Controls"), {ui->inputTab, ui->hotkeysTab}}}, {tr("Controls"), {ui->inputTab, ui->hotkeysTab}}},
}; };
@ -109,6 +110,7 @@ void ConfigureDialog::UpdateVisibleTabs() {
{ui->webTab, tr("Web")}, {ui->webTab, tr("Web")},
{ui->gameListTab, tr("Game List")}, {ui->gameListTab, tr("Game List")},
{ui->filesystemTab, tr("Filesystem")}, {ui->filesystemTab, tr("Filesystem")},
{ui->serviceTab, tr("Services")},
}; };
[[maybe_unused]] const QSignalBlocker blocker(ui->tabWidget); [[maybe_unused]] const QSignalBlocker blocker(ui->tabWidget);

View file

@ -20,7 +20,7 @@ QString FormatEventStatusString(const Service::BCAT::EventStatus& status) {
if (status.events.size() == 1) { if (status.events.size() == 1) {
out += QStringLiteral("%1<br>").arg(QString::fromStdString(status.events.front())); out += QStringLiteral("%1<br>").arg(QString::fromStdString(status.events.front()));
} else { } else {
for (const auto event : status.events) { for (const auto& event : status.events) {
out += QStringLiteral("- %1<br>").arg(QString::fromStdString(event)); out += QStringLiteral("- %1<br>").arg(QString::fromStdString(event));
} }
} }
@ -34,7 +34,7 @@ QString FormatEventStatusString(const Service::BCAT::EventStatus& status) {
} // Anonymous namespace } // Anonymous namespace
ConfigureService::ConfigureService(QWidget* parent) ConfigureService::ConfigureService(QWidget* parent)
: QWidget(parent), ui(std::make_unique<Ui::ConfigureService>()), watcher(this) { : QWidget(parent), ui(std::make_unique<Ui::ConfigureService>()) {
ui->setupUi(this); ui->setupUi(this);
ui->bcat_source->addItem(QStringLiteral("None")); ui->bcat_source->addItem(QStringLiteral("None"));
@ -62,7 +62,8 @@ void ConfigureService::RetranslateUi() {
} }
void ConfigureService::SetConfiguration() { 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); ui->bcat_source->setCurrentIndex(index == -1 ? 0 : index);
} }
@ -73,14 +74,14 @@ std::pair<QString, QString> ConfigureService::BCATDownloadEvents() {
switch (res) { switch (res) {
case Service::BCAT::Boxcat::StatusResult::Offline: case Service::BCAT::Boxcat::StatusResult::Offline:
return {QStringLiteral(""), return {QString{},
tr("The boxcat service is offline or you are not connected to the internet.")}; tr("The boxcat service is offline or you are not connected to the internet.")};
case Service::BCAT::Boxcat::StatusResult::ParseError: case Service::BCAT::Boxcat::StatusResult::ParseError:
return {QStringLiteral(""), return {QString{},
tr("There was an error while processing the boxcat event data. Contact the yuzu " tr("There was an error while processing the boxcat event data. Contact the yuzu "
"developers.")}; "developers.")};
case Service::BCAT::Boxcat::StatusResult::BadClientVersion: 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. " 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.")}; "Try updating to the latest official release of yuzu.")};
} }
@ -98,11 +99,11 @@ std::pair<QString, QString> ConfigureService::BCATDownloadEvents() {
for (const auto& [key, value] : map) { for (const auto& [key, value] : map) {
out += QStringLiteral("%1<b>%2</b><br>%3") out += QStringLiteral("%1<b>%2</b><br>%3")
.arg(out.isEmpty() ? QStringLiteral("") : QStringLiteral("<br>")) .arg(out.isEmpty() ? QString{} : QStringLiteral("<br>"))
.arg(QString::fromStdString(key)) .arg(QString::fromStdString(key))
.arg(FormatEventStatusString(value)); .arg(FormatEventStatusString(value));
} }
return {QStringLiteral("Current Boxcat Events"), out}; return {QStringLiteral("Current Boxcat Events"), std::move(out)};
} }
void ConfigureService::OnBCATImplChanged() { void ConfigureService::OnBCATImplChanged() {
@ -110,7 +111,7 @@ void ConfigureService::OnBCATImplChanged() {
const auto boxcat = ui->bcat_source->currentText() == QStringLiteral("Boxcat"); const auto boxcat = ui->bcat_source->currentText() == QStringLiteral("Boxcat");
ui->bcat_empty_header->setHidden(!boxcat); ui->bcat_empty_header->setHidden(!boxcat);
ui->bcat_empty_label->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...")); ui->bcat_empty_label->setText(tr("Yuzu is retrieving the latest boxcat status..."));
if (!boxcat) if (!boxcat)

View file

@ -30,5 +30,5 @@ private:
void OnUpdateBCATEmptyLabel(std::pair<QString, QString> string); void OnUpdateBCATEmptyLabel(std::pair<QString, QString> string);
std::unique_ptr<Ui::ConfigureService> ui; std::unique_ptr<Ui::ConfigureService> ui;
QFutureWatcher<std::pair<QString, QString>> watcher; QFutureWatcher<std::pair<QString, QString>> watcher{this};
}; };