Move Autogenerated UI code into Private sections of the window classes

This commit is contained in:
Dmitry K 2025-06-05 03:21:13 +04:00 committed by Adam Honse
parent 4c6bf55c8a
commit 6793d4a3a0
45 changed files with 940 additions and 531 deletions

View file

@ -17,7 +17,7 @@
#include <QDir> #include <QDir>
#include "OpenRGBPluginInterface.h" #include "OpenRGBPluginInterface.h"
typedef struct struct OpenRGBPluginEntry
{ {
OpenRGBPluginInfo info; OpenRGBPluginInfo info;
OpenRGBPluginInterface* plugin; OpenRGBPluginInterface* plugin;
@ -29,7 +29,7 @@ typedef struct
bool incompatible; bool incompatible;
bool is_system; bool is_system;
int api_version; int api_version;
} OpenRGBPluginEntry; };
typedef void (*AddPluginCallback)(void *, OpenRGBPluginEntry* plugin); typedef void (*AddPluginCallback)(void *, OpenRGBPluginEntry* plugin);
typedef void (*RemovePluginCallback)(void *, OpenRGBPluginEntry* plugin); typedef void (*RemovePluginCallback)(void *, OpenRGBPluginEntry* plugin);

View file

@ -31,3 +31,74 @@ void OpenRGBDMXSettingsEntry::changeEvent(QEvent *event)
ui->retranslateUi(this); ui->retranslateUi(this);
} }
} }
void OpenRGBDMXSettingsEntry::loadFromSettings(const json& data)
{
if(data.contains("name"))
{
ui->NameEdit->setText(QString::fromStdString(data["name"]));
}
if(data.contains("port"))
{
ui->PortEdit->setText(QString::fromStdString(data["port"]));
}
if(data.contains("red_channel"))
{
ui->RedEdit->setText(QString::number((int)data["red_channel"]));
}
if(data.contains("green_channel"))
{
ui->GreenEdit->setText(QString::number((int)data["green_channel"]));
}
if(data.contains("blue_channel"))
{
ui->BlueEdit->setText(QString::number((int)data["blue_channel"]));
}
if(data.contains("brightness_channel"))
{
ui->BrightnessEdit->setText(QString::number((int)data["brightness_channel"]));
}
if(data.contains("keepalive_time"))
{
ui->KeepaliveTimeEdit->setText(QString::number((int)data["keepalive_time"]));
}
}
json OpenRGBDMXSettingsEntry::saveSettings()
{
json result;
/*-------------------------------------------------*\
| Required parameters |
\*-------------------------------------------------*/
result["name"] = ui->NameEdit->text().toStdString();
result["port"] = ui->PortEdit->text().toStdString();
result["red_channel"] = ui->RedEdit->text().toUInt();
result["green_channel"] = ui->GreenEdit->text().toUInt();
result["blue_channel"] = ui->BlueEdit->text().toUInt();
/*-------------------------------------------------*\
| Optional parameters |
\*-------------------------------------------------*/
if(ui->BrightnessEdit->text() != "")
{
result["brightness_channel"] = ui->BrightnessEdit->text().toUInt();
}
if(ui->KeepaliveTimeEdit->text() != "")
{
result["keepalive_time"] = ui->KeepaliveTimeEdit->text().toUInt();
}
return result;
}
const char* OpenRGBDMXSettingsEntry::settingsSection()
{
return "DMXDevices";
}

View file

@ -10,11 +10,14 @@
#pragma once #pragma once
#include <QWidget> #include <QWidget>
#include "ui_OpenRGBDMXSettingsEntry.h" #include "nlohmann/json.hpp"
using json = nlohmann::json;
namespace Ui namespace Ui
{ {
class OpenRGBDMXSettingsEntry; class OpenRGBDMXSettingsEntry;
class OpenRGBDMXSettingsEntryUi;
} }
class Ui::OpenRGBDMXSettingsEntry : public QWidget class Ui::OpenRGBDMXSettingsEntry : public QWidget
@ -24,6 +27,11 @@ class Ui::OpenRGBDMXSettingsEntry : public QWidget
public: public:
explicit OpenRGBDMXSettingsEntry(QWidget *parent = nullptr); explicit OpenRGBDMXSettingsEntry(QWidget *parent = nullptr);
~OpenRGBDMXSettingsEntry(); ~OpenRGBDMXSettingsEntry();
void loadFromSettings(const json& data);
json saveSettings();
const char* settingsSection();
private:
Ui::OpenRGBDMXSettingsEntryUi *ui; Ui::OpenRGBDMXSettingsEntryUi *ui;
private slots: private slots:

View file

@ -36,40 +36,7 @@ OpenRGBDMXSettingsPage::OpenRGBDMXSettingsPage(QWidget *parent) :
{ {
OpenRGBDMXSettingsEntry* entry = new OpenRGBDMXSettingsEntry; OpenRGBDMXSettingsEntry* entry = new OpenRGBDMXSettingsEntry;
if(dmx_settings["devices"][device_idx].contains("name")) entry->loadFromSettings(dmx_settings["devices"][device_idx]);
{
entry->ui->NameEdit->setText(QString::fromStdString(dmx_settings["devices"][device_idx]["name"]));
}
if(dmx_settings["devices"][device_idx].contains("port"))
{
entry->ui->PortEdit->setText(QString::fromStdString(dmx_settings["devices"][device_idx]["port"]));
}
if(dmx_settings["devices"][device_idx].contains("red_channel"))
{
entry->ui->RedEdit->setText(QString::number((int)dmx_settings["devices"][device_idx]["red_channel"]));
}
if(dmx_settings["devices"][device_idx].contains("green_channel"))
{
entry->ui->GreenEdit->setText(QString::number((int)dmx_settings["devices"][device_idx]["green_channel"]));
}
if(dmx_settings["devices"][device_idx].contains("blue_channel"))
{
entry->ui->BlueEdit->setText(QString::number((int)dmx_settings["devices"][device_idx]["blue_channel"]));
}
if(dmx_settings["devices"][device_idx].contains("brightness_channel"))
{
entry->ui->BrightnessEdit->setText(QString::number((int)dmx_settings["devices"][device_idx]["brightness_channel"]));
}
if(dmx_settings["devices"][device_idx].contains("keepalive_time"))
{
entry->ui->KeepaliveTimeEdit->setText(QString::number((int)dmx_settings["devices"][device_idx]["keepalive_time"]));
}
entries.push_back(entry); entries.push_back(entry);
@ -142,27 +109,7 @@ void Ui::OpenRGBDMXSettingsPage::on_SaveDMXConfigurationButton_clicked()
for(unsigned int device_idx = 0; device_idx < entries.size(); device_idx++) for(unsigned int device_idx = 0; device_idx < entries.size(); device_idx++)
{ {
/*-------------------------------------------------*\ dmx_settings["devices"][device_idx] = entries[device_idx]->saveSettings();
| Required parameters |
\*-------------------------------------------------*/
dmx_settings["devices"][device_idx]["name"] = entries[device_idx]->ui->NameEdit->text().toStdString();
dmx_settings["devices"][device_idx]["port"] = entries[device_idx]->ui->PortEdit->text().toStdString();
dmx_settings["devices"][device_idx]["red_channel"] = entries[device_idx]->ui->RedEdit->text().toUInt();
dmx_settings["devices"][device_idx]["green_channel"] = entries[device_idx]->ui->GreenEdit->text().toUInt();
dmx_settings["devices"][device_idx]["blue_channel"] = entries[device_idx]->ui->BlueEdit->text().toUInt();
/*-------------------------------------------------*\
| Optional parameters |
\*-------------------------------------------------*/
if(entries[device_idx]->ui->BrightnessEdit->text() != "")
{
dmx_settings["devices"][device_idx]["brightness_channel"] = entries[device_idx]->ui->BrightnessEdit->text().toUInt();
}
if(entries[device_idx]->ui->KeepaliveTimeEdit->text() != "")
{
dmx_settings["devices"][device_idx]["keepalive_time"] = entries[device_idx]->ui->KeepaliveTimeEdit->text().toUInt();
}
} }
ResourceManager::get()->GetSettingsManager()->SetSettings("DMXDevices", dmx_settings); ResourceManager::get()->GetSettingsManager()->SetSettings("DMXDevices", dmx_settings);

View file

@ -89,3 +89,204 @@ void Ui::OpenRGBE131SettingsEntry::on_TypeComboBox_currentIndexChanged(int index
HideMatrixSettings(); HideMatrixSettings();
} }
} }
void OpenRGBE131SettingsEntry::loadFromSettings(const json& data)
{
if(data.contains("name"))
{
ui->NameEdit->setText(QString::fromStdString(data["name"]));
}
if(data.contains("ip"))
{
ui->IPEdit->setText(QString::fromStdString(data["ip"]));
}
if(data.contains("start_universe"))
{
ui->StartUniverseEdit->setText(QString::number((int)data["start_universe"]));
}
if(data.contains("start_channel"))
{
ui->StartChannelEdit->setText(QString::number((int)data["start_channel"]));
}
if(data.contains("num_leds"))
{
ui->NumLEDsEdit->setText(QString::number((int)data["num_leds"]));
}
if(data.contains("type"))
{
if(data["type"].is_string())
{
std::string type_val = data["type"];
if(type_val == "SINGLE")
{
ui->TypeComboBox->setCurrentIndex(0);
}
else if(type_val == "LINEAR")
{
ui->TypeComboBox->setCurrentIndex(1);
}
else if(type_val == "MATRIX")
{
ui->TypeComboBox->setCurrentIndex(2);
}
}
else
{
ui->TypeComboBox->setCurrentIndex(data["type"]);
}
}
if(data.contains("rgb_order"))
{
if(data["rgb_order"].is_string())
{
std::string rgb_order_val = data["rgb_order"];
if(rgb_order_val == "RGB")
{
ui->RGBOrderComboBox->setCurrentIndex(0);
}
else if(rgb_order_val == "RBG")
{
ui->RGBOrderComboBox->setCurrentIndex(1);
}
else if(rgb_order_val == "GRB")
{
ui->RGBOrderComboBox->setCurrentIndex(2);
}
else if(rgb_order_val == "GBR")
{
ui->RGBOrderComboBox->setCurrentIndex(3);
}
else if(rgb_order_val == "BRG")
{
ui->RGBOrderComboBox->setCurrentIndex(4);
}
else if(rgb_order_val == "BGR")
{
ui->RGBOrderComboBox->setCurrentIndex(5);
}
}
else
{
ui->RGBOrderComboBox->setCurrentIndex(data["rgb_order"]);
}
}
if(data.contains("matrix_width"))
{
ui->MatrixWidthEdit->setText(QString::number((int)data["matrix_width"]));
}
if(data.contains("matrix_height"))
{
ui->MatrixHeightEdit->setText(QString::number((int)data["matrix_height"]));
}
if(data.contains("matrix_order"))
{
if(data["matrix_order"].is_string())
{
std::string matrix_order_val = data["matrix_order"];
if(matrix_order_val == "HORIZONTAL_TOP_LEFT")
{
ui->MatrixOrderComboBox->setCurrentIndex(0);
}
else if(matrix_order_val == "HORIZONTAL_TOP_RIGHT")
{
ui->MatrixOrderComboBox->setCurrentIndex(1);
}
else if(matrix_order_val == "HORIZONTAL_BOTTOM_LEFT")
{
ui->MatrixOrderComboBox->setCurrentIndex(2);
}
else if(matrix_order_val == "HORIZONTAL_BOTTOM_RIGHT")
{
ui->MatrixOrderComboBox->setCurrentIndex(3);
}
else if(matrix_order_val == "VERTICAL_TOP_LEFT")
{
ui->MatrixOrderComboBox->setCurrentIndex(4);
}
else if(matrix_order_val == "VERTICAL_TOP_RIGHT")
{
ui->MatrixOrderComboBox->setCurrentIndex(5);
}
else if(matrix_order_val == "VERTICAL_BOTTOM_LEFT")
{
ui->MatrixOrderComboBox->setCurrentIndex(6);
}
else if(matrix_order_val == "VERTICAL_BOTTOM_RIGHT")
{
ui->MatrixOrderComboBox->setCurrentIndex(7);
}
}
else
{
ui->MatrixOrderComboBox->setCurrentIndex(data["matrix_order"]);
}
}
if(data.contains("universe_size"))
{
ui->UniverseSizeEdit->setText(QString::number((int)data["universe_size"]));
}
if(data.contains("keepalive_time"))
{
ui->KeepaliveTimeEdit->setText(QString::number((int)data["keepalive_time"]));
}
}
json OpenRGBE131SettingsEntry::saveSettings()
{
json result;
/*-------------------------------------------------*\
| Required parameters |
\*-------------------------------------------------*/
result["name"] = ui->NameEdit->text().toStdString();
result["start_universe"] = ui->StartUniverseEdit->text().toUInt();
result["start_channel"] = ui->StartChannelEdit->text().toUInt();
result["num_leds"] = ui->NumLEDsEdit->text().toUInt();
result["type"] = ui->TypeComboBox->currentIndex();
result["rgb_order"] = ui->RGBOrderComboBox->currentIndex();
/*-------------------------------------------------*\
| Optional parameters |
\*-------------------------------------------------*/
if(ui->IPEdit->text() != "")
{
result["ip"] = ui->IPEdit->text().toStdString();
}
if(result["type"] == 2)
{
result["matrix_width"] = ui->MatrixWidthEdit->text().toUInt();
result["matrix_height"] = ui->MatrixHeightEdit->text().toUInt();
result["matrix_order"] = ui->MatrixOrderComboBox->currentIndex();
}
if(ui->UniverseSizeEdit->text() != "")
{
result["universe_size"] = ui->UniverseSizeEdit->text().toUInt();
}
if(ui->KeepaliveTimeEdit->text() != "")
{
result["keepalive_time"] = ui->KeepaliveTimeEdit->text().toUInt();
}
return result;
}
const char* OpenRGBE131SettingsEntry::settingsSection()
{
return "E131Devices";
}

View file

@ -10,11 +10,14 @@
#pragma once #pragma once
#include <QWidget> #include <QWidget>
#include "ui_OpenRGBE131SettingsEntry.h" #include "nlohmann/json.hpp"
using json = nlohmann::json;
namespace Ui namespace Ui
{ {
class OpenRGBE131SettingsEntry; class OpenRGBE131SettingsEntry;
class OpenRGBE131SettingsEntryUi;
} }
class Ui::OpenRGBE131SettingsEntry : public QWidget class Ui::OpenRGBE131SettingsEntry : public QWidget
@ -24,6 +27,11 @@ class Ui::OpenRGBE131SettingsEntry : public QWidget
public: public:
explicit OpenRGBE131SettingsEntry(QWidget *parent = nullptr); explicit OpenRGBE131SettingsEntry(QWidget *parent = nullptr);
~OpenRGBE131SettingsEntry(); ~OpenRGBE131SettingsEntry();
void loadFromSettings(const json& data);
json saveSettings();
const char* settingsSection();
private:
Ui::OpenRGBE131SettingsEntryUi *ui; Ui::OpenRGBE131SettingsEntryUi *ui;
private: private:

View file

@ -36,157 +36,7 @@ OpenRGBE131SettingsPage::OpenRGBE131SettingsPage(QWidget *parent) :
{ {
OpenRGBE131SettingsEntry* entry = new OpenRGBE131SettingsEntry; OpenRGBE131SettingsEntry* entry = new OpenRGBE131SettingsEntry;
if(e131_settings["devices"][device_idx].contains("name")) entry->loadFromSettings(e131_settings["devices"][device_idx]);
{
entry->ui->NameEdit->setText(QString::fromStdString(e131_settings["devices"][device_idx]["name"]));
}
if(e131_settings["devices"][device_idx].contains("ip"))
{
entry->ui->IPEdit->setText(QString::fromStdString(e131_settings["devices"][device_idx]["ip"]));
}
if(e131_settings["devices"][device_idx].contains("start_universe"))
{
entry->ui->StartUniverseEdit->setText(QString::number((int)e131_settings["devices"][device_idx]["start_universe"]));
}
if(e131_settings["devices"][device_idx].contains("start_channel"))
{
entry->ui->StartChannelEdit->setText(QString::number((int)e131_settings["devices"][device_idx]["start_channel"]));
}
if(e131_settings["devices"][device_idx].contains("num_leds"))
{
entry->ui->NumLEDsEdit->setText(QString::number((int)e131_settings["devices"][device_idx]["num_leds"]));
}
if(e131_settings["devices"][device_idx].contains("type"))
{
if(e131_settings["devices"][device_idx]["type"].is_string())
{
std::string type_val = e131_settings["devices"][device_idx]["type"];
if(type_val == "SINGLE")
{
entry->ui->TypeComboBox->setCurrentIndex(0);
}
else if(type_val == "LINEAR")
{
entry->ui->TypeComboBox->setCurrentIndex(1);
}
else if(type_val == "MATRIX")
{
entry->ui->TypeComboBox->setCurrentIndex(2);
}
}
else
{
entry->ui->TypeComboBox->setCurrentIndex(e131_settings["devices"][device_idx]["type"]);
}
}
if(e131_settings["devices"][device_idx].contains("rgb_order"))
{
if(e131_settings["devices"][device_idx]["rgb_order"].is_string())
{
std::string rgb_order_val = e131_settings["devices"][device_idx]["rgb_order"];
if(rgb_order_val == "RGB")
{
entry->ui->RGBOrderComboBox->setCurrentIndex(0);
}
else if(rgb_order_val == "RBG")
{
entry->ui->RGBOrderComboBox->setCurrentIndex(1);
}
else if(rgb_order_val == "GRB")
{
entry->ui->RGBOrderComboBox->setCurrentIndex(2);
}
else if(rgb_order_val == "GBR")
{
entry->ui->RGBOrderComboBox->setCurrentIndex(3);
}
else if(rgb_order_val == "BRG")
{
entry->ui->RGBOrderComboBox->setCurrentIndex(4);
}
else if(rgb_order_val == "BGR")
{
entry->ui->RGBOrderComboBox->setCurrentIndex(5);
}
}
else
{
entry->ui->RGBOrderComboBox->setCurrentIndex(e131_settings["devices"][device_idx]["rgb_order"]);
}
}
if(e131_settings["devices"][device_idx].contains("matrix_width"))
{
entry->ui->MatrixWidthEdit->setText(QString::number((int)e131_settings["devices"][device_idx]["matrix_width"]));
}
if(e131_settings["devices"][device_idx].contains("matrix_height"))
{
entry->ui->MatrixHeightEdit->setText(QString::number((int)e131_settings["devices"][device_idx]["matrix_height"]));
}
if(e131_settings["devices"][device_idx].contains("matrix_order"))
{
if(e131_settings["devices"][device_idx]["matrix_order"].is_string())
{
std::string matrix_order_val = e131_settings["devices"][device_idx]["matrix_order"];
if(matrix_order_val == "HORIZONTAL_TOP_LEFT")
{
entry->ui->MatrixOrderComboBox->setCurrentIndex(0);
}
else if(matrix_order_val == "HORIZONTAL_TOP_RIGHT")
{
entry->ui->MatrixOrderComboBox->setCurrentIndex(1);
}
else if(matrix_order_val == "HORIZONTAL_BOTTOM_LEFT")
{
entry->ui->MatrixOrderComboBox->setCurrentIndex(2);
}
else if(matrix_order_val == "HORIZONTAL_BOTTOM_RIGHT")
{
entry->ui->MatrixOrderComboBox->setCurrentIndex(3);
}
else if(matrix_order_val == "VERTICAL_TOP_LEFT")
{
entry->ui->MatrixOrderComboBox->setCurrentIndex(4);
}
else if(matrix_order_val == "VERTICAL_TOP_RIGHT")
{
entry->ui->MatrixOrderComboBox->setCurrentIndex(5);
}
else if(matrix_order_val == "VERTICAL_BOTTOM_LEFT")
{
entry->ui->MatrixOrderComboBox->setCurrentIndex(6);
}
else if(matrix_order_val == "VERTICAL_BOTTOM_RIGHT")
{
entry->ui->MatrixOrderComboBox->setCurrentIndex(7);
}
}
else
{
entry->ui->MatrixOrderComboBox->setCurrentIndex(e131_settings["devices"][device_idx]["matrix_order"]);
}
}
if(e131_settings["devices"][device_idx].contains("universe_size"))
{
entry->ui->UniverseSizeEdit->setText(QString::number((int)e131_settings["devices"][device_idx]["universe_size"]));
}
if(e131_settings["devices"][device_idx].contains("keepalive_time"))
{
entry->ui->KeepaliveTimeEdit->setText(QString::number((int)e131_settings["devices"][device_idx]["keepalive_time"]));
}
entries.push_back(entry); entries.push_back(entry);
@ -259,40 +109,7 @@ void Ui::OpenRGBE131SettingsPage::on_SaveE131ConfigurationButton_clicked()
for(unsigned int device_idx = 0; device_idx < entries.size(); device_idx++) for(unsigned int device_idx = 0; device_idx < entries.size(); device_idx++)
{ {
/*-------------------------------------------------*\ e131_settings["devices"][device_idx] = entries[device_idx]->saveSettings();
| Required parameters |
\*-------------------------------------------------*/
e131_settings["devices"][device_idx]["name"] = entries[device_idx]->ui->NameEdit->text().toStdString();
e131_settings["devices"][device_idx]["start_universe"] = entries[device_idx]->ui->StartUniverseEdit->text().toUInt();
e131_settings["devices"][device_idx]["start_channel"] = entries[device_idx]->ui->StartChannelEdit->text().toUInt();
e131_settings["devices"][device_idx]["num_leds"] = entries[device_idx]->ui->NumLEDsEdit->text().toUInt();
e131_settings["devices"][device_idx]["type"] = entries[device_idx]->ui->TypeComboBox->currentIndex();
e131_settings["devices"][device_idx]["rgb_order"] = entries[device_idx]->ui->RGBOrderComboBox->currentIndex();
/*-------------------------------------------------*\
| Optional parameters |
\*-------------------------------------------------*/
if(entries[device_idx]->ui->IPEdit->text() != "")
{
e131_settings["devices"][device_idx]["ip"] = entries[device_idx]->ui->IPEdit->text().toStdString();
}
if(e131_settings["devices"][device_idx]["type"] == 2)
{
e131_settings["devices"][device_idx]["matrix_width"] = entries[device_idx]->ui->MatrixWidthEdit->text().toUInt();
e131_settings["devices"][device_idx]["matrix_height"] = entries[device_idx]->ui->MatrixHeightEdit->text().toUInt();
e131_settings["devices"][device_idx]["matrix_order"] = entries[device_idx]->ui->MatrixOrderComboBox->currentIndex();
}
if(entries[device_idx]->ui->UniverseSizeEdit->text() != "")
{
e131_settings["devices"][device_idx]["universe_size"] = entries[device_idx]->ui->UniverseSizeEdit->text().toUInt();
}
if(entries[device_idx]->ui->KeepaliveTimeEdit->text() != "")
{
e131_settings["devices"][device_idx]["keepalive_time"] = entries[device_idx]->ui->KeepaliveTimeEdit->text().toUInt();
}
} }
ResourceManager::get()->GetSettingsManager()->SetSettings("E131Devices", e131_settings); ResourceManager::get()->GetSettingsManager()->SetSettings("E131Devices", e131_settings);

View file

@ -32,3 +32,23 @@ void OpenRGBElgatoKeyLightSettingsEntry::changeEvent(QEvent *event)
ui->retranslateUi(this); ui->retranslateUi(this);
} }
} }
void OpenRGBElgatoKeyLightSettingsEntry::loadFromSettings(const json& data)
{
if(data.contains("ip"))
{
ui->IPEdit->setText(QString::fromStdString(data["ip"]));
}
}
json OpenRGBElgatoKeyLightSettingsEntry::saveSettings()
{
json result;
result["ip"] = ui->IPEdit->text().toStdString();
return result;
}
const char* OpenRGBElgatoKeyLightSettingsEntry::settingsSection()
{
return "ElgatoKeyLightDevices";
}

View file

@ -10,11 +10,14 @@
#pragma once #pragma once
#include <QDialog> #include <QDialog>
#include "ui_OpenRGBElgatoKeyLightSettingsEntry.h" #include "nlohmann/json.hpp"
using json = nlohmann::json;
namespace Ui namespace Ui
{ {
class OpenRGBElgatoKeyLightSettingsEntry; class OpenRGBElgatoKeyLightSettingsEntry;
class OpenRGBElgatoKeyLightSettingsEntryUi;
} }
class Ui::OpenRGBElgatoKeyLightSettingsEntry : public QDialog class Ui::OpenRGBElgatoKeyLightSettingsEntry : public QDialog
@ -24,6 +27,11 @@ class Ui::OpenRGBElgatoKeyLightSettingsEntry : public QDialog
public: public:
explicit OpenRGBElgatoKeyLightSettingsEntry(QWidget *parent = nullptr); explicit OpenRGBElgatoKeyLightSettingsEntry(QWidget *parent = nullptr);
~OpenRGBElgatoKeyLightSettingsEntry(); ~OpenRGBElgatoKeyLightSettingsEntry();
void loadFromSettings(const json& data);
json saveSettings();
const char* settingsSection();
private:
Ui::OpenRGBElgatoKeyLightSettingsEntryUi *ui; Ui::OpenRGBElgatoKeyLightSettingsEntryUi *ui;
private slots: private slots:

View file

@ -33,10 +33,7 @@ OpenRGBElgatoKeyLightSettingsPage::OpenRGBElgatoKeyLightSettingsPage(QWidget *pa
{ {
OpenRGBElgatoKeyLightSettingsEntry* entry = new OpenRGBElgatoKeyLightSettingsEntry; OpenRGBElgatoKeyLightSettingsEntry* entry = new OpenRGBElgatoKeyLightSettingsEntry;
if(elgato_keylight_settings["devices"][device_idx].contains("ip")) entry->loadFromSettings(elgato_keylight_settings["devices"][device_idx]);
{
entry->ui->IPEdit->setText(QString::fromStdString(elgato_keylight_settings["devices"][device_idx]["ip"]));
}
entries.push_back(entry); entries.push_back(entry);
@ -106,10 +103,7 @@ void Ui::OpenRGBElgatoKeyLightSettingsPage::on_SaveElgatoKeyLightConfigurationBu
for(unsigned int device_idx = 0; device_idx < entries.size(); device_idx++) for(unsigned int device_idx = 0; device_idx < entries.size(); device_idx++)
{ {
/*-------------------------------------------------*\ elgato_keylight_settings["devices"][device_idx] = entries[device_idx]->saveSettings();
| Required parameters |
\*-------------------------------------------------*/
elgato_keylight_settings["devices"][device_idx]["ip"] = entries[device_idx]->ui->IPEdit->text().toStdString();
} }
ResourceManager::get()->GetSettingsManager()->SetSettings("ElgatoKeyLightDevices", elgato_keylight_settings); ResourceManager::get()->GetSettingsManager()->SetSettings("ElgatoKeyLightDevices", elgato_keylight_settings);

View file

@ -10,12 +10,12 @@
#pragma once #pragma once
#include <QWidget> #include <QWidget>
#include "ui_OpenRGBElgatoKeyLightSettingsPage.h"
#include "OpenRGBElgatoKeyLightSettingsEntry.h" #include "OpenRGBElgatoKeyLightSettingsEntry.h"
namespace Ui namespace Ui
{ {
class OpenRGBElgatoKeyLightSettingsPage; class OpenRGBElgatoKeyLightSettingsPage;
class OpenRGBElgatoKeyLightSettingsPageUi;
} }
class Ui::OpenRGBElgatoKeyLightSettingsPage : public QWidget class Ui::OpenRGBElgatoKeyLightSettingsPage : public QWidget

View file

@ -32,3 +32,23 @@ void OpenRGBElgatoLightStripSettingsEntry::changeEvent(QEvent *event)
ui->retranslateUi(this); ui->retranslateUi(this);
} }
} }
void OpenRGBElgatoLightStripSettingsEntry::loadFromSettings(const json& data)
{
if(data.contains("ip"))
{
ui->IPEdit->setText(QString::fromStdString(data["ip"]));
}
}
json OpenRGBElgatoLightStripSettingsEntry::saveSettings()
{
json result;
result["ip"] = ui->IPEdit->text().toStdString();
return result;
}
const char* OpenRGBElgatoLightStripSettingsEntry::settingsSection()
{
return "ElgatoLightStripDevices";
}

View file

@ -10,11 +10,14 @@
#pragma once #pragma once
#include <QDialog> #include <QDialog>
#include "ui_OpenRGBElgatoLightStripSettingsEntry.h" #include "nlohmann/json.hpp"
using json = nlohmann::json;
namespace Ui namespace Ui
{ {
class OpenRGBElgatoLightStripSettingsEntry; class OpenRGBElgatoLightStripSettingsEntry;
class OpenRGBElgatoLightStripSettingsEntryUi;
} }
class Ui::OpenRGBElgatoLightStripSettingsEntry : public QDialog class Ui::OpenRGBElgatoLightStripSettingsEntry : public QDialog
@ -24,6 +27,11 @@ class Ui::OpenRGBElgatoLightStripSettingsEntry : public QDialog
public: public:
explicit OpenRGBElgatoLightStripSettingsEntry(QWidget *parent = nullptr); explicit OpenRGBElgatoLightStripSettingsEntry(QWidget *parent = nullptr);
~OpenRGBElgatoLightStripSettingsEntry(); ~OpenRGBElgatoLightStripSettingsEntry();
void loadFromSettings(const json& data);
json saveSettings();
const char* settingsSection();
private:
Ui::OpenRGBElgatoLightStripSettingsEntryUi *ui; Ui::OpenRGBElgatoLightStripSettingsEntryUi *ui;
private slots: private slots:

View file

@ -33,10 +33,7 @@ OpenRGBElgatoLightStripSettingsPage::OpenRGBElgatoLightStripSettingsPage(QWidget
{ {
OpenRGBElgatoLightStripSettingsEntry* entry = new OpenRGBElgatoLightStripSettingsEntry; OpenRGBElgatoLightStripSettingsEntry* entry = new OpenRGBElgatoLightStripSettingsEntry;
if(elgato_lightstrip_settings["devices"][device_idx].contains("ip")) entry->loadFromSettings(elgato_lightstrip_settings["devices"][device_idx]);
{
entry->ui->IPEdit->setText(QString::fromStdString(elgato_lightstrip_settings["devices"][device_idx]["ip"]));
}
entries.push_back(entry); entries.push_back(entry);
@ -106,10 +103,7 @@ void Ui::OpenRGBElgatoLightStripSettingsPage::on_SaveElgatoLightStripConfigurati
for(unsigned int device_idx = 0; device_idx < entries.size(); device_idx++) for(unsigned int device_idx = 0; device_idx < entries.size(); device_idx++)
{ {
/*-------------------------------------------------*\ elgato_lightstrip_settings["devices"][device_idx] = entries[device_idx]->saveSettings();
| Required parameters |
\*-------------------------------------------------*/
elgato_lightstrip_settings["devices"][device_idx]["ip"] = entries[device_idx]->ui->IPEdit->text().toStdString();
} }
ResourceManager::get()->GetSettingsManager()->SetSettings("ElgatoLightStripDevices", elgato_lightstrip_settings); ResourceManager::get()->GetSettingsManager()->SetSettings("ElgatoLightStripDevices", elgato_lightstrip_settings);

View file

@ -33,3 +33,23 @@ void OpenRGBGoveeSettingsEntry::changeEvent(QEvent *event)
ui->retranslateUi(this); ui->retranslateUi(this);
} }
} }
void OpenRGBGoveeSettingsEntry::loadFromSettings(const json& data)
{
if(data.contains("ip"))
{
ui->IPEdit->setText(QString::fromStdString(data["ip"]));
}
}
json OpenRGBGoveeSettingsEntry::saveSettings()
{
json result;
result["ip"] = ui->IPEdit->text().toStdString();
return result;
}
const char* OpenRGBGoveeSettingsEntry::settingsSection()
{
return "GoveeDevices";
}

View file

@ -12,11 +12,14 @@
#pragma once #pragma once
#include <QWidget> #include <QWidget>
#include "ui_OpenRGBGoveeSettingsEntry.h" #include "nlohmann/json.hpp"
using json = nlohmann::json;
namespace Ui namespace Ui
{ {
class OpenRGBGoveeSettingsEntry; class OpenRGBGoveeSettingsEntry;
class OpenRGBGoveeSettingsEntryUi;
} }
class Ui::OpenRGBGoveeSettingsEntry : public QWidget class Ui::OpenRGBGoveeSettingsEntry : public QWidget
@ -26,6 +29,11 @@ class Ui::OpenRGBGoveeSettingsEntry : public QWidget
public: public:
explicit OpenRGBGoveeSettingsEntry(QWidget *parent = nullptr); explicit OpenRGBGoveeSettingsEntry(QWidget *parent = nullptr);
~OpenRGBGoveeSettingsEntry(); ~OpenRGBGoveeSettingsEntry();
void loadFromSettings(const json& data);
json saveSettings();
const char* settingsSection();
private:
Ui::OpenRGBGoveeSettingsEntryUi *ui; Ui::OpenRGBGoveeSettingsEntryUi *ui;
private slots: private slots:

