mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +00:00 
			
		
		
		
	Port yuzu-emu/yuzu#4700: "game_list: Eliminate redundant argument copies" (#5571)
* game_list: Eliminate redundant argument copies Several functions can be taken by const reference to avoid copies Co-Authored-By: LC <712067+lioncash@users.noreply.github.com> * game_list: Make game list function naming consistent Makes the naming consistent with the rest of the functions that are present. Co-Authored-By: LC <712067+lioncash@users.noreply.github.com> Co-authored-by: Lioncash <mathew1800@gmail.com> Co-authored-by: LC <712067+lioncash@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									c557b290af
								
							
						
					
					
						commit
						702af87f0d
					
				
					 3 changed files with 67 additions and 53 deletions
				
			
		|  | @ -64,7 +64,7 @@ bool GameListSearchField::KeyReleaseEater::eventFilter(QObject* obj, QEvent* eve | ||||||
|         case Qt::Key_Return: |         case Qt::Key_Return: | ||||||
|         case Qt::Key_Enter: { |         case Qt::Key_Enter: { | ||||||
|             if (gamelist->search_field->visible == 1) { |             if (gamelist->search_field->visible == 1) { | ||||||
|                 QString file_path = gamelist->getLastFilterResultItem(); |                 const QString file_path = gamelist->GetLastFilterResultItem(); | ||||||
| 
 | 
 | ||||||
|                 // To avoid loading error dialog loops while confirming them using enter
 |                 // To avoid loading error dialog loops while confirming them using enter
 | ||||||
|                 // Also users usually want to run a different game after closing one
 |                 // Also users usually want to run a different game after closing one
 | ||||||
|  | @ -99,22 +99,25 @@ void GameListSearchField::setFilterResult(int visible, int total) { | ||||||
|         QStringLiteral("%1 %2 %3 %4").arg(visible).arg(result_of_text).arg(total).arg(result_text)); |         QStringLiteral("%1 %2 %3 %4").arg(visible).arg(result_of_text).arg(total).arg(result_text)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| QString GameList::getLastFilterResultItem() const { | QString GameList::GetLastFilterResultItem() const { | ||||||
|     QStandardItem* folder; |  | ||||||
|     QStandardItem* child; |  | ||||||
|     QString file_path; |     QString file_path; | ||||||
|     const int folderCount = item_model->rowCount(); |     const int folderCount = item_model->rowCount(); | ||||||
|  | 
 | ||||||
|     for (int i = 0; i < folderCount; ++i) { |     for (int i = 0; i < folderCount; ++i) { | ||||||
|         folder = item_model->item(i, 0); |         const QStandardItem* folder = item_model->item(i, 0); | ||||||
|         const QModelIndex folder_index = folder->index(); |         const QModelIndex folder_index = folder->index(); | ||||||
|         const int children_count = folder->rowCount(); |         const int children_count = folder->rowCount(); | ||||||
|  | 
 | ||||||
|         for (int j = 0; j < children_count; ++j) { |         for (int j = 0; j < children_count; ++j) { | ||||||
|             if (!tree_view->isRowHidden(j, folder_index)) { |             if (tree_view->isRowHidden(j, folder_index)) { | ||||||
|                 child = folder->child(j, 0); |                 continue; | ||||||
|                 file_path = child->data(GameListItemPath::FullPathRole).toString(); |  | ||||||
|             } |             } | ||||||
|  | 
 | ||||||
|  |             const QStandardItem* child = folder->child(j, 0); | ||||||
|  |             file_path = child->data(GameListItemPath::FullPathRole).toString(); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|     return file_path; |     return file_path; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -139,7 +142,7 @@ GameListSearchField::GameListSearchField(GameList* parent) : QWidget{parent} { | ||||||
|     edit_filter->setPlaceholderText(tr("Enter pattern to filter")); |     edit_filter->setPlaceholderText(tr("Enter pattern to filter")); | ||||||
|     edit_filter->installEventFilter(key_release_eater); |     edit_filter->installEventFilter(key_release_eater); | ||||||
|     edit_filter->setClearButtonEnabled(true); |     edit_filter->setClearButtonEnabled(true); | ||||||
|     connect(edit_filter, &QLineEdit::textChanged, parent, &GameList::onTextChanged); |     connect(edit_filter, &QLineEdit::textChanged, parent, &GameList::OnTextChanged); | ||||||
|     label_filter_result = new QLabel; |     label_filter_result = new QLabel; | ||||||
|     button_filter_close = new QToolButton(this); |     button_filter_close = new QToolButton(this); | ||||||
|     button_filter_close->setText(QStringLiteral("X")); |     button_filter_close->setText(QStringLiteral("X")); | ||||||
|  | @ -149,7 +152,7 @@ GameListSearchField::GameListSearchField(GameList* parent) : QWidget{parent} { | ||||||
|                        "#000000; font-weight: bold; background: #F0F0F0; }" |                        "#000000; font-weight: bold; background: #F0F0F0; }" | ||||||
|                        "QToolButton:hover{ border: none; padding: 0px; color: " |                        "QToolButton:hover{ border: none; padding: 0px; color: " | ||||||
|                        "#EEEEEE; font-weight: bold; background: #E81123}")); |                        "#EEEEEE; font-weight: bold; background: #E81123}")); | ||||||
|     connect(button_filter_close, &QToolButton::clicked, parent, &GameList::onFilterCloseClicked); |     connect(button_filter_close, &QToolButton::clicked, parent, &GameList::OnFilterCloseClicked); | ||||||
|     layout_filter->setSpacing(10); |     layout_filter->setSpacing(10); | ||||||
|     layout_filter->addWidget(label_filter); |     layout_filter->addWidget(label_filter); | ||||||
|     layout_filter->addWidget(edit_filter); |     layout_filter->addWidget(edit_filter); | ||||||
|  | @ -175,16 +178,22 @@ static bool ContainsAllWords(const QString& haystack, const QString& userinput) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Syncs the expanded state of Game Directories with settings to persist across sessions
 | // Syncs the expanded state of Game Directories with settings to persist across sessions
 | ||||||
| void GameList::onItemExpanded(const QModelIndex& item) { | void GameList::OnItemExpanded(const QModelIndex& item) { | ||||||
|     const auto type = item.data(GameListItem::TypeRole).value<GameListItemType>(); |     const auto type = item.data(GameListItem::TypeRole).value<GameListItemType>(); | ||||||
|     if (type == GameListItemType::CustomDir || type == GameListItemType::InstalledDir || |     const bool is_dir = type == GameListItemType::CustomDir || | ||||||
|         type == GameListItemType::SystemDir) |                         type == GameListItemType::InstalledDir || | ||||||
|         UISettings::values.game_dirs[item.data(GameListDir::GameDirRole).toInt()].expanded = |                         type == GameListItemType::SystemDir; | ||||||
|             tree_view->isExpanded(item); | 
 | ||||||
|  |     if (!is_dir) { | ||||||
|  |         return; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     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
 | // Event in order to filter the gamelist after editing the searchfield
 | ||||||
| void GameList::onTextChanged(const QString& new_text) { | void GameList::OnTextChanged(const QString& new_text) { | ||||||
|     const int folder_count = tree_view->model()->rowCount(); |     const int folder_count = tree_view->model()->rowCount(); | ||||||
|     QString edit_filter_text = new_text.toLower(); |     QString edit_filter_text = new_text.toLower(); | ||||||
|     QStandardItem* folder; |     QStandardItem* folder; | ||||||
|  | @ -240,7 +249,7 @@ void GameList::onTextChanged(const QString& new_text) { | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void GameList::onUpdateThemedIcons() { | void GameList::OnUpdateThemedIcons() { | ||||||
|     for (int i = 0; i < item_model->invisibleRootItem()->rowCount(); i++) { |     for (int i = 0; i < item_model->invisibleRootItem()->rowCount(); i++) { | ||||||
|         QStandardItem* child = item_model->invisibleRootItem()->child(i); |         QStandardItem* child = item_model->invisibleRootItem()->child(i); | ||||||
| 
 | 
 | ||||||
|  | @ -270,7 +279,7 @@ void GameList::onUpdateThemedIcons() { | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void GameList::onFilterCloseClicked() { | void GameList::OnFilterCloseClicked() { | ||||||
|     main_window->filterBarSetChecked(false); |     main_window->filterBarSetChecked(false); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -304,11 +313,11 @@ GameList::GameList(GMainWindow* parent) : QWidget{parent} { | ||||||
|     item_model->setHeaderData(COLUMN_SIZE, Qt::Horizontal, tr("Size")); |     item_model->setHeaderData(COLUMN_SIZE, Qt::Horizontal, tr("Size")); | ||||||
|     item_model->setSortRole(GameListItemPath::SortRole); |     item_model->setSortRole(GameListItemPath::SortRole); | ||||||
| 
 | 
 | ||||||
|     connect(main_window, &GMainWindow::UpdateThemedIcons, this, &GameList::onUpdateThemedIcons); |     connect(main_window, &GMainWindow::UpdateThemedIcons, this, &GameList::OnUpdateThemedIcons); | ||||||
|     connect(tree_view, &QTreeView::activated, this, &GameList::ValidateEntry); |     connect(tree_view, &QTreeView::activated, this, &GameList::ValidateEntry); | ||||||
|     connect(tree_view, &QTreeView::customContextMenuRequested, this, &GameList::PopupContextMenu); |     connect(tree_view, &QTreeView::customContextMenuRequested, this, &GameList::PopupContextMenu); | ||||||
|     connect(tree_view, &QTreeView::expanded, this, &GameList::onItemExpanded); |     connect(tree_view, &QTreeView::expanded, this, &GameList::OnItemExpanded); | ||||||
|     connect(tree_view, &QTreeView::collapsed, this, &GameList::onItemExpanded); |     connect(tree_view, &QTreeView::collapsed, this, &GameList::OnItemExpanded); | ||||||
| 
 | 
 | ||||||
|     // We must register all custom types with the Qt Automoc system so that we are able to use
 |     // We must register all custom types with the Qt Automoc system so that we are able to use
 | ||||||
|     // it with signals/slots. In this case, QList falls under the umbrells of custom types.
 |     // it with signals/slots. In this case, QList falls under the umbrells of custom types.
 | ||||||
|  | @ -325,17 +334,17 @@ GameList::~GameList() { | ||||||
|     emit ShouldCancelWorker(); |     emit ShouldCancelWorker(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void GameList::setFilterFocus() { | void GameList::SetFilterFocus() { | ||||||
|     if (tree_view->model()->rowCount() > 0) { |     if (tree_view->model()->rowCount() > 0) { | ||||||
|         search_field->setFocus(); |         search_field->setFocus(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void GameList::setFilterVisible(bool visibility) { | void GameList::SetFilterVisible(bool visibility) { | ||||||
|     search_field->setVisible(visibility); |     search_field->setVisible(visibility); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void GameList::setDirectoryWatcherEnabled(bool enabled) { | void GameList::SetDirectoryWatcherEnabled(bool enabled) { | ||||||
|     if (enabled) { |     if (enabled) { | ||||||
|         connect(watcher, &QFileSystemWatcher::directoryChanged, this, |         connect(watcher, &QFileSystemWatcher::directoryChanged, this, | ||||||
|                 &GameList::RefreshGameDirectory, Qt::UniqueConnection); |                 &GameList::RefreshGameDirectory, Qt::UniqueConnection); | ||||||
|  | @ -345,7 +354,7 @@ void GameList::setDirectoryWatcherEnabled(bool enabled) { | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void GameList::clearFilter() { | void GameList::ClearFilter() { | ||||||
|     search_field->clear(); |     search_field->clear(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -384,21 +393,23 @@ void GameList::ValidateEntry(const QModelIndex& item) { | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool GameList::isEmpty() const { | bool GameList::IsEmpty() const { | ||||||
|     for (int i = 0; i < item_model->rowCount(); i++) { |     for (int i = 0; i < item_model->rowCount(); i++) { | ||||||
|         const QStandardItem* child = item_model->invisibleRootItem()->child(i); |         const QStandardItem* child = item_model->invisibleRootItem()->child(i); | ||||||
|         const auto type = static_cast<GameListItemType>(child->type()); |         const auto type = static_cast<GameListItemType>(child->type()); | ||||||
|  | 
 | ||||||
|         if (!child->hasChildren() && |         if (!child->hasChildren() && | ||||||
|             (type == GameListItemType::InstalledDir || type == GameListItemType::SystemDir)) { |             (type == GameListItemType::InstalledDir || type == GameListItemType::SystemDir)) { | ||||||
|             item_model->invisibleRootItem()->removeRow(child->row()); |             item_model->invisibleRootItem()->removeRow(child->row()); | ||||||
|             i--; |             i--; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|     return !item_model->invisibleRootItem()->hasChildren(); |     return !item_model->invisibleRootItem()->hasChildren(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void GameList::DonePopulating(QStringList watch_list) { | void GameList::DonePopulating(const QStringList& watch_list) { | ||||||
|     emit ShowList(!isEmpty()); |     emit ShowList(!IsEmpty()); | ||||||
| 
 | 
 | ||||||
|     item_model->invisibleRootItem()->appendRow(new GameListAddDir()); |     item_model->invisibleRootItem()->appendRow(new GameListAddDir()); | ||||||
| 
 | 
 | ||||||
|  | @ -689,12 +700,15 @@ void GameList::SaveInterfaceLayout() { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void GameList::LoadInterfaceLayout() { | void GameList::LoadInterfaceLayout() { | ||||||
|     auto header = tree_view->header(); |     auto* header = tree_view->header(); | ||||||
|     if (!header->restoreState(UISettings::values.gamelist_header_state)) { | 
 | ||||||
|         // We are using the name column to display icons and titles
 |     if (header->restoreState(UISettings::values.gamelist_header_state)) { | ||||||
|         // so make it as large as possible as default.
 |         return; | ||||||
|         header->resizeSection(COLUMN_NAME, header->width()); |  | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     // We are using the name column to display icons and titles
 | ||||||
|  |     // so make it as large as possible as default.
 | ||||||
|  |     header->resizeSection(COLUMN_NAME, header->width()); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| const QStringList GameList::supported_file_extensions = { | const QStringList GameList::supported_file_extensions = { | ||||||
|  |  | ||||||
|  | @ -55,12 +55,12 @@ public: | ||||||
|     explicit GameList(GMainWindow* parent = nullptr); |     explicit GameList(GMainWindow* parent = nullptr); | ||||||
|     ~GameList() override; |     ~GameList() override; | ||||||
| 
 | 
 | ||||||
|     QString getLastFilterResultItem() const; |     QString GetLastFilterResultItem() const; | ||||||
|     void clearFilter(); |     void ClearFilter(); | ||||||
|     void setFilterFocus(); |     void SetFilterFocus(); | ||||||
|     void setFilterVisible(bool visibility); |     void SetFilterVisible(bool visibility); | ||||||
|     void setDirectoryWatcherEnabled(bool enabled); |     void SetDirectoryWatcherEnabled(bool enabled); | ||||||
|     bool isEmpty() const; |     bool IsEmpty() const; | ||||||
| 
 | 
 | ||||||
|     void LoadCompatibilityList(); |     void LoadCompatibilityList(); | ||||||
|     void PopulateAsync(QVector<UISettings::GameDir>& game_dirs); |     void PopulateAsync(QVector<UISettings::GameDir>& game_dirs); | ||||||
|  | @ -77,7 +77,7 @@ public: | ||||||
|     static const QStringList supported_file_extensions; |     static const QStringList supported_file_extensions; | ||||||
| 
 | 
 | ||||||
| signals: | signals: | ||||||
|     void GameChosen(QString game_path); |     void GameChosen(const QString& game_path); | ||||||
|     void ShouldCancelWorker(); |     void ShouldCancelWorker(); | ||||||
|     void OpenFolderRequested(u64 program_id, GameListOpenTarget target); |     void OpenFolderRequested(u64 program_id, GameListOpenTarget target); | ||||||
|     void NavigateToGamedbEntryRequested(u64 program_id, |     void NavigateToGamedbEntryRequested(u64 program_id, | ||||||
|  | @ -89,16 +89,16 @@ signals: | ||||||
|     void PopulatingCompleted(); |     void PopulatingCompleted(); | ||||||
| 
 | 
 | ||||||
| private slots: | private slots: | ||||||
|     void onItemExpanded(const QModelIndex& item); |     void OnItemExpanded(const QModelIndex& item); | ||||||
|     void onTextChanged(const QString& new_text); |     void OnTextChanged(const QString& new_text); | ||||||
|     void onFilterCloseClicked(); |     void OnFilterCloseClicked(); | ||||||
|     void onUpdateThemedIcons(); |     void OnUpdateThemedIcons(); | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     void AddDirEntry(GameListDir* entry_items); |     void AddDirEntry(GameListDir* entry_items); | ||||||
|     void AddEntry(const QList<QStandardItem*>& entry_items, GameListDir* parent); |     void AddEntry(const QList<QStandardItem*>& entry_items, GameListDir* parent); | ||||||
|     void ValidateEntry(const QModelIndex& item); |     void ValidateEntry(const QModelIndex& item); | ||||||
|     void DonePopulating(QStringList watch_list); |     void DonePopulating(const QStringList& watch_list); | ||||||
| 
 | 
 | ||||||
|     void PopupContextMenu(const QPoint& menu_location); |     void PopupContextMenu(const QPoint& menu_location); | ||||||
|     void AddGamePopup(QMenu& context_menu, const QString& path, u64 program_id, u64 extdata_id); |     void AddGamePopup(QMenu& context_menu, const QString& path, u64 program_id, u64 extdata_id); | ||||||
|  |  | ||||||
|  | @ -619,7 +619,7 @@ void GMainWindow::RestoreUIState() { | ||||||
|     OnDisplayTitleBars(ui->action_Display_Dock_Widget_Headers->isChecked()); |     OnDisplayTitleBars(ui->action_Display_Dock_Widget_Headers->isChecked()); | ||||||
| 
 | 
 | ||||||
|     ui->action_Show_Filter_Bar->setChecked(UISettings::values.show_filter_bar); |     ui->action_Show_Filter_Bar->setChecked(UISettings::values.show_filter_bar); | ||||||
|     game_list->setFilterVisible(ui->action_Show_Filter_Bar->isChecked()); |     game_list->SetFilterVisible(ui->action_Show_Filter_Bar->isChecked()); | ||||||
| 
 | 
 | ||||||
|     ui->action_Show_Status_Bar->setChecked(UISettings::values.show_status_bar); |     ui->action_Show_Status_Bar->setChecked(UISettings::values.show_status_bar); | ||||||
|     statusBar()->setVisible(ui->action_Show_Status_Bar->isChecked()); |     statusBar()->setVisible(ui->action_Show_Status_Bar->isChecked()); | ||||||
|  | @ -1143,11 +1143,11 @@ void GMainWindow::ShutdownGame() { | ||||||
|     render_window->hide(); |     render_window->hide(); | ||||||
|     loading_screen->hide(); |     loading_screen->hide(); | ||||||
|     loading_screen->Clear(); |     loading_screen->Clear(); | ||||||
|     if (game_list->isEmpty()) |     if (game_list->IsEmpty()) | ||||||
|         game_list_placeholder->show(); |         game_list_placeholder->show(); | ||||||
|     else |     else | ||||||
|         game_list->show(); |         game_list->show(); | ||||||
|     game_list->setFilterFocus(); |     game_list->SetFilterFocus(); | ||||||
| 
 | 
 | ||||||
|     setMouseTracking(false); |     setMouseTracking(false); | ||||||
| 
 | 
 | ||||||
|  | @ -1449,7 +1449,7 @@ void GMainWindow::OnMenuInstallCIA() { | ||||||
| 
 | 
 | ||||||
| void GMainWindow::InstallCIA(QStringList filepaths) { | void GMainWindow::InstallCIA(QStringList filepaths) { | ||||||
|     ui->action_Install_CIA->setEnabled(false); |     ui->action_Install_CIA->setEnabled(false); | ||||||
|     game_list->setDirectoryWatcherEnabled(false); |     game_list->SetDirectoryWatcherEnabled(false); | ||||||
|     progress_bar->show(); |     progress_bar->show(); | ||||||
|     progress_bar->setMaximum(INT_MAX); |     progress_bar->setMaximum(INT_MAX); | ||||||
| 
 | 
 | ||||||
|  | @ -1503,7 +1503,7 @@ void GMainWindow::OnCIAInstallReport(Service::AM::InstallStatus status, QString | ||||||
| void GMainWindow::OnCIAInstallFinished() { | void GMainWindow::OnCIAInstallFinished() { | ||||||
|     progress_bar->hide(); |     progress_bar->hide(); | ||||||
|     progress_bar->setValue(0); |     progress_bar->setValue(0); | ||||||
|     game_list->setDirectoryWatcherEnabled(true); |     game_list->SetDirectoryWatcherEnabled(true); | ||||||
|     ui->action_Install_CIA->setEnabled(true); |     ui->action_Install_CIA->setEnabled(true); | ||||||
|     game_list->PopulateAsync(UISettings::values.game_dirs); |     game_list->PopulateAsync(UISettings::values.game_dirs); | ||||||
| } | } | ||||||
|  | @ -1818,11 +1818,11 @@ void GMainWindow::OnOpenCitraFolder() { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void GMainWindow::OnToggleFilterBar() { | void GMainWindow::OnToggleFilterBar() { | ||||||
|     game_list->setFilterVisible(ui->action_Show_Filter_Bar->isChecked()); |     game_list->SetFilterVisible(ui->action_Show_Filter_Bar->isChecked()); | ||||||
|     if (ui->action_Show_Filter_Bar->isChecked()) { |     if (ui->action_Show_Filter_Bar->isChecked()) { | ||||||
|         game_list->setFilterFocus(); |         game_list->SetFilterFocus(); | ||||||
|     } else { |     } else { | ||||||
|         game_list->clearFilter(); |         game_list->ClearFilter(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue