Add inverted speed flag to device UI to handle devices where slowest speed is a larger value than fastest speed

This commit is contained in:
Adam Honse
2020-01-17 21:12:47 -06:00
parent d0b4e2078f
commit dcea6502bf
2 changed files with 23 additions and 3 deletions

View File

@@ -180,10 +180,21 @@ void Ui::OpenRGBDevicePage::UpdateModeUi()
if(supports_speed)
{
if(device->modes[selected_mode].speed_min > device->modes[selected_mode].speed_max)
{
InvertedSpeed = true;
ui->SpeedSlider->setMinimum(device->modes[selected_mode].speed_max);
ui->SpeedSlider->setMaximum(device->modes[selected_mode].speed_min);
}
else
{
InvertedSpeed = false;
ui->SpeedSlider->setMinimum(device->modes[selected_mode].speed_min);
ui->SpeedSlider->setMaximum(device->modes[selected_mode].speed_max);
}
ui->SpeedSlider->setValue(device->modes[selected_mode].speed);
ui->SpeedSlider->setEnabled(true);
ui->SpeedSlider->setMinimum(device->modes[selected_mode].speed_min);
ui->SpeedSlider->setMaximum(device->modes[selected_mode].speed_max);
ui->SpeedSlider->setValue( device->modes[selected_mode].speed );
}
else
{
@@ -211,6 +222,14 @@ void Ui::OpenRGBDevicePage::UpdateMode()
int current_speed = ui->SpeedSlider->value();
bool current_random = ui->RandomCheck->checkState();
/*-----------------------------------------------------*\
| If Speed Slider is inverted, invert value |
\*-----------------------------------------------------*/
if(InvertedSpeed)
{
current_speed = device->modes[current_mode].speed_min - current_speed;
}
/*-----------------------------------------------------*\
| Don't set the mode if the current mode is invalid |
\*-----------------------------------------------------*/

View File

@@ -53,6 +53,7 @@ private:
RGBController *device;
bool UpdatingColor = false;
bool InvertedSpeed = false;
void updateRGB();