shared_widget.h 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #pragma once
  2. #include "yuzu/configuration/configuration_shared.h"
  3. #include "yuzu/configuration/shared_translation.h"
  4. class QPushButton;
  5. class QSpinBox;
  6. class QComboBox;
  7. class QLineEdit;
  8. class QSlider;
  9. class QCheckBox;
  10. class QDateTimeEdit;
  11. namespace Settings {
  12. class BasicSetting;
  13. }
  14. namespace ConfigurationShared {
  15. enum class RequestType {
  16. Default,
  17. ComboBox,
  18. SpinBox,
  19. Slider,
  20. ReverseSlider,
  21. LineEdit,
  22. HexEdit,
  23. DateTimeEdit,
  24. MaxEnum,
  25. };
  26. class Widget : public QWidget {
  27. Q_OBJECT
  28. public:
  29. Widget(Settings::BasicSetting* setting, const TranslationMap& translations, QWidget* parent,
  30. bool runtime_lock, std::forward_list<std::function<void(bool)>>& apply_funcs,
  31. RequestType request = RequestType::Default, bool managed = true, float multiplier = 1.0f,
  32. Settings::BasicSetting* other_setting = nullptr, const std::string& format = "");
  33. virtual ~Widget();
  34. bool Valid();
  35. [[nodiscard]] static QPushButton* CreateRestoreGlobalButton(Settings::BasicSetting& setting,
  36. QWidget* parent);
  37. QPushButton* restore_button{};
  38. QLineEdit* line_edit{};
  39. QSpinBox* spinbox{};
  40. QCheckBox* checkbox{};
  41. QSlider* slider{};
  42. QComboBox* combobox{};
  43. QDateTimeEdit* date_time_edit{};
  44. private:
  45. void CreateCheckBox(const QString& label, std::function<void()>& load_func);
  46. void CreateCheckBoxWithLineEdit(const QString& label, Settings::BasicSetting* other_setting,
  47. std::function<void()>& load_func);
  48. void CreateCheckBoxWithHexEdit(const QString& label, Settings::BasicSetting* other_setting,
  49. std::function<void()>& load_func);
  50. void CreateCheckBoxWithSpinBox(const QString& label, Settings::BasicSetting* other_setting,
  51. std::function<void()>& load_func, const std::string& suffix);
  52. void CreateCheckBoxWithDateTimeEdit(const QString& label, Settings::BasicSetting* other_setting,
  53. std::function<void()>& load_func);
  54. void CreateCombobox(const QString& label, bool managed, std::function<void()>& load_func);
  55. void CreateLineEdit(const QString& label, bool managed, std::function<void()>& load_func);
  56. void CreateSlider(const QString& label, bool reversed, float multiplier,
  57. std::function<void()>& load_func);
  58. QWidget* parent;
  59. const TranslationMap& translations;
  60. Settings::BasicSetting& setting;
  61. bool created{false};
  62. };
  63. } // namespace ConfigurationShared