View file

@ -38,10 +38,7 @@ OpenRGBGoveeSettingsPage::OpenRGBGoveeSettingsPage(QWidget *parent) :
{ {
OpenRGBGoveeSettingsEntry* entry = new OpenRGBGoveeSettingsEntry; OpenRGBGoveeSettingsEntry* entry = new OpenRGBGoveeSettingsEntry;
if(govee_settings["devices"][device_idx].contains("ip")) entry->loadFromSettings(govee_settings["devices"][device_idx]);
{
entry->ui->IPEdit->setText(QString::fromStdString(govee_settings["devices"][device_idx]["ip"]));
}
entries.push_back(entry); entries.push_back(entry);
@ -114,10 +111,7 @@ void Ui::OpenRGBGoveeSettingsPage::on_SaveGoveeConfigurationButton_clicked()
for(unsigned int device_idx = 0; device_idx < entries.size(); device_idx++) for(unsigned int device_idx = 0; device_idx < entries.size(); device_idx++)
{ {
/*-------------------------------------------------*\ govee_settings["devices"][device_idx] = entries[device_idx]->saveSettings();
| Required parameters |
\*-------------------------------------------------*/
govee_settings["devices"][device_idx]["ip"] = entries[device_idx]->ui->IPEdit->text().toStdString();
} }
ResourceManager::get()->GetSettingsManager()->SetSettings("GoveeDevices", govee_settings); ResourceManager::get()->GetSettingsManager()->SetSettings("GoveeDevices", govee_settings);

View file

@ -31,3 +31,33 @@ void OpenRGBKasaSmartSettingsEntry::changeEvent(QEvent *event)
ui->retranslateUi(this); ui->retranslateUi(this);
} }
} }
void OpenRGBKasaSmartSettingsEntry::loadFromSettings(const json& data)
{
if(data.contains("ip"))
{
ui->IPEdit->setText(QString::fromStdString(data["ip"]));
}
if(data.contains("name"))
{
ui->NameEdit->setText(QString::fromStdString(data["name"]));
}
}
json OpenRGBKasaSmartSettingsEntry::saveSettings()
{
json result;
result["ip"] = ui->IPEdit->text().toStdString();
result["name"] = ui->NameEdit->text().toStdString();
return result;
}
const char* OpenRGBKasaSmartSettingsEntry::settingsSection()
{
return "KasaSmartDevices";
}
void OpenRGBKasaSmartSettingsEntry::setName(QString name)
{
ui->NameEdit->setText(name);
}

View file

@ -10,11 +10,15 @@
#pragma once #pragma once
#include <QWidget> #include <QWidget>
#include "ui_OpenRGBKasaSmartSettingsEntry.h" #include <QWidget>
#include "nlohmann/json.hpp"
using json = nlohmann::json;
namespace Ui namespace Ui
{ {
class OpenRGBKasaSmartSettingsEntry; class OpenRGBKasaSmartSettingsEntry;
class OpenRGBKasaSmartSettingsEntryUi;
} }
class Ui::OpenRGBKasaSmartSettingsEntry : public QWidget class Ui::OpenRGBKasaSmartSettingsEntry : public QWidget
@ -24,6 +28,12 @@ class Ui::OpenRGBKasaSmartSettingsEntry : public QWidget
public: public:
explicit OpenRGBKasaSmartSettingsEntry(QWidget *parent = nullptr); explicit OpenRGBKasaSmartSettingsEntry(QWidget *parent = nullptr);
~OpenRGBKasaSmartSettingsEntry(); ~OpenRGBKasaSmartSettingsEntry();
void loadFromSettings(const json& data);
json saveSettings();
const char* settingsSection();
void setName(QString name);
private:
Ui::OpenRGBKasaSmartSettingsEntryUi *ui; Ui::OpenRGBKasaSmartSettingsEntryUi *ui;
private slots: private slots:

View file

@ -36,15 +36,7 @@ OpenRGBKasaSmartSettingsPage::OpenRGBKasaSmartSettingsPage(QWidget *parent) :
{ {
OpenRGBKasaSmartSettingsEntry* entry = new OpenRGBKasaSmartSettingsEntry; OpenRGBKasaSmartSettingsEntry* entry = new OpenRGBKasaSmartSettingsEntry;
if(KasaSmart_settings["devices"][device_idx].contains("ip")) entry->loadFromSettings(KasaSmart_settings["devices"][device_idx]);
{
entry->ui->IPEdit->setText(QString::fromStdString(KasaSmart_settings["devices"][device_idx]["ip"]));
}
if(KasaSmart_settings["devices"][device_idx].contains("name"))
{
entry->ui->NameEdit->setText(QString::fromStdString(KasaSmart_settings["devices"][device_idx]["name"]));
}
entries.push_back(entry); entries.push_back(entry);
@ -75,7 +67,9 @@ void OpenRGBKasaSmartSettingsPage::changeEvent(QEvent *event)
void Ui::OpenRGBKasaSmartSettingsPage::on_AddKasaSmartDeviceButton_clicked() void Ui::OpenRGBKasaSmartSettingsPage::on_AddKasaSmartDeviceButton_clicked()
{ {
OpenRGBKasaSmartSettingsEntry* entry = new OpenRGBKasaSmartSettingsEntry; OpenRGBKasaSmartSettingsEntry* entry = new OpenRGBKasaSmartSettingsEntry;
entry->ui->NameEdit->setText(QString("KasaSmart%1").arg(entries.size()));
entry->setName(QString("KasaSmart%1").arg(entries.size()));
entries.push_back(entry); entries.push_back(entry);
QListWidgetItem* item = new QListWidgetItem; QListWidgetItem* item = new QListWidgetItem;
@ -121,8 +115,7 @@ void Ui::OpenRGBKasaSmartSettingsPage::on_SaveKasaSmartConfigurationButton_click
/*-------------------------------------------------*\ /*-------------------------------------------------*\
| Required parameters | | Required parameters |
\*-------------------------------------------------*/ \*-------------------------------------------------*/
KasaSmart_settings["devices"][device_idx]["ip"] = entries[device_idx]->ui->IPEdit->text().toStdString(); KasaSmart_settings["devices"][device_idx] = entries[device_idx]->saveSettings();
KasaSmart_settings["devices"][device_idx]["name"] = entries[device_idx]->ui->NameEdit->text().toStdString();
} }
ResourceManager::get()->GetSettingsManager()->SetSettings("KasaSmartDevices", KasaSmart_settings); ResourceManager::get()->GetSettingsManager()->SetSettings("KasaSmartDevices", KasaSmart_settings);

View file

@ -31,3 +31,33 @@ void OpenRGBLIFXSettingsEntry::changeEvent(QEvent *event)
ui->retranslateUi(this); ui->retranslateUi(this);
} }
} }
void OpenRGBLIFXSettingsEntry::loadFromSettings(const json& data)
{
if(data.contains("ip"))
{
ui->IPEdit->setText(QString::fromStdString(data["ip"]));
}
if(data.contains("name"))
{
ui->NameEdit->setText(QString::fromStdString(data["name"]));
}
}
json OpenRGBLIFXSettingsEntry::saveSettings()
{
json result;
result["ip"] = ui->IPEdit->text().toStdString();
result["name"] = ui->NameEdit->text().toStdString();
return result;
}
const char* OpenRGBLIFXSettingsEntry::settingsSection()
{
return "LIFXDevices";
}
void OpenRGBLIFXSettingsEntry::setName(QString name)
{
ui->NameEdit->setText(name);
}

View file

@ -8,11 +8,14 @@
\*---------------------------------------------------------*/ \*---------------------------------------------------------*/
#include <QWidget> #include <QWidget>
#include "ui_OpenRGBLIFXSettingsEntry.h" #include "nlohmann/json.hpp"
using json = nlohmann::json;
namespace Ui namespace Ui
{ {
class OpenRGBLIFXSettingsEntry; class OpenRGBLIFXSettingsEntry;
class OpenRGBLIFXSettingsEntryUi;
} }
class Ui::OpenRGBLIFXSettingsEntry : public QWidget class Ui::OpenRGBLIFXSettingsEntry : public QWidget
@ -22,6 +25,12 @@ class Ui::OpenRGBLIFXSettingsEntry : public QWidget
public: public:
explicit OpenRGBLIFXSettingsEntry(QWidget *parent = nullptr); explicit OpenRGBLIFXSettingsEntry(QWidget *parent = nullptr);
~OpenRGBLIFXSettingsEntry(); ~OpenRGBLIFXSettingsEntry();
void loadFromSettings(const json& data);
json saveSettings();
const char* settingsSection();
void setName(QString name);
private:
Ui::OpenRGBLIFXSettingsEntryUi *ui; Ui::OpenRGBLIFXSettingsEntryUi *ui;
private slots: private slots:

View file

