This is part of a series of PRs made in preparation for the QML rewrite. this PR specifically moves a bunch of utility functions from main.cpp into qt_common, with the biggest benefit being that QML can reuse the exact same code through ctx passthrough. Also, QtCommon::Frontend is an abstraction layer over several previously Widgets-specific stuff like QMessageBox that gets used everywhere. The idea is that once QML is implemented, these functions can have a Quick version implemented for systems that don't work well with Widgets (sun) or for those on Plasma 6+ (reduces memory usage w/o Widgets linkage) although Quick from C++ is actually anal, but whatever. Other than that this should also just kinda reduce the size of main.cpp which is a 6000-line behemoth rn, and clangd straight up gives up with it for me (likely caused by the massive amount of headers, which this DOES reduce). In the future, I probably want to create a common strings lookup table that both Qt and QML can reference--though I'm not sure how much linguist likes that--which should give us a way to keep language consistent (use frozen-map). TODO: Docs for Qt stuff Co-authored-by: MaranBr <maranbr@outlook.com> Reviewed-on: #94 Reviewed-by: MaranBr <maranbr@eden-emu.dev> Reviewed-by: Shinmegumi <shinmegumi@eden-emu.dev>
75 lines
3 KiB
C++
75 lines
3 KiB
C++
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
#include "qt_meta.h"
|
|
#include "common/common_types.h"
|
|
#include "core/core.h"
|
|
#include "core/frontend/applets/cabinet.h"
|
|
#include "core/frontend/applets/controller.h"
|
|
#include "core/frontend/applets/profile_select.h"
|
|
#include "core/frontend/applets/software_keyboard.h"
|
|
#include "core/hle/service/am/frontend/applet_web_browser_types.h"
|
|
|
|
namespace QtCommon::Meta {
|
|
|
|
void RegisterMetaTypes()
|
|
{
|
|
// Register integral and floating point types
|
|
qRegisterMetaType<u8>("u8");
|
|
qRegisterMetaType<u16>("u16");
|
|
qRegisterMetaType<u32>("u32");
|
|
qRegisterMetaType<u64>("u64");
|
|
qRegisterMetaType<u128>("u128");
|
|
qRegisterMetaType<s8>("s8");
|
|
qRegisterMetaType<s16>("s16");
|
|
qRegisterMetaType<s32>("s32");
|
|
qRegisterMetaType<s64>("s64");
|
|
qRegisterMetaType<f32>("f32");
|
|
qRegisterMetaType<f64>("f64");
|
|
|
|
// Register string types
|
|
qRegisterMetaType<std::string>("std::string");
|
|
qRegisterMetaType<std::wstring>("std::wstring");
|
|
qRegisterMetaType<std::u8string>("std::u8string");
|
|
qRegisterMetaType<std::u16string>("std::u16string");
|
|
qRegisterMetaType<std::u32string>("std::u32string");
|
|
qRegisterMetaType<std::string_view>("std::string_view");
|
|
qRegisterMetaType<std::wstring_view>("std::wstring_view");
|
|
qRegisterMetaType<std::u8string_view>("std::u8string_view");
|
|
qRegisterMetaType<std::u16string_view>("std::u16string_view");
|
|
qRegisterMetaType<std::u32string_view>("std::u32string_view");
|
|
|
|
// Register applet types
|
|
|
|
// Cabinet Applet
|
|
qRegisterMetaType<Core::Frontend::CabinetParameters>("Core::Frontend::CabinetParameters");
|
|
qRegisterMetaType<std::shared_ptr<Service::NFC::NfcDevice>>(
|
|
"std::shared_ptr<Service::NFC::NfcDevice>");
|
|
|
|
// Controller Applet
|
|
qRegisterMetaType<Core::Frontend::ControllerParameters>("Core::Frontend::ControllerParameters");
|
|
|
|
// Profile Select Applet
|
|
qRegisterMetaType<Core::Frontend::ProfileSelectParameters>(
|
|
"Core::Frontend::ProfileSelectParameters");
|
|
|
|
// Software Keyboard Applet
|
|
qRegisterMetaType<Core::Frontend::KeyboardInitializeParameters>(
|
|
"Core::Frontend::KeyboardInitializeParameters");
|
|
qRegisterMetaType<Core::Frontend::InlineAppearParameters>(
|
|
"Core::Frontend::InlineAppearParameters");
|
|
qRegisterMetaType<Core::Frontend::InlineTextParameters>("Core::Frontend::InlineTextParameters");
|
|
qRegisterMetaType<Service::AM::Frontend::SwkbdResult>("Service::AM::Frontend::SwkbdResult");
|
|
qRegisterMetaType<Service::AM::Frontend::SwkbdTextCheckResult>(
|
|
"Service::AM::Frontend::SwkbdTextCheckResult");
|
|
qRegisterMetaType<Service::AM::Frontend::SwkbdReplyType>(
|
|
"Service::AM::Frontend::SwkbdReplyType");
|
|
|
|
// Web Browser Applet
|
|
qRegisterMetaType<Service::AM::Frontend::WebExitReason>("Service::AM::Frontend::WebExitReason");
|
|
|
|
// Register loader types
|
|
qRegisterMetaType<Core::SystemResultStatus>("Core::SystemResultStatus");
|
|
}
|
|
|
|
}
|