diff options
Diffstat (limited to 'src/mainwindow.cpp')
-rw-r--r-- | src/mainwindow.cpp | 41 |
1 files changed, 31 insertions, 10 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index b35a8f9..0fc6341 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -10,6 +10,8 @@ MainWindow::MainWindow() : QDialog() { setupUi(this); setWindowFlags(Qt::WindowStaysOnTopHint | windowFlags()); + outputTab->setLayout(new QVBoxLayout(outputTab)); + inputTab->setLayout(new QVBoxLayout(inputTab)); } MainWindow::~MainWindow() @@ -17,11 +19,11 @@ MainWindow::~MainWindow() } -SlxOutput* MainWindow::getDevice(const PulseAudioQt::Card *card, const PulseAudioQt::Sink *sink, const PulseAudioQt::Port *port) +SlxOutput* MainWindow::getDevice(const PulseAudioQt::Card *card, const PulseAudioQt::Device *device, const PulseAudioQt::Port *port, bool output) { PulseAudioQt::Profile *profile = nullptr; QString cardId; - QString id = sink->name() + port->name(); + QString id = device->name() + port->name(); SlxOutput* w = _widgets.value(id, nullptr); QString heading = port->description(); @@ -37,8 +39,8 @@ SlxOutput* MainWindow::getDevice(const PulseAudioQt::Card *card, const PulseAudi return w; } - w = new SlxOutput(SlxOutput::SinkPortItem, id, cardId, QLatin1String(), sink->name(), port->name(), - heading, sink->description()); + w = new SlxOutput(output ? SlxOutput::SinkPortItem : SlxOutput::SourcePortItem, id, cardId, QLatin1String(), device->name(), port->name(), + heading, device->description()); _widgets.insert(id, w); insertItemWidget(w, true); @@ -47,7 +49,6 @@ SlxOutput* MainWindow::getDevice(const PulseAudioQt::Card *card, const PulseAudi SlxOutput* MainWindow::getCardProfile(const PulseAudioQt::Card *card, const PulseAudioQt::Profile *profile) { - QString id = card->name() + profile->name(); SlxOutput* w = _widgets.value(id, nullptr); if (w != nullptr) @@ -61,22 +62,40 @@ SlxOutput* MainWindow::getCardProfile(const PulseAudioQt::Card *card, const Puls return w; } +SlxOutput* MainWindow::getCardPort(const PulseAudioQt::Card *card, const PulseAudioQt::Port *port) +{ + QString id = card->name() + port->name(); + SlxOutput* w = _widgets.value(id, nullptr); + if (w != nullptr) + return w; + + w = new SlxOutput(SlxOutput::CardProfileItem, id, card->name(), port->name(), QLatin1String(), QLatin1String(), + port->description(), card->description()); + _widgets.insert(id, w); + + insertItemWidget(w, false); + return w; +} + void MainWindow::insertItemWidget(SlxOutput* w, bool isDevice) { bool done = false; int idx; + QBoxLayout *container; + if (w->type() == SlxOutput::CardProfileItem) { + container = cards; + } else if (w->type() == SlxOutput::SinkPortItem) { + container = qobject_cast<QBoxLayout*>(outputTab->layout()); + } else { + container = qobject_cast<QBoxLayout*>(inputTab->layout()); + } for (idx = 0; idx < container->count(); ++idx) { auto *l = container->itemAt(idx); SlxOutput *other = qobject_cast<SlxOutput*>(l->widget()); if (other == nullptr) continue; printf(" Comparing %s - %s\n", other->isDevice() ? "SINK" : "PROF", other->nameLabel->text().toLocal8Bit().constData()); - if (isDevice != other->isDevice()) { - if (isDevice) - break; - continue; - } if (w->compareTo(other) < 0) { done = true; printf("Inserting before that (%d)!\n", idx); @@ -98,6 +117,7 @@ void MainWindow::insertItemWidget(SlxOutput* w, bool isDevice) */ void MainWindow::mark() { + setUpdatesEnabled(false); for (auto *w : _widgets) { w->unused = true; } @@ -117,4 +137,5 @@ void MainWindow::sweep() w->deleteLater(); } } + setUpdatesEnabled(true); } |