@ -36,15 +36,7 @@ OpenRGBLIFXSettingsPage::OpenRGBLIFXSettingsPage(QWidget *parent) :
{ {
OpenRGBLIFXSettingsEntry* entry = new OpenRGBLIFXSettingsEntry; OpenRGBLIFXSettingsEntry* entry = new OpenRGBLIFXSettingsEntry;
if(lifx_settings["devices"][device_idx].contains("ip")) entry->loadFromSettings(lifx_settings["devices"][device_idx]);
{
entry->ui->IPEdit->setText(QString::fromStdString(lifx_settings["devices"][device_idx]["ip"]));
}
if(lifx_settings["devices"][device_idx].contains("name"))
{
entry->ui->NameEdit->setText(QString::fromStdString(lifx_settings["devices"][device_idx]["name"]));
}
entries.push_back(entry); entries.push_back(entry);
@ -75,7 +67,9 @@ void OpenRGBLIFXSettingsPage::changeEvent(QEvent *event)
void Ui::OpenRGBLIFXSettingsPage::on_AddLIFXDeviceButton_clicked() void Ui::OpenRGBLIFXSettingsPage::on_AddLIFXDeviceButton_clicked()
{ {
OpenRGBLIFXSettingsEntry* entry = new OpenRGBLIFXSettingsEntry; OpenRGBLIFXSettingsEntry* entry = new OpenRGBLIFXSettingsEntry;
entry->ui->NameEdit->setText(QString("LIFX%1").arg(entries.size()));
entry->setName(QString("LIFX%1").arg(entries.size()));
entries.push_back(entry); entries.push_back(entry);
QListWidgetItem* item = new QListWidgetItem; QListWidgetItem* item = new QListWidgetItem;
@ -118,11 +112,7 @@ void Ui::OpenRGBLIFXSettingsPage::on_SaveLIFXConfigurationButton_clicked()
for(unsigned int device_idx = 0; device_idx < entries.size(); device_idx++) for(unsigned int device_idx = 0; device_idx < entries.size(); device_idx++)
{ {
/*-------------------------------------------------*\ lifx_settings["devices"][device_idx] = entries[device_idx]->saveSettings();
| Required parameters |
\*-------------------------------------------------*/
lifx_settings["devices"][device_idx]["ip"] = entries[device_idx]->ui->IPEdit->text().toStdString();
lifx_settings["devices"][device_idx]["name"] = entries[device_idx]->ui->NameEdit->text().toStdString();
} }
ResourceManager::get()->GetSettingsManager()->SetSettings("LIFXDevices", lifx_settings); ResourceManager::get()->GetSettingsManager()->SetSettings("LIFXDevices", lifx_settings);

View file

@ -1,3 +1,4 @@
/*---------------------------------------------------------*\ /*---------------------------------------------------------*\
| OpenRGBNanoleafSettingsEntry.cpp | | OpenRGBNanoleafSettingsEntry.cpp |
| | | |
@ -106,3 +107,46 @@ void OpenRGBNanoleafSettingsEntry::on_UnpairButton_clicked()
ui->PairButton->show(); ui->PairButton->show();
ui->UnpairButton->hide(); ui->UnpairButton->hide();
} }
void OpenRGBNanoleafSettingsEntry::loadFromSettings(const json& data)
{
address = QString::fromStdString(data["ip"]);
port = data["port"];
ui->IPValue->setText(address);
ui->PortValue->setText(QString::fromStdString(std::to_string(port)));
if(data.contains("auth_token") && data["auth_token"].size())
{
auth_token = data["auth_token"];
ui->AuthKeyValue->setText(QString::fromStdString(auth_token));
ui->PairButton->hide();
}
else
{
auth_token.clear();
ui->UnpairButton->hide();
}
}
json OpenRGBNanoleafSettingsEntry::saveSettings()
{
json result;
/*-------------------------------------------------*\
| Required parameters |
\*-------------------------------------------------*/
result["ip"] = address.toStdString();
result["port"] = port;
if(!auth_token.empty())
{
result["auth_token"] = auth_token;
}
return result;
}
const char* OpenRGBNanoleafSettingsEntry::settingsSection()
{
return "NanoleafDevices";
}

View file

@ -12,10 +12,14 @@
#include <QWidget> #include <QWidget>
#include "ui_OpenRGBNanoleafSettingsEntry.h" #include "ui_OpenRGBNanoleafSettingsEntry.h"
#include "OpenRGBNanoleafScanningThread.h" #include "OpenRGBNanoleafScanningThread.h"
#include "nlohmann/json.hpp"
using json = nlohmann::json;
namespace Ui namespace Ui
{ {
class OpenRGBNanoleafSettingsEntry; class OpenRGBNanoleafSettingsEntry;
class OpenRGBNanoleafSettingsEntryUi;
} }
class Ui::OpenRGBNanoleafSettingsEntry : public QWidget class Ui::OpenRGBNanoleafSettingsEntry : public QWidget
@ -26,10 +30,16 @@ public:
explicit OpenRGBNanoleafSettingsEntry(QWidget *parent = nullptr); explicit OpenRGBNanoleafSettingsEntry(QWidget *parent = nullptr);
OpenRGBNanoleafSettingsEntry(QString a_address, int a_port); OpenRGBNanoleafSettingsEntry(QString a_address, int a_port);
~OpenRGBNanoleafSettingsEntry(); ~OpenRGBNanoleafSettingsEntry();
Ui::OpenRGBNanoleafSettingsEntryUi *ui; void loadFromSettings(const json& data);
json saveSettings();
const char* settingsSection();
QString address; QString address;
int port; int port;
private:
Ui::OpenRGBNanoleafSettingsEntryUi *ui;
private slots: private slots:
void changeEvent(QEvent *event); void changeEvent(QEvent *event);
void on_UnpairButton_clicked(); void on_UnpairButton_clicked();

View file

@ -37,3 +37,65 @@ void Ui::OpenRGBPhilipsHueSettingsEntry::on_UnpairButton_clicked()
ui->UsernameValue->setText(""); ui->UsernameValue->setText("");
ui->ClientKeyValue->setText(""); ui->ClientKeyValue->setText("");
} }
void OpenRGBPhilipsHueSettingsEntry::loadFromSettings(const json& data)
{
if(data.contains("ip"))
{
ui->IPEdit->setText(QString::fromStdString(data["ip"]));
}
if(data.contains("mac"))
{
ui->MACEdit->setText(QString::fromStdString(data["mac"]));
}
if(data.contains("entertainment"))
{
ui->EntertainmentCheckBox->setChecked(data["entertainment"]);
}
if(data.contains("autoconnect"))
{
ui->AutoConnectCheckBox->setChecked(data["autoconnect"]);
}
if(data.contains("username"))
{
ui->UsernameValue->setText(QString::fromStdString(data["username"]));
}
if(data.contains("clientkey"))
{
ui->ClientKeyValue->setText(QString::fromStdString(data["clientkey"]));
}
}
json OpenRGBPhilipsHueSettingsEntry::saveSettings()
{
json result;
/*-------------------------------------------------*\
| Required parameters |
\*-------------------------------------------------*/
result["ip"] = ui->IPEdit->text().toStdString();
result["mac"] = ui->MACEdit->text().toStdString();
result["entertainment"] = ui->EntertainmentCheckBox->isChecked();
result["autoconnect"] = ui->AutoConnectCheckBox->isChecked();
if(ui->UsernameValue->text() != "")
{
result["username"] = ui->UsernameValue->text().toStdString();
}
if(ui->ClientKeyValue->text() != "")
{
result["clientkey"] = ui->ClientKeyValue->text().toStdString();
}
return result;
}
const char* OpenRGBPhilipsHueSettingsEntry::settingsSection()
{
return "PhilipsHueDevices";
}

View file

@ -9,12 +9,15 @@
#pragma once #pragma once
#include "ui_OpenRGBPhilipsHueSettingsEntry.h"
#include <QWidget> #include <QWidget>
#include "nlohmann/json.hpp"
using json = nlohmann::json;
namespace Ui namespace Ui
{ {
class OpenRGBPhilipsHueSettingsEntry; class OpenRGBPhilipsHueSettingsEntry;
class OpenRGBPhilipsHueSettingsEntryUi;
} }
class Ui::OpenRGBPhilipsHueSettingsEntry : public QWidget class Ui::OpenRGBPhilipsHueSettingsEntry : public QWidget
@ -24,7 +27,13 @@ class Ui::OpenRGBPhilipsHueSettingsEntry : public QWidget
public: public:
explicit OpenRGBPhilipsHueSettingsEntry(QWidget *parent = nullptr); explicit OpenRGBPhilipsHueSettingsEntry(QWidget *parent = nullptr);
~OpenRGBPhilipsHueSettingsEntry(); ~OpenRGBPhilipsHueSettingsEntry();
void loadFromSettings(const json& data);
json saveSettings();
const char* settingsSection();
private:
Ui::OpenRGBPhilipsHueSettingsEntryUi *ui; Ui::OpenRGBPhilipsHueSettingsEntryUi *ui;
private slots: private slots:
void changeEvent(QEvent *event); void changeEvent(QEvent *event);
void on_UnpairButton_clicked(); void on_UnpairButton_clicked();

View file

@ -36,35 +36,7 @@ OpenRGBPhilipsHueSettingsPage::OpenRGBPhilipsHueSettingsPage(QWidget *parent) :
{ {
OpenRGBPhilipsHueSettingsEntry* entry = new OpenRGBPhilipsHueSettingsEntry; OpenRGBPhilipsHueSettingsEntry* entry = new OpenRGBPhilipsHueSettingsEntry;
if(hue_settings["bridges"][device_idx].contains("ip")) entry->loadFromSettings(hue_settings["bridges"][device_idx]);
{
entry->ui->IPEdit->setText(QString::fromStdString(hue_settings["bridges"][device_idx]["ip"]));
}
if(hue_settings["bridges"][device_idx].contains("mac"))
{
entry->ui->MACEdit->setText(QString::fromStdString(hue_settings["bridges"][device_idx]["mac"]));
}
if(hue_settings["bridges"][device_idx].contains("entertainment"))
{
entry->ui->EntertainmentCheckBox->setChecked(hue_settings["bridges"][device_idx]["entertainment"]);
}
if(hue_settings["bridges"][device_idx].contains("autoconnect"))
{
entry->ui->AutoConnectCheckBox->setChecked(hue_settings["bridges"][device_idx]["autoconnect"]);
}
if(hue_settings["bridges"][device_idx].contains("username"))
{
entry->ui->UsernameValue->setText(QString::fromStdString(hue_settings["bridges"][device_idx]["username"]));
}
if(hue_settings["bridges"][device_idx].contains("clientkey"))
{
entry->ui->ClientKeyValue->setText(QString::fromStdString(hue_settings["bridges"][device_idx]["clientkey"]));
}
entries.push_back(entry); entries.push_back(entry);
@ -137,23 +109,7 @@ void Ui::OpenRGBPhilipsHueSettingsPage::on_SavePhilipsHueConfigurationButton_cli
for(unsigned int device_idx = 0; device_idx < entries.size(); device_idx++) for(unsigned int device_idx = 0; device_idx < entries.size(); device_idx++)
{ {
/*-------------------------------------------------*\ hue_settings["bridges"][device_idx] = entries[device_idx]->saveSettings();
| Required parameters |
\*-------------------------------------------------*/
hue_settings["bridges"][device_idx]["ip"] = entries[device_idx]->ui->IPEdit->text().toStdString();
hue_settings["bridges"][device_idx]["mac"] = entries[device_idx]->ui->MACEdit->text().toStdString();
hue_settings["bridges"][device_idx]["entertainment"] = entries[device_idx]->ui->EntertainmentCheckBox->isChecked();
hue_settings["bridges"][device_idx]["autoconnect"] = entries[device_idx]->ui->AutoConnectCheckBox->isChecked();
if(entries[device_idx]->ui->UsernameValue->text() != "")
{
hue_settings["bridges"][device_idx]["username"] = entries[device_idx]->ui->UsernameValue->text().toStdString();
}
if(entries[device_idx]->ui->ClientKeyValue->text() != "")
{
hue_settings["bridges"][device_idx]["clientkey"] = entries[device_idx]->ui->ClientKeyValue->text().toStdString();
}
} }
ResourceManager::get()->GetSettingsManager()->SetSettings("PhilipsHueDevices", hue_settings); ResourceManager::get()->GetSettingsManager()->SetSettings("PhilipsHueDevices", hue_settings);

View file

@ -34,3 +34,45 @@ void OpenRGBPhilipsWizSettingsEntry::changeEvent(QEvent *event)
ui->retranslateUi(this); ui->retranslateUi(this);
} }
} }
void OpenRGBPhilipsWizSettingsEntry::loadFromSettings(const json& data)
{
if(data.contains("ip"))
{
ui->IPEdit->setText(QString::fromStdString(data["ip"]));
}
if(data.contains("use_cool_white"))
{
ui->UseCoolWhiteCheckBox->setChecked(data["use_cool_white"]);
}
if(data.contains("use_warm_white"))
{
ui->UseWarmWhiteCheckBox->setChecked(data["use_warm_white"]);
}
if(data.contains("selected_white_strategy"))
{
ui->WhiteStrategyComboBox->setCurrentText(QString::fromStdString(data["selected_white_strategy"]));
}
}
json OpenRGBPhilipsWizSettingsEntry::saveSettings()
{
json result;
/*-------------------------------------------------*\
| Required parameters |
\*-------------------------------------------------*/
result["ip"] = ui->IPEdit->text().toStdString();
result["use_cool_white"] = ui->UseCoolWhiteCheckBox->isChecked();
result["use_warm_white"] = ui->UseWarmWhiteCheckBox->isChecked();
result["selected_white_strategy"] = ui->WhiteStrategyComboBox->currentText().toStdString();
return result;
}
const char* OpenRGBPhilipsWizSettingsEntry::settingsSection()
{
return "PhilipsWizDevices";
}

