summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorColin Guthrie <cguthrie@mandriva.org>2009-03-15 13:02:56 +0000
committerColin Guthrie <cguthrie@mandriva.org>2009-03-15 13:02:56 +0000
commite1e452ac2209a343feea10a358668a75c5c5e289 (patch)
treee725fed0041abaf2f2336bdb5a66df67c9b072bc /src
parentf6af4f80b8e4760bdfdc8ca66509d8667bb6f41b (diff)
Split out streamwidget into it's own files.
Also correct the location of the argument default value specification (it should be in prototype not implementation)
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am2
-rw-r--r--src/pavucontrol.cc77
-rw-r--r--src/streamwidget.cc99
-rw-r--r--src/streamwidget.h6
4 files changed, 105 insertions, 79 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index d0aea0f..5df4619 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -27,7 +27,7 @@ desktop_DATA=$(desktop_in_files:.desktop.in=.desktop)
pavucontrol_SOURCES= \
minimalstreamwidget.h minimalstreamwidget.cc \
channelwidget.h channelwidget.cc \
- streamwidget.h \
+ streamwidget.h streamwidget.cc \
pavucontrol.cc i18n.h
pavucontrol_LDADD=$(AM_LDADD) $(GUILIBS_LIBS) $(PULSE_LIBS)
diff --git a/src/pavucontrol.cc b/src/pavucontrol.cc
index a88f5d5..597591e 100644
--- a/src/pavucontrol.cc
+++ b/src/pavucontrol.cc
@@ -73,7 +73,6 @@ enum SourceType{
SOURCE_MONITOR,
};
-class StreamWidget;
class MainWindow;
class CardWidget : public Gtk::VBox {
@@ -386,82 +385,6 @@ void CardWidget::onProfileChange() {
}
-/*** StreamWidget ***/
-
-StreamWidget::StreamWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) :
- MinimalStreamWidget(cobject, x) {
-
- x->get_widget("lockToggleButton", lockToggleButton);
- x->get_widget("muteToggleButton", muteToggleButton);
-
- muteToggleButton->signal_clicked().connect(sigc::mem_fun(*this, &StreamWidget::onMuteToggleButton));
-
- for (unsigned i = 0; i < PA_CHANNELS_MAX; i++)
- channelWidgets[i] = NULL;
-}
-
-void StreamWidget::setChannelMap(const pa_channel_map &m, bool can_decibel) {
- channelMap = m;
-
- for (int i = 0; i < m.channels; i++) {
- ChannelWidget *cw = channelWidgets[i] = ChannelWidget::create();
- cw->beepDevice = beepDevice;
- cw->channel = i;
- cw->can_decibel = can_decibel;
- cw->streamWidget = this;
- char text[64];
- snprintf(text, sizeof(text), "<b>%s</b>", pa_channel_position_to_pretty_string(m.map[i]));
- cw->channelLabel->set_markup(text);
- channelsVBox->pack_start(*cw, false, false, 0);
- }
-
- lockToggleButton->set_sensitive(m.channels > 1);
-}
-
-void StreamWidget::setVolume(const pa_cvolume &v, bool force = false) {
- g_assert(v.channels == channelMap.channels);
-
- volume = v;
-
- if (timeoutConnection.empty() || force) { /* do not update the volume when a volume change is still in flux */
- for (int i = 0; i < volume.channels; i++)
- channelWidgets[i]->setVolume(volume.values[i]);
- }
-}
-
-void StreamWidget::updateChannelVolume(int channel, pa_volume_t v) {
- pa_cvolume n;
- g_assert(channel < volume.channels);
-
- n = volume;
- if (lockToggleButton->get_active()) {
- for (int i = 0; i < n.channels; i++)
- n.values[i] = v;
- } else
- n.values[channel] = v;
-
- setVolume(n, true);
-
- if (timeoutConnection.empty())
- timeoutConnection = Glib::signal_timeout().connect(sigc::mem_fun(*this, &StreamWidget::timeoutEvent), 100);
-}
-
-void StreamWidget::onMuteToggleButton() {
-
- lockToggleButton->set_sensitive(!muteToggleButton->get_active());
-
- for (int i = 0; i < channelMap.channels; i++)
- channelWidgets[i]->set_sensitive(!muteToggleButton->get_active());
-}
-
-bool StreamWidget::timeoutEvent() {
- executeVolumeUpdate();
- return false;
-}
-
-void StreamWidget::executeVolumeUpdate() {
-}
-
SinkWidget::SinkWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) :
StreamWidget(cobject, x),
defaultMenuItem("_Default", true){
diff --git a/src/streamwidget.cc b/src/streamwidget.cc
new file mode 100644
index 0000000..647e643
--- /dev/null
+++ b/src/streamwidget.cc
@@ -0,0 +1,99 @@
+/***
+ This file is part of pavucontrol.
+
+ Copyright 2006-2008 Lennart Poettering
+ Copyright 2009 Colin Guthrie
+
+ pavucontrol is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ pavucontrol is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with pavucontrol. If not, see <http://www.gnu.org/licenses/>.
+***/
+
+#include "streamwidget.h"
+#include "channelwidget.h"
+
+/*** StreamWidget ***/
+
+StreamWidget::StreamWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) :
+ MinimalStreamWidget(cobject, x) {
+
+ x->get_widget("lockToggleButton", lockToggleButton);
+ x->get_widget("muteToggleButton", muteToggleButton);
+
+ muteToggleButton->signal_clicked().connect(sigc::mem_fun(*this, &StreamWidget::onMuteToggleButton));
+
+ for (unsigned i = 0; i < PA_CHANNELS_MAX; i++)
+ channelWidgets[i] = NULL;
+}
+
+void StreamWidget::setChannelMap(const pa_channel_map &m, bool can_decibel) {
+ channelMap = m;
+
+ for (int i = 0; i < m.channels; i++) {
+ ChannelWidget *cw = channelWidgets[i] = ChannelWidget::create();
+ cw->beepDevice = beepDevice;
+ cw->channel = i;
+ cw->can_decibel = can_decibel;
+ cw->streamWidget = this;
+ char text[64];
+ snprintf(text, sizeof(text), "<b>%s</b>", pa_channel_position_to_pretty_string(m.map[i]));
+ cw->channelLabel->set_markup(text);
+ channelsVBox->pack_start(*cw, false, false, 0);
+ }
+
+ lockToggleButton->set_sensitive(m.channels > 1);
+}
+
+void StreamWidget::setVolume(const pa_cvolume &v, bool force) {
+ g_assert(v.channels == channelMap.channels);
+
+ volume = v;
+
+ if (timeoutConnection.empty() || force) { /* do not update the volume when a volume change is still in flux */
+ for (int i = 0; i < volume.channels; i++)
+ channelWidgets[i]->setVolume(volume.values[i]);
+ }
+}
+
+void StreamWidget::updateChannelVolume(int channel, pa_volume_t v) {
+ pa_cvolume n;
+ g_assert(channel < volume.channels);
+
+ n = volume;
+ if (lockToggleButton->get_active()) {
+ for (int i = 0; i < n.channels; i++)
+ n.values[i] = v;
+ } else
+ n.values[channel] = v;
+
+ setVolume(n, true);
+
+ if (timeoutConnection.empty())
+ timeoutConnection = Glib::signal_timeout().connect(sigc::mem_fun(*this, &StreamWidget::timeoutEvent), 100);
+}
+
+void StreamWidget::onMuteToggleButton() {
+
+ lockToggleButton->set_sensitive(!muteToggleButton->get_active());
+
+ for (int i = 0; i < channelMap.channels; i++)
+ channelWidgets[i]->set_sensitive(!muteToggleButton->get_active());
+}
+
+bool StreamWidget::timeoutEvent() {
+ executeVolumeUpdate();
+ return false;
+}
+
+void StreamWidget::executeVolumeUpdate() {
+}
+
diff --git a/src/streamwidget.h b/src/streamwidget.h
index b6f49c8..da4c8b8 100644
--- a/src/streamwidget.h
+++ b/src/streamwidget.h
@@ -28,14 +28,18 @@
#include <gtkmm.h>
#include <libglademm.h>
+#include <pulse/pulseaudio.h>
+
#include "minimalstreamwidget.h"
+class ChannelWidget;
+
class StreamWidget : public MinimalStreamWidget {
public:
StreamWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x);
void setChannelMap(const pa_channel_map &m, bool can_decibel);
- void setVolume(const pa_cvolume &volume, bool force);
+ void setVolume(const pa_cvolume &volume, bool force = false);
virtual void updateChannelVolume(int channel, pa_volume_t v);
Gtk::ToggleButton *lockToggleButton, *muteToggleButton;