summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorColin Guthrie <cguthrie@mandriva.org>2009-03-15 12:42:45 +0000
committerColin Guthrie <cguthrie@mandriva.org>2009-03-15 12:42:45 +0000
commit1c73564f66c68218d488726ff9455ac9a0901fc4 (patch)
treec4c50af05ca58e125fb470d111431e0f101b98ec /src
parent0fbc2b1466860b8794d497ac38b2beec5eb31fb9 (diff)
Split the minimalstreamwidget into it's own file
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am4
-rw-r--r--src/minimalstreamwidget.cc118
-rw-r--r--src/minimalstreamwidget.h57
-rw-r--r--src/pavucontrol.cc127
4 files changed, 179 insertions, 127 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index a990de3..7a1dc0a 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -24,7 +24,9 @@ glade_DATA=pavucontrol.glade
desktop_in_files=pavucontrol.desktop.in
desktop_DATA=$(desktop_in_files:.desktop.in=.desktop)
-pavucontrol_SOURCES=pavucontrol.cc i18n.h
+pavucontrol_SOURCES= \
+ minimalstreamwidget.h minimalstreamwidget.cc \
+ pavucontrol.cc i18n.h
pavucontrol_LDADD=$(AM_LDADD) $(GUILIBS_LIBS) $(PULSE_LIBS)
pavucontrol_CXXFLAGS=$(AM_CXXFLAGS) $(GUILIBS_CFLAGS) $(PULSE_CFLAGS) -DLOCALEDIR=\"$(localedir)\"
diff --git a/src/minimalstreamwidget.cc b/src/minimalstreamwidget.cc
new file mode 100644
index 0000000..63f9b02
--- /dev/null
+++ b/src/minimalstreamwidget.cc
@@ -0,0 +1,118 @@
+/***
+ 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 "minimalstreamwidget.h"
+
+/*** MinimalStreamWidget ***/
+MinimalStreamWidget::MinimalStreamWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) :
+ Gtk::VBox(cobject),
+ peakProgressBar(),
+ lastPeak(0),
+ updating(false),
+ volumeMeterEnabled(false) {
+
+ x->get_widget("channelsVBox", channelsVBox);
+ x->get_widget("nameLabel", nameLabel);
+ x->get_widget("boldNameLabel", boldNameLabel);
+ x->get_widget("streamToggle", streamToggleButton);
+ x->get_widget("iconImage", iconImage);
+
+ peakProgressBar.set_size_request(-1, 10);
+ channelsVBox->pack_end(peakProgressBar, false, false);
+
+ streamToggleButton->set_active(false);
+ streamToggleButton->signal_clicked().connect(sigc::mem_fun(*this, &MinimalStreamWidget::onStreamToggleButton));
+ menu.signal_deactivate().connect(sigc::mem_fun(*this, &MinimalStreamWidget::onMenuDeactivated));
+
+ peakProgressBar.hide();
+}
+
+void MinimalStreamWidget::prepareMenu(void) {
+}
+
+void MinimalStreamWidget::onMenuDeactivated(void) {
+ streamToggleButton->set_active(false);
+}
+
+void MinimalStreamWidget::popupMenuPosition(int& x, int& y, bool& push_in G_GNUC_UNUSED) {
+ Gtk::Requisition r;
+
+ streamToggleButton->get_window()->get_origin(x, y);
+ r = menu.size_request();
+
+ /* Align the right side of the menu with the right side of the togglebutton */
+ x += streamToggleButton->get_allocation().get_x();
+ x += streamToggleButton->get_allocation().get_width();
+ x -= r.width;
+
+ /* Align the top of the menu with the buttom of the togglebutton */
+ y += streamToggleButton->get_allocation().get_y();
+ y += streamToggleButton->get_allocation().get_height();
+}
+
+void MinimalStreamWidget::onStreamToggleButton(void) {
+ if (streamToggleButton->get_active()) {
+ prepareMenu();
+ menu.popup(sigc::mem_fun(*this, &MinimalStreamWidget::popupMenuPosition), 0, gtk_get_current_event_time());
+ }
+}
+
+bool MinimalStreamWidget::on_button_press_event (GdkEventButton* event) {
+ if (Gtk::VBox::on_button_press_event(event))
+ return TRUE;
+
+ if (event->type == GDK_BUTTON_PRESS && event->button == 3) {
+ prepareMenu();
+ menu.popup(0, event->time);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+#define DECAY_STEP .04
+
+void MinimalStreamWidget::updatePeak(double v) {
+
+ if (lastPeak >= DECAY_STEP)
+ if (v < lastPeak - DECAY_STEP)
+ v = lastPeak - DECAY_STEP;
+
+ lastPeak = v;
+
+ if (v >= 0) {
+ peakProgressBar.set_sensitive(TRUE);
+ peakProgressBar.set_fraction(v);
+ } else {
+ peakProgressBar.set_sensitive(FALSE);
+ peakProgressBar.set_fraction(0);
+ }
+
+ enableVolumeMeter();
+}
+
+void MinimalStreamWidget::enableVolumeMeter() {
+ if (volumeMeterEnabled)
+ return;
+
+ volumeMeterEnabled = true;
+ peakProgressBar.show();
+}
+
diff --git a/src/minimalstreamwidget.h b/src/minimalstreamwidget.h
new file mode 100644
index 0000000..81fd44c
--- /dev/null
+++ b/src/minimalstreamwidget.h
@@ -0,0 +1,57 @@
+/***
+ 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/>.
+***/
+
+#ifndef minimalstreamwidget_h
+#define minimalstreamwidget_h
+
+#include <gtkmm.h>
+#include <libglademm.h>
+
+class MinimalStreamWidget : public Gtk::VBox {
+public:
+ MinimalStreamWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x);
+
+ Gtk::VBox *channelsVBox;
+ Gtk::Label *nameLabel, *boldNameLabel;
+ Gtk::ToggleButton *streamToggleButton;
+ Gtk::Menu menu;
+ Gtk::Image *iconImage;
+ Gtk::ProgressBar peakProgressBar;
+ double lastPeak;
+
+ bool updating;
+
+ void onStreamToggleButton();
+ void onMenuDeactivated();
+ void popupMenuPosition(int& x, int& y, bool& push_in);
+
+ virtual void prepareMenu(void);
+
+ bool volumeMeterEnabled;
+ void enableVolumeMeter();
+ void updatePeak(double v);
+
+ Glib::ustring beepDevice;
+
+protected:
+ virtual bool on_button_press_event(GdkEventButton* event);
+};
+
+#endif
diff --git a/src/pavucontrol.cc b/src/pavucontrol.cc
index 7fef582..a4c0f31 100644
--- a/src/pavucontrol.cc
+++ b/src/pavucontrol.cc
@@ -36,6 +36,7 @@
#include <pulse/ext-stream-restore.h>
#include "i18n.h"
+#include "minimalstreamwidget.h"
#ifndef GLADE_FILE
#define GLADE_FILE "pavucontrol.glade"
@@ -98,36 +99,6 @@ public:
virtual void set_sensitive(bool enabled);
};
-class MinimalStreamWidget : public Gtk::VBox {
-public:
- MinimalStreamWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x);
-
- Gtk::VBox *channelsVBox;
- Gtk::Label *nameLabel, *boldNameLabel;
- Gtk::ToggleButton *streamToggleButton;
- Gtk::Menu menu;
- Gtk::Image *iconImage;
- Gtk::ProgressBar peakProgressBar;
- double lastPeak;
-
- bool updating;
-
- void onStreamToggleButton();
- void onMenuDeactivated();
- void popupMenuPosition(int& x, int& y, bool& push_in);
-
- virtual void prepareMenu(void);
-
- bool volumeMeterEnabled;
- void enableVolumeMeter();
- void updatePeak(double v);
-
- Glib::ustring beepDevice;
-
-protected:
- virtual bool on_button_press_event(GdkEventButton* event);
-};
-
class StreamWidget : public MinimalStreamWidget {
public:
StreamWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x);
@@ -549,102 +520,6 @@ void CardWidget::onProfileChange() {
}
-/*** MinimalStreamWidget ***/
-MinimalStreamWidget::MinimalStreamWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) :
- Gtk::VBox(cobject),
- peakProgressBar(),
- lastPeak(0),
- updating(false),
- volumeMeterEnabled(false) {
-
- x->get_widget("channelsVBox", channelsVBox);
- x->get_widget("nameLabel", nameLabel);
- x->get_widget("boldNameLabel", boldNameLabel);
- x->get_widget("streamToggle", streamToggleButton);
- x->get_widget("iconImage", iconImage);
-
- peakProgressBar.set_size_request(-1, 10);
- channelsVBox->pack_end(peakProgressBar, false, false);
-
- streamToggleButton->set_active(false);
- streamToggleButton->signal_clicked().connect(sigc::mem_fun(*this, &MinimalStreamWidget::onStreamToggleButton));
- menu.signal_deactivate().connect(sigc::mem_fun(*this, &MinimalStreamWidget::onMenuDeactivated));
-
- peakProgressBar.hide();
-}
-
-void MinimalStreamWidget::prepareMenu(void) {
-}
-
-void MinimalStreamWidget::onMenuDeactivated(void) {
- streamToggleButton->set_active(false);
-}
-
-void MinimalStreamWidget::popupMenuPosition(int& x, int& y, bool& push_in G_GNUC_UNUSED) {
- Gtk::Requisition r;
-
- streamToggleButton->get_window()->get_origin(x, y);
- r = menu.size_request();
-
- /* Align the right side of the menu with the right side of the togglebutton */
- x += streamToggleButton->get_allocation().get_x();
- x += streamToggleButton->get_allocation().get_width();
- x -= r.width;
-
- /* Align the top of the menu with the buttom of the togglebutton */
- y += streamToggleButton->get_allocation().get_y();
- y += streamToggleButton->get_allocation().get_height();
-}
-
-void MinimalStreamWidget::onStreamToggleButton(void) {
- if (streamToggleButton->get_active()) {
- prepareMenu();
- menu.popup(sigc::mem_fun(*this, &MinimalStreamWidget::popupMenuPosition), 0, gtk_get_current_event_time());
- }
-}
-
-bool MinimalStreamWidget::on_button_press_event (GdkEventButton* event) {
- if (Gtk::VBox::on_button_press_event(event))
- return TRUE;
-
- if (event->type == GDK_BUTTON_PRESS && event->button == 3) {
- prepareMenu();
- menu.popup(0, event->time);
- return TRUE;
- }
-
- return FALSE;
-}
-
-#define DECAY_STEP .04
-
-void MinimalStreamWidget::updatePeak(double v) {
-
- if (lastPeak >= DECAY_STEP)
- if (v < lastPeak - DECAY_STEP)
- v = lastPeak - DECAY_STEP;
-
- lastPeak = v;
-
- if (v >= 0) {
- peakProgressBar.set_sensitive(TRUE);
- peakProgressBar.set_fraction(v);
- } else {
- peakProgressBar.set_sensitive(FALSE);
- peakProgressBar.set_fraction(0);
- }
-
- enableVolumeMeter();
-}
-
-void MinimalStreamWidget::enableVolumeMeter() {
- if (volumeMeterEnabled)
- return;
-
- volumeMeterEnabled = true;
- peakProgressBar.show();
-}
-
/*** StreamWidget ***/
StreamWidget::StreamWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) :