View file

@ -10,11 +10,14 @@
#pragma once #pragma once
#include <QWidget> #include <QWidget>
#include "ui_OpenRGBPhilipsWizSettingsEntry.h" #include "nlohmann/json.hpp"
using json = nlohmann::json;
namespace Ui namespace Ui
{ {
class OpenRGBPhilipsWizSettingsEntry; class OpenRGBPhilipsWizSettingsEntry;
class OpenRGBPhilipsWizSettingsEntryUi;
} }
class Ui::OpenRGBPhilipsWizSettingsEntry : public QWidget class Ui::OpenRGBPhilipsWizSettingsEntry : public QWidget
@ -24,6 +27,11 @@ class Ui::OpenRGBPhilipsWizSettingsEntry : public QWidget
public: public:
explicit OpenRGBPhilipsWizSettingsEntry(QWidget *parent = nullptr); explicit OpenRGBPhilipsWizSettingsEntry(QWidget *parent = nullptr);
~OpenRGBPhilipsWizSettingsEntry(); ~OpenRGBPhilipsWizSettingsEntry();
void loadFromSettings(const json& data);
json saveSettings();
const char* settingsSection();
private:
Ui::OpenRGBPhilipsWizSettingsEntryUi *ui; Ui::OpenRGBPhilipsWizSettingsEntryUi *ui;
private slots: private slots:

View file

