mirror of
https://github.com/stenzek/duckstation.git
synced 2026-02-13 01:44:33 +00:00
Added "View > Sort By" menu
- Allows sorting by any column even when hidden - Allows sorting in grid view
This commit is contained in:
committed by
Connor McLaughlin
parent
456d341ec2
commit
1f07bfc9c7
@@ -539,6 +539,7 @@ void MainWindow::updateGameListRelatedActions(bool running)
|
||||
bool has_background = Host::GetBaseStringSettingValue("UI", "GameListBackgroundPath") != "";
|
||||
bool starting_or_running = (s_system_starting || running);
|
||||
|
||||
m_ui.menuSortBy->setDisabled(starting_or_running);
|
||||
m_ui.actionMergeDiscSets->setDisabled(starting_or_running);
|
||||
m_ui.actionShowLocalizedTitles->setDisabled(starting_or_running);
|
||||
m_ui.actionShowGameIcons->setDisabled(starting_or_running || !game_list);
|
||||
@@ -1837,6 +1838,67 @@ void MainWindow::setupAdditionalUi()
|
||||
m_settings_toolbar_menu->addAction(m_ui.actionSettings);
|
||||
m_settings_toolbar_menu->addAction(m_ui.actionViewGameProperties);
|
||||
|
||||
// View > Sort By
|
||||
{
|
||||
const GameListModel::Column DEFAULT_SORT_COLUMN = GameListModel::Column_Icon;
|
||||
const bool DEFAULT_SORT_DESCENDING = false;
|
||||
|
||||
const GameListModel::Column sort_column =
|
||||
GameListModel::getColumnIdForName(Host::GetBaseStringSettingValue("GameListTableView", "SortColumn"))
|
||||
.value_or(DEFAULT_SORT_COLUMN);
|
||||
|
||||
const bool sort_descending =
|
||||
Host::GetBaseBoolSettingValue("GameListTableView", "SortDescending", DEFAULT_SORT_DESCENDING);
|
||||
const Qt::SortOrder sort_order = sort_descending ? Qt::DescendingOrder : Qt::AscendingOrder;
|
||||
|
||||
QAction* action;
|
||||
GameListModel* model = m_game_list_widget->getModel();
|
||||
GameListListView* list_view = m_game_list_widget->getListView();
|
||||
|
||||
QActionGroup* column_group = new QActionGroup(this);
|
||||
QActionGroup* order_group = new QActionGroup(this);
|
||||
|
||||
for (int i = 0; i < model->Column_Count - 1; i++)
|
||||
{
|
||||
const QString& column_name = model->getColumnDisplayName(i);
|
||||
|
||||
action = new QAction(column_name);
|
||||
action->setCheckable(true);
|
||||
action->setChecked(sort_column == i);
|
||||
column_group->addAction(action);
|
||||
m_ui.menuSortBy->addAction(action);
|
||||
|
||||
connect(action, &QAction::triggered, [list_view, i] {
|
||||
const Qt::SortOrder order = list_view->horizontalHeader()->sortIndicatorOrder();
|
||||
list_view->horizontalHeader()->setSortIndicator(i, order);
|
||||
});
|
||||
}
|
||||
|
||||
m_ui.menuSortBy->addSeparator();
|
||||
|
||||
action = new QAction(tr("&Ascending"));
|
||||
action->setIcon(QIcon::fromTheme(QStringLiteral("go-up")));
|
||||
action->setCheckable(true);
|
||||
action->setChecked(sort_order == Qt::AscendingOrder);
|
||||
order_group->addAction(action);
|
||||
m_ui.menuSortBy->addAction(action);
|
||||
connect(action, &QAction::triggered, [list_view] {
|
||||
const int section = list_view->horizontalHeader()->sortIndicatorSection();
|
||||
list_view->horizontalHeader()->setSortIndicator(section, Qt::AscendingOrder);
|
||||
});
|
||||
|
||||
action = new QAction(tr("&Descending"));
|
||||
action->setIcon(QIcon::fromTheme(QStringLiteral("go-down")));
|
||||
action->setCheckable(true);
|
||||
action->setChecked(sort_order == Qt::DescendingOrder);
|
||||
order_group->addAction(action);
|
||||
m_ui.menuSortBy->addAction(action);
|
||||
connect(action, &QAction::triggered, [list_view] {
|
||||
const int section = list_view->horizontalHeader()->sortIndicatorSection();
|
||||
list_view->horizontalHeader()->setSortIndicator(section, Qt::DescendingOrder);
|
||||
});
|
||||
}
|
||||
|
||||
for (u32 scale = 1; scale <= 10; scale++)
|
||||
{
|
||||
QAction* action = m_ui.menuWindowSize->addAction(tr("%1x Scale").arg(scale));
|
||||
|
||||
@@ -212,6 +212,11 @@
|
||||
<string>&Window Size</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QMenu" name="menuSortBy">
|
||||
<property name="title">
|
||||
<string>S&ort By</string>
|
||||
</property>
|
||||
</widget>
|
||||
<addaction name="actionViewToolbar"/>
|
||||
<addaction name="actionViewLockToolbar"/>
|
||||
<addaction name="actionViewSmallToolbarIcons"/>
|
||||
@@ -226,6 +231,8 @@
|
||||
<addaction name="actionFullscreen"/>
|
||||
<addaction name="menuWindowSize"/>
|
||||
<addaction name="separator"/>
|
||||
<addaction name="menuSortBy"/>
|
||||
<addaction name="separator"/>
|
||||
<addaction name="actionMergeDiscSets"/>
|
||||
<addaction name="actionShowLocalizedTitles"/>
|
||||
<addaction name="actionShowGameIcons"/>
|
||||
|
||||
Reference in New Issue
Block a user