shared_widget.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. namespace Settings {
  11. class BasicSetting;
  12. }
  13. namespace ConfigurationShared {
  14. enum class RequestType {
  15. Default,
  16. ComboBox,
  17. SpinBox,
  18. Slider,
  19. ReverseSlider,
  20. LineEdit,
  21. MaxEnum,
  22. };
  23. class Widget : public QWidget {
  24. Q_OBJECT
  25. public:
  26. Widget(Settings::BasicSetting* setting, const TranslationMap& translations, QWidget* parent,
  27. bool runtime_lock, std::forward_list<std::function<void(bool)>>& apply_funcs,
  28. RequestType request = RequestType::Default, bool managed = true, float multiplier = 1.0f,
  29. Settings::BasicSetting* other_setting = nullptr,
  30. const QString& format = QStringLiteral(""));
  31. virtual ~Widget();
  32. bool Valid();
  33. [[nodiscard]] static QPushButton* CreateRestoreGlobalButton(Settings::BasicSetting& setting,
  34. QWidget* parent);
  35. QPushButton* restore_button{};
  36. QLineEdit* line_edit{};
  37. QSpinBox* spinbox{};
  38. QCheckBox* checkbox{};
  39. QSlider* slider{};
  40. QComboBox* combobox{};
  41. private:
  42. void CreateCheckBox(const QString& label, std::function<void()>& load_func);
  43. void CreateCheckBoxWithLineEdit(const QString& label, Settings::BasicSetting* other_setting,
  44. std::function<void()>& load_func);
  45. void CreateCheckBoxWithSpinBox(const QString& label, Settings::BasicSetting* other_setting,
  46. std::function<void()>& load_func, const QString& suffix);
  47. void CreateCombobox(const QString& label, bool managed, std::function<void()>& load_func);
  48. void CreateLineEdit(const QString& label, bool managed, std::function<void()>& load_func);
  49. void CreateSlider(const QString& label, bool reversed, float multiplier,
  50. std::function<void()>& load_func);
  51. QWidget* parent;
  52. const TranslationMap& translations;
  53. Settings::BasicSetting& setting;
  54. bool created{false};
  55. };
  56. } // namespace ConfigurationShared