mirror of
https://github.com/CalcProgrammer1/OpenRGB.git
synced 2026-01-29 01:11:10 -05:00
Profile save and load test
This commit is contained in:
@@ -310,7 +310,7 @@ void DetectRGBFusion2Controllers(std::vector<RGBController*> &rgb_controllers);
|
||||
* Detect and populate RGB Controllers vector *
|
||||
* *
|
||||
\******************************************************************************************/
|
||||
|
||||
#include "RGBController_Dummy.h"
|
||||
void DetectRGBControllers(void)
|
||||
{
|
||||
DetectI2CBusses();
|
||||
|
||||
@@ -26,6 +26,7 @@ unsigned char * RGBController::GetDeviceDescription()
|
||||
|
||||
unsigned short *zone_map_rows = new unsigned short[num_zones];
|
||||
|
||||
data_size += sizeof(data_size);
|
||||
data_size += sizeof(device_type);
|
||||
data_size += name_len + sizeof(name_len);
|
||||
data_size += description_len + sizeof(description_len);
|
||||
@@ -94,6 +95,12 @@ unsigned char * RGBController::GetDeviceDescription()
|
||||
\*---------------------------------------------------------*/
|
||||
unsigned char *data_buf = new unsigned char[data_size];
|
||||
|
||||
/*---------------------------------------------------------*\
|
||||
| Copy in data size |
|
||||
\*---------------------------------------------------------*/
|
||||
memcpy(&data_buf[data_ptr], &data_size, sizeof(data_size));
|
||||
data_ptr += sizeof(data_size);
|
||||
|
||||
/*---------------------------------------------------------*\
|
||||
| Copy in type |
|
||||
\*---------------------------------------------------------*/
|
||||
@@ -357,6 +364,8 @@ void RGBController::ReadDeviceDescription(unsigned char* data_buf)
|
||||
{
|
||||
unsigned int data_ptr = 0;
|
||||
|
||||
data_ptr += sizeof(unsigned int);
|
||||
|
||||
/*---------------------------------------------------------*\
|
||||
| Copy in type |
|
||||
\*---------------------------------------------------------*/
|
||||
|
||||
@@ -613,6 +613,15 @@ void Ui::OpenRGBDevicePage::SetDevice(unsigned char red, unsigned char green, un
|
||||
on_SetDeviceButton_clicked();
|
||||
}
|
||||
|
||||
void Ui::OpenRGBDevicePage::UpdateDevice()
|
||||
{
|
||||
ui->ModeBox->blockSignals(true);
|
||||
ui->ModeBox->setCurrentIndex(device->active_mode);
|
||||
ui->ModeBox->blockSignals(false);
|
||||
UpdateModeUi();
|
||||
UpdateMode();
|
||||
}
|
||||
|
||||
void Ui::OpenRGBDevicePage::SetCustomMode()
|
||||
{
|
||||
device->SetCustomMode();
|
||||
|
||||
@@ -20,6 +20,7 @@ public:
|
||||
|
||||
void SetDevice(unsigned char red, unsigned char green, unsigned char blue);
|
||||
void SetCustomMode();
|
||||
void UpdateDevice();
|
||||
void UpdateMode();
|
||||
void UpdateModeUi();
|
||||
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
#include <fstream>
|
||||
#include "OpenRGBDialog2.h"
|
||||
#include "OpenRGBDevicePage.h"
|
||||
#include "OpenRGBDeviceInfoPage.h"
|
||||
#include "OpenRGBSystemInfoPage.h"
|
||||
#include "RGBController_Dummy.h"
|
||||
#include <QLabel>
|
||||
#include <QTabBar>
|
||||
|
||||
@@ -276,4 +278,111 @@ void OpenRGBDialog2::on_ShowHide()
|
||||
{
|
||||
hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Ui::OpenRGBDialog2::on_ButtonSaveProfile_clicked()
|
||||
{
|
||||
for(int controller_index = 0; controller_index < controllers.size(); controller_index++)
|
||||
{
|
||||
char filename[128];
|
||||
snprintf(filename, 128, "controller_%d.bin", controller_index);
|
||||
|
||||
std::ofstream controller_file(filename, std::ios::out | std::ios::binary);
|
||||
|
||||
unsigned char *controller_data = controllers[controller_index]->GetDeviceDescription();
|
||||
unsigned int controller_size;
|
||||
|
||||
memcpy(&controller_size, controller_data, sizeof(controller_size));
|
||||
|
||||
controller_file.write((const char *)controller_data, controller_size);
|
||||
|
||||
controller_file.close();
|
||||
}
|
||||
}
|
||||
|
||||
void Ui::OpenRGBDialog2::on_ButtonLoadProfile_clicked()
|
||||
{
|
||||
for(int controller_index = 0; controller_index < controllers.size(); controller_index++)
|
||||
{
|
||||
char filename[128];
|
||||
snprintf(filename, 128, "controller_%d.bin", controller_index);
|
||||
|
||||
std::ifstream controller_file(filename, std::ios::in | std::ios::binary);
|
||||
unsigned int controller_size;
|
||||
|
||||
controller_file.read((char *)&controller_size, sizeof(controller_size));
|
||||
|
||||
unsigned char *controller_data = new unsigned char[controller_size];
|
||||
|
||||
controller_file.seekg(0);
|
||||
|
||||
controller_file.read((char *)controller_data, controller_size);
|
||||
|
||||
RGBController_Dummy temp_controller;
|
||||
|
||||
temp_controller.ReadDeviceDescription(controller_data);
|
||||
|
||||
delete[] controller_data;
|
||||
|
||||
RGBController *controller_ptr = controllers[controller_index];
|
||||
|
||||
/*---------------------------------------------------------*\
|
||||
| Test if saved controller data matches this controller |
|
||||
\*---------------------------------------------------------*/
|
||||
if((temp_controller.type == controller_ptr->type )
|
||||
&&(temp_controller.name == controller_ptr->name )
|
||||
&&(temp_controller.description == controller_ptr->description)
|
||||
&&(temp_controller.version == controller_ptr->version )
|
||||
&&(temp_controller.serial == controller_ptr->serial )
|
||||
&&(temp_controller.location == controller_ptr->location ))
|
||||
{
|
||||
/*---------------------------------------------------------*\
|
||||
| Update all modes |
|
||||
\*---------------------------------------------------------*/
|
||||
if(temp_controller.modes.size() == controller_ptr->modes.size())
|
||||
{
|
||||
for(int mode_index = 0; mode_index < temp_controller.modes.size(); mode_index++)
|
||||
{
|
||||
if((temp_controller.modes[mode_index].name == controller_ptr->modes[mode_index].name )
|
||||
&&(temp_controller.modes[mode_index].value == controller_ptr->modes[mode_index].value )
|
||||
&&(temp_controller.modes[mode_index].flags == controller_ptr->modes[mode_index].flags )
|
||||
&&(temp_controller.modes[mode_index].speed_min == controller_ptr->modes[mode_index].speed_min )
|
||||
&&(temp_controller.modes[mode_index].speed_max == controller_ptr->modes[mode_index].speed_max )
|
||||
&&(temp_controller.modes[mode_index].colors_min == controller_ptr->modes[mode_index].colors_min)
|
||||
&&(temp_controller.modes[mode_index].colors_max == controller_ptr->modes[mode_index].colors_max))
|
||||
{
|
||||
controller_ptr->modes[mode_index].speed = temp_controller.modes[mode_index].speed;
|
||||
controller_ptr->modes[mode_index].direction = temp_controller.modes[mode_index].direction;
|
||||
controller_ptr->modes[mode_index].color_mode = temp_controller.modes[mode_index].color_mode;
|
||||
|
||||
controller_ptr->modes[mode_index].colors.resize(temp_controller.modes[mode_index].colors.size());
|
||||
|
||||
for(int mode_color_index = 0; mode_color_index < temp_controller.modes[mode_index].colors.size(); mode_color_index++)
|
||||
{
|
||||
controller_ptr->modes[mode_index].colors[mode_color_index] = temp_controller.modes[mode_index].colors[mode_color_index];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
controller_ptr->active_mode = temp_controller.active_mode;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------*\
|
||||
| Update all colors |
|
||||
\*---------------------------------------------------------*/
|
||||
if(temp_controller.colors.size() == controller_ptr->colors.size())
|
||||
{
|
||||
for(int color_index = 0; color_index < temp_controller.colors.size(); color_index++)
|
||||
{
|
||||
controller_ptr->colors[color_index] = temp_controller.colors[color_index];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(int device = 0; device < ui->DevicesTabBar->count(); device++)
|
||||
{
|
||||
qobject_cast<OpenRGBDevicePage *>(ui->DevicesTabBar->widget(device))->UpdateDevice();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,6 +48,8 @@ private slots:
|
||||
void on_QuickWhite();
|
||||
void on_SetAllDevices(unsigned char red, unsigned char green, unsigned char blue);
|
||||
void on_ShowHide();
|
||||
void on_ButtonSaveProfile_clicked();
|
||||
void on_ButtonLoadProfile_clicked();
|
||||
};
|
||||
|
||||
#endif // OPENRGBDIALOG2_H
|
||||
|
||||
@@ -16,6 +16,13 @@
|
||||
<widget class="QWidget" name="centralWidget">
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QPushButton" name="ButtonSaveProfile">
|
||||
<property name="text">
|
||||
<string>Save Profile</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QTabWidget" name="MainTabBar">
|
||||
<property name="tabShape">
|
||||
<enum>QTabWidget::Rounded</enum>
|
||||
@@ -79,6 +86,13 @@
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QPushButton" name="ButtonLoadProfile">
|
||||
<property name="text">
|
||||
<string>Load Profile</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
Reference in New Issue
Block a user