summaryrefslogtreecommitdiff
path: root/src/yuzu/main.cpp
diff options
context:
space:
mode:
authorMorph <39850852+Morph1984@users.noreply.github.com>2020-11-30 10:15:00 -0500
committerMorph <39850852+Morph1984@users.noreply.github.com>2020-12-18 10:33:28 -0500
commit8b95bf041da573459e953e27eee2dcf30208b02d (patch)
treef3213286284f1931b1de5d3af67d1e632d2e1bd1 /src/yuzu/main.cpp
parent93cb7838539075f0d94cb08a65a25b0c05589d7d (diff)
main, applets/web: Re-add progress dialog for RomFS extraction
Diffstat (limited to 'src/yuzu/main.cpp')
-rw-r--r--src/yuzu/main.cpp58
1 files changed, 43 insertions, 15 deletions
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp
index bab76db1e..f696fc494 100644
--- a/src/yuzu/main.cpp
+++ b/src/yuzu/main.cpp
@@ -372,24 +372,49 @@ void GMainWindow::WebBrowserOpenLocalWebPage(std::string_view main_url,
QtNXWebEngineView web_browser_view(this, Core::System::GetInstance());
- web_browser_view.LoadLocalWebPage(main_url, additional_args);
-
ui.action_Pause->setEnabled(false);
ui.action_Restart->setEnabled(false);
ui.action_Stop->setEnabled(false);
- if (render_window->IsLoadingComplete()) {
- render_window->hide();
- }
+ {
+ QProgressDialog loading_progress(this);
+ loading_progress.setLabelText(tr("Loading Web Applet..."));
+ loading_progress.setRange(0, 3);
+ loading_progress.setValue(0);
+
+ if (!Common::FS::Exists(std::string(main_url))) {
+ loading_progress.show();
+
+ auto future = QtConcurrent::run([this] { emit WebBrowserExtractOfflineRomFS(); });
+
+ while (!future.isFinished()) {
+ QCoreApplication::processEvents();
+ }
+ }
- const auto& layout = render_window->GetFramebufferLayout();
- web_browser_view.resize(layout.screen.GetWidth(), layout.screen.GetHeight());
- web_browser_view.move(layout.screen.left, layout.screen.top + menuBar()->height());
- web_browser_view.setZoomFactor(static_cast<qreal>(layout.screen.GetWidth()) /
- static_cast<qreal>(Layout::ScreenUndocked::Width));
+ loading_progress.setValue(1);
- web_browser_view.setFocus();
- web_browser_view.show();
+ web_browser_view.LoadLocalWebPage(main_url, additional_args);
+
+ if (render_window->IsLoadingComplete()) {
+ render_window->hide();
+ }
+
+ const auto& layout = render_window->GetFramebufferLayout();
+ web_browser_view.resize(layout.screen.GetWidth(), layout.screen.GetHeight());
+ web_browser_view.move(layout.screen.left, layout.screen.top + menuBar()->height());
+ web_browser_view.setZoomFactor(static_cast<qreal>(layout.screen.GetWidth()) /
+ static_cast<qreal>(Layout::ScreenUndocked::Width));
+
+ web_browser_view.setFocus();
+ web_browser_view.show();
+
+ loading_progress.setValue(2);
+
+ QCoreApplication::processEvents();
+
+ loading_progress.setValue(3);
+ }
bool exit_check = false;
@@ -402,7 +427,8 @@ void GMainWindow::WebBrowserOpenLocalWebPage(std::string_view main_url,
exit_check = false;
if (variant.toBool()) {
web_browser_view.SetFinished(true);
- web_browser_view.SetExitReason(WebExitReason::EndButtonPressed);
+ web_browser_view.SetExitReason(
+ Service::AM::Applets::WebExitReason::EndButtonPressed);
}
});
@@ -412,7 +438,7 @@ void GMainWindow::WebBrowserOpenLocalWebPage(std::string_view main_url,
if (web_browser_view.GetCurrentURL().contains(QStringLiteral("localhost"))) {
if (!web_browser_view.IsFinished()) {
web_browser_view.SetFinished(true);
- web_browser_view.SetExitReason(WebExitReason::CallbackURL);
+ web_browser_view.SetExitReason(Service::AM::Applets::WebExitReason::CallbackURL);
}
web_browser_view.SetLastURL(web_browser_view.GetCurrentURL().toStdString());
@@ -436,12 +462,14 @@ void GMainWindow::WebBrowserOpenLocalWebPage(std::string_view main_url,
ui.action_Restart->setEnabled(true);
ui.action_Stop->setEnabled(true);
+ QCoreApplication::processEvents();
+
emit WebBrowserClosed(exit_reason, last_url);
#else
// Utilize the same fallback as the default web browser applet.
- emit WebBrowserClosed(WebExitReason::WindowClosed, "http://localhost");
+ emit WebBrowserClosed(Service::AM::Applets::WebExitReason::WindowClosed, "http://localhost");
#endif
}