Add Discord Rich Presence Support (#3883)

* Initial Discord RPC support

Build with Discord Presence ON

Fix RPC detection

Fix Time elapsed on pause; will now continue to count.

* Fix CI builds with compile flag

Addressed reviews

Fix silly mistakes

Fix 'Not in-game' display

class instead of namespace

Fix

Revamped

remove redundant code

Using Pimpl pattern

* Implement Null class

* Fix config updation

* Addressed All Reviews

* externals/discord-rpc : Updated to latest commit
This commit is contained in:
Vamsi Krishna 2018-08-20 14:50:33 +05:30 committed by Ben
parent 96c025e4c2
commit 6cb9a45154
19 changed files with 193 additions and 11 deletions

View file

@ -207,6 +207,8 @@ void Config::ReadValues() {
qt_config->beginGroup("UI");
UISettings::values.theme = ReadSetting("theme", UISettings::themes[0].second).toString();
UISettings::values.enable_discord_presence =
ReadSetting("enable_discord_presence", true).toBool();
qt_config->beginGroup("Updater");
UISettings::values.check_for_update_on_start =
@ -440,6 +442,7 @@ void Config::SaveValues() {
qt_config->beginGroup("UI");
WriteSetting("theme", UISettings::values.theme, UISettings::themes[0].second);
WriteSetting("enable_discord_presence", UISettings::values.enable_discord_presence, true);
qt_config->beginGroup("Updater");
WriteSetting("check_for_update_on_start", UISettings::values.check_for_update_on_start, true);

View file

@ -5,6 +5,7 @@
#include <QIcon>
#include <QMessageBox>
#include "citra_qt/configuration/configure_web.h"
#include "citra_qt/ui_settings.h"
#include "core/settings.h"
#include "core/telemetry_session.h"
#include "ui_configure_web.h"
@ -17,6 +18,9 @@ ConfigureWeb::ConfigureWeb(QWidget* parent)
connect(ui->button_verify_login, &QPushButton::clicked, this, &ConfigureWeb::VerifyLogin);
connect(this, &ConfigureWeb::LoginVerified, this, &ConfigureWeb::OnLoginVerified);
#ifndef USE_DISCORD_PRESENCE
ui->discord_group->setVisible(false);
#endif
this->setConfiguration();
}
@ -49,10 +53,13 @@ void ConfigureWeb::setConfiguration() {
ui->label_telemetry_id->setText(
tr("Telemetry ID: 0x%1").arg(QString::number(Core::GetTelemetryId(), 16).toUpper()));
user_verified = true;
ui->toggle_discordrpc->setChecked(UISettings::values.enable_discord_presence);
}
void ConfigureWeb::applyConfiguration() {
Settings::values.enable_telemetry = ui->toggle_telemetry->isChecked();
UISettings::values.enable_discord_presence = ui->toggle_discordrpc->isChecked();
if (user_verified) {
Settings::values.citra_username = ui->edit_username->text().toStdString();
Settings::values.citra_token = ui->edit_token->text().toStdString();

View file

@ -170,6 +170,22 @@
</item>
</layout>
</item>
<item>
<widget class="QGroupBox" name="discord_group">
<property name="title">
<string>Discord Presence</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_21">
<item>
<widget class="QCheckBox" name="toggle_discordrpc">
<property name="text">
<string>Show Current Game in your Discord Status</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">