summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/yuzu/main.cpp58
-rw-r--r--src/yuzu/main.h16
2 files changed, 65 insertions, 9 deletions
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp
index e9d6e7421..422b3cff6 100644
--- a/src/yuzu/main.cpp
+++ b/src/yuzu/main.cpp
@@ -227,6 +227,8 @@ GMainWindow::GMainWindow()
227 SetDiscordEnabled(UISettings::values.enable_discord_presence); 227 SetDiscordEnabled(UISettings::values.enable_discord_presence);
228 discord_rpc->Update(); 228 discord_rpc->Update();
229 229
230 RegisterMetaTypes();
231
230 InitializeWidgets(); 232 InitializeWidgets();
231 InitializeDebugWidgets(); 233 InitializeDebugWidgets();
232 InitializeRecentFileMenuActions(); 234 InitializeRecentFileMenuActions();
@@ -375,6 +377,55 @@ GMainWindow::~GMainWindow() {
375 delete render_window; 377 delete render_window;
376} 378}
377 379
380void GMainWindow::RegisterMetaTypes() {
381 // Register integral and floating point types
382 qRegisterMetaType<u8>("u8");
383 qRegisterMetaType<u16>("u16");
384 qRegisterMetaType<u32>("u32");
385 qRegisterMetaType<u64>("u64");
386 qRegisterMetaType<u128>("u128");
387 qRegisterMetaType<s8>("s8");
388 qRegisterMetaType<s16>("s16");
389 qRegisterMetaType<s32>("s32");
390 qRegisterMetaType<s64>("s64");
391 qRegisterMetaType<f32>("f32");
392 qRegisterMetaType<f64>("f64");
393
394 // Register string types
395 qRegisterMetaType<std::string>("std::string");
396 qRegisterMetaType<std::wstring>("std::wstring");
397 qRegisterMetaType<std::u8string>("std::u8string");
398 qRegisterMetaType<std::u16string>("std::u16string");
399 qRegisterMetaType<std::u32string>("std::u32string");
400 qRegisterMetaType<std::string_view>("std::string_view");
401 qRegisterMetaType<std::wstring_view>("std::wstring_view");
402 qRegisterMetaType<std::u8string_view>("std::u8string_view");
403 qRegisterMetaType<std::u16string_view>("std::u16string_view");
404 qRegisterMetaType<std::u32string_view>("std::u32string_view");
405
406 // Register applet types
407
408 // Controller Applet
409 qRegisterMetaType<Core::Frontend::ControllerParameters>("Core::Frontend::ControllerParameters");
410
411 // Software Keyboard Applet
412 qRegisterMetaType<Core::Frontend::KeyboardInitializeParameters>(
413 "Core::Frontend::KeyboardInitializeParameters");
414 qRegisterMetaType<Core::Frontend::InlineAppearParameters>(
415 "Core::Frontend::InlineAppearParameters");
416 qRegisterMetaType<Core::Frontend::InlineTextParameters>("Core::Frontend::InlineTextParameters");
417 qRegisterMetaType<Service::AM::Applets::SwkbdResult>("Service::AM::Applets::SwkbdResult");
418 qRegisterMetaType<Service::AM::Applets::SwkbdTextCheckResult>(
419 "Service::AM::Applets::SwkbdTextCheckResult");
420 qRegisterMetaType<Service::AM::Applets::SwkbdReplyType>("Service::AM::Applets::SwkbdReplyType");
421
422 // Web Browser Applet
423 qRegisterMetaType<Service::AM::Applets::WebExitReason>("Service::AM::Applets::WebExitReason");
424
425 // Register loader types
426 qRegisterMetaType<Core::System::ResultStatus>("Core::System::ResultStatus");
427}
428
378void GMainWindow::ControllerSelectorReconfigureControllers( 429void GMainWindow::ControllerSelectorReconfigureControllers(
379 const Core::Frontend::ControllerParameters& parameters) { 430 const Core::Frontend::ControllerParameters& parameters) {
380 QtControllerSelectorDialog dialog(this, parameters, input_subsystem.get()); 431 QtControllerSelectorDialog dialog(this, parameters, input_subsystem.get());
@@ -2166,13 +2217,6 @@ void GMainWindow::OnStartGame() {
2166 2217
2167 emu_thread->SetRunning(true); 2218 emu_thread->SetRunning(true);
2168 2219
2169 qRegisterMetaType<Core::Frontend::ControllerParameters>("Core::Frontend::ControllerParameters");
2170 qRegisterMetaType<Core::System::ResultStatus>("Core::System::ResultStatus");
2171 qRegisterMetaType<std::string>("std::string");
2172 qRegisterMetaType<std::optional<std::u16string>>("std::optional<std::u16string>");
2173 qRegisterMetaType<std::string_view>("std::string_view");
2174 qRegisterMetaType<Service::AM::Applets::WebExitReason>("Service::AM::Applets::WebExitReason");
2175
2176 connect(emu_thread.get(), &EmuThread::ErrorThrown, this, &GMainWindow::OnCoreError); 2220 connect(emu_thread.get(), &EmuThread::ErrorThrown, this, &GMainWindow::OnCoreError);
2177 2221
2178 ui.action_Start->setEnabled(false); 2222 ui.action_Start->setEnabled(false);
diff --git a/src/yuzu/main.h b/src/yuzu/main.h
index 6429549ae..d8849f85b 100644
--- a/src/yuzu/main.h
+++ b/src/yuzu/main.h
@@ -37,9 +37,13 @@ enum class GameListRemoveTarget;
37enum class InstalledEntryType; 37enum class InstalledEntryType;
38class GameListPlaceholder; 38class GameListPlaceholder;
39 39
40class QtSoftwareKeyboardDialog;
41
40namespace Core::Frontend { 42namespace Core::Frontend {
41struct ControllerParameters; 43struct ControllerParameters;
42struct SoftwareKeyboardParameters; 44struct InlineAppearParameters;
45struct InlineTextParameters;
46struct KeyboardInitializeParameters;
43} // namespace Core::Frontend 47} // namespace Core::Frontend
44 48
45namespace DiscordRPC { 49namespace DiscordRPC {
@@ -57,8 +61,11 @@ class InputSubsystem;
57} 61}
58 62
59namespace Service::AM::Applets { 63namespace Service::AM::Applets {
64enum class SwkbdResult : u32;
65enum class SwkbdTextCheckResult : u32;
66enum class SwkbdReplyType : u32;
60enum class WebExitReason : u32; 67enum class WebExitReason : u32;
61} 68} // namespace Service::AM::Applets
62 69
63enum class EmulatedDirectoryTarget { 70enum class EmulatedDirectoryTarget {
64 NAND, 71 NAND,
@@ -143,6 +150,8 @@ public slots:
143 void OnAppFocusStateChanged(Qt::ApplicationState state); 150 void OnAppFocusStateChanged(Qt::ApplicationState state);
144 151
145private: 152private:
153 void RegisterMetaTypes();
154
146 void InitializeWidgets(); 155 void InitializeWidgets();
147 void InitializeDebugWidgets(); 156 void InitializeDebugWidgets();
148 void InitializeRecentFileMenuActions(); 157 void InitializeRecentFileMenuActions();
@@ -329,6 +338,9 @@ private:
329 // Disables the web applet for the rest of the emulated session 338 // Disables the web applet for the rest of the emulated session
330 bool disable_web_applet{}; 339 bool disable_web_applet{};
331 340
341 // Applets
342 QtSoftwareKeyboardDialog* software_keyboard = nullptr;
343
332protected: 344protected:
333 void dropEvent(QDropEvent* event) override; 345 void dropEvent(QDropEvent* event) override;
334 void dragEnterEvent(QDragEnterEvent* event) override; 346 void dragEnterEvent(QDragEnterEvent* event) override;