Qt: minor icon size action fix

This commit is contained in:
Megamouse 2018-06-15 12:48:17 +02:00 committed by Ivan
parent 81e5f3b7f2
commit cad017a64f
2 changed files with 39 additions and 24 deletions

View File

@ -241,6 +241,26 @@ void main_window::SetAppIconFromPath(const std::string& path)
m_appIcon = QApplication::windowIcon(); m_appIcon = QApplication::windowIcon();
} }
void main_window::ResizeIcons(int index)
{
if (ui->sizeSlider->value() != index)
{
ui->sizeSlider->setSliderPosition(index);
return; // ResizeIcons will be triggered again by setSliderPosition, so return here
}
if (m_save_slider_pos)
{
m_save_slider_pos = false;
guiSettings->SetValue(m_is_list_mode ? gui::gl_iconSize : gui::gl_iconSizeGrid, index);
// this will also fire when we used the actions, but i didn't want to add another boolean member
SetIconSizeActions(index);
}
m_gameListFrame->ResizeIcons(index);
}
void main_window::OnPlayOrPause() void main_window::OnPlayOrPause()
{ {
if (Emu.IsReady()) if (Emu.IsReady())
@ -1304,43 +1324,31 @@ void main_window::CreateConnects()
connect(ui->aboutQtAct, &QAction::triggered, qApp, &QApplication::aboutQt); connect(ui->aboutQtAct, &QAction::triggered, qApp, &QApplication::aboutQt);
auto resizeIcons = [=](const int& index)
{
if (ui->sizeSlider->value() != index)
{
ui->sizeSlider->setSliderPosition(index);
}
if (m_save_slider_pos)
{
m_save_slider_pos = false;
guiSettings->SetValue(m_is_list_mode ? gui::gl_iconSize : gui::gl_iconSizeGrid, index);
}
m_gameListFrame->ResizeIcons(index);
};
connect(m_iconSizeActGroup, &QActionGroup::triggered, [=](QAction* act) connect(m_iconSizeActGroup, &QActionGroup::triggered, [=](QAction* act)
{ {
static const int index_small = gui::get_Index(gui::gl_icon_size_small);
static const int index_medium = gui::get_Index(gui::gl_icon_size_medium);
int index; int index;
if (act == ui->setIconSizeTinyAct) if (act == ui->setIconSizeTinyAct)
index = 0; index = 0;
else if (act == ui->setIconSizeSmallAct) else if (act == ui->setIconSizeSmallAct)
index = gui::get_Index(gui::gl_icon_size_small); index = index_small;
else if (act == ui->setIconSizeMediumAct) else if (act == ui->setIconSizeMediumAct)
index = gui::get_Index(gui::gl_icon_size_medium); index = index_medium;
else else
index = gui::gl_max_slider_pos; index = gui::gl_max_slider_pos;
m_save_slider_pos = true; m_save_slider_pos = true;
resizeIcons(index); ResizeIcons(index);
}); });
connect (m_gameListFrame, &game_list_frame::RequestIconSizeChange, [=](const int& val) connect (m_gameListFrame, &game_list_frame::RequestIconSizeChange, [=](const int& val)
{ {
const int idx = ui->sizeSlider->value() + val; const int idx = ui->sizeSlider->value() + val;
m_save_slider_pos = true; m_save_slider_pos = true;
SetIconSizeActions(idx); ResizeIcons(idx);
resizeIcons(idx);
}); });
connect(m_listModeActGroup, &QActionGroup::triggered, [=](QAction* act) connect(m_listModeActGroup, &QActionGroup::triggered, [=](QAction* act)
@ -1382,10 +1390,12 @@ void main_window::CreateConnects()
connect(ui->toolbar_list, &QAction::triggered, [=]() { ui->setlistModeListAct->trigger(); }); connect(ui->toolbar_list, &QAction::triggered, [=]() { ui->setlistModeListAct->trigger(); });
connect(ui->toolbar_grid, &QAction::triggered, [=]() { ui->setlistModeGridAct->trigger(); }); connect(ui->toolbar_grid, &QAction::triggered, [=]() { ui->setlistModeGridAct->trigger(); });
connect(ui->sizeSlider, &QSlider::valueChanged, resizeIcons); connect(ui->sizeSlider, &QSlider::valueChanged, this, &main_window::ResizeIcons);
connect(ui->sizeSlider, &QSlider::sliderReleased, this, [&] connect(ui->sizeSlider, &QSlider::sliderReleased, this, [&]
{ {
guiSettings->SetValue(m_is_list_mode ? gui::gl_iconSize : gui::gl_iconSizeGrid, ui->sizeSlider->value()); const int index = ui->sizeSlider->value();
guiSettings->SetValue(m_is_list_mode ? gui::gl_iconSize : gui::gl_iconSizeGrid, index);
SetIconSizeActions(index);
}); });
connect(ui->sizeSlider, &QSlider::actionTriggered, [&](int action) connect(ui->sizeSlider, &QSlider::actionTriggered, [&](int action)
{ {
@ -1540,11 +1550,15 @@ void main_window::ConfigureGuiFromSettings(bool configure_all)
void main_window::SetIconSizeActions(int idx) void main_window::SetIconSizeActions(int idx)
{ {
if (idx < gui::get_Index((gui::gl_icon_size_small + gui::gl_icon_size_min) / 2)) static const int threshold_tiny = gui::get_Index((gui::gl_icon_size_small + gui::gl_icon_size_min) / 2);
static const int threshold_small = gui::get_Index((gui::gl_icon_size_medium + gui::gl_icon_size_small) / 2);
static const int threshold_medium = gui::get_Index((gui::gl_icon_size_max + gui::gl_icon_size_medium) / 2);
if (idx < threshold_tiny)
ui->setIconSizeTinyAct->setChecked(true); ui->setIconSizeTinyAct->setChecked(true);
else if (idx < gui::get_Index((gui::gl_icon_size_medium + gui::gl_icon_size_small) / 2)) else if (idx < threshold_small)
ui->setIconSizeSmallAct->setChecked(true); ui->setIconSizeSmallAct->setChecked(true);
else if (idx < gui::get_Index((gui::gl_icon_size_max + gui::gl_icon_size_medium) / 2)) else if (idx < threshold_medium)
ui->setIconSizeMediumAct->setChecked(true); ui->setIconSizeMediumAct->setChecked(true);
else else
ui->setIconSizeLargeAct->setChecked(true); ui->setIconSizeLargeAct->setChecked(true);

View File

@ -96,6 +96,7 @@ private Q_SLOTS:
void SaveWindowState(); void SaveWindowState();
void ConfigureGuiFromSettings(bool configure_all = false); void ConfigureGuiFromSettings(bool configure_all = false);
void SetIconSizeActions(int idx); void SetIconSizeActions(int idx);
void ResizeIcons(int index);
protected: protected:
void closeEvent(QCloseEvent *event) override; void closeEvent(QCloseEvent *event) override;