Skip to content

Commit c1b9f79

Browse files
moooorgCalcProgrammer1
authored andcommitted
Add settings page under settings tab
1 parent 4764198 commit c1b9f79

9 files changed

Lines changed: 197 additions & 10 deletions

OpenRGB.pro

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ HEADERS +=
157157
qt/OpenRGBPluginContainer.h \
158158
qt/OpenRGBProfileSaveDialog.h \
159159
qt/OpenRGBServerInfoPage.h \
160+
qt/OpenRGBSettingsPage.h \
160161
qt/OpenRGBSoftwareInfoPage.h \
161162
qt/OpenRGBSupportedDevicesPage.h \
162163
qt/OpenRGBSystemInfoPage.h \
@@ -392,6 +393,7 @@ SOURCES +=
392393
qt/OpenRGBPluginContainer.cpp \
393394
qt/OpenRGBProfileSaveDialog.cpp \
394395
qt/OpenRGBServerInfoPage.cpp \
396+
qt/OpenRGBSettingsPage.cpp \
395397
qt/OpenRGBSoftwareInfoPage.cpp \
396398
qt/OpenRGBSupportedDevicesPage.cpp \
397399
qt/OpenRGBSystemInfoPage.cpp \
@@ -668,9 +670,10 @@ FORMS +=
668670
qt/OpenRGBDevicePage.ui \
669671
qt/OpenRGBDialog.ui \
670672
qt/OpenRGBDialog2.ui \
671-
qt/OpenRGBPluginContainer.ui \
673+
qt/OpenRGBPluginContainer.ui \
672674
qt/OpenRGBProfileSaveDialog.ui \
673675
qt/OpenRGBServerInfoPage.ui \
676+
qt/OpenRGBSettingsPage.ui \
674677
qt/OpenRGBSoftwareInfoPage.ui \
675678
qt/OpenRGBSupportedDevicesPage.ui \
676679
qt/OpenRGBSystemInfoPage.ui \

qt/OpenRGBDialog2.cpp

Lines changed: 49 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,18 @@ bool OpenRGBDialog2::IsDarkTheme()
150150
return false;
151151
}
152152

