initial user management dialog

This commit is contained in:
georgemoralis 2025-06-12 18:03:44 +03:00
parent 3da6f25c59
commit 0e2f414cb6
8 changed files with 144 additions and 39 deletions

View file

@ -1059,6 +1059,8 @@ set(QT_GUI src/qt_gui/about_dialog.cpp
src/qt_gui/gui_settings.h
src/qt_gui/settings.cpp
src/qt_gui/settings.h
src/qt_gui/user_management_dialog.cpp
src/qt_gui/user_management_dialog.h
${EMULATOR}
${RESOURCE_FILES}
${TRANSLATIONS}

View file

@ -53,6 +53,7 @@ path = [
"src/images/refreshlist_icon.png",
"src/images/settings_icon.png",
"src/images/fullscreen_icon.png",
"src/images/users_icon.png",
"src/images/stop_icon.png",
"src/images/utils_icon.png",
"src/images/shadPS4.icns",

BIN
src/images/users_icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

View file

@ -27,6 +27,7 @@
#ifdef ENABLE_DISCORD_RPC
#include "common/discord_rpc_handler.h"
#endif
#include "user_management_dialog.h"
MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWindow) {
ui->setupUi(this);
@ -440,6 +441,11 @@ void MainWindow::CreateConnects() {
settingsDialog->exec();
});
connect(ui->userManagement, &QAction::triggered, this, [this]() {
user_manager_dialog user_manager(this);
user_manager.exec();
});
connect(ui->settingsButton, &QPushButton::clicked, this, [this]() {
auto settingsDialog = new SettingsDialog(m_gui_settings, m_compat_info, this);
@ -1103,6 +1109,7 @@ void MainWindow::SetUiIcons(bool isWhite) {
ui->menuGame_List_Mode->setIcon(RecolorIcon(ui->menuGame_List_Mode->icon(), isWhite));
ui->trophyViewerAct->setIcon(RecolorIcon(ui->trophyViewerAct->icon(), isWhite));
ui->configureAct->setIcon(RecolorIcon(ui->configureAct->icon(), isWhite));
ui->userManagement->setIcon(RecolorIcon(ui->userManagement->icon(), isWhite));
ui->addElfFolderAct->setIcon(RecolorIcon(ui->addElfFolderAct->icon(), isWhite));
}

View file

@ -32,6 +32,7 @@ public:
#endif
QAction* aboutAct;
QAction* configureAct;
QAction* userManagement;
QAction* setThemeDark;
QAction* setThemeLight;
QAction* setThemeGreen;
@ -155,6 +156,9 @@ public:
configureAct = new QAction(MainWindow);
configureAct->setObjectName("configureAct");
configureAct->setIcon(QIcon(":images/settings_icon.png"));
userManagement = new QAction(MainWindow);
userManagement->setObjectName("userManagement");
userManagement->setIcon(QIcon(":images/users_icon.png"));
setThemeDark = new QAction(MainWindow);
setThemeDark->setObjectName("setThemeDark");
setThemeDark->setCheckable(true);
@ -329,6 +333,7 @@ public:
menuGame_List_Mode->addAction(setlistModeGridAct);
menuGame_List_Mode->addAction(setlistElfAct);
menuSettings->addAction(configureAct);
menuSettings->addAction(userManagement);
menuSettings->addAction(gameInstallPathAct);
menuSettings->addAction(menuUtils->menuAction());
menuUtils->addAction(downloadCheatsPatchesAct);
@ -355,6 +360,7 @@ public:
#endif
aboutAct->setText(QCoreApplication::translate("MainWindow", "About shadPS4", nullptr));
configureAct->setText(QCoreApplication::translate("MainWindow", "Configure...", nullptr));
userManagement->setText(QCoreApplication::translate("MainWindow", "User Management", nullptr));
#if QT_CONFIG(tooltip)
#endif // QT_CONFIG(tooltip)
menuRecent->setTitle(QCoreApplication::translate("MainWindow", "Recent Games", nullptr));

View file

@ -0,0 +1,68 @@
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include <QDesktopServices>
#include <QEvent>
#include <QGuiApplication>
#include <QHBoxLayout>
#include <QHeaderView>
#include <QInputDialog>
#include <QKeyEvent>
#include <QMenu>
#include <QMessageBox>
#include <QMouseEvent>
#include <QPushButton>
#include <QRegularExpressionValidator>
#include <QScreen>
#include "user_management_dialog.h"
user_manager_dialog::user_manager_dialog(QWidget* parent) : QDialog(parent) {
setWindowTitle(tr("User Manager"));
setMinimumSize(QSize(500, 400));
setModal(true);
Init();
}
void user_manager_dialog::Init() {
// Table
m_table = new QTableWidget(this);
m_table->setSelectionMode(QAbstractItemView::SelectionMode::SingleSelection);
m_table->setSelectionBehavior(QAbstractItemView::SelectRows);
m_table->setContextMenuPolicy(Qt::CustomContextMenu);
m_table->setColumnCount(2);
m_table->setCornerButtonEnabled(false);
m_table->setAlternatingRowColors(true);
m_table->setHorizontalHeaderLabels(QStringList() << tr("User ID") << tr("User Name"));
m_table->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft);
m_table->horizontalHeader()->setStretchLastSection(true);
m_table->horizontalHeader()->setDefaultSectionSize(150);
m_table->installEventFilter(this);
QPushButton* push_remove_user = new QPushButton(tr("&Delete User"), this);
push_remove_user->setAutoDefault(false);
QPushButton* push_create_user = new QPushButton(tr("&Create User"), this);
push_create_user->setAutoDefault(false);
QPushButton* push_rename_user = new QPushButton(tr("&Rename User"), this);
push_rename_user->setAutoDefault(false);
QPushButton* push_close = new QPushButton(tr("&Close"), this);
push_close->setAutoDefault(false);
// Button Layout
QHBoxLayout* hbox_buttons = new QHBoxLayout();
hbox_buttons->addWidget(push_create_user);
hbox_buttons->addWidget(push_rename_user);
hbox_buttons->addWidget(push_remove_user);
hbox_buttons->addStretch();
hbox_buttons->addWidget(push_close);
// Main Layout
QVBoxLayout* vbox_main = new QVBoxLayout();
vbox_main->setAlignment(Qt::AlignCenter);
vbox_main->addWidget(m_table);
vbox_main->addLayout(hbox_buttons);
setLayout(vbox_main);
}

View file

@ -0,0 +1,20 @@
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include <QDialog>
#include <QTableWidget>
class user_manager_dialog : public QDialog {
Q_OBJECT
public:
explicit user_manager_dialog(QWidget* parent = nullptr);
private:
void Init();
QTableWidget* m_table = nullptr;
};

View file

@ -16,6 +16,7 @@
<file>images/grid_icon.png</file>
<file>images/exit_icon.png</file>
<file>images/settings_icon.png</file>
<file>images/users_icon.png</file>
<file>images/controller_icon.png</file>
<file>images/restart_game_icon.png</file>
<file>images/update_icon.png</file>