@ -36,25 +36,7 @@ OpenRGBPhilipsWizSettingsPage::OpenRGBPhilipsWizSettingsPage(QWidget *parent) :
{ {
OpenRGBPhilipsWizSettingsEntry* entry = new OpenRGBPhilipsWizSettingsEntry; OpenRGBPhilipsWizSettingsEntry* entry = new OpenRGBPhilipsWizSettingsEntry;
if(wiz_settings["devices"][device_idx].contains("ip")) entry->loadFromSettings(wiz_settings["devices"][device_idx]);
{
entry->ui->IPEdit->setText(QString::fromStdString(wiz_settings["devices"][device_idx]["ip"]));
}
if(wiz_settings["devices"][device_idx].contains("use_cool_white"))
{
entry->ui->UseCoolWhiteCheckBox->setChecked(wiz_settings["devices"][device_idx]["use_cool_white"]);
}
if(wiz_settings["devices"][device_idx].contains("use_warm_white"))
{
entry->ui->UseWarmWhiteCheckBox->setChecked(wiz_settings["devices"][device_idx]["use_warm_white"]);
}
if(wiz_settings["devices"][device_idx].contains("selected_white_strategy"))
{
entry->ui->WhiteStrategyComboBox->setCurrentText(QString::fromStdString(wiz_settings["devices"][device_idx]["selected_white_strategy"]));
}
entries.push_back(entry); entries.push_back(entry);
@ -127,13 +109,7 @@ void Ui::OpenRGBPhilipsWizSettingsPage::on_SavePhilipsWizConfigurationButton_cli
for(unsigned int device_idx = 0; device_idx < entries.size(); device_idx++) for(unsigned int device_idx = 0; device_idx < entries.size(); device_idx++)
{ {
/*-------------------------------------------------*\ wiz_settings["devices"][device_idx] = entries[device_idx]->saveSettings();
| Required parameters |
\*-------------------------------------------------*/
wiz_settings["devices"][device_idx]["ip"] = entries[device_idx]->ui->IPEdit->text().toStdString();
wiz_settings["devices"][device_idx]["use_cool_white"] = entries[device_idx]->ui->UseCoolWhiteCheckBox->isChecked();
wiz_settings["devices"][device_idx]["use_warm_white"] = entries[device_idx]->ui->UseWarmWhiteCheckBox->isChecked();
wiz_settings["devices"][device_idx]["selected_white_strategy"] = entries[device_idx]->ui->WhiteStrategyComboBox->currentText().toStdString();
} }
ResourceManager::get()->GetSettingsManager()->SetSettings("PhilipsWizDevices", wiz_settings); ResourceManager::get()->GetSettingsManager()->SetSettings("PhilipsWizDevices", wiz_settings);

View file

@ -9,6 +9,7 @@
#include "OpenRGBPluginsEntry.h" #include "OpenRGBPluginsEntry.h"
#include "ui_OpenRGBPluginsEntry.h" #include "ui_OpenRGBPluginsEntry.h"
#include "PluginManager.h"
using namespace Ui; using namespace Ui;
@ -27,6 +28,74 @@ OpenRGBPluginsEntry::~OpenRGBPluginsEntry()
delete ui; delete ui;
} }
void OpenRGBPluginsEntry::fillFrom(const OpenRGBPluginEntry *plugin)
{
/*---------------------------------------------------------*\
| Fill in plugin information fields |
\*---------------------------------------------------------*/
ui->NameValue->setText(QString::fromStdString(plugin->info.Name));
ui->DescriptionValue->setText(QString::fromStdString(plugin->info.Description));
ui->VersionValue->setText(QString::fromStdString(plugin->info.Version));
ui->CommitValue->setText(QString::fromStdString(plugin->info.Commit));
ui->URLValue->setText(QString::fromStdString(plugin->info.URL));
ui->APIVersionValue->setText(QString::number(plugin->api_version));
/*---------------------------------------------------------*\
| If the plugin is incompatible, highlight the API version |
| in red and disable the enable checkbox |
\*---------------------------------------------------------*/
if(plugin->incompatible)
{
ui->APIVersionValue->setStyleSheet("QLabel { color : red; }");
ui->EnabledCheckBox->setEnabled(false);
}
/*---------------------------------------------------------*\
| Fill in plugin icon |
\*---------------------------------------------------------*/
QPixmap pixmap(QPixmap::fromImage(plugin->info.Icon));
ui->IconView->setPixmap(pixmap);
ui->IconView->setScaledContents(true);
/*---------------------------------------------------------*\
| Fill in plugin path |
\*---------------------------------------------------------*/
ui->PathValue->setText(QString::fromStdString(plugin->path));
/*---------------------------------------------------------*\
| Fill in plugin enabled status |
\*---------------------------------------------------------*/
ui->EnabledCheckBox->setChecked((plugin->enabled));
is_system = plugin->is_system;
}
bool OpenRGBPluginsEntry::isSystem() const
{
return is_system;
}
bool OpenRGBPluginsEntry::isPluginEnabled() const
{
return ui->EnabledCheckBox->isChecked();
}
std::string OpenRGBPluginsEntry::getName() const
{
return ui->NameValue->text().toStdString();
}
std::string OpenRGBPluginsEntry::getDescription() const
{
return ui->DescriptionValue->text().toStdString();
}
std::string OpenRGBPluginsEntry::getPath() const
{
return ui->PathValue->text().toStdString();
}
void OpenRGBPluginsEntry::changeEvent(QEvent *event) void OpenRGBPluginsEntry::changeEvent(QEvent *event)
{ {
if(event->type() == QEvent::LanguageChange) if(event->type() == QEvent::LanguageChange)

View file

@ -10,15 +10,17 @@
#pragma once #pragma once
#include <QWidget> #include <QWidget>
#include "ui_OpenRGBPluginsEntry.h"
namespace Ui namespace Ui
{ {
class OpenRGBPluginsEntry; class OpenRGBPluginsEntry;
class OpenRGBPluginsEntryUi;
} }
typedef void (*EnableClickCallback)(void *, void *); typedef void (*EnableClickCallback)(void *, void *);
struct OpenRGBPluginEntry;
class Ui::OpenRGBPluginsEntry : public QWidget class Ui::OpenRGBPluginsEntry : public QWidget
{ {
Q_OBJECT Q_OBJECT
@ -26,9 +28,13 @@ class Ui::OpenRGBPluginsEntry : public QWidget
public: public:
explicit OpenRGBPluginsEntry(QWidget *parent = nullptr); explicit OpenRGBPluginsEntry(QWidget *parent = nullptr);
~OpenRGBPluginsEntry(); ~OpenRGBPluginsEntry();
void fillFrom(const OpenRGBPluginEntry* plugin);
bool isSystem() const;
bool isPluginEnabled() const;
std::string getName() const;
std::string getDescription() const;
std::string getPath() const;
Ui::OpenRGBPluginsEntryUi * ui;
bool is_system;
void RegisterEnableClickCallback(EnableClickCallback new_callback, void * new_callback_arg); void RegisterEnableClickCallback(EnableClickCallback new_callback, void * new_callback_arg);
@ -39,4 +45,6 @@ private slots:
private: private:
EnableClickCallback EnableClickCallbackVal; EnableClickCallback EnableClickCallbackVal;
void * EnableClickCallbackArg; void * EnableClickCallbackArg;
Ui::OpenRGBPluginsEntryUi * ui;
bool is_system;
}; };

View file

@ -60,45 +60,10 @@ void Ui::OpenRGBPluginsPage::RefreshList()
/*---------------------------------------------------------*\ /*---------------------------------------------------------*\
| Fill in plugin information fields | | Fill in plugin information fields |
\*---------------------------------------------------------*/ \*---------------------------------------------------------*/
entry->ui->NameValue->setText(QString::fromStdString(plugin.info.Name)); entry->fillFrom(&plugin);
entry->ui->DescriptionValue->setText(QString::fromStdString(plugin.info.Description));
entry->ui->VersionValue->setText(QString::fromStdString(plugin.info.Version));
entry->ui->CommitValue->setText(QString::fromStdString(plugin.info.Commit));
entry->ui->URLValue->setText(QString::fromStdString(plugin.info.URL));
entry->ui->APIVersionValue->setText(QString::number(plugin.api_version));
/*---------------------------------------------------------*\
| If the plugin is incompatible, highlight the API version |
| in red and disable the enable checkbox |
\*---------------------------------------------------------*/
if(plugin.incompatible)
{
entry->ui->APIVersionValue->setStyleSheet("QLabel { color : red; }");
entry->ui->EnabledCheckBox->setEnabled(false);
}
/*---------------------------------------------------------*\
| Fill in plugin icon |
\*---------------------------------------------------------*/
QPixmap pixmap(QPixmap::fromImage(plugin.info.Icon));
entry->ui->IconView->setPixmap(pixmap);
entry->ui->IconView->setScaledContents(true);
/*---------------------------------------------------------*\
| Fill in plugin path |
\*---------------------------------------------------------*/
entry->ui->PathValue->setText(QString::fromStdString(plugin.path));
/*---------------------------------------------------------*\
| Fill in plugin enabled status |
\*---------------------------------------------------------*/
entry->ui->EnabledCheckBox->setChecked((plugin.enabled));
entry->RegisterEnableClickCallback(EnableClickCallbackFunction, this); entry->RegisterEnableClickCallback(EnableClickCallbackFunction, this);
entry->is_system = plugin.is_system;
/*---------------------------------------------------------*\ /*---------------------------------------------------------*\
| Add the entry to the plugin list | | Add the entry to the plugin list |
\*---------------------------------------------------------*/ \*---------------------------------------------------------*/
@ -213,7 +178,7 @@ void Ui::OpenRGBPluginsPage::on_RemovePluginButton_clicked()
/*-----------------------------------------------------*\ /*-----------------------------------------------------*\
| Don't allow removing system plugins | | Don't allow removing system plugins |
\*-----------------------------------------------------*/ \*-----------------------------------------------------*/
if(entries[cur_row]->is_system) if(entries[cur_row]->isSystem())
{ {
return; return;
} }
@ -233,8 +198,8 @@ void Ui::OpenRGBPluginsPage::on_RemovePluginButton_clicked()
if((plugin_settings["plugins"][plugin_idx].contains("name")) if((plugin_settings["plugins"][plugin_idx].contains("name"))
&&(plugin_settings["plugins"][plugin_idx].contains("description"))) &&(plugin_settings["plugins"][plugin_idx].contains("description")))
{ {
if((plugin_settings["plugins"][plugin_idx]["name"] == entries[cur_row]->ui->NameValue->text().toStdString()) if((plugin_settings["plugins"][plugin_idx]["name"] == entries[cur_row]->getName())
&&(plugin_settings["plugins"][plugin_idx]["description"] == entries[cur_row]->ui->DescriptionValue->text().toStdString())) &&(plugin_settings["plugins"][plugin_idx]["description"] == entries[cur_row]->getDescription()))
{ {
/*-------------------------------------*\ /*-------------------------------------*\
| Remove plugin from settings | | Remove plugin from settings |
@ -248,7 +213,7 @@ void Ui::OpenRGBPluginsPage::on_RemovePluginButton_clicked()
/*-----------------------------------------------------*\ /*-----------------------------------------------------*\
| Mark plugin to be removed on next restart | | Mark plugin to be removed on next restart |
\*-----------------------------------------------------*/ \*-----------------------------------------------------*/
plugin_settings["plugins_remove"][plugin_settings["plugins_remove"].size()] = entries[cur_row]->ui->PathValue->text().toStdString(); plugin_settings["plugins_remove"][plugin_settings["plugins_remove"].size()] = entries[cur_row]->getPath();
ResourceManager::get()->GetSettingsManager()->SetSettings("Plugins", plugin_settings); ResourceManager::get()->GetSettingsManager()->SetSettings("Plugins", plugin_settings);
ResourceManager::get()->GetSettingsManager()->SaveSettings(); ResourceManager::get()->GetSettingsManager()->SaveSettings();
@ -268,14 +233,14 @@ void Ui::OpenRGBPluginsPage::on_EnableButton_clicked(OpenRGBPluginsEntry* entry)
\*-----------------------------------------------------*/ \*-----------------------------------------------------*/
std::string name = ""; std::string name = "";
std::string description = ""; std::string description = "";
bool enabled = entry->ui->EnabledCheckBox->isChecked(); bool enabled = entry->isPluginEnabled();
bool found = false; bool found = false;
unsigned int plugin_ct = 0; unsigned int plugin_ct = 0;
unsigned int plugin_idx = 0; unsigned int plugin_idx = 0;
std::string entry_name = entry->ui->NameValue->text().toStdString(); std::string entry_name = entry->getName();
std::string entry_desc = entry->ui->DescriptionValue->text().toStdString(); std::string entry_desc = entry->getDescription();
std::string entry_path = entry->ui->PathValue->text().toStdString(); std::string entry_path = entry->getPath();
if(plugin_settings.contains("plugins")) if(plugin_settings.contains("plugins"))
{ {
@ -352,7 +317,7 @@ void Ui::OpenRGBPluginsPage::on_PluginsList_itemSelectionChanged()
| Enable the remove button when there's a selected item | | Enable the remove button when there's a selected item |
| and the selected item is not a system plugin | | and the selected item is not a system plugin |
\*-----------------------------------------------------*/ \*-----------------------------------------------------*/
if(!entries[cur_row]->is_system) if(!entries[cur_row]->isSystem())
{ {
ui->RemovePluginButton->setEnabled(!ui->PluginsList->selectedItems().empty()); ui->RemovePluginButton->setEnabled(!ui->PluginsList->selectedItems().empty());
ui->RemovePluginButton->setText("Remove Plugin"); ui->RemovePluginButton->setText("Remove Plugin");

View file

@ -11,12 +11,12 @@
#include <QWidget> #include <QWidget>
#include "OpenRGBPluginsEntry.h" #include "OpenRGBPluginsEntry.h"
#include "ui_OpenRGBPluginsPage.h"
#include "PluginManager.h" #include "PluginManager.h"
namespace Ui namespace Ui
{ {
class OpenRGBPluginsPage; class OpenRGBPluginsPage;
class OpenRGBPluginsPageUi;
} }
class Ui::OpenRGBPluginsPage : public QWidget class Ui::OpenRGBPluginsPage : public QWidget

View file

@ -31,3 +31,39 @@ void OpenRGBQMKORGBSettingsEntry::changeEvent(QEvent *event)
ui->retranslateUi(this); ui->retranslateUi(this);
} }
} }
void OpenRGBQMKORGBSettingsEntry::loadFromSettings(const json& data)
{
if(data.contains("name"))
{
ui->NameEdit->setText(QString::fromStdString(data["name"]));
}
if(data.contains("usb_vid"))
{
ui->USBVIDEdit->setText(QString::fromStdString(data["usb_vid"]));
}
if(data.contains("usb_pid"))
{
ui->USBPIDEdit->setText(QString::fromStdString(data["usb_pid"]));
}
}
json OpenRGBQMKORGBSettingsEntry::saveSettings()
{
json result;
/*-------------------------------------------------*\
| Required parameters |
\*-------------------------------------------------*/
result["name"] = ui->NameEdit->text().toStdString();
result["usb_vid"] = ui->USBVIDEdit->text().toStdString();
result["usb_pid"] = ui->USBPIDEdit->text().toStdString();
return result;
}
const char* OpenRGBQMKORGBSettingsEntry::settingsSection()
{
return "QMKOpenRGBDevices";
}

View file

@ -10,11 +10,14 @@
#pragma once #pragma once
#include <QWidget> #include <QWidget>
#include "ui_OpenRGBQMKORGBSettingsEntry.h" #include "nlohmann/json.hpp"
using json = nlohmann::json;
namespace Ui namespace Ui
{ {
class OpenRGBQMKORGBSettingsEntry; class OpenRGBQMKORGBSettingsEntry;
class OpenRGBQMKORGBSettingsEntryUi;
} }
class Ui::OpenRGBQMKORGBSettingsEntry : public QWidget class Ui::OpenRGBQMKORGBSettingsEntry : public QWidget
@ -27,5 +30,10 @@ private slots:
public: public:
explicit OpenRGBQMKORGBSettingsEntry(QWidget *parent = nullptr); explicit OpenRGBQMKORGBSettingsEntry(QWidget *parent = nullptr);
~OpenRGBQMKORGBSettingsEntry(); ~OpenRGBQMKORGBSettingsEntry();
void loadFromSettings(const json& data);
json saveSettings();
const char* settingsSection();
private:
Ui::OpenRGBQMKORGBSettingsEntryUi *ui; Ui::OpenRGBQMKORGBSettingsEntryUi *ui;
}; };

View file

@ -36,20 +36,7 @@ OpenRGBQMKORGBSettingsPage::OpenRGBQMKORGBSettingsPage(QWidget *parent) :
{ {
OpenRGBQMKORGBSettingsEntry* entry = new OpenRGBQMKORGBSettingsEntry; OpenRGBQMKORGBSettingsEntry* entry = new OpenRGBQMKORGBSettingsEntry;
if(qmk_settings["devices"][device_idx].contains("name")) entry->loadFromSettings(qmk_settings["devices"][device_idx]);
{
entry->ui->NameEdit->setText(QString::fromStdString(qmk_settings["devices"][device_idx]["name"]));
}
if(qmk_settings["devices"][device_idx].contains("usb_vid"))
{
entry->ui->USBVIDEdit->setText(QString::fromStdString(qmk_settings["devices"][device_idx]["usb_vid"]));
}
if(qmk_settings["devices"][device_idx].contains("usb_pid"))
{
entry->ui->USBPIDEdit->setText(QString::fromStdString(qmk_settings["devices"][device_idx]["usb_pid"]));
}
entries.push_back(entry); entries.push_back(entry);
@ -125,9 +112,7 @@ void Ui::OpenRGBQMKORGBSettingsPage::on_SaveQMKORGBConfigurationButton_clicked()
/*-------------------------------------------------*\ /*-------------------------------------------------*\
| Required parameters | | Required parameters |
\*-------------------------------------------------*/ \*-------------------------------------------------*/
qmk_settings["devices"][device_idx]["name"] = entries[device_idx]->ui->NameEdit->text().toStdString(); qmk_settings["devices"][device_idx] = entries[device_idx]->saveSettings();
qmk_settings["devices"][device_idx]["usb_vid"] = entries[device_idx]->ui->USBVIDEdit->text().toStdString();
qmk_settings["devices"][device_idx]["usb_pid"] = entries[device_idx]->ui->USBPIDEdit->text().toStdString();
} }
ResourceManager::get()->GetSettingsManager()->SetSettings("QMKOpenRGBDevices", qmk_settings); ResourceManager::get()->GetSettingsManager()->SetSettings("QMKOpenRGBDevices", qmk_settings);

View file

@ -10,12 +10,12 @@
#pragma once #pragma once
#include <QWidget> #include <QWidget>
#include "ui_OpenRGBQMKORGBSettingsPage.h"
#include "OpenRGBQMKORGBSettingsEntry.h" #include "OpenRGBQMKORGBSettingsEntry.h"
namespace Ui namespace Ui
{ {
class OpenRGBQMKORGBSettingsPage; class OpenRGBQMKORGBSettingsPage;
class OpenRGBQMKORGBSettingsPageUi;
} }
class Ui::OpenRGBQMKORGBSettingsPage : public QWidget class Ui::OpenRGBQMKORGBSettingsPage : public QWidget

View file

@ -37,7 +37,7 @@ void OpenRGBSerialSettingsEntry::changeEvent(QEvent *event)
} }
} }
void Ui::OpenRGBSerialSettingsEntry::on_ProtocolComboBox_currentIndexChanged(int index) void OpenRGBSerialSettingsEntry::on_ProtocolComboBox_currentIndexChanged(int index)
{ {
if(index == 3) if(index == 3)
{ {
@ -48,3 +48,83 @@ void Ui::OpenRGBSerialSettingsEntry::on_ProtocolComboBox_currentIndexChanged(int
ui->BaudLabel->setText("Baud:"); ui->BaudLabel->setText("Baud:");
} }
} }
void OpenRGBSerialSettingsEntry::loadFromSettings(const json& data)
{
if(data.contains("name"))
{
ui->NameEdit->setText(QString::fromStdString(data["name"]));
}
if(data.contains("port"))
{
ui->PortEdit->setText(QString::fromStdString(data["port"]));
}
if(data.contains("baud"))
{
ui->BaudEdit->setText(QString::number((int)data["baud"]));
}
if(data.contains("num_leds"))
{
ui->NumLEDsEdit->setText(QString::number((int)data["num_leds"]));
}
if(data.contains("protocol"))
{
std::string protocol_string = data["protocol"];
if(protocol_string == "keyboard_visualizer")
{
ui->ProtocolComboBox->setCurrentIndex(0);
}
else if(protocol_string == "adalight")
{
ui->ProtocolComboBox->setCurrentIndex(1);
}
else if(protocol_string == "tpm2")
{
ui->ProtocolComboBox->setCurrentIndex(2);
}
else if(protocol_string == "basic_i2c")
{
ui->ProtocolComboBox->setCurrentIndex(3);
}
}
}
json OpenRGBSerialSettingsEntry::saveSettings()
{
json result;
/*-------------------------------------------------*\
| Required parameters |
\*-------------------------------------------------*/
result["name"] = ui->NameEdit->text().toStdString();
result["port"] = ui->PortEdit->text().toStdString();
result["num_leds"] = ui->NumLEDsEdit->text().toUInt();
result["baud"] = ui->BaudEdit->text().toUInt();
switch(ui->ProtocolComboBox->currentIndex())
{
case 0:
result["protocol"] = "keyboard_visualizer";
break;
case 1:
result["protocol"] = "adalight";
break;
case 2:
result["protocol"] = "tpm2";
break;
case 3:
result["protocol"] = "basic_i2c";
break;
}
return result;
}
const char* OpenRGBSerialSettingsEntry::settingsSection()
{
return "LEDStripDevices";
}

View file

@ -10,11 +10,14 @@
#pragma once #pragma once
#include <QWidget> #include <QWidget>
#include "ui_OpenRGBSerialSettingsEntry.h" #include "nlohmann/json.hpp"
using json = nlohmann::json;
namespace Ui namespace Ui
{ {
class OpenRGBSerialSettingsEntry; class OpenRGBSerialSettingsEntry;
class OpenRGBSerialSettingsEntryUi;
} }
class Ui::OpenRGBSerialSettingsEntry : public QWidget class Ui::OpenRGBSerialSettingsEntry : public QWidget
@ -29,5 +32,10 @@ private slots:
public: public:
explicit OpenRGBSerialSettingsEntry(QWidget *parent = nullptr); explicit OpenRGBSerialSettingsEntry(QWidget *parent = nullptr);
~OpenRGBSerialSettingsEntry(); ~OpenRGBSerialSettingsEntry();
void loadFromSettings(const json& data);
json saveSettings();
const char* settingsSection();
private:
Ui::OpenRGBSerialSettingsEntryUi *ui; Ui::OpenRGBSerialSettingsEntryUi *ui;
}; };

