qt_amiibo_settings.h 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #pragma once
  4. #include <array>
  5. #include <memory>
  6. #include <QDialog>
  7. #include "core/frontend/applets/cabinet.h"
  8. class GMainWindow;
  9. class QCheckBox;
  10. class QComboBox;
  11. class QDialogButtonBox;
  12. class QGroupBox;
  13. class QLabel;
  14. namespace InputCommon {
  15. class InputSubsystem;
  16. }
  17. namespace Ui {
  18. class QtAmiiboSettingsDialog;
  19. }
  20. namespace Service::NFC {
  21. class NfcDevice;
  22. } // namespace Service::NFC
  23. class QtAmiiboSettingsDialog final : public QDialog {
  24. Q_OBJECT
  25. public:
  26. explicit QtAmiiboSettingsDialog(QWidget* parent, Core::Frontend::CabinetParameters parameters_,
  27. InputCommon::InputSubsystem* input_subsystem_,
  28. std::shared_ptr<Service::NFC::NfcDevice> nfp_device_);
  29. ~QtAmiiboSettingsDialog() override;
  30. int exec() override;
  31. std::string GetName() const;
  32. private:
  33. void LoadInfo();
  34. void LoadAmiiboInfo();
  35. void LoadAmiiboApiInfo(std::string_view amiibo_id);
  36. void LoadAmiiboData();
  37. void LoadAmiiboGameInfo();
  38. void SetGameDataName(u32 application_area_id);
  39. void SetSettingsDescription();
  40. std::unique_ptr<Ui::QtAmiiboSettingsDialog> ui;
  41. InputCommon::InputSubsystem* input_subsystem;
  42. std::shared_ptr<Service::NFC::NfcDevice> nfp_device;
  43. // Parameters sent in from the backend HLE applet.
  44. Core::Frontend::CabinetParameters parameters;
  45. // If false amiibo settings failed to load
  46. bool is_initialized{};
  47. };
  48. class QtAmiiboSettings final : public QObject, public Core::Frontend::CabinetApplet {
  49. Q_OBJECT
  50. public:
  51. explicit QtAmiiboSettings(GMainWindow& parent);
  52. ~QtAmiiboSettings() override;
  53. void Close() const override;
  54. void ShowCabinetApplet(const Core::Frontend::CabinetCallback& callback_,
  55. const Core::Frontend::CabinetParameters& parameters,
  56. std::shared_ptr<Service::NFC::NfcDevice> nfp_device) const override;
  57. signals:
  58. void MainWindowShowAmiiboSettings(const Core::Frontend::CabinetParameters& parameters,
  59. std::shared_ptr<Service::NFC::NfcDevice> nfp_device) const;
  60. void MainWindowRequestExit() const;
  61. private:
  62. void MainWindowFinished(bool is_success, const std::string& name);
  63. mutable Core::Frontend::CabinetCallback callback;
  64. };