mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-05 01:05:34 +08:00
refs #335, improved audio setup
* changed volume methods from QList<qint32> to qint32 (DBus compliance) * methods for changed devices * command parser for audio * volume display in status bar (pseudo mute)
This commit is contained in:
committed by
Roland Winklmeier
parent
3fd1f3c8c4
commit
1ea330cc06
@@ -50,18 +50,23 @@ namespace BlackGui
|
||||
|
||||
// based on audio context
|
||||
Q_ASSERT(this->getIContextAudio());
|
||||
bool connected = false;
|
||||
if (this->getIContextAudio())
|
||||
{
|
||||
this->initAudioDeviceLists();
|
||||
connected = this->connect(this->getIContextAudio(), &IContextAudio::audioTestCompleted, this, &CAudioSetupComponent::ps_audioTestUpdate);
|
||||
Q_ASSERT(connected);
|
||||
connected = this->connect(this->ui->cb_SetupAudioInputDevice, SIGNAL(currentIndexChanged(int)), this, SLOT(ps_audioDeviceSelected(int)));
|
||||
|
||||
// the connects depend on initAudioDeviceLists
|
||||
bool connected = this->connect(this->ui->cb_SetupAudioInputDevice, SIGNAL(currentIndexChanged(int)), this, SLOT(ps_audioDeviceSelected(int)));
|
||||
Q_ASSERT(connected);
|
||||
connected = this->connect(this->ui->cb_SetupAudioOutputDevice, SIGNAL(currentIndexChanged(int)), this, SLOT(ps_audioDeviceSelected(int)));
|
||||
Q_ASSERT(connected);
|
||||
|
||||
this->connect(this->ui->pb_SetupAudioMicrophoneTest, &QPushButton::clicked, this, &CAudioSetupComponent::ps_startAudioTest);
|
||||
this->connect(this->ui->pb_SetupAudioSquelchTest, &QPushButton::clicked, this, &CAudioSetupComponent::ps_startAudioTest);
|
||||
|
||||
// context
|
||||
this->connect(this->getIContextAudio(), &IContextAudio::audioTestCompleted, this, &CAudioSetupComponent::ps_audioTestUpdate);
|
||||
this->connect(this->getIContextAudio(), &IContextAudio::changedAudioDevices, this, &CAudioSetupComponent::ps_onAudioDevicesChanged);
|
||||
this->connect(this->getIContextAudio(), &IContextAudio::changedSelectedAudioDevices, this, &CAudioSetupComponent::ps_onCurrentAudioDevicesChanged);
|
||||
}
|
||||
this->reloadSettings();
|
||||
}
|
||||
@@ -92,33 +97,9 @@ namespace BlackGui
|
||||
*/
|
||||
void CAudioSetupComponent::initAudioDeviceLists()
|
||||
{
|
||||
if (!this->getIContextAudio()) return;
|
||||
this->ui->cb_SetupAudioOutputDevice->clear();
|
||||
this->ui->cb_SetupAudioInputDevice->clear();
|
||||
|
||||
foreach(CAudioDevice device, this->getIContextAudio()->getAudioDevices())
|
||||
{
|
||||
if (device.getType() == CAudioDevice::InputDevice)
|
||||
{
|
||||
this->ui->cb_SetupAudioInputDevice->addItem(device.toQString(true));
|
||||
}
|
||||
else if (device.getType() == CAudioDevice::OutputDevice)
|
||||
{
|
||||
this->ui->cb_SetupAudioOutputDevice->addItem(device.toQString(true));
|
||||
}
|
||||
}
|
||||
|
||||
foreach(CAudioDevice device, this->getIContextAudio()->getCurrentAudioDevices())
|
||||
{
|
||||
if (device.getType() == CAudioDevice::InputDevice)
|
||||
{
|
||||
this->ui->cb_SetupAudioInputDevice->setCurrentText(device.toQString(true));
|
||||
}
|
||||
else if (device.getType() == CAudioDevice::OutputDevice)
|
||||
{
|
||||
this->ui->cb_SetupAudioOutputDevice->setCurrentText(device.toQString(true));
|
||||
}
|
||||
}
|
||||
if (!this->getIContextAudio()) { return; }
|
||||
this->ps_onAudioDevicesChanged(this->getIContextAudio()->getAudioDevices());
|
||||
this->ps_onCurrentAudioDevicesChanged(this->getIContextAudio()->getCurrentAudioDevices());
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -236,6 +217,38 @@ namespace BlackGui
|
||||
}
|
||||
}
|
||||
|
||||
void CAudioSetupComponent::ps_onCurrentAudioDevicesChanged(const BlackMisc::Audio::CAudioDeviceList &devices)
|
||||
{
|
||||
foreach(CAudioDevice device, devices)
|
||||
{
|
||||
if (device.getType() == CAudioDevice::InputDevice)
|
||||
{
|
||||
this->ui->cb_SetupAudioInputDevice->setCurrentText(device.toQString(true));
|
||||
}
|
||||
else if (device.getType() == CAudioDevice::OutputDevice)
|
||||
{
|
||||
this->ui->cb_SetupAudioOutputDevice->setCurrentText(device.toQString(true));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CAudioSetupComponent::ps_onAudioDevicesChanged(const BlackMisc::Audio::CAudioDeviceList &devices)
|
||||
{
|
||||
this->ui->cb_SetupAudioOutputDevice->clear();
|
||||
this->ui->cb_SetupAudioInputDevice->clear();
|
||||
|
||||
foreach(CAudioDevice device, devices)
|
||||
{
|
||||
if (device.getType() == CAudioDevice::InputDevice)
|
||||
{
|
||||
this->ui->cb_SetupAudioInputDevice->addItem(device.toQString(true));
|
||||
}
|
||||
else if (device.getType() == CAudioDevice::OutputDevice)
|
||||
{
|
||||
this->ui->cb_SetupAudioOutputDevice->addItem(device.toQString(true));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace
|
||||
} // namespace
|
||||
|
||||
|
||||
@@ -65,6 +65,12 @@ namespace BlackGui
|
||||
*/
|
||||
void ps_audioDeviceSelected(int index);
|
||||
|
||||
//! Current audio devices changed
|
||||
void ps_onCurrentAudioDevicesChanged(const Audio::CAudioDeviceList &devices);
|
||||
|
||||
//! Audio devices changed
|
||||
void ps_onAudioDevicesChanged(const Audio::CAudioDeviceList &devices);
|
||||
|
||||
private:
|
||||
//! Audio test modes
|
||||
enum AudioTest
|
||||
|
||||
@@ -23,8 +23,16 @@ namespace BlackGui
|
||||
ui(new Ui::CAudioVolumeComponent)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
bool c = connect(this->ui->pb_ShowWinMixer, &QPushButton::pressed, this, &CAudioVolumeComponent::ps_onWindowsMixer);
|
||||
bool c = connect(this->ui->pb_ShowWinMixer, &QPushButton::pressed, this, &CAudioVolumeComponent::ps_onWindowsMixerRequested);
|
||||
Q_ASSERT(c);
|
||||
|
||||
c = connect(this->ui->hs_VolumeCom1, &QSlider::sliderReleased, this, &CAudioVolumeComponent::ps_changeVolume);
|
||||
Q_ASSERT(c);
|
||||
|
||||
c = connect(this->ui->hs_VolumeCom2, &QSlider::sliderReleased, this, &CAudioVolumeComponent::ps_changeVolume);
|
||||
Q_ASSERT(c);
|
||||
|
||||
Q_UNUSED(c);
|
||||
}
|
||||
|
||||
CAudioVolumeComponent::~CAudioVolumeComponent()
|
||||
@@ -32,8 +40,13 @@ namespace BlackGui
|
||||
|
||||
void CAudioVolumeComponent::runtimeHasBeenSet()
|
||||
{
|
||||
// from audio context
|
||||
bool c = connect(this->getIContextAudio(), &IContextAudio::changedMute, this, &CAudioVolumeComponent::ps_onMuteChanged);
|
||||
Q_ASSERT(c);
|
||||
connect(this->getIContextAudio(), &IContextAudio::changedAudioVolumes, this, &CAudioVolumeComponent::ps_onVolumesChanged);
|
||||
Q_ASSERT(c);
|
||||
|
||||
// to audio audio context
|
||||
c = connect(this->ui->pb_Mute, &QPushButton::toggled, this->getIContextAudio(), &IContextAudio::setMute);
|
||||
Q_ASSERT(c);
|
||||
}
|
||||
@@ -44,15 +57,24 @@ namespace BlackGui
|
||||
this->ui->pb_Mute->setChecked(muted);
|
||||
}
|
||||
|
||||
void CAudioVolumeComponent::ps_onVolumeChanged(QList<qint32> volumes)
|
||||
void CAudioVolumeComponent::ps_onVolumesChanged(qint32 com1Volume, qint32 com2Volume)
|
||||
{
|
||||
Q_ASSERT(volumes.length() == 2);
|
||||
if (volumes.length() != 2) return;
|
||||
this->ui->hs_VolumeCom1->setValue(volumes.at(0));
|
||||
this->ui->hs_VolumeCom2->setValue(volumes.at(1));
|
||||
this->ui->hs_VolumeCom1->setValue(com1Volume);
|
||||
this->ui->hs_VolumeCom2->setValue(com2Volume);
|
||||
this->ui->hs_VolumeCom1->setToolTip(QString::number(com1Volume));
|
||||
this->ui->hs_VolumeCom2->setToolTip(QString::number(com2Volume));
|
||||
}
|
||||
|
||||
void CAudioVolumeComponent::ps_onWindowsMixer()
|
||||
void CAudioVolumeComponent::ps_changeVolume()
|
||||
{
|
||||
qint32 v1 = this->ui->hs_VolumeCom1->value();
|
||||
qint32 v2 = this->ui->hs_VolumeCom2->value();
|
||||
this->ui->hs_VolumeCom1->setToolTip(QString::number(v1));
|
||||
this->ui->hs_VolumeCom2->setToolTip(QString::number(v2));
|
||||
this->getIContextAudio()->setVolumes(v1, v2);
|
||||
}
|
||||
|
||||
void CAudioVolumeComponent::ps_onWindowsMixerRequested()
|
||||
{
|
||||
BlackMisc::Audio::startWindowsMixer();
|
||||
}
|
||||
|
||||
@@ -44,11 +44,14 @@ namespace BlackGui
|
||||
//! Mute toggle
|
||||
void ps_onMuteChanged(bool muted);
|
||||
|
||||
//! Volumes changed
|
||||
void ps_onVolumeChanged(QList<qint32> volumes);
|
||||
//! Volumes changed (elsewhere)
|
||||
void ps_onVolumesChanged(qint32 com1Volume, qint32 com2Volume);
|
||||
|
||||
//! Change values because of volume GUI controls
|
||||
void ps_changeVolume();
|
||||
|
||||
//! Requested windows mixer
|
||||
void ps_onWindowsMixer();
|
||||
void ps_onWindowsMixerRequested();
|
||||
|
||||
private:
|
||||
QScopedPointer<Ui::CAudioVolumeComponent> ui;
|
||||
|
||||
@@ -170,13 +170,9 @@ namespace BlackGui
|
||||
}
|
||||
}
|
||||
|
||||
void CInfoBarStatusComponent::ps_onVolumesChanged(QList<qint32> volumes)
|
||||
void CInfoBarStatusComponent::ps_onVolumesChanged(qint32 com1Volume, qint32 com2Volume)
|
||||
{
|
||||
Q_ASSERT(volumes.count() == 2);
|
||||
if (volumes.count() != 2) { return; }
|
||||
qint32 v1 = volumes.at(0);
|
||||
qint32 v2 = volumes.at(1);
|
||||
bool pseudoMute = (v1 < 1 && v2 < 1);
|
||||
bool pseudoMute = (com1Volume < 1 && com2Volume < 1);
|
||||
this->ps_onMuteChanged(pseudoMute);
|
||||
}
|
||||
|
||||
@@ -184,5 +180,5 @@ namespace BlackGui
|
||||
{
|
||||
this->ui->led_Audio->setOn(!muted);
|
||||
}
|
||||
}
|
||||
}
|
||||
} // namespace
|
||||
} // namespace
|
||||
|
||||
@@ -63,7 +63,7 @@ namespace BlackGui
|
||||
void ps_customAudioContextMenuRequested(const QPoint &position);
|
||||
|
||||
//! Volumes changed 0..100
|
||||
void ps_onVolumesChanged(QList<qint32> volumes);
|
||||
void ps_onVolumesChanged(qint32 com1Volume, qint32 com2Volume);
|
||||
|
||||
//! Mute changed
|
||||
void ps_onMuteChanged(bool muted);
|
||||
|
||||
Reference in New Issue
Block a user