mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40:04 +00:00 
			
		
		
		
	Merge pull request #2682 from nicoboss/filter
citra-qt: game list search function fixed minor mistakes
This commit is contained in:
		
						commit
						e33558c6ce
					
				
					 2 changed files with 35 additions and 30 deletions
				
			
		|  | @ -45,7 +45,7 @@ bool GameList::SearchField::KeyReleaseEater::eventFilter(QObject* obj, QEvent* e | ||||||
|             break; |             break; | ||||||
|         } |         } | ||||||
|         // Return and Enter
 |         // Return and Enter
 | ||||||
|         // If the enter key gets pressed first checks how many and which entry is visable
 |         // If the enter key gets pressed first checks how many and which entry is visible
 | ||||||
|         // If there is only one result launch this game
 |         // If there is only one result launch this game
 | ||||||
|         case Qt::Key_Return: |         case Qt::Key_Return: | ||||||
|         case Qt::Key_Enter: { |         case Qt::Key_Enter: { | ||||||
|  | @ -80,7 +80,7 @@ bool GameList::SearchField::KeyReleaseEater::eventFilter(QObject* obj, QEvent* e | ||||||
|     return QObject::eventFilter(obj, event); |     return QObject::eventFilter(obj, event); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void GameList::SearchField::setFilterResult(int visable, int total) { | void GameList::SearchField::setFilterResult(int visible, int total) { | ||||||
|     QString result_of_text = tr("of"); |     QString result_of_text = tr("of"); | ||||||
|     QString result_text; |     QString result_text; | ||||||
|     if (total == 1) { |     if (total == 1) { | ||||||
|  | @ -89,7 +89,7 @@ void GameList::SearchField::setFilterResult(int visable, int total) { | ||||||
|         result_text = tr("results"); |         result_text = tr("results"); | ||||||
|     } |     } | ||||||
|     label_filter_result->setText( |     label_filter_result->setText( | ||||||
|         QString("%1 %2 %3 %4").arg(visable).arg(result_of_text).arg(total).arg(result_text)); |         QString("%1 %2 %3 %4").arg(visible).arg(result_of_text).arg(total).arg(result_text)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void GameList::SearchField::clear() { | void GameList::SearchField::clear() { | ||||||
|  | @ -133,13 +133,13 @@ GameList::SearchField::SearchField(GameList* parent) : QWidget{parent} { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
| * Checks if all words separated by spaces are contained in another string |  * Checks if all words separated by spaces are contained in another string | ||||||
| * This offers a word order insensitive search function |  * This offers a word order insensitive search function | ||||||
| * |  * | ||||||
| * @param String that gets checked if it contains all words of the userinput string |  * @param String that gets checked if it contains all words of the userinput string | ||||||
| * @param String containing all words getting checked |  * @param String containing all words getting checked | ||||||
| * @return true if the haystack contains all words of userinput |  * @return true if the haystack contains all words of userinput | ||||||
| */ |  */ | ||||||
| bool GameList::containsAllWords(QString haystack, QString userinput) { | bool GameList::containsAllWords(QString haystack, QString userinput) { | ||||||
|     QStringList userinput_split = userinput.split(" ", QString::SplitBehavior::SkipEmptyParts); |     QStringList userinput_split = userinput.split(" ", QString::SplitBehavior::SkipEmptyParts); | ||||||
|     return std::all_of(userinput_split.begin(), userinput_split.end(), |     return std::all_of(userinput_split.begin(), userinput_split.end(), | ||||||
|  | @ -236,11 +236,13 @@ GameList::~GameList() { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void GameList::setFilterFocus() { | void GameList::setFilterFocus() { | ||||||
|     search_field->setFocus(); |     if (tree_view->model()->rowCount() > 0) { | ||||||
|  |         search_field->setFocus(); | ||||||
|  |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void GameList::setFilterVisible(bool visablility) { | void GameList::setFilterVisible(bool visibility) { | ||||||
|     search_field->setVisible(visablility); |     search_field->setVisible(visibility); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void GameList::clearFilter() { | void GameList::clearFilter() { | ||||||
|  | @ -271,7 +273,9 @@ void GameList::DonePopulating() { | ||||||
|     tree_view->setEnabled(true); |     tree_view->setEnabled(true); | ||||||
|     int rowCount = tree_view->model()->rowCount(); |     int rowCount = tree_view->model()->rowCount(); | ||||||
|     search_field->setFilterResult(rowCount, rowCount); |     search_field->setFilterResult(rowCount, rowCount); | ||||||
|     search_field->setFocus(); |     if (rowCount > 0) { | ||||||
|  |         search_field->setFocus(); | ||||||
|  |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void GameList::PopupContextMenu(const QPoint& menu_location) { | void GameList::PopupContextMenu(const QPoint& menu_location) { | ||||||
|  | @ -295,6 +299,7 @@ void GameList::PopulateAsync(const QString& dir_path, bool deep_scan) { | ||||||
|     if (!FileUtil::Exists(dir_path.toStdString()) || |     if (!FileUtil::Exists(dir_path.toStdString()) || | ||||||
|         !FileUtil::IsDirectory(dir_path.toStdString())) { |         !FileUtil::IsDirectory(dir_path.toStdString())) { | ||||||
|         LOG_ERROR(Frontend, "Could not find game list folder at %s", dir_path.toLocal8Bit().data()); |         LOG_ERROR(Frontend, "Could not find game list folder at %s", dir_path.toLocal8Bit().data()); | ||||||
|  |         search_field->setFilterResult(0, 0); | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | @ -355,20 +360,20 @@ void GameList::RefreshGameDirectory() { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
| * Adds the game list folder to the QFileSystemWatcher to check for updates. |  * Adds the game list folder to the QFileSystemWatcher to check for updates. | ||||||
| * |  * | ||||||
| * The file watcher will fire off an update to the game list when a change is detected in the game |  * The file watcher will fire off an update to the game list when a change is detected in the game | ||||||
| * list folder. |  * list folder. | ||||||
| * |  * | ||||||
| * Notice: This method is run on the UI thread because QFileSystemWatcher is not thread safe and |  * Notice: This method is run on the UI thread because QFileSystemWatcher is not thread safe and | ||||||
| * this function is fast enough to not stall the UI thread. If performance is an issue, it should |  * this function is fast enough to not stall the UI thread. If performance is an issue, it should | ||||||
| * be moved to another thread and properly locked to prevent concurrency issues. |  * be moved to another thread and properly locked to prevent concurrency issues. | ||||||
| * |  * | ||||||
| * @param dir folder to check for changes in |  * @param dir folder to check for changes in | ||||||
| * @param recursion 0 if recursion is disabled. Any positive number passed to this will add each |  * @param recursion 0 if recursion is disabled. Any positive number passed to this will add each | ||||||
| *        directory recursively to the watcher and will update the file list if any of the folders |  *        directory recursively to the watcher and will update the file list if any of the folders | ||||||
| *        change. The number determines how deep the recursion should traverse. |  *        change. The number determines how deep the recursion should traverse. | ||||||
| */ |  */ | ||||||
| void GameList::UpdateWatcherList(const std::string& dir, unsigned int recursion) { | void GameList::UpdateWatcherList(const std::string& dir, unsigned int recursion) { | ||||||
|     const auto callback = [this, recursion](unsigned* num_entries_out, const std::string& directory, |     const auto callback = [this, recursion](unsigned* num_entries_out, const std::string& directory, | ||||||
|                                             const std::string& virtual_name) -> bool { |                                             const std::string& virtual_name) -> bool { | ||||||
|  |  | ||||||
|  | @ -34,7 +34,7 @@ public: | ||||||
| 
 | 
 | ||||||
|     class SearchField : public QWidget { |     class SearchField : public QWidget { | ||||||
|     public: |     public: | ||||||
|         void setFilterResult(int visable, int total); |         void setFilterResult(int visible, int total); | ||||||
|         void clear(); |         void clear(); | ||||||
|         void setFocus(); |         void setFocus(); | ||||||
|         explicit SearchField(GameList* parent = nullptr); |         explicit SearchField(GameList* parent = nullptr); | ||||||
|  | @ -64,7 +64,7 @@ public: | ||||||
| 
 | 
 | ||||||
|     void clearFilter(); |     void clearFilter(); | ||||||
|     void setFilterFocus(); |     void setFilterFocus(); | ||||||
|     void setFilterVisible(bool visablility); |     void setFilterVisible(bool visibility); | ||||||
| 
 | 
 | ||||||
|     void PopulateAsync(const QString& dir_path, bool deep_scan); |     void PopulateAsync(const QString& dir_path, bool deep_scan); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue