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)
{
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_Text_Factor = xgui_settings->GetValue(gui::gl_textFactor).toReal();
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);
setWidget(m_Game_Dock);
bool showText = m_icon_size_index < gui::gl_max_slider_pos;
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_xgrid = new game_list_grid(QSize(), m_Icon_Color, m_Margin_Factor, m_Text_Factor, false);
m_gameList = new game_list();
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_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_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_listMode = gui_save(game_list, "listMode", true);
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)
ui->toolBar->setObjectName("mw_toolbar");
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->addSeparator();
ui->toolBar->addWidget(ui->mw_searchbar);
@ -1238,7 +1237,7 @@ void main_window::CreateConnects()
if (m_save_slider_pos)
{
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);
};
@ -1270,9 +1269,17 @@ void main_window::CreateConnects()
connect(m_listModeActGroup, &QActionGroup::triggered, [=](QAction* act)
{
bool isList = act == ui->setlistModeListAct;
m_gameListFrame->SetListMode(isList);
m_categoryVisibleActGroup->setEnabled(isList);
bool is_list_act = act == ui->setlistModeListAct;
if (is_list_act == m_is_list_mode)
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);
@ -1300,7 +1307,10 @@ void main_window::CreateConnects()
connect(ui->toolbar_grid, &QAction::triggered, [=]() { ui->setlistModeGridAct->trigger(); });
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)
{
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->showCatOtherAct->setChecked(guiSettings->GetCategoryVisibility(Category::Others));
SetIconSizeActions(guiSettings->GetValue(gui::gl_iconSize).toInt());
bool isListMode = guiSettings->GetValue(gui::gl_listMode).toBool();
if (isListMode)
// handle icon size options
m_is_list_mode = guiSettings->GetValue(gui::gl_listMode).toBool();
if (m_is_list_mode)
ui->setlistModeListAct->setChecked(true);
else
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)
{

View file

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