preferences: revised audio tab
Cleaned up and improved the audio tab. Fixes #1546. Kind of. There doesn't seem to be much need for a sample rate selection for our current high-level audio system. If we implement higher end audio backends in the future (e.g. ASIO, JACK), those can be given a sample rate setting.
This commit is contained in:
@@ -28,6 +28,18 @@ namespace olive {
|
||||
|
||||
AudioManager* AudioManager::instance_ = nullptr;
|
||||
|
||||
QString AudioManager::GetAudioBackendName(AudioManager::Backend b)
|
||||
{
|
||||
switch (b) {
|
||||
case kAudioBackendQt:
|
||||
return tr("Qt");
|
||||
case kAudioBackendCount:
|
||||
break;
|
||||
}
|
||||
|
||||
return tr("Unknown");
|
||||
}
|
||||
|
||||
void AudioManager::CreateInstance()
|
||||
{
|
||||
if (instance_ == nullptr) {
|
||||
|
||||
@@ -44,6 +44,13 @@ class AudioManager : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
enum Backend {
|
||||
kAudioBackendQt,
|
||||
kAudioBackendCount
|
||||
};
|
||||
|
||||
static QString GetAudioBackendName(Backend b);
|
||||
|
||||
static void CreateInstance();
|
||||
static void DestroyInstance();
|
||||
|
||||
|
||||
@@ -36,7 +36,6 @@ namespace olive {
|
||||
PreferencesAppearanceTab::PreferencesAppearanceTab()
|
||||
{
|
||||
QVBoxLayout* layout = new QVBoxLayout(this);
|
||||
layout->setMargin(0);
|
||||
|
||||
QGridLayout* appearance_layout = new QGridLayout();
|
||||
layout->addLayout(appearance_layout);
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include "preferencesaudiotab.h"
|
||||
|
||||
#include <QGridLayout>
|
||||
#include <QGroupBox>
|
||||
#include <QLabel>
|
||||
|
||||
#include "audio/audiomanager.h"
|
||||
@@ -30,65 +31,88 @@ namespace olive {
|
||||
|
||||
PreferencesAudioTab::PreferencesAudioTab()
|
||||
{
|
||||
QGridLayout* audio_tab_layout = new QGridLayout(this);
|
||||
audio_tab_layout->setMargin(0);
|
||||
QVBoxLayout* audio_tab_layout = new QVBoxLayout(this);
|
||||
|
||||
int row = 0;
|
||||
{
|
||||
// Backend Layout
|
||||
QGridLayout* main_layout = new QGridLayout();
|
||||
main_layout->setMargin(0);
|
||||
|
||||
// Audio -> Output Device
|
||||
audio_tab_layout->addWidget(new QLabel(tr("Output Device:")), row, 0);
|
||||
int row = 0;
|
||||
|
||||
audio_output_devices_ = new QComboBox();
|
||||
audio_tab_layout->addWidget(audio_output_devices_, row, 1);
|
||||
main_layout->addWidget(new QLabel(tr("Backend:")), row, 0);
|
||||
|
||||
row++;
|
||||
|
||||
// Audio -> Input Device
|
||||
audio_tab_layout->addWidget(new QLabel(tr("Input Device:")), row, 0);
|
||||
|
||||
audio_input_devices_ = new QComboBox();
|
||||
audio_tab_layout->addWidget(audio_input_devices_, row, 1);
|
||||
|
||||
row++;
|
||||
|
||||
// Audio -> Sample Rate
|
||||
|
||||
audio_tab_layout->addWidget(new QLabel(tr("Sample Rate:")), row, 0);
|
||||
|
||||
audio_sample_rate_ = new QComboBox();
|
||||
/*combobox_audio_sample_rates(audio_sample_rate);
|
||||
for (int i=0;i<audio_sample_rate->count();i++) {
|
||||
if (audio_sample_rate->itemData(i).toInt() == olive::config.audio_rate) {
|
||||
audio_sample_rate->setCurrentIndex(i);
|
||||
break;
|
||||
audio_backend_combobox_ = new QComboBox();
|
||||
for (int i=0; i<AudioManager::kAudioBackendCount; i++) {
|
||||
audio_backend_combobox_->addItem(AudioManager::GetAudioBackendName(static_cast<AudioManager::Backend>(i)));
|
||||
}
|
||||
}*/
|
||||
main_layout->addWidget(audio_backend_combobox_, row, 1);
|
||||
|
||||
audio_tab_layout->addWidget(audio_sample_rate_, row, 1);
|
||||
audio_tab_layout->addLayout(main_layout);
|
||||
}
|
||||
|
||||
row++;
|
||||
{
|
||||
// Qt-Backend Layout
|
||||
QGroupBox* qt_groupbox = new QGroupBox();
|
||||
audio_tab_layout->addWidget(qt_groupbox);
|
||||
|
||||
// Audio -> Audio Recording
|
||||
audio_tab_layout->addWidget(new QLabel(tr("Audio Recording:"), this), row, 0);
|
||||
QVBoxLayout* qt_layout = new QVBoxLayout(qt_groupbox);
|
||||
|
||||
recording_combobox_ = new QComboBox();
|
||||
recording_combobox_->addItem(tr("Mono"));
|
||||
recording_combobox_->addItem(tr("Stereo"));
|
||||
// recordingComboBox->setCurrentIndex(olive::config.recording_mode - 1);
|
||||
audio_tab_layout->addWidget(recording_combobox_, row, 1);
|
||||
int row = 0;
|
||||
|
||||
row++;
|
||||
{
|
||||
// Output Group
|
||||
QGroupBox* qt_output_group = new QGroupBox();
|
||||
qt_output_group->setTitle(tr("Output"));
|
||||
qt_layout->addWidget(qt_output_group);
|
||||
|
||||
refresh_devices_btn_ = new QPushButton(tr("Refresh Devices"));
|
||||
audio_tab_layout->addWidget(refresh_devices_btn_, row, 1);
|
||||
QGridLayout* qt_output_layout = new QGridLayout(qt_output_group);
|
||||
|
||||
row++;
|
||||
qt_output_layout->addWidget(new QLabel(tr("Device:")), row, 0);
|
||||
|
||||
RetrieveDeviceLists();
|
||||
audio_output_devices_ = new QComboBox();
|
||||
qt_output_layout->addWidget(audio_output_devices_, row, 1);
|
||||
}
|
||||
|
||||
connect(refresh_devices_btn_, &QPushButton::clicked, this, &PreferencesAudioTab::RefreshDevices);
|
||||
connect(AudioManager::instance(), &AudioManager::OutputListReady, this, &PreferencesAudioTab::RetrieveOutputList);
|
||||
connect(AudioManager::instance(), &AudioManager::InputListReady, this, &PreferencesAudioTab::RetrieveInputList);
|
||||
row = 0;
|
||||
|
||||
{
|
||||
QGroupBox* qt_input_group = new QGroupBox();
|
||||
qt_input_group->setTitle(tr("Input"));
|
||||
qt_layout->addWidget(qt_input_group);
|
||||
|
||||
QGridLayout* qt_input_layout = new QGridLayout(qt_input_group);
|
||||
|
||||
qt_input_layout->addWidget(new QLabel(tr("Device:")), row, 0);
|
||||
|
||||
audio_input_devices_ = new QComboBox();
|
||||
qt_input_layout->addWidget(audio_input_devices_, row, 1);
|
||||
|
||||
row++;
|
||||
|
||||
qt_input_layout->addWidget(new QLabel(tr("Recording Mode:"), this), row, 0);
|
||||
|
||||
recording_combobox_ = new QComboBox();
|
||||
recording_combobox_->addItem(tr("Mono"));
|
||||
recording_combobox_->addItem(tr("Stereo"));
|
||||
qt_input_layout->addWidget(recording_combobox_, row, 1);
|
||||
}
|
||||
|
||||
QHBoxLayout* qt_refresh_layout = new QHBoxLayout();
|
||||
qt_layout->addLayout(qt_refresh_layout);
|
||||
qt_refresh_layout->addStretch();
|
||||
|
||||
refresh_devices_btn_ = new QPushButton(tr("Refresh Devices"));
|
||||
qt_refresh_layout->addWidget(refresh_devices_btn_);
|
||||
|
||||
RetrieveDeviceLists();
|
||||
|
||||
connect(refresh_devices_btn_, &QPushButton::clicked, this, &PreferencesAudioTab::RefreshDevices);
|
||||
connect(AudioManager::instance(), &AudioManager::OutputListReady, this, &PreferencesAudioTab::RetrieveOutputList);
|
||||
connect(AudioManager::instance(), &AudioManager::InputListReady, this, &PreferencesAudioTab::RetrieveInputList);
|
||||
}
|
||||
|
||||
audio_tab_layout->addStretch();
|
||||
}
|
||||
|
||||
void PreferencesAudioTab::Accept(MultiUndoCommand *command)
|
||||
|
||||
@@ -38,6 +38,8 @@ public:
|
||||
virtual void Accept(MultiUndoCommand* command) override;
|
||||
|
||||
private:
|
||||
QComboBox* audio_backend_combobox_;
|
||||
|
||||
/**
|
||||
* @brief UI widget for selecting the output audio device
|
||||
*/
|
||||
@@ -48,11 +50,6 @@ private:
|
||||
*/
|
||||
QComboBox* audio_input_devices_;
|
||||
|
||||
/**
|
||||
* @brief UI widget for selecting the audio sampling rates
|
||||
*/
|
||||
QComboBox* audio_sample_rate_;
|
||||
|
||||
/**
|
||||
* @brief UI widget for editing the recording channels
|
||||
*/
|
||||
|
||||
@@ -30,7 +30,6 @@ namespace olive {
|
||||
PreferencesBehaviorTab::PreferencesBehaviorTab()
|
||||
{
|
||||
QVBoxLayout* layout = new QVBoxLayout(this);
|
||||
layout->setMargin(0);
|
||||
|
||||
behavior_tree_ = new QTreeWidget();
|
||||
layout->addWidget(behavior_tree_);
|
||||
|
||||
@@ -35,7 +35,6 @@ namespace olive {
|
||||
PreferencesGeneralTab::PreferencesGeneralTab()
|
||||
{
|
||||
QVBoxLayout* layout = new QVBoxLayout(this);
|
||||
layout->setMargin(0);
|
||||
|
||||
{
|
||||
QGroupBox* global_groupbox = new QGroupBox(tr("Locale"));
|
||||
|
||||
@@ -32,7 +32,6 @@ namespace olive {
|
||||
PreferencesKeyboardTab::PreferencesKeyboardTab(QMenuBar *menubar)
|
||||
{
|
||||
QVBoxLayout* shortcut_layout = new QVBoxLayout(this);
|
||||
shortcut_layout->setMargin(0);
|
||||
|
||||
QLineEdit* key_search_line = new QLineEdit();
|
||||
key_search_line->setPlaceholderText(tr("Search for action or shortcut"));
|
||||
|
||||
Reference in New Issue
Block a user