153+
bool OpenRGBDialog2::IsMinimizeOnClose()
154+
{
155+
json ui_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("UserInterface");
156+
157+
if(ui_settings.contains("minimize_on_close"))
158+
{
159+
return ui_settings["minimize_on_close"];
160+
}
161+
162+
return false;
163+
}
164+
153165
OpenRGBDialog2::OpenRGBDialog2(QWidget *parent) : QMainWindow(parent), ui(new OpenRGBDialog2Ui)
154166
{
155167
ui->setupUi(this);
@@ -321,12 +333,6 @@ OpenRGBDialog2::OpenRGBDialog2(QWidget *parent) : QMainWindow(parent), ui(new Op
321333

322334
settings_manager->SetSettings(ui_string, ui_settings);
323335
settings_manager->SaveSettings();
324-
325-
MinimizeToTray = false;
326-
}
327-
else
328-
{
329-
MinimizeToTray = ui_settings["minimize_on_close"].get<bool>();
330336
}
331337

332338
connect(trayIcon,SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(on_ReShow(QSystemTrayIcon::ActivationReason)));
@@ -386,10 +392,15 @@ OpenRGBDialog2::OpenRGBDialog2(QWidget *parent) : QMainWindow(parent), ui(new Op
386392
AddSoftwareInfoPage();
387393

388394
/*-----------------------------------------------------*\
389-
| Add the upported Devices page |
395+
| Add the supported Devices page |
390396
\*-----------------------------------------------------*/
391397
AddSupportedDevicesPage();
392398

399+
/*-----------------------------------------------------*\
400+
| Add the settings page |
401+
\*-----------------------------------------------------*/
402+
AddSettingsPage();
403+
393404
/*-----------------------------------------------------*\
394405
| Add the SMBus Tools page if enabled |
395406
\*-----------------------------------------------------*/
@@ -454,7 +465,7 @@ void OpenRGBDialog2::closeEvent(QCloseEvent *event)
454465
{
455466
ResourceManager::get()->WaitForDeviceDetection();
456467

457-
if (MinimizeToTray && !this->isHidden())
468+
if (IsMinimizeOnClose() && !this->isHidden())
458469
{
459470
hide();
460471
event->ignore();
@@ -523,6 +534,36 @@ void OpenRGBDialog2::AddSupportedDevicesPage()
523534
ui->SettingsTabBar->tabBar()->setTabButton(ui->SettingsTabBar->tabBar()->count() - 1, QTabBar::LeftSide, SupportedTabLabel);
524535
}
525536

537+
538+
void OpenRGBDialog2::AddSettingsPage()
539+
{
540+
/*-----------------------------------------------------*\
541+
| Create the Settings page |
542+
\*-----------------------------------------------------*/
543+
SettingsPage = new OpenRGBSettingsPage();
544+
545+
ui->SettingsTabBar->addTab(SettingsPage, "");
546+
547+
QString SettingsLabelString = "<html><table><tr><td width='30'><img src='";
548+
SettingsLabelString += ":/settings";
549+
if(IsDarkTheme()) SettingsLabelString += "_dark";
550+
SettingsLabelString += ".png' height='16' width='16'></td><td>Settings</td></tr></table></html>";
551+
552+
QLabel *SettingsTabLabel = new QLabel();
553+
SettingsTabLabel->setText(SettingsLabelString);
554+
SettingsTabLabel->setIndent(20);
555+
if(IsDarkTheme())
556+
{
557+
SettingsTabLabel->setGeometry(0, 25, 200, 50);
558+
}
559+
else
560+
{
561+
SettingsTabLabel->setGeometry(0, 0, 200, 25);
562+
}
563+
564+
ui->SettingsTabBar->tabBar()->setTabButton(ui->SettingsTabBar->tabBar()->count() - 1, QTabBar::LeftSide, SettingsTabLabel);
565+
}
566+
526567
void OpenRGBDialog2::AddPluginTab(PluginManager* plugin_manager, int plugin_index)
527568
{
528569
/*-----------------------------------------------------*\

qt/OpenRGBDialog2.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include "OpenRGBSoftwareInfoPage.h"
88
#include "OpenRGBSystemInfoPage.h"
99
#include "OpenRGBSupportedDevicesPage.h"
10+
#include "OpenRGBSettingsPage.h"
1011
#include "PluginManager.h"
1112

1213
#include <vector>
@@ -42,6 +43,7 @@ class Ui::OpenRGBDialog2 : public QMainWindow
4243
void setMode(unsigned char mode_val);
4344

4445
static bool IsDarkTheme();
46+
static bool IsMinimizeOnClose();
4547

4648
private:
4749
/*-------------------------------------*\
@@ -51,13 +53,13 @@ class Ui::OpenRGBDialog2 : public QMainWindow
5153
OpenRGBSystemInfoPage *SMBusToolsPage;
5254
OpenRGBSoftwareInfoPage *SoftInfoPage;
5355
OpenRGBSupportedDevicesPage *SupportedPage;
56+
OpenRGBSettingsPage *SettingsPage;
5457

5558
bool ShowI2CTools = false;
5659

5760
/*-------------------------------------*\
5861
| System tray icon and menu |
5962
\*-------------------------------------*/
60-
bool MinimizeToTray;
6163
QSystemTrayIcon* trayIcon;
6264
QMenu* profileMenu;
6365

@@ -68,6 +70,7 @@ class Ui::OpenRGBDialog2 : public QMainWindow
6870

6971
void AddSoftwareInfoPage();
7072
void AddSupportedDevicesPage();
73+
void AddSettingsPage();
7174
void AddPluginTab(PluginManager* plugin_manager,int plugin_index);
7275

7376
void ClearDevicesList();

qt/OpenRGBSettingsPage.cpp

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
#include "OpenRGBSettingsPage.h"
2+
#include "ui_OpenRGBSettingsPage.h"
3+
#include "ResourceManager.h"
4+
5+
using namespace Ui;
6+
7+
OpenRGBSettingsPage::OpenRGBSettingsPage(QWidget *parent) :
8+
QWidget(parent),
9+
ui(new Ui::OpenRGBSettingsPageUi)
10+
{
11+
ui->setupUi(this);
12+
13+
14+
#ifdef _WIN32
15+
ui->ComboBoxTheme->addItems({"auto", "light", "dark"});
16+
17+
json theme_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("Theme");
18+
19+
if(theme_settings.contains("theme"))
20+
{
21+
std::string theme = theme_settings["theme"];
22+
ui->ComboBoxTheme->setCurrentText(QString::fromStdString(theme));
23+
}
24+
#else
25+
ui->ComboBoxTheme->hide();
26+
ui->ThemeLabel->hide();
27+
#endif
28+
29+
json ui_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("UserInterface");
30+
ui->CheckboxMinimizeOnClose->setChecked(ui_settings["minimize_on_close"]);
31+
}
32+
33+
OpenRGBSettingsPage::~OpenRGBSettingsPage()
34+
{
35+
delete ui;
36+
}
37+
38+
void OpenRGBSettingsPage::on_ComboBoxTheme_currentTextChanged(const QString theme)
39+
{
40+
json theme_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("Theme");
41+
theme_settings["theme"] = theme.toStdString();
42+
ResourceManager::get()->GetSettingsManager()->SetSettings("Theme", theme_settings);
43+
SaveSettings();
44+
}
45+
46+
void OpenRGBSettingsPage::on_CheckboxMinimizeOnClose_clicked()
47+
{
48+
json ui_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("UserInterface");
49+
ui_settings["minimize_on_close"] = ui->CheckboxMinimizeOnClose->isChecked();
50+
ResourceManager::get()->GetSettingsManager()->SetSettings("UserInterface", ui_settings);
51+
SaveSettings();
52+
}
53+
54+
void OpenRGBSettingsPage::SaveSettings()
55+
{
56+
ResourceManager::get()->GetSettingsManager()->SaveSettings();
57+
}
58+
59+

qt/OpenRGBSettingsPage.h

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#ifndef SETTINGSPAGE_H
2+
#define SETTINGSPAGE_H
3+
4+
#include "ui_OpenRGBSettingsPage.h"
5+
#include <QWidget>
6+
7+
namespace Ui {
8+
class OpenRGBSettingsPage;
9+
}
10+
11+
class Ui::OpenRGBSettingsPage : public QWidget
12+
{
13+
Q_OBJECT
14+
15+
public:
16+
explicit OpenRGBSettingsPage(QWidget *parent = nullptr);
17+
~OpenRGBSettingsPage();
18+
19+
private:
20+
Ui::OpenRGBSettingsPageUi *ui;
21+
void SaveSettings();
22+
23+
private slots:
24+
void on_ComboBoxTheme_currentTextChanged(const QString);
25+
void on_CheckboxMinimizeOnClose_clicked();
26+
};
27+
28+
#endif // OPENRGBSETTINGSPAGE_H

qt/OpenRGBSettingsPage.ui

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ui version="4.0">
3+
<class>OpenRGBSettingsPageUi</class>
4+
<widget class="QWidget" name="OpenRGBSettingsPageUi">
5+
<property name="geometry">
6+
<rect>
7+
<x>0</x>
8+
<y>0</y>
9+
<width>432</width>
10+
<height>144</height>
11+
</rect>
12+
</property>
13+
<property name="windowTitle">
14+
<string>Form</string>
15+
</property>
16+
<layout class="QGridLayout" name="gridLayout">
17+
<item row="0" column="1">
18+
<widget class="QComboBox" name="ComboBoxTheme"/>
19+
</item>
20+
<item row="3" column="0">
21+
<widget class="QCheckBox" name="CheckboxMinimizeOnClose">
22+
<property name="text">
23+
<string>Minimize on close</string>
24+
</property>
25+
</widget>
26+
</item>
27+
<item row="0" column="0">
28+
<widget class="QLabel" name="ThemeLabel">
29+
<property name="text">
30+
<string>Theme</string>
31+
</property>
32+
</widget>
33+
</item>
34+
<item row="4" column="0">
35+
<spacer name="verticalSpacer">
36+
<property name="orientation">
37+
<enum>Qt::Vertical</enum>
38+
</property>
39+
<property name="sizeHint" stdset="0">
40+
<size>
41+
<width>20</width>
42+
<height>40</height>
43+
</size>
44+
</property>
45+
</spacer>
46+
</item>
47+
</layout>
48+
</widget>
49+
<resources/>
50+
<connections/>
51+
</ui>

qt/resources.qrc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,7 @@
3838
<file>speaker_dark.png</file>
3939
<file>virtual.png</file>
4040
<file>virtual_dark.png</file>
41+
<file>settings.png</file>
42+
<file>settings_dark.png</file>
4143
</qresource>
4244
</RCC>

qt/settings.png

5.44 KB
Loading

qt/settings_dark.png

5.45 KB
Loading

0 commit comments

Comments
 (0)