View file

@ -36,47 +36,7 @@ OpenRGBSerialSettingsPage::OpenRGBSerialSettingsPage(QWidget *parent) :
{ {
OpenRGBSerialSettingsEntry* entry = new OpenRGBSerialSettingsEntry; OpenRGBSerialSettingsEntry* entry = new OpenRGBSerialSettingsEntry;
if(ledstrip_settings["devices"][device_idx].contains("name")) entry->loadFromSettings(ledstrip_settings["devices"][device_idx]);
{
entry->ui->NameEdit->setText(QString::fromStdString(ledstrip_settings["devices"][device_idx]["name"]));
}
if(ledstrip_settings["devices"][device_idx].contains("port"))
{
entry->ui->PortEdit->setText(QString::fromStdString(ledstrip_settings["devices"][device_idx]["port"]));
}
if(ledstrip_settings["devices"][device_idx].contains("baud"))
{
entry->ui->BaudEdit->setText(QString::number((int)ledstrip_settings["devices"][device_idx]["baud"]));
}
if(ledstrip_settings["devices"][device_idx].contains("num_leds"))
{
entry->ui->NumLEDsEdit->setText(QString::number((int)ledstrip_settings["devices"][device_idx]["num_leds"]));
}
if(ledstrip_settings["devices"][device_idx].contains("protocol"))
{
std::string protocol_string = ledstrip_settings["devices"][device_idx]["protocol"];
if(protocol_string == "keyboard_visualizer")
{
entry->ui->ProtocolComboBox->setCurrentIndex(0);
}
else if(protocol_string == "adalight")
{
entry->ui->ProtocolComboBox->setCurrentIndex(1);
}
else if(protocol_string == "tpm2")
{
entry->ui->ProtocolComboBox->setCurrentIndex(2);
}
else if(protocol_string == "basic_i2c")
{
entry->ui->ProtocolComboBox->setCurrentIndex(3);
}
}
entries.push_back(entry); entries.push_back(entry);
@ -149,29 +109,7 @@ void Ui::OpenRGBSerialSettingsPage::on_SaveSerialConfigurationButton_clicked()
for(unsigned int device_idx = 0; device_idx < entries.size(); device_idx++) for(unsigned int device_idx = 0; device_idx < entries.size(); device_idx++)
{ {
/*-------------------------------------------------*\ ledstrip_settings["devices"][device_idx] = entries[device_idx]->saveSettings();
| Required parameters |
\*-------------------------------------------------*/
ledstrip_settings["devices"][device_idx]["name"] = entries[device_idx]->ui->NameEdit->text().toStdString();
ledstrip_settings["devices"][device_idx]["port"] = entries[device_idx]->ui->PortEdit->text().toStdString();
ledstrip_settings["devices"][device_idx]["num_leds"] = entries[device_idx]->ui->NumLEDsEdit->text().toUInt();
ledstrip_settings["devices"][device_idx]["baud"] = entries[device_idx]->ui->BaudEdit->text().toUInt();
switch(entries[device_idx]->ui->ProtocolComboBox->currentIndex())
{
case 0:
ledstrip_settings["devices"][device_idx]["protocol"] = "keyboard_visualizer";
break;
case 1:
ledstrip_settings["devices"][device_idx]["protocol"] = "adalight";
break;
case 2:
ledstrip_settings["devices"][device_idx]["protocol"] = "tpm2";
break;
case 3:
ledstrip_settings["devices"][device_idx]["protocol"] = "basic_i2c";
break;
}
} }
ResourceManager::get()->GetSettingsManager()->SetSettings("LEDStripDevices", ledstrip_settings); ResourceManager::get()->GetSettingsManager()->SetSettings("LEDStripDevices", ledstrip_settings);

View file

@ -64,3 +64,38 @@ void OpenRGBYeelightSettingsEntry::on_HostIPChooserButton_clicked()
ui->HostIPEdit->setText(inp.textValue()); ui->HostIPEdit->setText(inp.textValue());
} }
void OpenRGBYeelightSettingsEntry::loadFromSettings(const json& data)
{
if(data.contains("ip"))
{
ui->IPEdit->setText(QString::fromStdString(data["ip"]));
}
if(data.contains("host_ip"))
{
ui->HostIPEdit->setText(QString::fromStdString(data["host_ip"]));
}
if(data.contains("music_mode"))
{
ui->MusicModeCheckBox->setChecked(data["music_mode"]);
}
}
json OpenRGBYeelightSettingsEntry::saveSettings()
{
json result;
/*-------------------------------------------------*\
| Required parameters |
\*-------------------------------------------------*/
result["ip"] = ui->IPEdit->text().toStdString();
result["host_ip"] = ui->HostIPEdit->text().toStdString();
result["music_mode"] = ui->MusicModeCheckBox->isChecked();
return result;
}
const char* OpenRGBYeelightSettingsEntry::settingsSection()
{
return "YeelightDevices";
}

View file

@ -10,11 +10,14 @@
#pragma once #pragma once
#include <QWidget> #include <QWidget>
#include "ui_OpenRGBYeelightSettingsEntry.h" #include "nlohmann/json.hpp"
using json = nlohmann::json;
namespace Ui namespace Ui
{ {
class OpenRGBYeelightSettingsEntry; class OpenRGBYeelightSettingsEntry;
class OpenRGBYeelightSettingsEntryUi;
} }
class Ui::OpenRGBYeelightSettingsEntry : public QWidget class Ui::OpenRGBYeelightSettingsEntry : public QWidget
@ -24,6 +27,11 @@ class Ui::OpenRGBYeelightSettingsEntry : public QWidget
public: public:
explicit OpenRGBYeelightSettingsEntry(QWidget *parent = nullptr); explicit OpenRGBYeelightSettingsEntry(QWidget *parent = nullptr);
~OpenRGBYeelightSettingsEntry(); ~OpenRGBYeelightSettingsEntry();
void loadFromSettings(const json& data);
json saveSettings();
const char* settingsSection();
private:
Ui::OpenRGBYeelightSettingsEntryUi *ui; Ui::OpenRGBYeelightSettingsEntryUi *ui;
private slots: private slots:

View file

@ -36,20 +36,7 @@ OpenRGBYeelightSettingsPage::OpenRGBYeelightSettingsPage(QWidget *parent) :
{ {
OpenRGBYeelightSettingsEntry* entry = new OpenRGBYeelightSettingsEntry; OpenRGBYeelightSettingsEntry* entry = new OpenRGBYeelightSettingsEntry;
if(yeelight_settings["devices"][device_idx].contains("ip")) entry->loadFromSettings(yeelight_settings["devices"][device_idx]);
{
entry->ui->IPEdit->setText(QString::fromStdString(yeelight_settings["devices"][device_idx]["ip"]));
}
if(yeelight_settings["devices"][device_idx].contains("host_ip"))
{
entry->ui->HostIPEdit->setText(QString::fromStdString(yeelight_settings["devices"][device_idx]["host_ip"]));
}
if(yeelight_settings["devices"][device_idx].contains("music_mode"))
{
entry->ui->MusicModeCheckBox->setChecked(yeelight_settings["devices"][device_idx]["music_mode"]);
}
entries.push_back(entry); entries.push_back(entry);
@ -122,12 +109,7 @@ void Ui::OpenRGBYeelightSettingsPage::on_SaveYeelightConfigurationButton_clicked
for(unsigned int device_idx = 0; device_idx < entries.size(); device_idx++) for(unsigned int device_idx = 0; device_idx < entries.size(); device_idx++)
{ {
/*-------------------------------------------------*\ yeelight_settings["devices"][device_idx] = entries[device_idx]->saveSettings();
| Required parameters |
\*-------------------------------------------------*/
yeelight_settings["devices"][device_idx]["ip"] = entries[device_idx]->ui->IPEdit->text().toStdString();
yeelight_settings["devices"][device_idx]["host_ip"] = entries[device_idx]->ui->HostIPEdit->text().toStdString();
yeelight_settings["devices"][device_idx]["music_mode"] = entries[device_idx]->ui->MusicModeCheckBox->isChecked();
} }
ResourceManager::get()->GetSettingsManager()->SetSettings("YeelightDevices", yeelight_settings); ResourceManager::get()->GetSettingsManager()->SetSettings("YeelightDevices", yeelight_settings);