Qt: Display profile icon in achievement settings

This commit is contained in:
Stenzek
2026-01-08 15:30:44 +10:00
parent f7e83492b9
commit 212b0e6aed
2 changed files with 80 additions and 47 deletions

View File

@@ -104,7 +104,7 @@ AchievementSettingsWidget::AchievementSettingsWidget(SettingsWindow* dialog, QWi
{
connect(m_ui.loginButton, &QPushButton::clicked, this, &AchievementSettingsWidget::onLoginLogoutPressed);
connect(m_ui.viewProfile, &QPushButton::clicked, this, &AchievementSettingsWidget::onViewProfilePressed);
connect(m_ui.refreshProgress, &QPushButton::clicked, g_main_window, &MainWindow::refreshAchievementProgress);
connect(g_core_thread, &CoreThread::achievementsLoginSuccess, this, &AchievementSettingsWidget::updateLoginState);
updateLoginState();
}
else
@@ -159,8 +159,6 @@ void AchievementSettingsWidget::updateEnableState()
m_ui.encoreMode->setEnabled(enabled);
m_ui.spectatorMode->setEnabled(enabled);
m_ui.unofficialAchievements->setEnabled(enabled);
if (!m_dialog->isPerGameSettings())
m_ui.refreshProgress->setEnabled(enabled && m_ui.viewProfile->isEnabled());
}
void AchievementSettingsWidget::onHardcoreModeStateChanged()
@@ -204,7 +202,29 @@ void AchievementSettingsWidget::onLeaderboardsNotificationDurationSliderChanged(
void AchievementSettingsWidget::updateLoginState()
{
const std::string username(Core::GetBaseStringSettingValue("Cheevos", "Username"));
std::string username;
std::string badge_path;
{
const auto lock = Achievements::GetLock();
if (Achievements::IsLoggedIn())
{
if (const char* username_ptr = Achievements::GetLoggedInUserName())
username = username_ptr;
badge_path = Achievements::GetLoggedInUserBadgePath();
}
else
{
username = Core::GetBaseStringSettingValue("Cheevos", "Username");
}
}
if (badge_path.empty())
badge_path = QtHost::GetResourcePath("images/ra-generic-user.png", true);
m_ui.userBadge->setPixmap(QPixmap(QString::fromStdString(badge_path)));
const bool logged_in = !username.empty();
if (logged_in)
@@ -214,7 +234,7 @@ void AchievementSettingsWidget::updateLoginState()
const QString login_timestamp =
QtHost::FormatNumber(Host::NumberFormatType::ShortDateTime, static_cast<s64>(login_unix_timestamp));
m_ui.loginStatus->setText(
tr("Username: %1\nLogin token generated on %2.").arg(QString::fromStdString(username)).arg(login_timestamp));
tr("Logged in as %1\nToken generated at %2").arg(QString::fromStdString(username)).arg(login_timestamp));
m_ui.loginButton->setText(tr("Logout"));
}
else
@@ -224,7 +244,6 @@ void AchievementSettingsWidget::updateLoginState()
}
m_ui.viewProfile->setEnabled(logged_in);
m_ui.refreshProgress->setEnabled(logged_in && Core::GetBaseBoolSettingValue("Cheevos", "Enabled", false));
}
void AchievementSettingsWidget::onLoginLogoutPressed()

View File

@@ -23,6 +23,61 @@
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QGroupBox" name="loginBox">
<layout class="QHBoxLayout" name="horizontalLayout" stretch="0,1,0,0">
<property name="spacing">
<number>10</number>
</property>
<item>
<widget class="QLabel" name="userBadge">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="loginStatus">
<property name="alignment">
<set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop</set>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="viewProfile">
<property name="text">
<string>View Profile...</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="loginButton">
<property name="text">
<string>Login...</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="settingsGroupBox">
<property name="title">
@@ -232,47 +287,6 @@
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="loginBox">
<property name="title">
<string>Account</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout" stretch="1,0,0,0">
<item>
<widget class="QLabel" name="loginStatus">
<property name="text">
<string>Username:
Login token generated at:</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop</set>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="refreshProgress">
<property name="text">
<string>Refresh Progress</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="viewProfile">
<property name="text">
<string>View Profile...</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="loginButton">
<property name="text">
<string>Login...</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">