summaryrefslogtreecommitdiffstats
path: root/SinkWindow.cc
diff options
context:
space:
mode:
Diffstat (limited to 'SinkWindow.cc')
-rw-r--r--SinkWindow.cc22
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);
+}
+
+