mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	Merge pull request #1045 from LittleWhite-tb/qt-recent-files
Improvements for MRU
This commit is contained in:
		
						commit
						08325e51e5
					
				
					 2 changed files with 33 additions and 11 deletions
				
			
		|  | @ -287,6 +287,17 @@ void GMainWindow::ShutdownGame() { | ||||||
|     render_window->hide(); |     render_window->hide(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void GMainWindow::StoreRecentFile(const QString& filename) | ||||||
|  | { | ||||||
|  |     QSettings settings; | ||||||
|  |     QStringList recent_files = settings.value("recentFiles").toStringList(); | ||||||
|  |     recent_files.prepend(filename); | ||||||
|  |     recent_files.removeDuplicates(); | ||||||
|  |     settings.setValue("recentFiles", recent_files); | ||||||
|  | 
 | ||||||
|  |     UpdateRecentFiles(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void GMainWindow::UpdateRecentFiles() { | void GMainWindow::UpdateRecentFiles() { | ||||||
|     QSettings settings; |     QSettings settings; | ||||||
|     QStringList recent_files = settings.value("recentFiles").toStringList(); |     QStringList recent_files = settings.value("recentFiles").toStringList(); | ||||||
|  | @ -297,6 +308,7 @@ void GMainWindow::UpdateRecentFiles() { | ||||||
|         QString text = QString("&%1. %2").arg(i + 1).arg(QFileInfo(recent_files[i]).fileName()); |         QString text = QString("&%1. %2").arg(i + 1).arg(QFileInfo(recent_files[i]).fileName()); | ||||||
|         actions_recent_files[i]->setText(text); |         actions_recent_files[i]->setText(text); | ||||||
|         actions_recent_files[i]->setData(recent_files[i]); |         actions_recent_files[i]->setData(recent_files[i]); | ||||||
|  |         actions_recent_files[i]->setToolTip(recent_files[i]); | ||||||
|         actions_recent_files[i]->setVisible(true); |         actions_recent_files[i]->setVisible(true); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | @ -319,11 +331,7 @@ void GMainWindow::OnMenuLoadFile() { | ||||||
|     QString filename = QFileDialog::getOpenFileName(this, tr("Load File"), rom_path, tr("3DS executable (*.3ds *.3dsx *.elf *.axf *.cci *.cxi)")); |     QString filename = QFileDialog::getOpenFileName(this, tr("Load File"), rom_path, tr("3DS executable (*.3ds *.3dsx *.elf *.axf *.cci *.cxi)")); | ||||||
|     if (filename.size()) { |     if (filename.size()) { | ||||||
|         settings.setValue("romsPath", QFileInfo(filename).path()); |         settings.setValue("romsPath", QFileInfo(filename).path()); | ||||||
|         // Update recent files list
 |         StoreRecentFile(filename); | ||||||
|         QStringList recent_files = settings.value("recentFiles").toStringList(); |  | ||||||
|         recent_files.prepend(filename); |  | ||||||
|         settings.setValue("recentFiles", recent_files); |  | ||||||
|         UpdateRecentFiles(); // Update UI
 |  | ||||||
| 
 | 
 | ||||||
|         BootGame(filename.toLatin1().data()); |         BootGame(filename.toLatin1().data()); | ||||||
|     } |     } | ||||||
|  | @ -349,6 +357,7 @@ void GMainWindow::OnMenuRecentFile() { | ||||||
|     QFileInfo file_info(filename); |     QFileInfo file_info(filename); | ||||||
|     if (file_info.exists()) { |     if (file_info.exists()) { | ||||||
|         BootGame(filename.toLatin1().data()); |         BootGame(filename.toLatin1().data()); | ||||||
|  |         StoreRecentFile(filename); // Put the filename on top of the list
 | ||||||
|     } else { |     } else { | ||||||
|         // Display an error message and remove the file from the list.
 |         // Display an error message and remove the file from the list.
 | ||||||
|         QMessageBox::information(this, tr("File not found"), tr("File \"%1\" not found").arg(filename)); |         QMessageBox::information(this, tr("File not found"), tr("File \"%1\" not found").arg(filename)); | ||||||
|  | @ -357,12 +366,7 @@ void GMainWindow::OnMenuRecentFile() { | ||||||
|         QStringList recent_files = settings.value("recentFiles").toStringList(); |         QStringList recent_files = settings.value("recentFiles").toStringList(); | ||||||
|         recent_files.removeOne(filename); |         recent_files.removeOne(filename); | ||||||
|         settings.setValue("recentFiles", recent_files); |         settings.setValue("recentFiles", recent_files); | ||||||
| 
 |         UpdateRecentFiles(); | ||||||
|         action->setVisible(false); |  | ||||||
|         // Grey out the recent files menu if the list is empty
 |  | ||||||
|         if (ui.menu_recent_files->isEmpty()) { |  | ||||||
|             ui.menu_recent_files->setEnabled(false); |  | ||||||
|         } |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -60,6 +60,24 @@ private: | ||||||
|     void BootGame(const std::string& filename); |     void BootGame(const std::string& filename); | ||||||
|     void ShutdownGame(); |     void ShutdownGame(); | ||||||
| 
 | 
 | ||||||
|  |     /**
 | ||||||
|  |      * Stores the filename in the recently loaded files list. | ||||||
|  |      * The new filename is stored at the beginning of the recently loaded files list. | ||||||
|  |      * After inserting the new entry, duplicates are removed meaning that if | ||||||
|  |      * this was inserted from \a OnMenuRecentFile(), the entry will be put on top | ||||||
|  |      * and remove from its previous position. | ||||||
|  |      * | ||||||
|  |      * Finally, this function calls \a UpdateRecentFiles() to update the UI. | ||||||
|  |      * | ||||||
|  |      * @param filename the filename to store | ||||||
|  |      */ | ||||||
|  |     void StoreRecentFile(const QString& filename); | ||||||
|  | 
 | ||||||
|  |     /**
 | ||||||
|  |      * Updates the recent files menu. | ||||||
|  |      * Menu entries are rebuilt from the configuration file. | ||||||
|  |      * If there is no entry in the menu, the menu is greyed out. | ||||||
|  |      */ | ||||||
|     void UpdateRecentFiles(); |     void UpdateRecentFiles(); | ||||||
| 
 | 
 | ||||||
|     void closeEvent(QCloseEvent* event) override; |     void closeEvent(QCloseEvent* event) override; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue