75 lines
2.3 KiB
C++
75 lines
2.3 KiB
C++
#include <QTreeWidgetItem>
|
|
#include <QAudioDeviceInfo>
|
|
#include "gui/preferencesdialog.h"
|
|
#include "ui_preferencesdialog.h"
|
|
#include "settings/preferences.h"
|
|
|
|
PreferencesDialog::PreferencesDialog(Preferences* preferences, QWidget* parent) :
|
|
QDialog(parent),
|
|
ui(new Ui::PreferencesDialog),
|
|
m_preferences(preferences)
|
|
{
|
|
ui->setupUi(this);
|
|
|
|
QStringList sl;
|
|
bool found;
|
|
|
|
QList<QAudioDeviceInfo> devices = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput);
|
|
|
|
sl.clear();
|
|
sl.append(tr("Default output device (use first suitable)"));
|
|
QTreeWidgetItem* dev = new QTreeWidgetItem(ui->audioTree, sl);
|
|
dev->setFirstColumnSpanned(true);
|
|
dev->setData(0, Qt::UserRole, "");
|
|
for(QList<QAudioDeviceInfo>::ConstIterator it = devices.begin(); it != devices.end(); ++it) {
|
|
sl.clear();
|
|
sl.append(it->deviceName());
|
|
QTreeWidgetItem* dev = new QTreeWidgetItem(ui->audioTree, sl);
|
|
dev->setFirstColumnSpanned(true);
|
|
dev->setData(0, Qt::UserRole, it->deviceName());
|
|
}
|
|
found = false;
|
|
for(int i = 0; i < ui->audioTree->topLevelItemCount(); ++i) {
|
|
if(ui->audioTree->topLevelItem(i)->data(0, Qt::UserRole).toString() == m_preferences->getAudioOutput()) {
|
|
ui->audioTree->setCurrentItem(ui->audioTree->topLevelItem(i));
|
|
found = true;
|
|
break;
|
|
}
|
|
}
|
|
if(!found)
|
|
ui->audioTree->setCurrentItem(ui->audioTree->topLevelItem(0));
|
|
|
|
ui->audioRate->addItem(tr("48000 Hz"), 48000);
|
|
ui->audioRate->addItem(tr("44100 Hz"), 44100);
|
|
ui->audioRate->addItem(tr("24000 Hz"), 24000);
|
|
ui->audioRate->addItem(tr("22050 Hz"), 22050);
|
|
found = false;
|
|
for(int i = 0; i < ui->audioRate->count(); ++i) {
|
|
if(ui->audioRate->itemData(i).toInt() == m_preferences->getAudioOutputRate()) {
|
|
ui->audioRate->setCurrentIndex(i);
|
|
found = true;
|
|
break;
|
|
}
|
|
}
|
|
if(!found)
|
|
ui->audioRate->setCurrentIndex(1);
|
|
|
|
ui->stackedWidget->setCurrentIndex(0);
|
|
ui->configTree->setCurrentItem(ui->configTree->topLevelItem(0));
|
|
}
|
|
|
|
PreferencesDialog::~PreferencesDialog()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void PreferencesDialog::accept()
|
|
{
|
|
if(ui->audioTree->currentItem() != NULL)
|
|
m_preferences->setAudioOutput(ui->audioTree->currentItem()->data(0, Qt::UserRole).toString());
|
|
else m_preferences->setAudioOutput(QString());
|
|
m_preferences->setAudioOutputRate(ui->audioRate->itemData(ui->audioRate->currentIndex()).toInt());
|
|
|
|
QDialog::accept();
|
|
}
|