Merge branch 'master' of github.com:daviDarthemis/rpcs3-debug

This commit is contained in:
daviDarthemis 2024-12-08 21:46:41 -03:00
commit fc5162a02f
9 changed files with 92 additions and 58 deletions

View file

@ -22,7 +22,7 @@ LOG_CHANNEL(sys_fs);
lv2_fs_mount_point g_mp_sys_dev_usb{"/dev_usb", "CELL_FS_FAT", "CELL_FS_IOS:USB_MASS_STORAGE", 512, 0x100, 4096, lv2_mp_flag::no_uid_gid};
lv2_fs_mount_point g_mp_sys_dev_dvd{"/dev_ps2disc", "CELL_FS_ISO9660", "CELL_FS_IOS:PATA1_BDVD_DRIVE", 2048, 0x100, 32768, lv2_mp_flag::read_only + lv2_mp_flag::no_uid_gid, &g_mp_sys_dev_usb};
lv2_fs_mount_point g_mp_sys_dev_bdvd{"/dev_bdvd", "CELL_FS_ISO9660", "CELL_FS_IOS:PATA0_BDVD_DRIVE", 2048, 0x4D955, 65536, lv2_mp_flag::read_only + lv2_mp_flag::no_uid_gid, &g_mp_sys_dev_dvd};
lv2_fs_mount_point g_mp_sys_dev_bdvd{"/dev_bdvd", "CELL_FS_ISO9660", "CELL_FS_IOS:PATA0_BDVD_DRIVE", 2048, 0x4D955, 2048, lv2_mp_flag::read_only + lv2_mp_flag::no_uid_gid, &g_mp_sys_dev_dvd};
lv2_fs_mount_point g_mp_sys_dev_hdd1{"/dev_hdd1", "CELL_FS_FAT", "CELL_FS_UTILITY:HDD1", 512, 0x3FFFF8, 32768, lv2_mp_flag::no_uid_gid + lv2_mp_flag::cache, &g_mp_sys_dev_bdvd};
lv2_fs_mount_point g_mp_sys_dev_hdd0{"/dev_hdd0", "CELL_FS_UFS", "CELL_FS_UTILITY:HDD0", 512, 0x24FAEA98, 4096, {}, &g_mp_sys_dev_hdd1};
lv2_fs_mount_point g_mp_sys_dev_flash3{"/dev_flash3", "CELL_FS_FAT", "CELL_FS_IOS:BUILTIN_FLSH3", 512, 0x400, 8192, lv2_mp_flag::no_uid_gid, &g_mp_sys_dev_hdd0}; // TODO confirm

View file

@ -161,18 +161,10 @@ bool gui_application::Init()
{
welcome_dialog* welcome = new welcome_dialog(m_gui_settings, false);
bool use_dark_theme = false;
connect(welcome, &QDialog::accepted, this, [&]()
if (welcome->exec() == QDialog::Rejected)
{
use_dark_theme = welcome->does_user_want_dark_theme();
});
welcome->exec();
if (use_dark_theme)
{
m_gui_settings->SetValue(gui::m_currentStylesheet, "Darker Style by TheMitoSan");
// If the agreement on RPCS3's usage conditions was not accepted by the user, ask the main window to gracefully terminate
return false;
}
}

View file

@ -87,10 +87,11 @@ namespace gui
return q_string_pair(path, title.simplified()); // simplified() forces single line text
}
const QString Settings = "CurrentSettings";
const QString Settings = "CurrentSettings";
const QString DefaultStylesheet = "default";
const QString NoStylesheet = "none";
const QString NativeStylesheet = "native";
const QString NoStylesheet = "none";
const QString NativeStylesheet = "native";
const QString DarkStylesheet = "Darker Style by TheMitoSan";
const QString main_window = "main_window";
const QString game_list = "GameList";

View file

