From eade8fea1a64656ac0186db3496bfb66c3fbb8fa Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Sun, 4 Jul 2021 16:32:18 -0500 Subject: [PATCH] Add save to device support to RGBController --- RGBController/RGBController.cpp | 12 ++++++++++++ RGBController/RGBController.h | 6 ++++++ qt/OpenRGBDevicePage.cpp | 26 ++++++++++++++++++++++++++ qt/OpenRGBDevicePage.h | 2 ++ qt/OpenRGBDevicePage.ui | 7 +++++++ 5 files changed, 53 insertions(+) diff --git a/RGBController/RGBController.cpp b/RGBController/RGBController.cpp index 57318f5b..ec64769f 100644 --- a/RGBController/RGBController.cpp +++ b/RGBController/RGBController.cpp @@ -1523,6 +1523,11 @@ void RGBController::UpdateMode() CallFlag_UpdateMode = true; } +void RGBController::SaveMode() +{ + DeviceSaveMode(); +} + void RGBController::DeviceUpdateLEDs() { @@ -1557,6 +1562,13 @@ void RGBController::DeviceCallThreadFunction() } } +void RGBController::DeviceSaveMode() +{ + /*-------------------------------------------------*\ + | If not implemented by controller, does nothing | + \*-------------------------------------------------*/ +} + std::string device_type_to_str(device_type type) { switch(type) diff --git a/RGBController/RGBController.h b/RGBController/RGBController.h index bb6fbc2f..28e4af03 100644 --- a/RGBController/RGBController.h +++ b/RGBController/RGBController.h @@ -37,6 +37,8 @@ enum MODE_FLAG_HAS_PER_LED_COLOR = (1 << 5), /* Mode has per-LED colors */ MODE_FLAG_HAS_MODE_SPECIFIC_COLOR = (1 << 6), /* Mode has mode specific colors */ MODE_FLAG_HAS_RANDOM_COLOR = (1 << 7), /* Mode has random color option */ + MODE_FLAG_MANUAL_SAVE = (1 << 8), /* Mode can manually be saved */ + MODE_FLAG_AUTOMATIC_SAVE = (1 << 9), /* Mode automatically saves */ }; /*------------------------------------------------------------------*\ @@ -194,6 +196,7 @@ public: //virtual void UpdateSingleLED(int led) = 0; virtual void UpdateMode() = 0; + virtual void SaveMode() = 0; virtual void DeviceCallThreadFunction() = 0; @@ -209,6 +212,7 @@ public: virtual void UpdateSingleLED(int led) = 0; virtual void DeviceUpdateMode() = 0; + virtual void DeviceSaveMode() = 0; virtual void SetCustomMode() = 0; }; @@ -273,6 +277,7 @@ public: //void UpdateSingleLED(int led); void UpdateMode(); + void SaveMode(); void DeviceCallThreadFunction(); @@ -288,6 +293,7 @@ public: virtual void UpdateSingleLED(int led) = 0; virtual void DeviceUpdateMode() = 0; + void DeviceSaveMode(); virtual void SetCustomMode() = 0; diff --git a/qt/OpenRGBDevicePage.cpp b/qt/OpenRGBDevicePage.cpp index 6dec979e..72f7f1e0 100644 --- a/qt/OpenRGBDevicePage.cpp +++ b/qt/OpenRGBDevicePage.cpp @@ -459,6 +459,8 @@ void Ui::OpenRGBDevicePage::UpdateModeUi() bool mode_specific = device->modes[selected_mode].color_mode == MODE_COLORS_MODE_SPECIFIC; bool random = device->modes[selected_mode].color_mode == MODE_COLORS_RANDOM; unsigned int dir = device->modes[selected_mode].direction; + bool manual_save = ( device->modes[selected_mode].flags & MODE_FLAG_MANUAL_SAVE ); + bool automatic_save = ( device->modes[selected_mode].flags & MODE_FLAG_AUTOMATIC_SAVE ); if(supports_speed) { @@ -633,6 +635,22 @@ void Ui::OpenRGBDevicePage::UpdateModeUi() ui->RandomCheck->setAutoExclusive(true); } + if(automatic_save) + { + ui->DeviceSaveButton->setText("Saved To Device"); + ui->DeviceSaveButton->setEnabled(false); + } + else if(manual_save) + { + ui->DeviceSaveButton->setText("Save To Device"); + ui->DeviceSaveButton->setEnabled(true); + } + else + { + ui->DeviceSaveButton->setText("Saving Not Supported"); + ui->DeviceSaveButton->setEnabled(false); + } + /*-----------------------------------------------------*\ | Fill in the zone box based on color mode | \*-----------------------------------------------------*/ @@ -1311,3 +1329,11 @@ void Ui::OpenRGBDevicePage::on_SelectAllLEDsButton_clicked() ui->DeviceViewBox->repaint(); } } + +void Ui::OpenRGBDevicePage::on_DeviceSaveButton_clicked() +{ + if(device->modes[device->active_mode].flags & MODE_FLAG_MANUAL_SAVE) + { + device->SaveMode(); + } +} diff --git a/qt/OpenRGBDevicePage.h b/qt/OpenRGBDevicePage.h index fe54b6d7..5e31041a 100644 --- a/qt/OpenRGBDevicePage.h +++ b/qt/OpenRGBDevicePage.h @@ -57,6 +57,8 @@ private slots: void on_SelectAllLEDsButton_clicked(); + void on_DeviceSaveButton_clicked(); + private: Ui::OpenRGBDevicePageUi *ui; RGBController *device; diff --git a/qt/OpenRGBDevicePage.ui b/qt/OpenRGBDevicePage.ui index ac0e42d6..f3a1d506 100644 --- a/qt/OpenRGBDevicePage.ui +++ b/qt/OpenRGBDevicePage.ui @@ -254,6 +254,13 @@ + + + + Save To Device + + +