summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorColin Guthrie <cguthrie@mandriva.org>2009-03-16 20:18:01 +0000
committerColin Guthrie <cguthrie@mandriva.org>2009-06-17 08:54:11 +0100
commitd617c39a0814401714df6bd983579c204ab49d82 (patch)
tree9aec58841b7412264d9a1d537e303099958d7a3a /src
parent7b7a12f1d2e6e02b11b7649b394d2122eec57813 (diff)
Set the mainwindow pointer via an init() method rather than directly via public member variable.
This allows us to perform other general initialisation task (such as setting the tree model on the device combo)
Diffstat (limited to 'src')
-rw-r--r--src/mainwindow.cc6
-rw-r--r--src/sinkinputwidget.cc14
-rw-r--r--src/sinkinputwidget.h9
-rw-r--r--src/sourceoutputwidget.cc14
-rw-r--r--src/sourceoutputwidget.h9
5 files changed, 36 insertions, 16 deletions
diff --git a/src/mainwindow.cc b/src/mainwindow.cc
index 1dcabb4..97ff044 100644
--- a/src/mainwindow.cc
+++ b/src/mainwindow.cc
@@ -469,12 +469,11 @@ void MainWindow::updateSinkInput(const pa_sink_input_info &info) {
if (sinkInputWidgets.count(info.index))
w = sinkInputWidgets[info.index];
else {
- sinkInputWidgets[info.index] = w = SinkInputWidget::create();
+ sinkInputWidgets[info.index] = w = SinkInputWidget::create(this);
w->setChannelMap(info.channel_map, true);
streamsVBox->pack_start(*w, false, false, 0);
w->index = info.index;
w->clientIndex = info.client;
- w->mainWindow = this;
is_new = true;
if (pa_context_get_server_protocol_version(get_context()) >= 13)
@@ -521,11 +520,10 @@ void MainWindow::updateSourceOutput(const pa_source_output_info &info) {
if (sourceOutputWidgets.count(info.index))
w = sourceOutputWidgets[info.index];
else {
- sourceOutputWidgets[info.index] = w = SourceOutputWidget::create();
+ sourceOutputWidgets[info.index] = w = SourceOutputWidget::create(this);
recsVBox->pack_start(*w, false, false, 0);
w->index = info.index;
w->clientIndex = info.client;
- w->mainWindow = this;
}
w->updating = true;
diff --git a/src/sinkinputwidget.cc b/src/sinkinputwidget.cc
index 0c9054f..ec5c55d 100644
--- a/src/sinkinputwidget.cc
+++ b/src/sinkinputwidget.cc
@@ -30,9 +30,9 @@
SinkInputWidget::SinkInputWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) :
StreamWidget(cobject, x),
- mainWindow(NULL),
titleMenuItem(_("_Move Stream..."), true),
- killMenuItem(_("_Terminate Stream"), true) {
+ killMenuItem(_("_Terminate Stream"), true),
+ mpMainWindow(NULL) {
directionLabel->set_label(_("<i>Playing on </i> "));
@@ -45,14 +45,20 @@ SinkInputWidget::SinkInputWidget(BaseObjectType* cobject, const Glib::RefPtr<Gno
killMenuItem.signal_activate().connect(sigc::mem_fun(*this, &SinkInputWidget::onKill));
}
+void SinkInputWidget::init(MainWindow* mainWindow) {
+ mpMainWindow = mainWindow;
+ deviceCombo->set_model(mpMainWindow->sinkTree);
+}
+
SinkInputWidget::~SinkInputWidget() {
clearMenu();
}
-SinkInputWidget* SinkInputWidget::create() {
+SinkInputWidget* SinkInputWidget::create(MainWindow* mainWindow) {
SinkInputWidget* w;
Glib::RefPtr<Gnome::Glade::Xml> x = Gnome::Glade::Xml::create(GLADE_FILE, "streamWidget");
x->get_widget_derived("streamWidget", w);
+ w->init(mainWindow);
return w;
}
@@ -97,7 +103,7 @@ void SinkInputWidget::clearMenu() {
}
void SinkInputWidget::buildMenu() {
- for (std::map<uint32_t, SinkWidget*>::iterator i = mainWindow->sinkWidgets.begin(); i != mainWindow->sinkWidgets.end(); ++i) {
+ for (std::map<uint32_t, SinkWidget*>::iterator i = mpMainWindow->sinkWidgets.begin(); i != mpMainWindow->sinkWidgets.end(); ++i) {
SinkMenuItem *m;
sinkMenuItems[i->second->index] = m = new SinkMenuItem(this, i->second->description.c_str(), i->second->index, i->second->index == sinkIndex);
submenu.append(m->menuItem);
diff --git a/src/sinkinputwidget.h b/src/sinkinputwidget.h
index f7b5101..6cb91a8 100644
--- a/src/sinkinputwidget.h
+++ b/src/sinkinputwidget.h
@@ -30,9 +30,11 @@ class MainWindow;
class SinkInputWidget : public StreamWidget {
public:
SinkInputWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x);
- static SinkInputWidget* create();
+ static SinkInputWidget* create(MainWindow* mainWindow);
virtual ~SinkInputWidget();
+ void init(MainWindow* mainWindow);
+
SinkInputType type;
uint32_t index, clientIndex, sinkIndex;
@@ -42,7 +44,6 @@ public:
virtual void onKill();
virtual void prepareMenu();
- MainWindow *mainWindow;
Gtk::Menu submenu;
Gtk::MenuItem titleMenuItem, killMenuItem;
@@ -66,6 +67,10 @@ public:
void clearMenu();
void buildMenu();
+
+private:
+ MainWindow *mpMainWindow;
+
};
#endif
diff --git a/src/sourceoutputwidget.cc b/src/sourceoutputwidget.cc
index 54940f3..f6c42c5 100644
--- a/src/sourceoutputwidget.cc
+++ b/src/sourceoutputwidget.cc
@@ -30,9 +30,9 @@
SourceOutputWidget::SourceOutputWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) :
StreamWidget(cobject, x),
- mainWindow(NULL),
titleMenuItem(_("_Move Stream..."), true),
- killMenuItem(_("_Terminate Stream"), true) {
+ killMenuItem(_("_Terminate Stream"), true),
+ mpMainWindow(NULL) {
directionLabel->set_label(_("<i>Recording from </i> "));
@@ -45,14 +45,20 @@ SourceOutputWidget::SourceOutputWidget(BaseObjectType* cobject, const Glib::RefP
killMenuItem.signal_activate().connect(sigc::mem_fun(*this, &SourceOutputWidget::onKill));
}
+void SourceOutputWidget::init(MainWindow* mainWindow) {
+ mpMainWindow = mainWindow;
+ deviceCombo->set_model(mpMainWindow->sourceTree);
+}
+
SourceOutputWidget::~SourceOutputWidget() {
clearMenu();
}
-SourceOutputWidget* SourceOutputWidget::create() {
+SourceOutputWidget* SourceOutputWidget::create(MainWindow* mainWindow) {
SourceOutputWidget* w;
Glib::RefPtr<Gnome::Glade::Xml> x = Gnome::Glade::Xml::create(GLADE_FILE, "streamWidget");
x->get_widget_derived("streamWidget", w);
+ w->init(mainWindow);
return w;
}
@@ -76,7 +82,7 @@ void SourceOutputWidget::clearMenu() {
}
void SourceOutputWidget::buildMenu() {
- for (std::map<uint32_t, SourceWidget*>::iterator i = mainWindow->sourceWidgets.begin(); i != mainWindow->sourceWidgets.end(); ++i) {
+ for (std::map<uint32_t, SourceWidget*>::iterator i = mpMainWindow->sourceWidgets.begin(); i != mpMainWindow->sourceWidgets.end(); ++i) {
SourceMenuItem *m;
sourceMenuItems[i->second->index] = m = new SourceMenuItem(this, i->second->description.c_str(), i->second->index, i->second->index == sourceIndex);
submenu.append(m->menuItem);
diff --git a/src/sourceoutputwidget.h b/src/sourceoutputwidget.h
index 281a897..055acb4 100644
--- a/src/sourceoutputwidget.h
+++ b/src/sourceoutputwidget.h
@@ -30,16 +30,17 @@ class MainWindow;
class SourceOutputWidget : public StreamWidget {
public:
SourceOutputWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x);
- static SourceOutputWidget* create();
+ static SourceOutputWidget* create(MainWindow* mainWindow);
virtual ~SourceOutputWidget();
+ void init(MainWindow* mainWindow);
+
SourceOutputType type;
uint32_t index, clientIndex, sourceIndex;
virtual void onDeviceChange();
virtual void onKill();
- MainWindow *mainWindow;
Gtk::Menu submenu;
Gtk::MenuItem titleMenuItem, killMenuItem;
@@ -64,6 +65,10 @@ public:
void clearMenu();
void buildMenu();
virtual void prepareMenu();
+
+private:
+ MainWindow *mpMainWindow;
+
};
#endif