diff options
author | Colin Guthrie <cguthrie@mandriva.org> | 2009-06-27 18:14:05 +0100 |
---|---|---|
committer | Colin Guthrie <cguthrie@mandriva.org> | 2009-06-27 18:14:05 +0100 |
commit | 159609135f34c2791eee7f2d6576e50fff80fa6a (patch) | |
tree | 97e19ae990125a289394a04e88d0e668524b6713 /src/devicewidget.cc | |
parent | 7b3083df574d15941449ae8532fef472aedc1ae6 (diff) |
Add support for changing ports.
This commit adds a combo box for selecting ports.
Overall this implementation could have taken two paths:
* Implement port selection as combo box.
* Implement port selection as a button.
I went for the first option as is done in selecting card profiles over the
second method used for selecting devices for streams. This seems more like
how a config option should be presented as opposed to a runtime type thing.
Diffstat (limited to 'src/devicewidget.cc')
-rw-r--r-- | src/devicewidget.cc | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/devicewidget.cc b/src/devicewidget.cc index e419849..2b30b83 100644 --- a/src/devicewidget.cc +++ b/src/devicewidget.cc @@ -32,10 +32,18 @@ DeviceWidget::DeviceWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Gl x->get_widget("lockToggleButton", lockToggleButton); x->get_widget("muteToggleButton", muteToggleButton); x->get_widget("defaultToggleButton", defaultToggleButton); + x->get_widget("portSelect", portSelect); + x->get_widget("portList", portList); muteToggleButton->signal_clicked().connect(sigc::mem_fun(*this, &DeviceWidget::onMuteToggleButton)); defaultToggleButton->signal_clicked().connect(sigc::mem_fun(*this, &DeviceWidget::onDefaultToggleButton)); + treeModel = Gtk::ListStore::create(portModel); + portList->set_model(treeModel); + portList->pack_start(portModel.desc); + + portList->signal_changed().connect( sigc::mem_fun(*this, &DeviceWidget::onPortChange)); + for (unsigned i = 0; i < PA_CHANNELS_MAX; i++) channelWidgets[i] = NULL; } @@ -121,3 +129,27 @@ void DeviceWidget::setSteps(unsigned n) { for (int i = 0; i < channelMap.channels; i++) channelWidgets[channelMap.channels-1]->setSteps(n); } + +void DeviceWidget::prepareMenu() { + int idx = 0; + int active_idx = -1; + + treeModel->clear(); + /* Fill the ComboBox's Tree Model */ + for (uint32_t i = 0; i < ports.size(); ++i) { + Gtk::TreeModel::Row row = *(treeModel->append()); + row[portModel.name] = ports[i].first; + row[portModel.desc] = ports[i].second; + if (ports[i].first == activePort) + active_idx = idx; + idx++; + } + + if (active_idx >= 0) + portList->set_active(active_idx); + + if (ports.size() > 0) + portSelect->show(); + else + portSelect->hide(); +} |