@ -1848,12 +1848,29 @@ void main_window::SaveWindowState() const
// Save gui settings
m_gui_settings->SetValue(gui::mw_geometry, saveGeometry(), false);
m_gui_settings->SetValue(gui::mw_windowState, saveState(), false);
m_gui_settings->SetValue(gui::mw_mwState, m_mw->saveState(), true);
// Save column settings
m_game_list_frame->SaveSettings();
// Save splitter state
m_debugger_frame->SaveSettings();
// NOTE:
//
// This method is also invoked in case the gui_application::Init() method failed ("false" was returned)
// to initialize some modules leaving other modules uninitialized (NULL pointed).
// So, the following checks on NULL pointer are provided before accessing the related module's object
if (m_mw)
{
m_gui_settings->SetValue(gui::mw_mwState, m_mw->saveState(), true);
}
if (m_game_list_frame)
{
// Save column settings
m_game_list_frame->SaveSettings();
}
if (m_debugger_frame)
{
// Save splitter state
m_debugger_frame->SaveSettings();
}
}
void main_window::RepaintThumbnailIcons()

View file

@ -150,11 +150,13 @@ namespace gui
static inline Qt::ColorScheme color_scheme()
{
// use the QGuiApplication's properties to report the default GUI color scheme
return QGuiApplication::styleHints()->colorScheme();
}
static inline bool dark_mode_active()
{
// "true" if the default GUI color scheme is dark. "false" otherwise
return color_scheme() == Qt::ColorScheme::Dark;
}

View file

