From 61aad30cbb841e5c4900fe9478cee81e8be2cfef Mon Sep 17 00:00:00 2001 From: f4exb Date: Tue, 27 Mar 2018 22:32:04 +0200 Subject: [PATCH] Multi audio device: dialogs cosmetic changes --- sdrgui/gui/audiodialog.cpp | 38 +++++++++++++++++------ sdrgui/gui/audiodialog.ui | 21 ++++++++++++- sdrgui/gui/audioselectdialog.cpp | 53 +++++++++++++++++++++++++++++--- sdrgui/gui/audioselectdialog.h | 1 + sdrgui/gui/audioselectdialog.ui | 18 ++++++++++- 5 files changed, 115 insertions(+), 16 deletions(-) diff --git a/sdrgui/gui/audiodialog.cpp b/sdrgui/gui/audiodialog.cpp index ff0d5ec8c..08cf41250 100644 --- a/sdrgui/gui/audiodialog.cpp +++ b/sdrgui/gui/audiodialog.cpp @@ -14,9 +14,12 @@ AudioDialogX::AudioDialogX(AudioDeviceManager* audioDeviceManager, QWidget* pare // out panel + AudioDeviceManager::OutputDeviceInfo outDeviceInfo; QAudioDeviceInfo defaultOutputDeviceInfo = QAudioDeviceInfo::defaultOutputDevice(); treeItem = new QTreeWidgetItem(ui->audioOutTree); - treeItem->setText(0, AudioDeviceManager::m_defaultDeviceName); + treeItem->setText(1, AudioDeviceManager::m_defaultDeviceName); + bool found = m_audioDeviceManager->getOutputDeviceInfo(AudioDeviceManager::m_defaultDeviceName, outDeviceInfo); + treeItem->setText(0, found ? "__" : "_D"); ui->audioOutTree->setCurrentItem(treeItem); const QList& outputDevices = m_audioDeviceManager->getOutputDevices(); @@ -24,18 +27,27 @@ AudioDialogX::AudioDialogX(AudioDeviceManager* audioDeviceManager, QWidget* pare for(QList::const_iterator it = outputDevices.begin(); it != outputDevices.end(); ++it) { treeItem = new QTreeWidgetItem(ui->audioOutTree); - treeItem->setText(0, it->deviceName()); + treeItem->setText(1, it->deviceName()); + bool systemDefault = it->deviceName() == defaultOutputDeviceInfo.deviceName(); + found = m_audioDeviceManager->getOutputDeviceInfo(it->deviceName(), outDeviceInfo); + treeItem->setText(0, QString(systemDefault ? "S" : "_") + QString(found ? "_" : "D")); - if (it->deviceName() == defaultOutputDeviceInfo.deviceName()) { - treeItem->setBackground(0, QBrush(qRgb(96,96,96))); + if (systemDefault) { + treeItem->setBackground(1, QBrush(qRgb(96,96,96))); } } + ui->audioOutTree->resizeColumnToContents(0); + ui->audioOutTree->resizeColumnToContents(1); + // in panel + AudioDeviceManager::InputDeviceInfo inDeviceInfo; QAudioDeviceInfo defaultInputDeviceInfo = QAudioDeviceInfo::defaultInputDevice(); treeItem = new QTreeWidgetItem(ui->audioInTree); - treeItem->setText(0, AudioDeviceManager::m_defaultDeviceName); + treeItem->setText(1, AudioDeviceManager::m_defaultDeviceName); + found = m_audioDeviceManager->getInputDeviceInfo(AudioDeviceManager::m_defaultDeviceName, inDeviceInfo); + treeItem->setText(0, found ? "__" : "_D"); ui->audioInTree->setCurrentItem(treeItem); const QList& inputDevices = m_audioDeviceManager->getInputDevices(); @@ -43,13 +55,19 @@ AudioDialogX::AudioDialogX(AudioDeviceManager* audioDeviceManager, QWidget* pare for(QList::const_iterator it = inputDevices.begin(); it != inputDevices.end(); ++it) { treeItem = new QTreeWidgetItem(ui->audioInTree); - treeItem->setText(0, it->deviceName()); + treeItem->setText(1, it->deviceName()); + bool systemDefault = it->deviceName() == defaultInputDeviceInfo.deviceName(); + found = m_audioDeviceManager->getInputDeviceInfo(it->deviceName(), inDeviceInfo); + treeItem->setText(0, QString(systemDefault ? "S" : "_") + QString(found ? "_" : "D")); - if (it->deviceName() == defaultInputDeviceInfo.deviceName()) { - treeItem->setBackground(0, QBrush(qRgb(96,96,96))); + if (systemDefault) { + treeItem->setBackground(1, QBrush(qRgb(96,96,96))); } } + ui->audioInTree->resizeColumnToContents(0); + ui->audioInTree->resizeColumnToContents(1); + m_outputUDPPort = 9998; m_outIndex = -1; m_inIndex = -1; @@ -101,7 +119,7 @@ void AudioDialogX::on_audioInTree_currentItemChanged( QTreeWidgetItem* previousItem) { AudioDeviceManager::InputDeviceInfo inDeviceInfo; - QString inDeviceName = currentItem->text(0); + QString inDeviceName = currentItem->text(1); int newIndex = ui->audioInTree->indexOfTopLevelItem(currentItem); int oldIndex = ui->audioInTree->indexOfTopLevelItem(previousItem); //qDebug("AudioDialogX::on_audioInTree_currentItemChanged: %s", qPrintable(inDeviceName)); @@ -122,7 +140,7 @@ void AudioDialogX::on_audioOutTree_currentItemChanged( QTreeWidgetItem* previousItem) { AudioDeviceManager::OutputDeviceInfo outDeviceInfo; - QString outDeviceName = currentItem->text(0); + QString outDeviceName = currentItem->text(1); int newIndex = ui->audioOutTree->indexOfTopLevelItem(currentItem); int oldIndex = ui->audioOutTree->indexOfTopLevelItem(previousItem); diff --git a/sdrgui/gui/audiodialog.ui b/sdrgui/gui/audiodialog.ui index 487bf1130..3a9928ffc 100644 --- a/sdrgui/gui/audiodialog.ui +++ b/sdrgui/gui/audiodialog.ui @@ -32,9 +32,20 @@ + + 0 + + + 2 + - Device + SD + + + + + Device @@ -299,6 +310,14 @@ + + 0 + + + + SD + + Device diff --git a/sdrgui/gui/audioselectdialog.cpp b/sdrgui/gui/audioselectdialog.cpp index 82b3a9301..6924ba0ef 100644 --- a/sdrgui/gui/audioselectdialog.cpp +++ b/sdrgui/gui/audioselectdialog.cpp @@ -27,22 +27,32 @@ AudioSelectDialog::AudioSelectDialog(AudioDeviceManager* audioDeviceManager, con { ui->setupUi(this); QTreeWidgetItem *treeItem, *defaultItem, *selectedItem = 0; + bool systemDefault; + int sampleRate; // panel QAudioDeviceInfo defaultDeviceInfo = input ? QAudioDeviceInfo::defaultInputDevice() : QAudioDeviceInfo::defaultOutputDevice(); defaultItem = new QTreeWidgetItem(ui->audioTree); - defaultItem->setText(0, AudioDeviceManager::m_defaultDeviceName); + defaultItem->setText(1, AudioDeviceManager::m_defaultDeviceName); + bool deviceFound = getDeviceInfos(input, AudioDeviceManager::m_defaultDeviceName, systemDefault, sampleRate); + defaultItem->setText(0, deviceFound ? "__" : "_D"); + defaultItem->setText(2, tr("%1").arg(sampleRate)); + defaultItem->setTextAlignment(2, Qt::AlignRight); QList devices = input ? m_audioDeviceManager->getInputDevices() : m_audioDeviceManager->getOutputDevices(); for(QList::const_iterator it = devices.begin(); it != devices.end(); ++it) { treeItem = new QTreeWidgetItem(ui->audioTree); - treeItem->setText(0, it->deviceName()); + treeItem->setText(1, it->deviceName()); + bool deviceFound = getDeviceInfos(input, it->deviceName(), systemDefault, sampleRate); + treeItem->setText(0, QString(systemDefault ? "S" : "_") + QString(deviceFound ? "_" : "D")); + treeItem->setText(2, tr("%1").arg(sampleRate)); + treeItem->setTextAlignment(2, Qt::AlignRight); - if (it->deviceName() == defaultDeviceInfo.deviceName()) { - treeItem->setBackground(0, QBrush(qRgb(96,96,96))); + if (systemDefault) { + treeItem->setBackground(1, QBrush(qRgb(80,80,80))); } if (deviceName == it->deviceName()) { @@ -50,6 +60,10 @@ AudioSelectDialog::AudioSelectDialog(AudioDeviceManager* audioDeviceManager, con } } + ui->audioTree->resizeColumnToContents(0); + ui->audioTree->resizeColumnToContents(1); + ui->audioTree->resizeColumnToContents(2); + if (selectedItem) { ui->audioTree->setCurrentItem(selectedItem); } else { @@ -90,5 +104,36 @@ void AudioSelectDialog::reject() QDialog::reject(); } +bool AudioSelectDialog::getDeviceInfos(bool input, const QString& deviceName, bool& systemDefault, int& sampleRate) +{ + bool found; + + if (input) + { + AudioDeviceManager::InputDeviceInfo inDeviceInfo; + found = m_audioDeviceManager->getInputDeviceInfo(deviceName, inDeviceInfo); + systemDefault = deviceName == QAudioDeviceInfo::defaultInputDevice().deviceName(); + + if (found) { + sampleRate = inDeviceInfo.sampleRate; + } else { + sampleRate = AudioDeviceManager::m_defaultAudioSampleRate; + } + } + else + { + AudioDeviceManager::OutputDeviceInfo outDeviceInfo; + found = m_audioDeviceManager->getOutputDeviceInfo(deviceName, outDeviceInfo); + systemDefault = deviceName == QAudioDeviceInfo::defaultOutputDevice().deviceName(); + + if (found) { + sampleRate = outDeviceInfo.sampleRate; + } else { + sampleRate = AudioDeviceManager::m_defaultAudioSampleRate; + } + } + + return found; +} diff --git a/sdrgui/gui/audioselectdialog.h b/sdrgui/gui/audioselectdialog.h index 371d7c4e1..798a8f096 100644 --- a/sdrgui/gui/audioselectdialog.h +++ b/sdrgui/gui/audioselectdialog.h @@ -39,6 +39,7 @@ public: bool m_selected; private: + bool getDeviceInfos(bool input, const QString& deviceName, bool& systemDefault, int& sampleRate); Ui::AudioSelectDialog* ui; AudioDeviceManager* m_audioDeviceManager; bool m_input; diff --git a/sdrgui/gui/audioselectdialog.ui b/sdrgui/gui/audioselectdialog.ui index 4b80685f8..f3952ed61 100644 --- a/sdrgui/gui/audioselectdialog.ui +++ b/sdrgui/gui/audioselectdialog.ui @@ -22,9 +22,25 @@ + + 0 + + + 3 + - Device + SD + + + + + Device + + + + + Rate