summaryrefslogtreecommitdiff
path: root/src/libaudqt/prefs-builder.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/libaudqt/prefs-builder.cc')
-rw-r--r--src/libaudqt/prefs-builder.cc25
1 files changed, 18 insertions, 7 deletions
diff --git a/src/libaudqt/prefs-builder.cc b/src/libaudqt/prefs-builder.cc
index 33cd0e9..dece721 100644
--- a/src/libaudqt/prefs-builder.cc
+++ b/src/libaudqt/prefs-builder.cc
@@ -39,8 +39,8 @@ void prefs_populate (QBoxLayout * layout, ArrayRef<PreferencesWidget> widgets, c
QBoxLayout * parent_layout = nullptr;
QBoxLayout * parent_orig_layout = nullptr;
- BooleanWidget * parent_widget = nullptr;
- QButtonGroup * radio_btn_group = nullptr;
+ ParentWidget * parent_widget = nullptr;
+ QButtonGroup * radio_btn_group[2] = {nullptr, nullptr};
for (const PreferencesWidget & w : widgets)
{
@@ -89,8 +89,10 @@ void prefs_populate (QBoxLayout * layout, ArrayRef<PreferencesWidget> widgets, c
parent_widget = nullptr;
}
- if (radio_btn_group && w.type != PreferencesWidget::RadioButton)
- radio_btn_group = nullptr;
+ if (w.type != PreferencesWidget::RadioButton)
+ radio_btn_group[w.child] = nullptr;
+ if (! w.child)
+ radio_btn_group[true] = nullptr;
switch (w.type)
{
@@ -149,15 +151,24 @@ void prefs_populate (QBoxLayout * layout, ArrayRef<PreferencesWidget> widgets, c
break;
case PreferencesWidget::Entry:
+ /* TODO: implement file chooser */
+ case PreferencesWidget::FileEntry:
layout->addWidget (new StringWidget (& w, domain));
break;
case PreferencesWidget::RadioButton:
- if (! radio_btn_group)
- radio_btn_group = new QButtonGroup;
+ {
+ if (! radio_btn_group[w.child])
+ radio_btn_group[w.child] = new QButtonGroup;
+
+ auto radio_btn = new RadioButtonWidget (& w, domain, radio_btn_group[w.child]);
+ layout->addWidget (radio_btn);
+
+ if (! w.child)
+ parent_widget = radio_btn;
- layout->addWidget (new RadioButtonWidget (& w, domain, radio_btn_group));
break;
+ }
case PreferencesWidget::FontButton:
/* XXX: unimplemented */