summaryrefslogtreecommitdiffstats
path: root/src/SinkInputWindow.cc
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2004-08-16 19:55:43 +0000
committerLennart Poettering <lennart@poettering.net>2004-08-16 19:55:43 +0000
commit7b738b897f6e523024faadef9c1efb6a9aa32f59 (patch)
treebf003526bb2e10732f8c8eea26981714e35fe872 /src/SinkInputWindow.cc
parentb3f41bd9945792ac7869db78fd75983546222622 (diff)
add sink input/source output support (currently broken)
git-svn-id: file:///home/lennart/svn/public/paman/trunk@12 cdefa82f-4ce1-0310-97f5-ab6066f37c3c
Diffstat (limited to 'src/SinkInputWindow.cc')
-rw-r--r--src/SinkInputWindow.cc102
1 files changed, 61 insertions, 41 deletions
diff --git a/src/SinkInputWindow.cc b/src/SinkInputWindow.cc
index 68d3ec4..7baa13c 100644
--- a/src/SinkInputWindow.cc
+++ b/src/SinkInputWindow.cc
@@ -1,111 +1,131 @@
#include <iostream>
#include "paman.hh"
-#include "SinkWindow.hh"
+#include "SinkInputWindow.hh"
-#define GLADE_NAME "sinkWindow"
+#define GLADE_NAME "sinkInputWindow"
-SinkWindow::SinkWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& refGlade) :
+SinkInputWindow::SinkInputWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& refGlade) :
Gtk::Window(cobject),
nameLabel(NULL),
- descriptionLabel(NULL),
indexLabel(NULL),
sampleTypeLabel(NULL),
latencyLabel(NULL),
+ sinkLabel(NULL),
+ clientLabel(NULL),
ownerModuleLabel(NULL),
- monitorSourceLabel(NULL),
volumeLabel(NULL),
closeButton(NULL),
- toMonitorSourceButton(NULL),
toOwnerModuleButton(NULL),
+ toClientButton(NULL),
+ toSinkButton(NULL),
volumeResetButton(NULL),
volumeMuteButton(NULL),
volumeScale(NULL) {
refGlade->get_widget("nameLabel", nameLabel);
- refGlade->get_widget("descriptionLabel", descriptionLabel);
refGlade->get_widget("indexLabel", indexLabel);
refGlade->get_widget("sampleTypeLabel", sampleTypeLabel);
refGlade->get_widget("latencyLabel", latencyLabel);
+ refGlade->get_widget("sinkLabel", sinkLabel);
+ refGlade->get_widget("clientLabel", clientLabel);
refGlade->get_widget("ownerModuleLabel", ownerModuleLabel);
- refGlade->get_widget("monitorSourceLabel", monitorSourceLabel);
refGlade->get_widget("closeButton", closeButton);
- refGlade->get_widget("toMonitorSourceButton", toMonitorSourceButton);
refGlade->get_widget("toOwnerModuleButton", toOwnerModuleButton);
+ refGlade->get_widget("toClientButton", toClientButton);
+ refGlade->get_widget("toSinkButton", toSinkButton);
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));
+ closeButton->signal_clicked().connect(sigc::mem_fun(*this, &SinkInputWindow::onCloseButton));
+ toOwnerModuleButton->signal_clicked().connect(sigc::mem_fun(*this, &SinkInputWindow::onToOwnerModuleButton));
+ toClientButton->signal_clicked().connect(sigc::mem_fun(*this, &SinkInputWindow::onToClientButton));
+ toSinkButton->signal_clicked().connect(sigc::mem_fun(*this, &SinkInputWindow::onToSinkButton));
+ volumeScale->signal_value_changed().connect(sigc::mem_fun(*this, &SinkInputWindow::onVolumeScaleValueChanged));
+ volumeResetButton->signal_clicked().connect(sigc::mem_fun(*this, &SinkInputWindow::onVolumeResetButton));
+ volumeMuteButton->signal_clicked().connect(sigc::mem_fun(*this, &SinkInputWindow::onVolumeMuteButton));
}
-SinkWindow* SinkWindow::create() {
- SinkWindow *w = NULL;
+SinkInputWindow* SinkInputWindow::create() {
+ SinkInputWindow *w = NULL;
Glib::RefPtr<Gnome::Glade::Xml> refXml = Gnome::Glade::Xml::create(GLADE_FILE, GLADE_NAME);
refXml->get_widget_derived(GLADE_NAME, w);
return w;
}
-void SinkWindow::updateInfo(const SinkInfo &i) {
+void SinkInputWindow::updateInfo(const SinkInputInfo &i) {
char t[20], ss[PA_SAMPLE_SNPRINT_MAX_LENGTH];
nameLabel->set_text(i.name);
- descriptionLabel->set_text(i.description);
snprintf(t, sizeof(t), "#%u", i.index);
indexLabel->set_text(t);
pa_sample_snprint(ss, sizeof(ss), &i.sample_spec);
sampleTypeLabel->set_text(ss);
- snprintf(t, sizeof(t), "#%u", i.owner_module);
- ownerModuleLabel->set_text(t);
+
+ if (i.owner_module == PA_INVALID_INDEX)
+ ownerModuleLabel->set_markup("<i>n/a</i>");
+ else {
+ snprintf(t, sizeof(t), "#%u", i.owner_module);
+ ownerModuleLabel->set_text(t);
+ }
snprintf(t, sizeof(t), "%u usec", i.latency);
latencyLabel->set_text(t);
- SourceInfo *source = serverInfoManager->getSourceInfo(i.monitor_source);
- monitorSourceLabel->set_text(source->name);
+ SinkInfo *sink = serverInfoManager->getSinkInfo(i.sink);
+ sinkLabel->set_text(sink->name);
+
+ if (i.client == PA_INVALID_INDEX)
+ clientLabel->set_markup("<i>n/a</i>");
+ else {
+ ClientInfo *client = serverInfoManager->getClientInfo(i.client);
+ clientLabel->set_text(client->name);
+ }
- volumeScale->set_value(((double) i.volume / 0x100) * 100);
- snprintf(t, sizeof(t), "%u%%", (i.volume*100)/0x100);
+ volumeScale->set_value((double) i.volume * 100 / 0x100);
+ snprintf(t, sizeof(t), "%u%%", (i.volume * 100)/ 0x100);
volumeLabel->set_text(t);
- set_title("Sink: "+i.name);
-
- monitor_source = i.monitor_source;
+ set_title("Sink Input: "+i.name);
+
+ this->sink = i.sink;
+ client = i.client;
owner_module = i.owner_module;
index = i.index;
- toOwnerModuleButton->set_sensitive(owner_module != (uint32_t) -1);
+ toOwnerModuleButton->set_sensitive(owner_module != PA_INVALID_INDEX);
+ toClientButton->set_sensitive(client != PA_INVALID_INDEX);
}
-void SinkWindow::onCloseButton() {
+void SinkInputWindow::onCloseButton() {
hide();
}
-void SinkWindow::onToMonitorSourceButton() {
- serverInfoManager->showSourceWindow(monitor_source);
+void SinkInputWindow::onToOwnerModuleButton() {
+ if (owner_module != PA_INVALID_INDEX)
+ serverInfoManager->showModuleWindow(owner_module);
}
-void SinkWindow::onToOwnerModuleButton() {
- if (owner_module != (uint32_t) -1)
- serverInfoManager->showModuleWindow(owner_module);
+void SinkInputWindow::onToSinkButton() {
+ serverInfoManager->showSinkWindow(sink);
+}
+
+void SinkInputWindow::onToClientButton() {
+ serverInfoManager->showClientWindow(client);
}
-void SinkWindow::onVolumeScaleValueChanged() {
- serverInfoManager->setSinkVolume(index, (uint32_t) ((volumeScale->get_value()*0x100)/100));
+void SinkInputWindow::onVolumeScaleValueChanged() {
+ serverInfoManager->setSinkInputVolume(index, (uint32_t) ((volumeScale->get_value()*0x100)/100));
}
-void SinkWindow::onVolumeResetButton() {
- serverInfoManager->setSinkVolume(index, PA_VOLUME_NORM);
+void SinkInputWindow::onVolumeResetButton() {
+ serverInfoManager->setSinkInputVolume(index, PA_VOLUME_NORM);
}
-void SinkWindow::onVolumeMuteButton() {
- serverInfoManager->setSinkVolume(index, PA_VOLUME_MUTE);
+void SinkInputWindow::onVolumeMuteButton() {
+ serverInfoManager->setSinkInputVolume(index, PA_VOLUME_MUTE);
}