summaryrefslogtreecommitdiffstats
path: root/src/mainwindow.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/mainwindow.cc')
-rw-r--r--src/mainwindow.cc79
1 files changed, 16 insertions, 63 deletions
diff --git a/src/mainwindow.cc b/src/mainwindow.cc
index f76f37a..5e6b464 100644
--- a/src/mainwindow.cc
+++ b/src/mainwindow.cc
@@ -86,9 +86,6 @@ MainWindow::MainWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade:
sourceOutputTypeComboBox->signal_changed().connect(sigc::mem_fun(*this, &MainWindow::onSourceOutputTypeComboBoxChanged));
sinkTypeComboBox->signal_changed().connect(sigc::mem_fun(*this, &MainWindow::onSinkTypeComboBoxChanged));
sourceTypeComboBox->signal_changed().connect(sigc::mem_fun(*this, &MainWindow::onSourceTypeComboBoxChanged));
-
- sinkTree = Gtk::ListStore::create(deviceColumns);
- sourceTree = Gtk::ListStore::create(deviceColumns);
}
MainWindow* MainWindow::create() {
@@ -179,34 +176,6 @@ void MainWindow::updateCard(const pa_card_info &info) {
updateDeviceVisibility();
}
-void MainWindow::rebuildSinkCombo() {
- uint32_t idx = 0;
- Gtk::TreeModel::Row row;
-
- sinkTree->clear();
- sinkTreeIndexes.clear();
-
- /*
- row = *(sinkTree->append());
- idx++;
- row[deviceColumns.index] = -1;
- row[deviceColumns.name] = "Default Output";
- */
-
- for (std::map<uint32_t, SinkWidget*>::iterator i = sinkWidgets.begin(); i != sinkWidgets.end(); ++i) {
- Gtk::TreeModel::Row row = *(sinkTree->append());
- sinkTreeIndexes[i->first] = idx++;
- row[deviceColumns.index] = i->first;
- row[deviceColumns.name] = i->second->description.c_str();
- }
-
- /* Force a redraw of the dropdown combo due to the model change. */
- for (std::map<uint32_t, SinkInputWidget*>::iterator i = sinkInputWidgets.begin(); i != sinkInputWidgets.end(); ++i) {
- SinkInputWidget* w = i->second;
- w->setSinkIndex(w->sinkIndex());
- }
-}
-
void MainWindow::updateSink(const pa_sink_info &info) {
SinkWidget *w;
bool is_new = false;
@@ -250,7 +219,6 @@ void MainWindow::updateSink(const pa_sink_info &info) {
w->updating = false;
- rebuildSinkCombo();
if (is_new)
updateDeviceVisibility();
}
@@ -356,34 +324,6 @@ void MainWindow::createMonitorStreamForSinkInput(uint32_t sink_input_idx, uint32
}
}
-void MainWindow::rebuildSourceCombo() {
- uint32_t idx = 0;
- Gtk::TreeModel::Row row;
-
- sourceTree->clear();
- sourceTreeIndexes.clear();
-
- /*
- row = *(sourceTree->append());
- idx++;
- row[deviceColumns.index] = -1;
- row[deviceColumns.name] = "Default Input";
- */
-
- for (std::map<uint32_t, SourceWidget*>::iterator i = sourceWidgets.begin(); i != sourceWidgets.end(); ++i) {
- Gtk::TreeModel::Row row = *(sourceTree->append());
- sourceTreeIndexes[i->first] = idx++;
- row[deviceColumns.index] = i->first;
- row[deviceColumns.name] = i->second->description.c_str();
- }
-
- /* Force a redraw of the dropdown combo due to the model change. */
- for (std::map<uint32_t, SourceOutputWidget*>::iterator i = sourceOutputWidgets.begin(); i != sourceOutputWidgets.end(); ++i) {
- SourceOutputWidget* w = i->second;
- w->setSourceIndex(w->sourceIndex());
- }
-}
-
void MainWindow::updateSource(const pa_source_info &info) {
SourceWidget *w;
bool is_new = false;
@@ -428,7 +368,6 @@ void MainWindow::updateSource(const pa_source_info &info) {
w->updating = false;
- rebuildSourceCombo();
if (is_new)
updateDeviceVisibility();
}
@@ -737,6 +676,14 @@ void MainWindow::reallyUpdateDeviceVisibility() {
for (std::map<uint32_t, SinkInputWidget*>::iterator i = sinkInputWidgets.begin(); i != sinkInputWidgets.end(); ++i) {
SinkInputWidget* w = i->second;
+ if (sinkWidgets.size() > 1) {
+ w->directionLabel->show();
+ w->deviceButton->show();
+ } else {
+ w->directionLabel->hide();
+ w->deviceButton->hide();
+ }
+
if (showSinkInputType == SINK_INPUT_ALL || w->type == showSinkInputType) {
w->show();
is_empty = false;
@@ -757,6 +704,14 @@ void MainWindow::reallyUpdateDeviceVisibility() {
for (std::map<uint32_t, SourceOutputWidget*>::iterator i = sourceOutputWidgets.begin(); i != sourceOutputWidgets.end(); ++i) {
SourceOutputWidget* w = i->second;
+ if (sourceWidgets.size() > 1) {
+ w->directionLabel->show();
+ w->deviceButton->show();
+ } else {
+ w->directionLabel->hide();
+ w->deviceButton->hide();
+ }
+
if (showSourceOutputType == SOURCE_OUTPUT_ALL || w->type == showSourceOutputType) {
w->show();
is_empty = false;
@@ -848,7 +803,6 @@ void MainWindow::removeSink(uint32_t index) {
delete sinkWidgets[index];
sinkWidgets.erase(index);
- rebuildSinkCombo();
updateDeviceVisibility();
}
@@ -858,7 +812,6 @@ void MainWindow::removeSource(uint32_t index) {
delete sourceWidgets[index];
sourceWidgets.erase(index);
- rebuildSourceCombo();
updateDeviceVisibility();
}