Merge pull request #5370 from Ryanel/qt-settings-general
Qt: Add General Pane to Settings
This commit is contained in:
commit
a44fa16601
|
@ -29,6 +29,7 @@ set(SRCS
|
|||
GameList/GameTracker.cpp
|
||||
GameList/ListProxyModel.cpp
|
||||
GameList/TableDelegate.cpp
|
||||
Settings/GeneralPane.cpp
|
||||
Settings/InterfacePane.cpp
|
||||
)
|
||||
|
||||
|
|
|
@ -4,8 +4,10 @@
|
|||
|
||||
#include "DolphinQt2/Config/SettingsWindow.h"
|
||||
#include "DolphinQt2/Settings.h"
|
||||
#include "DolphinQt2/Settings/GeneralPane.h"
|
||||
#include "DolphinQt2/Settings/InterfacePane.h"
|
||||
|
||||
|
||||
SettingsWindow::SettingsWindow(QWidget* parent) : QDialog(parent)
|
||||
{
|
||||
// Set Window Properties
|
||||
|
@ -49,6 +51,8 @@ void SettingsWindow::SetupSettingsWidget()
|
|||
m_settings_outer = new QStackedWidget;
|
||||
m_settings_outer->setCurrentIndex(0);
|
||||
|
||||
// Panes initalised here
|
||||
m_settings_outer->addWidget(new GeneralPane);
|
||||
m_settings_outer->addWidget(new InterfacePane);
|
||||
}
|
||||
|
||||
|
@ -64,8 +68,9 @@ void SettingsWindow::MakeUnfinishedWarning()
|
|||
|
||||
void SettingsWindow::AddCategoryToList(const QString& title, const QString& icon)
|
||||
{
|
||||
QString dir = Settings().GetThemeDir();
|
||||
QListWidgetItem* button = new QListWidgetItem();
|
||||
button->setIcon(QIcon(icon));
|
||||
button->setIcon(QIcon(dir.append(icon)));
|
||||
button->setText(title);
|
||||
button->setTextAlignment(Qt::AlignVCenter);
|
||||
button->setSizeHint(QSize(28, 28));
|
||||
|
@ -75,16 +80,14 @@ void SettingsWindow::AddCategoryToList(const QString& title, const QString& icon
|
|||
|
||||
void SettingsWindow::MakeCategoryList()
|
||||
{
|
||||
QString dir = Settings().GetThemeDir();
|
||||
|
||||
m_categories = new QListWidget;
|
||||
m_categories->setMaximumWidth(175);
|
||||
m_categories->setIconSize(QSize(32, 32));
|
||||
m_categories->setMovement(QListView::Static);
|
||||
m_categories->setSpacing(0);
|
||||
|
||||
AddCategoryToList(tr("Interface"), dir.append(QStringLiteral("config.png")));
|
||||
|
||||
AddCategoryToList(tr("General"), QStringLiteral("config.png"));
|
||||
AddCategoryToList(tr("Interface"), QStringLiteral("browse.png"));
|
||||
connect(m_categories, &QListWidget::currentItemChanged, this, &SettingsWindow::changePage);
|
||||
}
|
||||
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
<QtMoc Include="MenuBar.h" />
|
||||
<QtMoc Include="RenderWidget.h" />
|
||||
<QtMoc Include="Settings.h" />
|
||||
<QtMoc Include="Settings\GeneralPane.h" />
|
||||
<QtMoc Include="ToolBar.h" />
|
||||
|
||||
</ItemGroup>
|
||||
|
@ -112,9 +113,11 @@
|
|||
<ClCompile Include="$(QtMocOutPrefix)GameList.cpp" />
|
||||
<ClCompile Include="$(QtMocOutPrefix)GameListModel.cpp" />
|
||||
<ClCompile Include="$(QtMocOutPrefix)GameTracker.cpp" />
|
||||
<ClCompile Include="$(QtMocOutPrefix)GeneralPane.cpp" />
|
||||
<ClCompile Include="$(QtMocOutPrefix)Host.cpp" />
|
||||
<ClCompile Include="$(QtMocOutPrefix)InDevelopmentWarning.cpp" />
|
||||
<ClCompile Include="$(QtMocOutPrefix)InfoWidget.cpp" />
|
||||
<ClCompile Include="$(QtMocOutPrefix)InterfacePane.cpp" />
|
||||
<ClCompile Include="$(QtMocOutPrefix)ListProxyModel.cpp" />
|
||||
<ClCompile Include="$(QtMocOutPrefix)MainWindow.cpp" />
|
||||
<ClCompile Include="$(QtMocOutPrefix)MenuBar.cpp" />
|
||||
|
@ -125,7 +128,7 @@
|
|||
<ClCompile Include="$(QtMocOutPrefix)SettingsWindow.cpp" />
|
||||
<ClCompile Include="$(QtMocOutPrefix)TableDelegate.cpp" />
|
||||
<ClCompile Include="$(QtMocOutPrefix)ToolBar.cpp" />
|
||||
<ClCompile Include="$(QtMocOutPrefix)InterfacePane.cpp" />
|
||||
|
||||
<ClCompile Include="AboutDialog.cpp" />
|
||||
<ClCompile Include="Config\ControllersWindow.cpp" />
|
||||
<ClCompile Include="Config\FilesystemWidget.cpp" />
|
||||
|
@ -147,8 +150,9 @@
|
|||
<ClCompile Include="RenderWidget.cpp" />
|
||||
<ClCompile Include="Resources.cpp" />
|
||||
<ClCompile Include="Settings.cpp" />
|
||||
<ClCompile Include="Settings\GeneralPane.cpp" />
|
||||
<ClCompile Include="Settings\InterfacePane.cpp" />
|
||||
<ClCompile Include="ToolBar.cpp" />
|
||||
<ClCompile Include="Settings/InterfacePane.cpp" />
|
||||
</ItemGroup>
|
||||
<!--Put standard C/C++ headers here-->
|
||||
<!--
|
||||
|
|
|
@ -91,12 +91,22 @@
|
|||
<ClCompile Include="$(QtMocOutPrefix)InDevelopmentWarning.cpp">
|
||||
<Filter>Generated Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Settings/InterfacePane.cpp">
|
||||
<ClCompile Include="Settings\GeneralPane.cpp">
|
||||
<Filter>Settings</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(QtMocOutPrefix)GeneralPane.cpp">
|
||||
<Filter>Generated Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(QtMocOutPrefix)InterfacePane.cpp">
|
||||
<Filter>Generated Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Config\ControllersWindow.cpp" />
|
||||
<ClCompile Include="$(QtMocOutPrefix)ControllersWindow.cpp">
|
||||
<Filter>Generated Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Settings\InterfacePane.cpp">
|
||||
<Filter>Settings</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<QtMoc Include="MainWindow.h" />
|
||||
|
@ -130,9 +140,13 @@
|
|||
<QtMoc Include="Config\FilesystemWidget.h" />
|
||||
<QtMoc Include="Config\InfoWidget.h" />
|
||||
<QtMoc Include="InDevelopmentWarning.h" />
|
||||
<QtMoc Include="Config\ControllersWindow.h" />
|
||||
<QtMoc Include="Settings\InterfacePane.h">
|
||||
<Filter>Settings</Filter>
|
||||
</QtMoc>
|
||||
<QtMoc Include="Settings\GeneralPane.h">
|
||||
<Filter>Settings</Filter>
|
||||
</QtMoc>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<QtUi Include="*.ui" />
|
||||
|
|
|
@ -108,6 +108,36 @@ void Settings::SetWiiNAND(const QString& path)
|
|||
SConfig::GetInstance().SaveSettings();
|
||||
}
|
||||
|
||||
float Settings::GetEmulationSpeed() const
|
||||
{
|
||||
return SConfig::GetInstance().m_EmulationSpeed;
|
||||
}
|
||||
|
||||
void Settings::SetEmulationSpeed(float val)
|
||||
{
|
||||
SConfig::GetInstance().m_EmulationSpeed = val;
|
||||
}
|
||||
|
||||
bool Settings::GetForceNTSCJ() const
|
||||
{
|
||||
return SConfig::GetInstance().bForceNTSCJ;
|
||||
}
|
||||
|
||||
void Settings::SetForceNTSCJ(bool val)
|
||||
{
|
||||
SConfig::GetInstance().bForceNTSCJ = val;
|
||||
}
|
||||
|
||||
bool Settings::GetAnalyticsEnabled() const
|
||||
{
|
||||
return SConfig::GetInstance().m_analytics_enabled;
|
||||
}
|
||||
|
||||
void Settings::SetAnalyticsEnabled(bool val)
|
||||
{
|
||||
SConfig::GetInstance().m_analytics_enabled = val;
|
||||
}
|
||||
|
||||
DiscIO::Language Settings::GetWiiSystemLanguage() const
|
||||
{
|
||||
return SConfig::GetInstance().GetCurrentLanguage(true);
|
||||
|
|
|
@ -50,6 +50,14 @@ public:
|
|||
bool IsWiiGameRunning() const;
|
||||
int GetStateSlot() const;
|
||||
void SetStateSlot(int);
|
||||
float GetEmulationSpeed() const;
|
||||
void SetEmulationSpeed(float val);
|
||||
bool GetForceNTSCJ() const;
|
||||
void SetForceNTSCJ(bool val);
|
||||
|
||||
// Analytics
|
||||
bool GetAnalyticsEnabled() const;
|
||||
void SetAnalyticsEnabled(bool val);
|
||||
|
||||
// Graphics
|
||||
bool GetRenderToMain() const;
|
||||
|
|
|
@ -0,0 +1,181 @@
|
|||
// Copyright 2017 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "DolphinQt2/Settings/GeneralPane.h"
|
||||
|
||||
#include <QCheckBox>
|
||||
#include <QComboBox>
|
||||
#include <QFormLayout>
|
||||
#include <QGroupBox>
|
||||
#include <QLabel>
|
||||
#include <QMessageBox>
|
||||
#include <QPushButton>
|
||||
#include <QSlider>
|
||||
#include <QVBoxLayout>
|
||||
#include <QWidget>
|
||||
|
||||
#include "Core/Analytics.h"
|
||||
#include "Core/ConfigManager.h"
|
||||
#include "DolphinQt2/Settings.h"
|
||||
|
||||
GeneralPane::GeneralPane(QWidget* parent) : QWidget(parent)
|
||||
{
|
||||
CreateLayout();
|
||||
ConnectLayout();
|
||||
|
||||
LoadConfig();
|
||||
}
|
||||
|
||||
void GeneralPane::CreateLayout()
|
||||
{
|
||||
m_main_layout = new QVBoxLayout;
|
||||
// Create layout here
|
||||
CreateBasic();
|
||||
|
||||
#if defined(USE_ANALYTICS) && USE_ANALYTICS
|
||||
CreateAnalytics();
|
||||
#endif
|
||||
|
||||
CreateAdvanced();
|
||||
|
||||
m_main_layout->addStretch(1);
|
||||
setLayout(m_main_layout);
|
||||
}
|
||||
|
||||
void GeneralPane::ConnectLayout()
|
||||
{
|
||||
connect(m_combobox_language, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated),
|
||||
[this](int index) { OnSaveConfig(); });
|
||||
|
||||
// Advanced
|
||||
connect(m_checkbox_force_ntsc, &QCheckBox::clicked, this, &GeneralPane::OnSaveConfig);
|
||||
connect(m_slider_speedlimit, static_cast<void (QSlider::*)(int)>(&QSlider::valueChanged),
|
||||
[this](int index) { OnSaveConfig(); });
|
||||
|
||||
#if defined(USE_ANALYTICS) && USE_ANALYTICS
|
||||
connect(m_checkbox_enable_analytics, &QCheckBox::clicked, this, &GeneralPane::OnSaveConfig);
|
||||
connect(m_button_generate_new_identity, &QPushButton::clicked, this,
|
||||
&GeneralPane::GenerateNewIdentity);
|
||||
#endif
|
||||
}
|
||||
|
||||
void GeneralPane::CreateBasic()
|
||||
{
|
||||
auto* basic_group = new QGroupBox(tr("Basic Settings"));
|
||||
auto* basic_group_layout = new QVBoxLayout;
|
||||
basic_group->setLayout(basic_group_layout);
|
||||
m_main_layout->addWidget(basic_group);
|
||||
|
||||
auto* language_layout = new QFormLayout;
|
||||
basic_group_layout->addLayout(language_layout);
|
||||
|
||||
m_combobox_language = new QComboBox;
|
||||
// TODO: Support more languages other then English
|
||||
m_combobox_language->addItem(tr("English"));
|
||||
language_layout->addRow(tr("&Language:"), m_combobox_language);
|
||||
}
|
||||
|
||||
#if defined(USE_ANALYTICS) && USE_ANALYTICS
|
||||
void GeneralPane::CreateAnalytics()
|
||||
{
|
||||
auto* analytics_group = new QGroupBox(tr("Usage Statistics Reporting"));
|
||||
auto* analytics_group_layout = new QVBoxLayout;
|
||||
analytics_group->setLayout(analytics_group_layout);
|
||||
m_main_layout->addWidget(analytics_group);
|
||||
|
||||
m_checkbox_enable_analytics = new QCheckBox(tr("Enable Usage Statistics Reporting"));
|
||||
m_button_generate_new_identity = new QPushButton(tr("Generate a New Statistics Identity"));
|
||||
analytics_group_layout->addWidget(m_checkbox_enable_analytics);
|
||||
analytics_group_layout->addWidget(m_button_generate_new_identity);
|
||||
}
|
||||
#endif
|
||||
|
||||
void GeneralPane::CreateAdvanced()
|
||||
{
|
||||
auto* advanced_group = new QGroupBox(tr("Advanced Settings"));
|
||||
auto* advanced_group_layout = new QVBoxLayout;
|
||||
advanced_group->setLayout(advanced_group_layout);
|
||||
m_main_layout->addWidget(advanced_group);
|
||||
|
||||
// Speed Limit
|
||||
auto* speed_limit_layout = new QFormLayout;
|
||||
auto* speed_limit_container = new QHBoxLayout;
|
||||
speed_limit_container->addLayout(speed_limit_layout);
|
||||
advanced_group_layout->addLayout(speed_limit_container);
|
||||
|
||||
m_slider_speedlimit = new QSlider(Qt::Orientation::Horizontal);
|
||||
m_slider_speedlimit->setTickInterval(1);
|
||||
m_slider_speedlimit->setMinimum(1);
|
||||
m_slider_speedlimit->setMaximum(21);
|
||||
m_slider_speedlimit->setTickPosition(QSlider::TicksBelow);
|
||||
m_slider_speedlimit->setSingleStep(1);
|
||||
speed_limit_layout->addRow(tr("&Speed Limit:"), m_slider_speedlimit);
|
||||
|
||||
m_label_speedlimit = new QLabel(tr("Unlimited"));
|
||||
m_label_speedlimit->setMinimumWidth(48);
|
||||
m_label_speedlimit->setAlignment(Qt::AlignRight | Qt::AlignCenter);
|
||||
speed_limit_container->addWidget(m_label_speedlimit);
|
||||
|
||||
// NTSC-J
|
||||
m_checkbox_force_ntsc = new QCheckBox(tr("Force Console as NTSC-J"));
|
||||
advanced_group_layout->addWidget(m_checkbox_force_ntsc);
|
||||
}
|
||||
|
||||
void GeneralPane::LoadConfig()
|
||||
{
|
||||
m_checkbox_force_ntsc->setChecked(Settings().GetForceNTSCJ());
|
||||
m_checkbox_enable_analytics->setChecked(Settings().GetAnalyticsEnabled());
|
||||
|
||||
int selection = qRound(Settings().GetEmulationSpeed() * 10);
|
||||
if (selection < m_slider_speedlimit->maximum())
|
||||
{
|
||||
if (selection == 0)
|
||||
{
|
||||
m_slider_speedlimit->setValue(21);
|
||||
m_slider_speedlimit->setToolTip(tr("Unlimited"));
|
||||
m_label_speedlimit->setText(tr("Unlimited"));
|
||||
}
|
||||
else
|
||||
{
|
||||
m_slider_speedlimit->setValue(selection);
|
||||
|
||||
QString val = QString::fromStdString(std::to_string(m_slider_speedlimit->value() * 10)) +
|
||||
QStringLiteral("%");
|
||||
m_slider_speedlimit->setToolTip(val);
|
||||
m_label_speedlimit->setText(val);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void GeneralPane::OnSaveConfig()
|
||||
{
|
||||
Settings().SetForceNTSCJ(m_checkbox_force_ntsc->isChecked());
|
||||
Settings().SetAnalyticsEnabled(m_checkbox_enable_analytics->isChecked());
|
||||
if (m_slider_speedlimit->value() < 21)
|
||||
{
|
||||
Settings().SetEmulationSpeed(m_slider_speedlimit->value() * 0.1f);
|
||||
QString val = QString::fromStdString(std::to_string(m_slider_speedlimit->value() * 10)) +
|
||||
QStringLiteral("%");
|
||||
m_slider_speedlimit->setToolTip(val);
|
||||
m_label_speedlimit->setText(val);
|
||||
}
|
||||
else
|
||||
{
|
||||
Settings().SetEmulationSpeed(0);
|
||||
m_slider_speedlimit->setToolTip(tr("Unlimited"));
|
||||
m_label_speedlimit->setText(tr("Unlimited"));
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(USE_ANALYTICS) && USE_ANALYTICS
|
||||
void GeneralPane::GenerateNewIdentity()
|
||||
{
|
||||
DolphinAnalytics::Instance()->GenerateNewIdentity();
|
||||
QMessageBox message_box;
|
||||
message_box.setIcon(QMessageBox::Information);
|
||||
message_box.setWindowTitle(tr("Identity Generation"));
|
||||
message_box.setText(tr("New identity generated."));
|
||||
message_box.exec();
|
||||
}
|
||||
#endif
|
|
@ -0,0 +1,46 @@
|
|||
// Copyright 2017 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
class QCheckBox;
|
||||
class QComboBox;
|
||||
class QLabel;
|
||||
class QPushButton;
|
||||
class QSlider;
|
||||
class QVBoxLayout;
|
||||
|
||||
class GeneralPane final : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit GeneralPane(QWidget* parent = nullptr);
|
||||
|
||||
private:
|
||||
void CreateLayout();
|
||||
void ConnectLayout();
|
||||
void CreateBasic();
|
||||
void CreateAdvanced();
|
||||
|
||||
void LoadConfig();
|
||||
void OnSaveConfig();
|
||||
|
||||
// Widgets
|
||||
QVBoxLayout* m_main_layout;
|
||||
QComboBox* m_combobox_language;
|
||||
QSlider* m_slider_speedlimit;
|
||||
QCheckBox* m_checkbox_force_ntsc;
|
||||
QLabel* m_label_speedlimit;
|
||||
|
||||
// Analytics related
|
||||
#if defined(USE_ANALYTICS) && USE_ANALYTICS
|
||||
void CreateAnalytics();
|
||||
void GenerateNewIdentity();
|
||||
|
||||
QPushButton* m_button_generate_new_identity;
|
||||
QCheckBox* m_checkbox_enable_analytics;
|
||||
#endif
|
||||
};
|
Loading…
Reference in New Issue