mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	qt: Add dialog implementation of Error applet
This commit is contained in:
		
							parent
							
								
									f6e2295055
								
							
						
					
					
						commit
						76452cd5b3
					
				| @ -7,6 +7,8 @@ add_executable(yuzu | ||||
|     Info.plist | ||||
|     about_dialog.cpp | ||||
|     about_dialog.h | ||||
|     applets/error.cpp | ||||
|     applets/error.h | ||||
|     applets/profile_select.cpp | ||||
|     applets/profile_select.h | ||||
|     applets/software_keyboard.cpp | ||||
|  | ||||
							
								
								
									
										59
									
								
								src/yuzu/applets/error.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								src/yuzu/applets/error.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,59 @@ | ||||
| // Copyright 2019 yuzu Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include <QDateTime> | ||||
| #include "core/hle/lock.h" | ||||
| #include "yuzu/applets/error.h" | ||||
| #include "yuzu/main.h" | ||||
| 
 | ||||
| QtErrorDisplay::QtErrorDisplay(GMainWindow& parent) { | ||||
|     connect(this, &QtErrorDisplay::MainWindowDisplayError, &parent, | ||||
|             &GMainWindow::ErrorDisplayDisplayError, Qt::QueuedConnection); | ||||
|     connect(&parent, &GMainWindow::ErrorDisplayFinished, this, | ||||
|             &QtErrorDisplay::MainWindowFinishedError, Qt::DirectConnection); | ||||
| } | ||||
| 
 | ||||
| QtErrorDisplay::~QtErrorDisplay() = default; | ||||
| 
 | ||||
| void QtErrorDisplay::ShowError(ResultCode error, std::function<void()> finished) const { | ||||
|     this->callback = finished; | ||||
|     emit MainWindowDisplayError( | ||||
|         tr("An error has occured.\nPlease try again or contact the developer of the " | ||||
|            "software.\n\nError Code: %1-%2 (0x%3)") | ||||
|             .arg(static_cast<u32>(error.module.Value()) + 2000, 4, 10, QChar::fromLatin1('0')) | ||||
|             .arg(error.description, 4, 10, QChar::fromLatin1('0')) | ||||
|             .arg(error.raw, 8, 16, QChar::fromLatin1('0'))); | ||||
| } | ||||
| 
 | ||||
| void QtErrorDisplay::ShowErrorWithTimestamp(ResultCode error, std::chrono::seconds time, | ||||
|                                             std::function<void()> finished) const { | ||||
|     this->callback = finished; | ||||
|     emit MainWindowDisplayError( | ||||
|         tr("An error occured on %1 at %2.\nPlease try again or contact the " | ||||
|            "developer of the software.\n\nError Code: %3-%4 (0x%5)") | ||||
|             .arg(QDateTime::fromSecsSinceEpoch(time.count()).toString("dddd, MMMM d, yyyy")) | ||||
|             .arg(QDateTime::fromSecsSinceEpoch(time.count()).toString("h:mm:ss A")) | ||||
|             .arg(static_cast<u32>(error.module.Value()) + 2000, 4, 10, QChar::fromLatin1('0')) | ||||
|             .arg(error.description, 4, 10, QChar::fromLatin1('0')) | ||||
|             .arg(error.raw, 8, 16, QChar::fromLatin1('0'))); | ||||
| } | ||||
| 
 | ||||
| void QtErrorDisplay::ShowCustomErrorText(ResultCode error, std::string dialog_text, | ||||
|                                          std::string fullscreen_text, | ||||
|                                          std::function<void()> finished) const { | ||||
|     this->callback = finished; | ||||
|     emit MainWindowDisplayError( | ||||
|         tr("An error has occured.\nError Code: %1-%2 (0x%3)\n\n%4\n\n%5") | ||||
|             .arg(static_cast<u32>(error.module.Value()) + 2000, 4, 10, QChar::fromLatin1('0')) | ||||
|             .arg(error.description, 4, 10, QChar::fromLatin1('0')) | ||||
|             .arg(error.raw, 8, 16, QChar::fromLatin1('0')) | ||||
|             .arg(QString::fromStdString(dialog_text)) | ||||
|             .arg(QString::fromStdString(fullscreen_text))); | ||||
| } | ||||
| 
 | ||||
| void QtErrorDisplay::MainWindowFinishedError() { | ||||
|     // Acquire the HLE mutex
 | ||||
|     std::lock_guard<std::recursive_mutex> lock(HLE::g_hle_lock); | ||||
|     callback(); | ||||
| } | ||||
							
								
								
									
										33
									
								
								src/yuzu/applets/error.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								src/yuzu/applets/error.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,33 @@ | ||||
| // Copyright 2019 yuzu Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include <QObject> | ||||
| 
 | ||||
| #include "core/frontend/applets/error.h" | ||||
| 
 | ||||
| class GMainWindow; | ||||
| 
 | ||||
| class QtErrorDisplay final : public QObject, public Core::Frontend::ErrorApplet { | ||||
|     Q_OBJECT | ||||
| 
 | ||||
| public: | ||||
|     explicit QtErrorDisplay(GMainWindow& parent); | ||||
|     ~QtErrorDisplay() override; | ||||
| 
 | ||||
|     void ShowError(ResultCode error, std::function<void()> finished) const override; | ||||
|     void ShowErrorWithTimestamp(ResultCode error, std::chrono::seconds time, | ||||
|                                 std::function<void()> finished) const override; | ||||
|     void ShowCustomErrorText(ResultCode error, std::string dialog_text, std::string fullscreen_text, | ||||
|                              std::function<void()> finished) const override; | ||||
| 
 | ||||
| signals: | ||||
|     void MainWindowDisplayError(QString error) const; | ||||
| 
 | ||||
| private: | ||||
|     void MainWindowFinishedError(); | ||||
| 
 | ||||
|     mutable std::function<void()> callback; | ||||
| }; | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Zach Hilman
						Zach Hilman