Adjust most audio driver settings dialogs

Adjust the dialogs of most audio driver settings dialogs by showing them
in a QGroupBox and adjusting their layouts. All dialogs now use
`QFormLayout` to layout their labels and input widgets.

Technical details
------------------
Introduce `AudioDeviceSetupGroupWidget` which is intended to
functionally replace `AudioDeviceSetupWidget` in the long run. This is
likely a temporary replacement in the sense that
`AudioDeviceSetupGroupWidget` will be renamed to
`AudioDeviceSetupWidget` once the latter has been replaced everywhere.
Both classes are very similar and the only difference is that the former
inherits from `QGroupBox` instead of `TabWidget`.

Adjust the using of AswMap so that it is now defined as a map from
`QString` to `AudioDeviceSetupGroupWidget`.

Use `QFormLayout` to layout the widgets of the setup dialogs instead of
hard coding geometries and placement.

TODOs
------
Adjust the widgets for the SoundIO and SndIo cases. These will be a bit
more effort as they are not compiled on my machine.
This commit is contained in:
Michael Gregorius
2023-07-22 22:55:02 +02:00
parent c06d9d4883
commit b53290344b
18 changed files with 152 additions and 75 deletions

View File

@@ -29,7 +29,7 @@
#ifdef LMMS_HAVE_ALSA
#include "AudioDeviceSetupWidget.h"
#include "AudioDeviceSetupGroupWidget.h"
#include "AudioAlsa.h"
@@ -41,7 +41,7 @@ namespace lmms::gui
class LcdSpinBox;
class AudioAlsaSetupWidget : public AudioDeviceSetupWidget
class AudioAlsaSetupWidget : public AudioDeviceSetupGroupWidget
{
Q_OBJECT

View File

@@ -0,0 +1,49 @@
/*
* AudioDeviceSetupGroupWidget.h - Base class for audio device setup widgets using group box
*
* Copyright (c) 2004-2015 Tobias Doerffel <tobydox/at/users.sourceforge.net>
* Copyright (c) 2004-2015 Michael Gregorius
*
* This file is part of LMMS - https://lmms.io
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program (see COPYING); if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA.
*
*/
#ifndef LMMS_GUI_AUDIO_DEVICE_SETUP_GROUP_WIDGET_H
#define LMMS_GUI_AUDIO_DEVICE_SETUP_GROUP_WIDGET_H
#include <QGroupBox>
namespace lmms::gui
{
class AudioDeviceSetupGroupWidget : public QGroupBox
{
Q_OBJECT
public:
AudioDeviceSetupGroupWidget( const QString & _caption, QWidget * _parent );
~AudioDeviceSetupGroupWidget() override = default;
virtual void saveSettings() = 0;
virtual void show();
};
} // namespace lmms::gui
#endif // LMMS_GUI_AUDIO_DEVICE_SETUP_GROUP_WIDGET_H

View File

@@ -26,7 +26,7 @@
#define LMMS_AUDIO_DUMMY_H
#include "AudioDevice.h"
#include "AudioDeviceSetupWidget.h"
#include "AudioDeviceSetupGroupWidget.h"
#include "AudioEngine.h"
#include "MicroTimer.h"
@@ -54,11 +54,11 @@ public:
}
class setupWidget : public gui::AudioDeviceSetupWidget
class setupWidget : public gui::AudioDeviceSetupGroupWidget
{
public:
setupWidget( QWidget * _parent ) :
gui::AudioDeviceSetupWidget( AudioDummy::name(), _parent )
gui::AudioDeviceSetupGroupWidget( AudioDummy::name(), _parent )
{
}

View File

@@ -38,7 +38,7 @@
#include <QVector>
#include "AudioDevice.h"
#include "AudioDeviceSetupWidget.h"
#include "AudioDeviceSetupGroupWidget.h"
class QLineEdit;
@@ -74,7 +74,7 @@ public:
}
class setupWidget : public gui::AudioDeviceSetupWidget
class setupWidget : public gui::AudioDeviceSetupGroupWidget
{
public:
setupWidget( QWidget * _parent );

View File

@@ -32,7 +32,7 @@
#include <QThread>
#include "AudioDevice.h"
#include "AudioDeviceSetupWidget.h"
#include "AudioDeviceSetupGroupWidget.h"
class QLineEdit;
@@ -61,7 +61,7 @@ public:
static QString probeDevice();
class setupWidget : public gui::AudioDeviceSetupWidget
class setupWidget : public gui::AudioDeviceSetupGroupWidget
{
public:
setupWidget( QWidget * _parent );

View File

@@ -35,7 +35,7 @@
# include <portaudio.h>
# include "AudioDevice.h"
# include "AudioDeviceSetupWidget.h"
# include "AudioDeviceSetupGroupWidget.h"
# if defined paNeverDropInput || defined paNonInterleaved
# define PORTAUDIO_V19
@@ -90,7 +90,7 @@ public:
unsigned long _framesPerBuffer );
class setupWidget : public gui::AudioDeviceSetupWidget
class setupWidget : public gui::AudioDeviceSetupGroupWidget
{
public:
setupWidget( QWidget * _parent );

View File

@@ -34,7 +34,7 @@
#include <QThread>
#include "AudioDevice.h"
#include "AudioDeviceSetupWidget.h"
#include "AudioDeviceSetupGroupWidget.h"
class QLineEdit;
@@ -62,7 +62,7 @@ public:
static QString probeDevice();
class setupWidget : public gui::AudioDeviceSetupWidget
class setupWidget : public gui::AudioDeviceSetupGroupWidget
{
public:
setupWidget( QWidget * _parent );

View File

@@ -37,7 +37,7 @@
#endif
#include "AudioDevice.h"
#include "AudioDeviceSetupWidget.h"
#include "AudioDeviceSetupGroupWidget.h"
class QLineEdit;
@@ -57,7 +57,7 @@ public:
}
class setupWidget : public gui::AudioDeviceSetupWidget
class setupWidget : public gui::AudioDeviceSetupGroupWidget
{
public:
setupWidget( QWidget * _parent );

View File

@@ -29,7 +29,7 @@
#include <QMap>
#include "AudioDevice.h"
#include "AudioDeviceSetupWidget.h"
#include "AudioDeviceSetupGroupWidget.h"
#include "lmmsconfig.h"
#include "MidiClient.h"
#include "MidiSetupWidget.h"
@@ -166,7 +166,7 @@ private:
bool m_vstAlwaysOnTop;
bool m_disableAutoQuit;
using AswMap = QMap<QString, AudioDeviceSetupWidget*>;
using AswMap = QMap<QString, AudioDeviceSetupGroupWidget*>;
using MswMap = QMap<QString, MidiSetupWidget*>;
using trMap = QMap<QString, QString>;