// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include #include #include #include "core/frontend/applets/cabinet.h" class GMainWindow; class QCheckBox; class QComboBox; class QDialogButtonBox; class QGroupBox; class QLabel; namespace InputCommon { class InputSubsystem; } namespace Ui { class QtAmiiboSettingsDialog; } namespace Service::NFP { class NfpDevice; } // namespace Service::NFP class QtAmiiboSettingsDialog final : public QDialog { Q_OBJECT public: explicit QtAmiiboSettingsDialog(QWidget* parent, Core::Frontend::CabinetParameters parameters_, InputCommon::InputSubsystem* input_subsystem_, std::shared_ptr nfp_device_); ~QtAmiiboSettingsDialog() override; int exec() override; std::string GetName() const; private: void LoadInfo(); void LoadAmiiboInfo(); void LoadAmiiboApiInfo(std::string_view amiibo_id); void LoadAmiiboData(); void LoadAmiiboGameInfo(); void SetGameDataName(u32 application_area_id); void SetSettingsDescription(); std::unique_ptr ui; InputCommon::InputSubsystem* input_subsystem; std::shared_ptr nfp_device; // Parameters sent in from the backend HLE applet. Core::Frontend::CabinetParameters parameters; // If false amiibo settings failed to load bool is_initalized{}; }; class QtAmiiboSettings final : public QObject, public Core::Frontend::CabinetApplet { Q_OBJECT public: explicit QtAmiiboSettings(GMainWindow& parent); ~QtAmiiboSettings() override; void ShowCabinetApplet(const Core::Frontend::CabinetCallback& callback_, const Core::Frontend::CabinetParameters& parameters, std::shared_ptr nfp_device) const override; signals: void MainWindowShowAmiiboSettings(const Core::Frontend::CabinetParameters& parameters, std::shared_ptr nfp_device) const; private: void MainWindowFinished(bool is_success, const std::string& name); mutable Core::Frontend::CabinetCallback callback; };