shared_widget.h 1.9 KB

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