Multi audio device: dialogs cosmetic changes

This commit is contained in:
f4exb 2018-03-27 22:32:04 +02:00
parent c2d92ab888
commit 61aad30cbb
5 changed files with 115 additions and 16 deletions

View File

@ -14,9 +14,12 @@ AudioDialogX::AudioDialogX(AudioDeviceManager* audioDeviceManager, QWidget* pare
// out panel // out panel
AudioDeviceManager::OutputDeviceInfo outDeviceInfo;
QAudioDeviceInfo defaultOutputDeviceInfo = QAudioDeviceInfo::defaultOutputDevice(); QAudioDeviceInfo defaultOutputDeviceInfo = QAudioDeviceInfo::defaultOutputDevice();
treeItem = new QTreeWidgetItem(ui->audioOutTree); 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); ui->audioOutTree->setCurrentItem(treeItem);
const QList<QAudioDeviceInfo>& outputDevices = m_audioDeviceManager->getOutputDevices(); const QList<QAudioDeviceInfo>& outputDevices = m_audioDeviceManager->getOutputDevices();
@ -24,18 +27,27 @@ AudioDialogX::AudioDialogX(AudioDeviceManager* audioDeviceManager, QWidget* pare
for(QList<QAudioDeviceInfo>::const_iterator it = outputDevices.begin(); it != outputDevices.end(); ++it) for(QList<QAudioDeviceInfo>::const_iterator it = outputDevices.begin(); it != outputDevices.end(); ++it)
{ {
treeItem = new QTreeWidgetItem(ui->audioOutTree); 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()) { if (systemDefault) {
treeItem->setBackground(0, QBrush(qRgb(96,96,96))); treeItem->setBackground(1, QBrush(qRgb(96,96,96)));
} }
} }
ui->audioOutTree->resizeColumnToContents(0);
ui->audioOutTree->resizeColumnToContents(1);
// in panel // in panel
AudioDeviceManager::InputDeviceInfo inDeviceInfo;
QAudioDeviceInfo defaultInputDeviceInfo = QAudioDeviceInfo::defaultInputDevice(); QAudioDeviceInfo defaultInputDeviceInfo = QAudioDeviceInfo::defaultInputDevice();
treeItem = new QTreeWidgetItem(ui->audioInTree); 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); ui->audioInTree->setCurrentItem(treeItem);
const QList<QAudioDeviceInfo>& inputDevices = m_audioDeviceManager->getInputDevices(); const QList<QAudioDeviceInfo>& inputDevices = m_audioDeviceManager->getInputDevices();
@ -43,13 +55,19 @@ AudioDialogX::AudioDialogX(AudioDeviceManager* audioDeviceManager, QWidget* pare
for(QList<QAudioDeviceInfo>::const_iterator it = inputDevices.begin(); it != inputDevices.end(); ++it) for(QList<QAudioDeviceInfo>::const_iterator it = inputDevices.begin(); it != inputDevices.end(); ++it)
{ {
treeItem = new QTreeWidgetItem(ui->audioInTree); 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()) { if (systemDefault) {
treeItem->setBackground(0, QBrush(qRgb(96,96,96))); treeItem->setBackground(1, QBrush(qRgb(96,96,96)));
} }
} }
ui->audioInTree->resizeColumnToContents(0);
ui->audioInTree->resizeColumnToContents(1);
m_outputUDPPort = 9998; m_outputUDPPort = 9998;
m_outIndex = -1; m_outIndex = -1;
m_inIndex = -1; m_inIndex = -1;
@ -101,7 +119,7 @@ void AudioDialogX::on_audioInTree_currentItemChanged(
QTreeWidgetItem* previousItem) QTreeWidgetItem* previousItem)
{ {
AudioDeviceManager::InputDeviceInfo inDeviceInfo; AudioDeviceManager::InputDeviceInfo inDeviceInfo;
QString inDeviceName = currentItem->text(0); QString inDeviceName = currentItem->text(1);
int newIndex = ui->audioInTree->indexOfTopLevelItem(currentItem); int newIndex = ui->audioInTree->indexOfTopLevelItem(currentItem);
int oldIndex = ui->audioInTree->indexOfTopLevelItem(previousItem); int oldIndex = ui->audioInTree->indexOfTopLevelItem(previousItem);
//qDebug("AudioDialogX::on_audioInTree_currentItemChanged: %s", qPrintable(inDeviceName)); //qDebug("AudioDialogX::on_audioInTree_currentItemChanged: %s", qPrintable(inDeviceName));
@ -122,7 +140,7 @@ void AudioDialogX::on_audioOutTree_currentItemChanged(
QTreeWidgetItem* previousItem) QTreeWidgetItem* previousItem)
{ {
AudioDeviceManager::OutputDeviceInfo outDeviceInfo; AudioDeviceManager::OutputDeviceInfo outDeviceInfo;
QString outDeviceName = currentItem->text(0); QString outDeviceName = currentItem->text(1);
int newIndex = ui->audioOutTree->indexOfTopLevelItem(currentItem); int newIndex = ui->audioOutTree->indexOfTopLevelItem(currentItem);
int oldIndex = ui->audioOutTree->indexOfTopLevelItem(previousItem); int oldIndex = ui->audioOutTree->indexOfTopLevelItem(previousItem);

View File

@ -32,9 +32,20 @@
<layout class="QVBoxLayout" name="verticalLayout_3"> <layout class="QVBoxLayout" name="verticalLayout_3">
<item> <item>
<widget class="QTreeWidget" name="audioOutTree"> <widget class="QTreeWidget" name="audioOutTree">
<property name="indentation">
<number>0</number>
</property>
<property name="columnCount">
<number>2</number>
</property>
<column> <column>
<property name="text"> <property name="text">
<string notr="true">Device</string> <string notr="true">SD</string>
</property>
</column>
<column>
<property name="text">
<string>Device</string>
</property> </property>
</column> </column>
</widget> </widget>
@ -299,6 +310,14 @@
<layout class="QVBoxLayout" name="verticalLayout_2"> <layout class="QVBoxLayout" name="verticalLayout_2">
<item> <item>
<widget class="QTreeWidget" name="audioInTree"> <widget class="QTreeWidget" name="audioInTree">
<property name="indentation">
<number>0</number>
</property>
<column>
<property name="text">
<string>SD</string>
</property>
</column>
<column> <column>
<property name="text"> <property name="text">
<string>Device</string> <string>Device</string>

View File

@ -27,22 +27,32 @@ AudioSelectDialog::AudioSelectDialog(AudioDeviceManager* audioDeviceManager, con
{ {
ui->setupUi(this); ui->setupUi(this);
QTreeWidgetItem *treeItem, *defaultItem, *selectedItem = 0; QTreeWidgetItem *treeItem, *defaultItem, *selectedItem = 0;
bool systemDefault;
int sampleRate;
// panel // panel
QAudioDeviceInfo defaultDeviceInfo = input ? QAudioDeviceInfo::defaultInputDevice() : QAudioDeviceInfo::defaultOutputDevice(); QAudioDeviceInfo defaultDeviceInfo = input ? QAudioDeviceInfo::defaultInputDevice() : QAudioDeviceInfo::defaultOutputDevice();
defaultItem = new QTreeWidgetItem(ui->audioTree); 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<QAudioDeviceInfo> devices = input ? m_audioDeviceManager->getInputDevices() : m_audioDeviceManager->getOutputDevices(); QList<QAudioDeviceInfo> devices = input ? m_audioDeviceManager->getInputDevices() : m_audioDeviceManager->getOutputDevices();
for(QList<QAudioDeviceInfo>::const_iterator it = devices.begin(); it != devices.end(); ++it) for(QList<QAudioDeviceInfo>::const_iterator it = devices.begin(); it != devices.end(); ++it)
{ {
treeItem = new QTreeWidgetItem(ui->audioTree); 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()) { if (systemDefault) {
treeItem->setBackground(0, QBrush(qRgb(96,96,96))); treeItem->setBackground(1, QBrush(qRgb(80,80,80)));
} }
if (deviceName == it->deviceName()) { 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) { if (selectedItem) {
ui->audioTree->setCurrentItem(selectedItem); ui->audioTree->setCurrentItem(selectedItem);
} else { } else {
@ -90,5 +104,36 @@ void AudioSelectDialog::reject()
QDialog::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;
}

View File

@ -39,6 +39,7 @@ public:
bool m_selected; bool m_selected;
private: private:
bool getDeviceInfos(bool input, const QString& deviceName, bool& systemDefault, int& sampleRate);
Ui::AudioSelectDialog* ui; Ui::AudioSelectDialog* ui;
AudioDeviceManager* m_audioDeviceManager; AudioDeviceManager* m_audioDeviceManager;
bool m_input; bool m_input;

View File

@ -22,9 +22,25 @@
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<item> <item>
<widget class="QTreeWidget" name="audioTree"> <widget class="QTreeWidget" name="audioTree">
<property name="indentation">
<number>0</number>
</property>
<property name="columnCount">
<number>3</number>
</property>
<column> <column>
<property name="text"> <property name="text">
<string notr="true">Device</string> <string notr="true">SD</string>
</property>
</column>
<column>
<property name="text">
<string>Device</string>
</property>
</column>
<column>
<property name="text">
<string>Rate</string>
</property> </property>
</column> </column>
</widget> </widget>