Add slider snapping

This commit is contained in:
MSuih 2020-01-15 18:55:13 +02:00 committed by Megamouse
parent 22ca2827de
commit 807d6cfea4
2 changed files with 29 additions and 0 deletions

View file

@ -468,6 +468,7 @@ settings_dialog::settings_dialog(std::shared_ptr<gui_settings> guiSettings, std:
{ {
ui->resolutionScale->setValue(resolutionScaleDef); ui->resolutionScale->setValue(resolutionScaleDef);
}); });
SnapSlider(ui->resolutionScale, 25);
xemu_settings->EnhanceSlider(ui->minimumScalableDimension, emu_settings::MinimumScalableDimension); xemu_settings->EnhanceSlider(ui->minimumScalableDimension, emu_settings::MinimumScalableDimension);
SubscribeTooltip(ui->gb_minimumScalableDimension, json_gpu_slid["minimumScalableDimension"].toString()); SubscribeTooltip(ui->gb_minimumScalableDimension, json_gpu_slid["minimumScalableDimension"].toString());
@ -953,6 +954,7 @@ settings_dialog::settings_dialog(std::shared_ptr<gui_settings> guiSettings, std:
}); });
EnhanceSlider(emu_settings::VBlankRate, ui->vblank, ui->vblankText, tr("%0 Hz")); EnhanceSlider(emu_settings::VBlankRate, ui->vblank, ui->vblankText, tr("%0 Hz"));
SnapSlider(ui->vblank, 30);
int vblankDef = stoi(xemu_settings->GetSettingDefault(emu_settings::VBlankRate)); int vblankDef = stoi(xemu_settings->GetSettingDefault(emu_settings::VBlankRate));
connect(ui->vblankReset, &QAbstractButton::clicked, [=]() connect(ui->vblankReset, &QAbstractButton::clicked, [=]()
{ {
@ -960,6 +962,7 @@ settings_dialog::settings_dialog(std::shared_ptr<gui_settings> guiSettings, std:
}); });
EnhanceSlider(emu_settings::ClocksScale, ui->clockScale, ui->clockScaleText, tr("%0 %")); EnhanceSlider(emu_settings::ClocksScale, ui->clockScale, ui->clockScaleText, tr("%0 %"));
SnapSlider(ui->clockScale, 10);
int clocksScaleDef = stoi(xemu_settings->GetSettingDefault(emu_settings::ResolutionScale)); int clocksScaleDef = stoi(xemu_settings->GetSettingDefault(emu_settings::ResolutionScale));
connect(ui->clockScaleReset, &QAbstractButton::clicked, [=]() connect(ui->clockScaleReset, &QAbstractButton::clicked, [=]()
{ {
@ -1629,6 +1632,28 @@ void settings_dialog::EnhanceSlider(emu_settings::SettingsType settings_type, QS
} }
} }
void settings_dialog::SnapSlider(QSlider *slider, int interval)
{
connect(slider, &QSlider::sliderPressed, [this, slider]()
{
m_currentSlider = slider;
});
connect(slider, &QSlider::sliderReleased, [this]()
{
m_currentSlider = nullptr;
});
connect(slider, &QSlider::valueChanged, [this, slider, interval](int value)
{
if (slider != m_currentSlider)
{
return;
}
slider->setValue(::rounded_div(value, interval) * interval);
});
}
void settings_dialog::AddConfigs() void settings_dialog::AddConfigs()
{ {
ui->combo_configs->clear(); ui->combo_configs->clear();

View file

@ -36,6 +36,10 @@ private Q_SLOTS:
private: private:
void EnhanceSlider(emu_settings::SettingsType settings_type, QSlider* slider, QLabel* label, const QString& label_text); void EnhanceSlider(emu_settings::SettingsType settings_type, QSlider* slider, QLabel* label, const QString& label_text);
// Snapping of sliders when moved with mouse
void SnapSlider(QSlider* slider, int interval);
QSlider* m_currentSlider = nullptr;
// Emulator tab // Emulator tab
void AddConfigs(); void AddConfigs();
void AddStylesheets(); void AddStylesheets();