4 #include <boost/variant.hpp> 5 #include <pajlada/signals/signalholder.hpp> 13 #include <QPushButton> 76 void wheelEvent(QWheelEvent *event)
override 94 void addWidget(QWidget *widget);
95 void addLayout(QLayout *layout);
101 QCheckBox *addCheckbox(
const QString &text,
BoolSetting &setting,
102 bool inverse =
false, QString toolTipText = {});
103 ComboBox *addDropdown(
const QString &text,
const QStringList &items,
104 QString toolTipText = {});
105 ComboBox *addDropdown(
const QString &text,
const QStringList &items,
106 pajlada::Settings::Setting<QString> &setting,
107 bool editable =
false, QString toolTipText = {});
108 ColorButton *addColorButton(
const QString &text,
const QColor &color,
109 pajlada::Settings::Setting<QString> &setting,
110 QString toolTipText = {});
111 QSpinBox *addIntInput(
const QString &text,
IntSetting &setting,
int min,
112 int max,
int step, QString toolTipText = {});
113 void addNavigationSpacing();
115 template <
typename OnClick>
116 QPushButton *
makeButton(
const QString &text, OnClick onClick)
118 auto button =
new QPushButton(text);
119 this->groups_.back().widgets.push_back({button, {text}});
120 QObject::connect(button, &QPushButton::clicked, onClick);
124 template <
typename OnClick>
125 QPushButton *
addButton(
const QString &text, OnClick onClick)
127 auto button = makeButton(text, onClick);
128 auto layout =
new QHBoxLayout();
129 layout->addWidget(button);
130 layout->addStretch(1);
131 this->addLayout(layout);
135 template <
typename T>
137 const QString &text,
const QStringList &items,
138 pajlada::Settings::Setting<T> &setting,
139 std::function<boost::variant<int, QString>(T)> getValue,
140 std::function<T(
DropdownArgs)> setValue,
bool editable =
true,
141 QString toolTipText = {})
144 auto selected = getValue(setting.getValue());
146 if (selected.which() == 1)
149 if (!editable && !items2.contains(boost::get<QString>(selected)))
150 items2.insert(0, boost::get<QString>(selected));
153 auto combo = this->addDropdown(text, items2, toolTipText);
155 combo->setEditable(
true);
157 if (selected.which() == 0)
160 auto value = boost::get<int>(selected);
161 if (value >= 0 && value < items2.size())
162 combo->setCurrentIndex(value);
164 else if (selected.which() == 1)
167 combo->setEditText(boost::get<QString>(selected));
171 [getValue = std::move(getValue), combo](
const T &value,
auto) {
172 auto var = getValue(value);
173 if (var.which() == 0)
174 combo->setCurrentIndex(boost::get<int>(var));
177 combo->setCurrentText(boost::get<QString>(var));
178 combo->setEditText(boost::get<QString>(var));
181 this->managedConnections_);
184 combo, QOverload<const int>::of(&QComboBox::currentIndexChanged),
186 setValue = std::move(setValue)](
const int newIndex) {
187 setting = setValue(
DropdownArgs{combo->itemText(newIndex),
188 combo->currentIndex(), combo});
197 bool filterElements(
const QString &query);
205 void updateNavigationHighlighting();
206 void addToolTip(QWidget &widget, QString text)
const;
210 QStringList keywords;
216 QWidget *navigationLink{};
218 std::vector<Widget> widgets;
221 QScrollArea *contentScrollArea_;
222 QVBoxLayout *contentLayout_;
223 QVBoxLayout *navigationLayout_;
225 std::vector<Group> groups_;
226 pajlada::Signals::SignalHolder managedConnections_;
Application * getApp()
Definition: Application.cpp:623
SubtitleLabel(const QString &text)
Definition: GeneralPageView.hpp:43
Definition: GeneralPageView.hpp:72
Definition: SignalLabel.hpp:10
QString value
Definition: GeneralPageView.hpp:82
int index
Definition: GeneralPageView.hpp:83
Definition: Application.cpp:48
Definition: GeneralPageView.hpp:49
QPushButton * addButton(const QString &text, OnClick onClick)
Definition: GeneralPageView.hpp:125
void resizeEvent(QResizeEvent *ev) override
Definition: GeneralPageView.hpp:200
Definition: GeneralPageView.hpp:22
ComboBox * addDropdown(const QString &text, const QStringList &items, pajlada::Settings::Setting< T > &setting, std::function< boost::variant< int, QString >(T)> getValue, std::function< T(DropdownArgs)> setValue, bool editable=true, QString toolTipText={})
Definition: GeneralPageView.hpp:136
QComboBox * combobox
Definition: GeneralPageView.hpp:84
TitleLabel(const QString &text)
Definition: GeneralPageView.hpp:32
#define addSubtitle
Definition: GeneralPage.cpp:38
QPushButton * makeButton(const QString &text, OnClick onClick)
Definition: GeneralPageView.hpp:116
Definition: GeneralPageView.hpp:87
#define addTitle
Definition: GeneralPage.cpp:37
Definition: GeneralPageView.hpp:38
DescriptionLabel(const QString &text)
Definition: GeneralPageView.hpp:66
Definition: GeneralPageView.hpp:27
void forceLayoutChannelViews()
Definition: WindowManager.cpp:217
NavigationLabel(const QString &text)
Definition: GeneralPageView.hpp:54
QString name
Definition: Credentials.cpp:94
Definition: GeneralPageView.hpp:81
Definition: GeneralPageView.hpp:61
WindowManager *const windows
Definition: Application.hpp:85