diff options
Diffstat (limited to 'src/libaudqt/prefs-builder.cc')
-rw-r--r-- | src/libaudqt/prefs-builder.cc | 25 |
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 */ |