|
|
|
@ -173,8 +173,8 @@ void GameList::OnItemExpanded(const QModelIndex& item) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
auto* game_dir = item.data(GameListDir::GameDirRole).value<UISettings::GameDir*>(); |
|
|
|
game_dir->expanded = tree_view->isExpanded(item); |
|
|
|
UISettings::values.game_dirs[item.data(GameListDir::GameDirRole).toInt()].expanded = |
|
|
|
tree_view->isExpanded(item); |
|
|
|
} |
|
|
|
|
|
|
|
// Event in order to filter the gamelist after editing the searchfield
|
|
|
|
@ -262,9 +262,9 @@ void GameList::OnUpdateThemedIcons() { |
|
|
|
Qt::DecorationRole); |
|
|
|
break; |
|
|
|
case GameListItemType::CustomDir: { |
|
|
|
const UISettings::GameDir* game_dir = |
|
|
|
child->data(GameListDir::GameDirRole).value<UISettings::GameDir*>(); |
|
|
|
const QString icon_name = QFileInfo::exists(game_dir->path) |
|
|
|
const UISettings::GameDir& game_dir = |
|
|
|
UISettings::values.game_dirs[child->data(GameListDir::GameDirRole).toInt()]; |
|
|
|
const QString icon_name = QFileInfo::exists(game_dir.path) |
|
|
|
? QStringLiteral("folder") |
|
|
|
: QStringLiteral("bad_folder"); |
|
|
|
child->setData( |
|
|
|
@ -366,7 +366,7 @@ void GameList::AddDirEntry(GameListDir* entry_items) { |
|
|
|
item_model->invisibleRootItem()->appendRow(entry_items); |
|
|
|
tree_view->setExpanded( |
|
|
|
entry_items->index(), |
|
|
|
entry_items->data(GameListDir::GameDirRole).value<UISettings::GameDir*>()->expanded); |
|
|
|
UISettings::values.game_dirs[entry_items->data(GameListDir::GameDirRole).toInt()].expanded); |
|
|
|
} |
|
|
|
|
|
|
|
void GameList::AddEntry(const QList<QStandardItem*>& entry_items, GameListDir* parent) { |
|
|
|
@ -549,7 +549,7 @@ void GameList::AddGamePopup(QMenu& context_menu, u64 program_id, const std::stri |
|
|
|
|
|
|
|
void GameList::AddCustomDirPopup(QMenu& context_menu, QModelIndex selected) { |
|
|
|
UISettings::GameDir& game_dir = |
|
|
|
*selected.data(GameListDir::GameDirRole).value<UISettings::GameDir*>(); |
|
|
|
UISettings::values.game_dirs[selected.data(GameListDir::GameDirRole).toInt()]; |
|
|
|
|
|
|
|
QAction* deep_scan = context_menu.addAction(tr("Scan Subfolders")); |
|
|
|
QAction* delete_dir = context_menu.addAction(tr("Remove Game Directory")); |
|
|
|
@ -568,8 +568,7 @@ void GameList::AddCustomDirPopup(QMenu& context_menu, QModelIndex selected) { |
|
|
|
} |
|
|
|
|
|
|
|
void GameList::AddPermDirPopup(QMenu& context_menu, QModelIndex selected) { |
|
|
|
UISettings::GameDir& game_dir = |
|
|
|
*selected.data(GameListDir::GameDirRole).value<UISettings::GameDir*>(); |
|
|
|
const int game_dir_index = selected.data(GameListDir::GameDirRole).toInt(); |
|
|
|
|
|
|
|
QAction* move_up = context_menu.addAction(tr("\u25B2 Move Up")); |
|
|
|
QAction* move_down = context_menu.addAction(tr("\u25bc Move Down")); |
|
|
|
@ -580,34 +579,39 @@ void GameList::AddPermDirPopup(QMenu& context_menu, QModelIndex selected) { |
|
|
|
move_up->setEnabled(row > 0); |
|
|
|
move_down->setEnabled(row < item_model->rowCount() - 2); |
|
|
|
|
|
|
|
connect(move_up, &QAction::triggered, [this, selected, row, &game_dir] { |
|
|
|
// find the indices of the items in settings and swap them
|
|
|
|
std::swap(UISettings::values.game_dirs[UISettings::values.game_dirs.indexOf(game_dir)], |
|
|
|
UISettings::values.game_dirs[UISettings::values.game_dirs.indexOf( |
|
|
|
*selected.sibling(row - 1, 0) |
|
|
|
.data(GameListDir::GameDirRole) |
|
|
|
.value<UISettings::GameDir*>())]); |
|
|
|
connect(move_up, &QAction::triggered, [this, selected, row, game_dir_index] { |
|
|
|
const int other_index = selected.sibling(row - 1, 0).data(GameListDir::GameDirRole).toInt(); |
|
|
|
// swap the items in the settings
|
|
|
|
std::swap(UISettings::values.game_dirs[game_dir_index], |
|
|
|
UISettings::values.game_dirs[other_index]); |
|
|
|
// swap the indexes held by the QVariants
|
|
|
|
item_model->setData(selected, QVariant(other_index), GameListDir::GameDirRole); |
|
|
|
item_model->setData(selected.sibling(row - 1, 0), QVariant(game_dir_index), |
|
|
|
GameListDir::GameDirRole); |
|
|
|
// move the treeview items
|
|
|
|
QList<QStandardItem*> item = item_model->takeRow(row); |
|
|
|
item_model->invisibleRootItem()->insertRow(row - 1, item); |
|
|
|
tree_view->setExpanded(selected, game_dir.expanded); |
|
|
|
tree_view->setExpanded(selected, UISettings::values.game_dirs[game_dir_index].expanded); |
|
|
|
}); |
|
|
|
|
|
|
|
connect(move_down, &QAction::triggered, [this, selected, row, &game_dir] { |
|
|
|
// find the indices of the items in settings and swap them
|
|
|
|
std::swap(UISettings::values.game_dirs[UISettings::values.game_dirs.indexOf(game_dir)], |
|
|
|
UISettings::values.game_dirs[UISettings::values.game_dirs.indexOf( |
|
|
|
*selected.sibling(row + 1, 0) |
|
|
|
.data(GameListDir::GameDirRole) |
|
|
|
.value<UISettings::GameDir*>())]); |
|
|
|
connect(move_down, &QAction::triggered, [this, selected, row, game_dir_index] { |
|
|
|
const int other_index = selected.sibling(row + 1, 0).data(GameListDir::GameDirRole).toInt(); |
|
|
|
// swap the items in the settings
|
|
|
|
std::swap(UISettings::values.game_dirs[game_dir_index], |
|
|
|
UISettings::values.game_dirs[other_index]); |
|
|
|
// swap the indexes held by the QVariants
|
|
|
|
item_model->setData(selected, QVariant(other_index), GameListDir::GameDirRole); |
|
|
|
item_model->setData(selected.sibling(row + 1, 0), QVariant(game_dir_index), |
|
|
|
GameListDir::GameDirRole); |
|
|
|
// move the treeview items
|
|
|
|
const QList<QStandardItem*> item = item_model->takeRow(row); |
|
|
|
item_model->invisibleRootItem()->insertRow(row + 1, item); |
|
|
|
tree_view->setExpanded(selected, game_dir.expanded); |
|
|
|
tree_view->setExpanded(selected, UISettings::values.game_dirs[game_dir_index].expanded); |
|
|
|
}); |
|
|
|
|
|
|
|
connect(open_directory_location, &QAction::triggered, |
|
|
|
[this, game_dir] { emit OpenDirectory(game_dir.path); }); |
|
|
|
connect(open_directory_location, &QAction::triggered, [this, game_dir_index] { |
|
|
|
emit OpenDirectory(UISettings::values.game_dirs[game_dir_index].path); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
void GameList::LoadCompatibilityList() { |
|
|
|
|