diff options
Diffstat (limited to 'SinkWindow.cc')
-rw-r--r-- | SinkWindow.cc | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/SinkWindow.cc b/SinkWindow.cc index 5ecd27d..68d3ec4 100644 --- a/SinkWindow.cc +++ b/SinkWindow.cc @@ -18,6 +18,8 @@ SinkWindow::SinkWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade: closeButton(NULL), toMonitorSourceButton(NULL), toOwnerModuleButton(NULL), + volumeResetButton(NULL), + volumeMuteButton(NULL), volumeScale(NULL) { refGlade->get_widget("nameLabel", nameLabel); @@ -32,10 +34,15 @@ SinkWindow::SinkWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade: refGlade->get_widget("toOwnerModuleButton", toOwnerModuleButton); refGlade->get_widget("volumeLabel", volumeLabel); refGlade->get_widget("volumeScale", volumeScale); + refGlade->get_widget("volumeResetButton", volumeResetButton); + refGlade->get_widget("volumeMuteButton", volumeMuteButton); closeButton->signal_clicked().connect(sigc::mem_fun(*this, &SinkWindow::onCloseButton)); toMonitorSourceButton->signal_clicked().connect(sigc::mem_fun(*this, &SinkWindow::onToMonitorSourceButton)); toOwnerModuleButton->signal_clicked().connect(sigc::mem_fun(*this, &SinkWindow::onToOwnerModuleButton)); + volumeScale->signal_value_changed().connect(sigc::mem_fun(*this, &SinkWindow::onVolumeScaleValueChanged)); + volumeResetButton->signal_clicked().connect(sigc::mem_fun(*this, &SinkWindow::onVolumeResetButton)); + volumeMuteButton->signal_clicked().connect(sigc::mem_fun(*this, &SinkWindow::onVolumeMuteButton)); } SinkWindow* SinkWindow::create() { @@ -71,6 +78,7 @@ void SinkWindow::updateInfo(const SinkInfo &i) { monitor_source = i.monitor_source; owner_module = i.owner_module; + index = i.index; toOwnerModuleButton->set_sensitive(owner_module != (uint32_t) -1); } @@ -87,3 +95,17 @@ void SinkWindow::onToOwnerModuleButton() { if (owner_module != (uint32_t) -1) serverInfoManager->showModuleWindow(owner_module); } + +void SinkWindow::onVolumeScaleValueChanged() { + serverInfoManager->setSinkVolume(index, (uint32_t) ((volumeScale->get_value()*0x100)/100)); +} + +void SinkWindow::onVolumeResetButton() { + serverInfoManager->setSinkVolume(index, PA_VOLUME_NORM); +} + +void SinkWindow::onVolumeMuteButton() { + serverInfoManager->setSinkVolume(index, PA_VOLUME_MUTE); +} + + |