summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Morph2021-03-26 05:26:16 -0400
committerGravatar Morph2021-04-15 01:53:17 -0400
commit4a5f9f5a6d3bfd8796f52d6c778a8abb3922ff40 (patch)
tree40afabaffab15c22457bc9aed2e465a73be4e24b
parentinput_interpreter: Fix button hold being interpreted incorrectly on init (diff)
downloadyuzu-4a5f9f5a6d3bfd8796f52d6c778a8abb3922ff40.tar.gz
yuzu-4a5f9f5a6d3bfd8796f52d6c778a8abb3922ff40.tar.xz
yuzu-4a5f9f5a6d3bfd8796f52d6c778a8abb3922ff40.zip
main: Move meta type registration into its own function
Moves the existing meta type registration into its own function and adds registration of common integral, floating point and string types. This function is also now called in the constructor of the GMainWindow instead of on starting a game.
-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;