From f8b436993e3ea7059984538cd65d50bd50671fe6 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sun, 15 Aug 2004 11:26:05 +0000 Subject: Implement volume changing git-svn-id: file:///home/lennart/svn/public/paman/trunk@7 cdefa82f-4ce1-0310-97f5-ab6066f37c3c --- SinkWindow.cc | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'SinkWindow.cc') 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::RefPtrget_widget("nameLabel", nameLabel); @@ -32,10 +34,15 @@ SinkWindow::SinkWindow(BaseObjectType* cobject, const Glib::RefPtrget_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); +} + + -- cgit