summaryrefslogtreecommitdiffstats
path: root/src/pavucontrol.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/pavucontrol.cc')
-rw-r--r--src/pavucontrol.cc127
1 files changed, 1 insertions, 126 deletions
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) :