@ -19,16 +19,12 @@ welcome_dialog::welcome_dialog(std::shared_ptr<gui_settings> gui_settings, bool
ui->setupUi(this);
setAttribute(Qt::WA_DeleteOnClose);
setWindowFlag(Qt::WindowCloseButtonHint, is_manual_show);
setWindowFlag(Qt::WindowCloseButtonHint, false); // disable the close button shown on the dialog's top right corner
layout()->setSizeConstraint(QLayout::SetFixedSize);
ui->okay->setEnabled(is_manual_show);
ui->i_have_read->setChecked(is_manual_show);
ui->i_have_read->setEnabled(!is_manual_show);
ui->do_not_show->setEnabled(!is_manual_show);
ui->do_not_show->setChecked(!m_gui_settings->GetValue(gui::ib_show_welcome).toBool());
ui->use_dark_theme->setChecked(gui::utils::dark_mode_active());
ui->icon_label->load(QStringLiteral(":/rpcs3.svg"));
ui->label_3->setText(tr(
ui->label_desc->setText(tr(
R"(
<p style="white-space: nowrap;">
RPCS3 is an open-source Sony PlayStation 3 emulator and debugger.<br>
@ -50,33 +46,44 @@ welcome_dialog::welcome_dialog(std::shared_ptr<gui_settings> gui_settings, bool
)"
).arg(gui::utils::get_link_style()));
#ifdef __APPLE__
ui->create_applications_menu_shortcut->setText(tr("&Create Launchpad shortcut"));
ui->use_dark_theme->setVisible(false);
ui->use_dark_theme->setEnabled(false);
#else
#ifndef _WIN32
ui->create_applications_menu_shortcut->setText(tr("&Create Application Menu shortcut"));
#endif
ui->use_dark_theme->setVisible(!is_manual_show);
ui->use_dark_theme->setEnabled(!is_manual_show);
ui->use_dark_theme->setChecked(gui::utils::dark_mode_active());
#endif
ui->accept->setEnabled(is_manual_show);
ui->reject->setVisible(!is_manual_show);
ui->i_have_read->setVisible(!is_manual_show);
ui->i_have_read->setChecked(is_manual_show);
ui->show_at_startup->setChecked(m_gui_settings->GetValue(gui::ib_show_welcome).toBool());
if (!is_manual_show)
{
connect(ui->i_have_read, &QCheckBox::clicked, this, [this](bool checked)
{
ui->okay->setEnabled(checked);
});
connect(ui->do_not_show, &QCheckBox::clicked, this, [this](bool checked)
{
m_gui_settings->SetValue(gui::ib_show_welcome, QVariant(!checked));
ui->accept->setEnabled(checked);
ui->reject->setEnabled(!checked);
});
}
connect(ui->okay, &QPushButton::clicked, this, &QDialog::accept);
connect(ui->show_at_startup, &QCheckBox::clicked, this, [this](bool checked)
{
m_gui_settings->SetValue(gui::ib_show_welcome, QVariant(checked));
});
#ifdef _WIN32
ui->create_applications_menu_shortcut->setText(tr("&Create Start Menu shortcut"));
#elif defined(__APPLE__)
ui->create_applications_menu_shortcut->setText(tr("&Create Launchpad shortcut"));
ui->use_dark_theme->setVisible(false);
#else
ui->create_applications_menu_shortcut->setText(tr("&Create Application Menu shortcut"));
#endif
connect(ui->accept, &QPushButton::clicked, this, &QDialog::accept); // trigger "accept" signal (setting also dialog's result code to QDialog::Accepted)
connect(ui->reject, &QPushButton::clicked, this, &QDialog::reject); // trigger "reject" signal (setting also dialog's result code to QDialog::Rejected)
layout()->setSizeConstraint(QLayout::SetFixedSize);
connect(this, &QDialog::finished, this, [this]()
connect(this, &QDialog::accepted, this, [this]() // "accept" signal's event handler
{
if (ui->create_desktop_shortcut->isChecked())
{
@ -88,7 +95,16 @@ welcome_dialog::welcome_dialog(std::shared_ptr<gui_settings> gui_settings, bool
gui::utils::create_shortcut("RPCS3", "", "", "RPCS3", ":/rpcs3.svg", fs::get_temp_dir(), gui::utils::shortcut_location::applications);
}
m_user_wants_dark_theme = ui->use_dark_theme->isChecked();
if (ui->use_dark_theme->isChecked() && ui->use_dark_theme->isEnabled()) // if checked and also on initial welcome dialog
{
m_gui_settings->SetValue(gui::m_currentStylesheet, gui::DarkStylesheet);
}
});
connect(this, &QDialog::rejected, this, [this]() // "reject" signal's event handler
{
// if the agreement on RPCS3's usage conditions was not accepted by the user, always display the initial welcome dialog at next startup
m_gui_settings->SetValue(gui::ib_show_welcome, QVariant(true));
});
}

View file

@ -17,12 +17,7 @@ public:
explicit welcome_dialog(std::shared_ptr<gui_settings> gui_settings, bool is_manual_show, QWidget* parent = nullptr);
~welcome_dialog();
bool does_user_want_dark_theme() const
{
return m_user_wants_dark_theme;
}
private:
std::unique_ptr<Ui::welcome_dialog> ui;
std::shared_ptr<gui_settings> m_gui_settings;
bool m_user_wants_dark_theme = false;
};

View file

@ -103,7 +103,7 @@
</widget>
</item>
<item>
<widget class="QLabel" name="label_3">
<widget class="QLabel" name="label_desc">
<property name="font">
<font>
<family>Arial</family>
@ -201,7 +201,7 @@
<item>
<widget class="QCheckBox" name="use_dark_theme">
<property name="text">
<string>Use Dark Theme (Can Be Configured Later)</string>
<string>Use Dark Theme (can be configured later)</string>
</property>
</widget>
</item>
@ -233,7 +233,7 @@
<number>0</number>
</property>
<item alignment="Qt::AlignLeft">
<widget class="QPushButton" name="okay">
<widget class="QPushButton" name="accept">
<property name="text">
<string>Continue</string>
</property>
@ -242,6 +242,16 @@
</property>
</widget>
</item>
<item alignment="Qt::AlignLeft">
<widget class="QPushButton" name="reject">
<property name="text">
<string>Exit</string>
</property>
<property name="autoDefault">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<spacer name="button_layout_left">
<property name="orientation">
@ -276,9 +286,9 @@
</spacer>
</item>
<item alignment="Qt::AlignLeft">
<widget class="QCheckBox" name="do_not_show">
<widget class="QCheckBox" name="show_at_startup">
<property name="text">
<string>Do not show again</string>
<string>Show at startup</string>
</property>
</widget>
</item>

View file

@ -27,10 +27,11 @@ namespace utils
#include "Utilities/sync.h"
#include "Utilities/StrFmt.h"
#include <sys/utsname.h>
#ifdef __linux__
#include <sys/utsname.h>
bool is_kernel_at_least(int required_major, int required_minor, int required_patch)
{
struct utsname buf {};