File indexing completed on 2024-05-19 15:46:03
0001 /* 0002 SPDX-FileCopyrightText: 2019 Daniel Mensinger <daniel@mensinger-ka.de> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "mintro/mesonoptions.h" 0010 0011 #include <QWidget> 0012 0013 namespace Ui 0014 { 0015 class MesonOptionBaseView; 0016 } 0017 0018 class QCheckBox; 0019 class QComboBox; 0020 class QLineEdit; 0021 class QPushButton; 0022 class QSpinBox; 0023 0024 class MesonOptionBaseView : public QWidget 0025 { 0026 Q_OBJECT 0027 0028 public: 0029 explicit MesonOptionBaseView(MesonOptionPtr option, QWidget* parent); 0030 virtual ~MesonOptionBaseView(); 0031 0032 int nameWidth(); 0033 void setMinNameWidth(int width); 0034 0035 virtual MesonOptionBase* option() = 0; 0036 virtual void updateInput() = 0; 0037 0038 void setInputWidget(QWidget* input); 0039 0040 static std::shared_ptr<MesonOptionBaseView> fromOption(MesonOptionPtr option, QWidget* parent); 0041 0042 protected: 0043 void setChanged(bool changed); 0044 0045 public Q_SLOTS: 0046 void reset(); 0047 0048 Q_SIGNALS: 0049 void configChanged(); 0050 0051 private: 0052 Ui::MesonOptionBaseView* m_ui = nullptr; 0053 }; 0054 0055 class MesonOptionArrayView : public MesonOptionBaseView 0056 { 0057 Q_OBJECT 0058 0059 public: 0060 MesonOptionArrayView(MesonOptionPtr option, QWidget* parent); 0061 0062 MesonOptionBase* option() override; 0063 void updateInput() override; 0064 0065 private: 0066 std::shared_ptr<MesonOptionArray> m_option; 0067 QPushButton* m_input = nullptr; 0068 }; 0069 0070 class MesonOptionBoolView : public MesonOptionBaseView 0071 { 0072 Q_OBJECT 0073 0074 public: 0075 MesonOptionBoolView(MesonOptionPtr option, QWidget* parent); 0076 0077 MesonOptionBase* option() override; 0078 void updateInput() override; 0079 0080 public Q_SLOTS: 0081 void updated(); 0082 0083 private: 0084 std::shared_ptr<MesonOptionBool> m_option; 0085 QCheckBox* m_input = nullptr; 0086 }; 0087 0088 class MesonOptionComboView : public MesonOptionBaseView 0089 { 0090 Q_OBJECT 0091 0092 public: 0093 MesonOptionComboView(MesonOptionPtr option, QWidget* parent); 0094 0095 MesonOptionBase* option() override; 0096 void updateInput() override; 0097 0098 public Q_SLOTS: 0099 void updated(); 0100 0101 private: 0102 std::shared_ptr<MesonOptionCombo> m_option; 0103 QComboBox* m_input = nullptr; 0104 }; 0105 0106 class MesonOptionIntegerView : public MesonOptionBaseView 0107 { 0108 Q_OBJECT 0109 0110 public: 0111 MesonOptionIntegerView(MesonOptionPtr option, QWidget* parent); 0112 0113 MesonOptionBase* option() override; 0114 void updateInput() override; 0115 0116 public Q_SLOTS: 0117 void updated(); 0118 0119 private: 0120 std::shared_ptr<MesonOptionInteger> m_option; 0121 QSpinBox* m_input = nullptr; 0122 }; 0123 0124 class MesonOptionStringView : public MesonOptionBaseView 0125 { 0126 Q_OBJECT 0127 0128 public: 0129 MesonOptionStringView(MesonOptionPtr option, QWidget* parent); 0130 0131 MesonOptionBase* option() override; 0132 void updateInput() override; 0133 0134 public Q_SLOTS: 0135 void updated(); 0136 0137 private: 0138 std::shared_ptr<MesonOptionString> m_option; 0139 QLineEdit* m_input = nullptr; 0140 };