summaryrefslogtreecommitdiffstats
path: root/src/sinkinputwidget.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/sinkinputwidget.h')
-rw-r--r--src/sinkinputwidget.h25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/sinkinputwidget.h b/src/sinkinputwidget.h
index 503c67c..b48a802 100644
--- a/src/sinkinputwidget.h
+++ b/src/sinkinputwidget.h
@@ -31,6 +31,7 @@ class SinkInputWidget : public StreamWidget {
public:
SinkInputWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x);
static SinkInputWidget* create(MainWindow* mainWindow);
+ ~SinkInputWidget(void);
void init(MainWindow* mainWindow);
@@ -40,7 +41,7 @@ public:
void setSinkIndex(uint32_t idx);
uint32_t sinkIndex();
virtual void executeVolumeUpdate();
- virtual void onDeviceChange();
+ virtual bool onDeviceChangePopup(GdkEventButton*);
virtual void onMuteToggleButton();
virtual void onKill();
@@ -48,6 +49,28 @@ private:
MainWindow *mpMainWindow;
uint32_t mSinkIndex;
+ void clearMenu();
+ void buildMenu();
+
+ Gtk::Menu menu;
+
+ struct SinkMenuItem {
+ SinkMenuItem(SinkInputWidget *w, const char *label, uint32_t i, bool active) :
+ widget(w),
+ menuItem(label),
+ index(i) {
+ menuItem.set_active(active);
+ menuItem.set_draw_as_radio(true);
+ menuItem.signal_toggled().connect(sigc::mem_fun(*this, &SinkMenuItem::onToggle));
+ }
+
+ SinkInputWidget *widget;
+ Gtk::CheckMenuItem menuItem;
+ uint32_t index;
+ void onToggle();
+ };
+
+ std::map<uint32_t, SinkMenuItem*> sinkMenuItems;
};
#endif