Qt: use seperate icon sizes for game list and game grid

This commit is contained in:
Megamouse 2018-03-22 13:54:07 +01:00 committed by Ani
parent e6cb4df877
commit 05fc49506a
4 changed files with 29 additions and 15 deletions

View file

@ -27,7 +27,6 @@ game_list_frame::game_list_frame(std::shared_ptr<gui_settings> guiSettings, std:
: custom_dock_widget(tr("Game List"), parent), xgui_settings(guiSettings), xemu_settings(emuSettings) : custom_dock_widget(tr("Game List"), parent), xgui_settings(guiSettings), xemu_settings(emuSettings)
{ {
m_isListLayout = xgui_settings->GetValue(gui::gl_listMode).toBool(); m_isListLayout = xgui_settings->GetValue(gui::gl_listMode).toBool();
m_icon_size_index = xgui_settings->GetValue(gui::gl_iconSize).toInt();
m_Margin_Factor = xgui_settings->GetValue(gui::gl_marginFactor).toReal(); m_Margin_Factor = xgui_settings->GetValue(gui::gl_marginFactor).toReal();
m_Text_Factor = xgui_settings->GetValue(gui::gl_textFactor).toReal(); m_Text_Factor = xgui_settings->GetValue(gui::gl_textFactor).toReal();
m_Icon_Color = xgui_settings->GetValue(gui::gl_iconColor).value<QColor>(); m_Icon_Color = xgui_settings->GetValue(gui::gl_iconColor).value<QColor>();
@ -46,9 +45,7 @@ game_list_frame::game_list_frame(std::shared_ptr<gui_settings> guiSettings, std:
m_Game_Dock->setWindowFlags(Qt::Widget); m_Game_Dock->setWindowFlags(Qt::Widget);
setWidget(m_Game_Dock); setWidget(m_Game_Dock);
bool showText = m_icon_size_index < gui::gl_max_slider_pos; m_xgrid = new game_list_grid(QSize(), m_Icon_Color, m_Margin_Factor, m_Text_Factor, false);
m_Icon_Size = sizeFromSlider(m_icon_size_index);
m_xgrid = new game_list_grid(m_Icon_Size, m_Icon_Color, m_Margin_Factor, m_Text_Factor, showText);
m_gameList = new game_list(); m_gameList = new game_list();
m_gameList->setShowGrid(false); m_gameList->setShowGrid(false);

View file

@ -127,6 +127,7 @@ namespace gui
const gui_save gl_sortCol = gui_save(game_list, "sortCol", 1); const gui_save gl_sortCol = gui_save(game_list, "sortCol", 1);
const gui_save gl_state = gui_save(game_list, "state", QByteArray()); const gui_save gl_state = gui_save(game_list, "state", QByteArray());
const gui_save gl_iconSize = gui_save(game_list, "iconSize", get_Index(gl_icon_size_small)); const gui_save gl_iconSize = gui_save(game_list, "iconSize", get_Index(gl_icon_size_small));
const gui_save gl_iconSizeGrid = gui_save(game_list, "iconSizeGrid", get_Index(gl_icon_size_small));
const gui_save gl_iconColor = gui_save(game_list, "iconColor", gl_icon_color); const gui_save gl_iconColor = gui_save(game_list, "iconColor", gl_icon_color);
const gui_save gl_listMode = gui_save(game_list, "listMode", true); const gui_save gl_listMode = gui_save(game_list, "listMode", true);
const gui_save gl_textFactor = gui_save(game_list, "textFactor", (qreal) 2.0); const gui_save gl_textFactor = gui_save(game_list, "textFactor", (qreal) 2.0);

View file

@ -84,7 +84,6 @@ void main_window::Init()
// add toolbar widgets (crappy Qt designer is not able to) // add toolbar widgets (crappy Qt designer is not able to)
ui->toolBar->setObjectName("mw_toolbar"); ui->toolBar->setObjectName("mw_toolbar");
ui->sizeSlider->setRange(0, gui::gl_max_slider_pos); ui->sizeSlider->setRange(0, gui::gl_max_slider_pos);
ui->sizeSlider->setSliderPosition(guiSettings->GetValue(gui::gl_iconSize).toInt());
ui->toolBar->addWidget(ui->sizeSliderContainer); ui->toolBar->addWidget(ui->sizeSliderContainer);
ui->toolBar->addSeparator(); ui->toolBar->addSeparator();
ui->toolBar->addWidget(ui->mw_searchbar); ui->toolBar->addWidget(ui->mw_searchbar);
@ -1238,7 +1237,7 @@ void main_window::CreateConnects()
if (m_save_slider_pos) if (m_save_slider_pos)
{ {
m_save_slider_pos = false; m_save_slider_pos = false;
guiSettings->SetValue(gui::gl_iconSize, index); guiSettings->SetValue(m_is_list_mode ? gui::gl_iconSize : gui::gl_iconSizeGrid, index);
} }
m_gameListFrame->ResizeIcons(index); m_gameListFrame->ResizeIcons(index);
}; };
@ -1270,9 +1269,17 @@ void main_window::CreateConnects()
connect(m_listModeActGroup, &QActionGroup::triggered, [=](QAction* act) connect(m_listModeActGroup, &QActionGroup::triggered, [=](QAction* act)
{ {
bool isList = act == ui->setlistModeListAct; bool is_list_act = act == ui->setlistModeListAct;
m_gameListFrame->SetListMode(isList); if (is_list_act == m_is_list_mode)
m_categoryVisibleActGroup->setEnabled(isList); return;
int slider_pos = ui->sizeSlider->sliderPosition();
ui->sizeSlider->setSliderPosition(m_other_slider_pos);
m_other_slider_pos = slider_pos;
m_is_list_mode = is_list_act;
m_gameListFrame->SetListMode(m_is_list_mode);
m_categoryVisibleActGroup->setEnabled(m_is_list_mode);
}); });
connect(ui->toolbar_disc, &QAction::triggered, this, &main_window::BootGame); connect(ui->toolbar_disc, &QAction::triggered, this, &main_window::BootGame);
@ -1300,7 +1307,10 @@ void main_window::CreateConnects()
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, resizeIcons);
connect(ui->sizeSlider, &QSlider::sliderReleased, this, [&] { guiSettings->SetValue(gui::gl_iconSize, ui->sizeSlider->value()); }); connect(ui->sizeSlider, &QSlider::sliderReleased, this, [&]
{
guiSettings->SetValue(m_is_list_mode ? gui::gl_iconSize : gui::gl_iconSizeGrid, ui->sizeSlider->value());
});
connect(ui->sizeSlider, &QSlider::actionTriggered, [&](int action) connect(ui->sizeSlider, &QSlider::actionTriggered, [&](int action)
{ {
if (action != QAbstractSlider::SliderNoAction && action != QAbstractSlider::SliderMove) if (action != QAbstractSlider::SliderNoAction && action != QAbstractSlider::SliderMove)
@ -1433,14 +1443,18 @@ void main_window::ConfigureGuiFromSettings(bool configure_all)
ui->showCatUnknownAct->setChecked(guiSettings->GetCategoryVisibility(Category::Unknown_Cat)); ui->showCatUnknownAct->setChecked(guiSettings->GetCategoryVisibility(Category::Unknown_Cat));
ui->showCatOtherAct->setChecked(guiSettings->GetCategoryVisibility(Category::Others)); ui->showCatOtherAct->setChecked(guiSettings->GetCategoryVisibility(Category::Others));
SetIconSizeActions(guiSettings->GetValue(gui::gl_iconSize).toInt()); // handle icon size options
m_is_list_mode = guiSettings->GetValue(gui::gl_listMode).toBool();
bool isListMode = guiSettings->GetValue(gui::gl_listMode).toBool(); if (m_is_list_mode)
if (isListMode)
ui->setlistModeListAct->setChecked(true); ui->setlistModeListAct->setChecked(true);
else else
ui->setlistModeGridAct->setChecked(true); ui->setlistModeGridAct->setChecked(true);
m_categoryVisibleActGroup->setEnabled(isListMode); m_categoryVisibleActGroup->setEnabled(m_is_list_mode);
int icon_size_index = guiSettings->GetValue(m_is_list_mode ? gui::gl_iconSize : gui::gl_iconSizeGrid).toInt();
m_other_slider_pos = guiSettings->GetValue(!m_is_list_mode ? gui::gl_iconSize : gui::gl_iconSizeGrid).toInt();
ui->sizeSlider->setSliderPosition(icon_size_index);
SetIconSizeActions(icon_size_index);
if (configure_all) if (configure_all)
{ {

View file

@ -30,7 +30,9 @@ class main_window : public QMainWindow
Ui::main_window *ui; Ui::main_window *ui;
bool m_sys_menu_opened; bool m_sys_menu_opened;
bool m_is_list_mode = false;
bool m_save_slider_pos = false; bool m_save_slider_pos = false;
int m_other_slider_pos;
QIcon m_appIcon; QIcon m_appIcon;
QIcon m_icon_play; QIcon m_icon_play;