Merge PR #4948: REFAC(client): Transmission mode change events

Previously handling the change of transmission mode was done in many
different places causing code duplication.

This commit factors the common functionality out into its own function
and creates a new event for when the transmission mode is changed.
This commit is contained in:
Robert Adam 2021-04-26 21:59:21 +02:00 committed by GitHub
commit 260215ade9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 41 additions and 36 deletions

View File

@ -171,6 +171,8 @@ MainWindow::MainWindow(QWidget *p) : QMainWindow(p) {
connect(qstiIcon, SIGNAL(messageClicked()), this, SLOT(showRaiseWindow()));
connect(qaShow, SIGNAL(triggered()), this, SLOT(showRaiseWindow()));
QObject::connect(this, &MainWindow::transmissionModeChanged, this, &MainWindow::updateTransmitModeComboBox);
// Explicitely add actions to mainwindow so their shortcuts are available
// if only the main window is visible (e.Global::get(). minimal mode)
addActions(findChildren< QAction * >());
@ -392,7 +394,7 @@ void MainWindow::setupGui() {
connect(qcbTransmitMode, SIGNAL(activated(int)), this, SLOT(qcbTransmitMode_activated(int)));
updateTransmitModeComboBox();
updateTransmitModeComboBox(Global::get().s.atTransmit);
#ifdef Q_OS_WIN
setupView(false);
@ -669,8 +671,8 @@ void MainWindow::updateUserModel() {
um->toggleChannelFiltered(nullptr); // Force a UI refresh
}
void MainWindow::updateTransmitModeComboBox() {
switch (Global::get().s.atTransmit) {
void MainWindow::updateTransmitModeComboBox(Settings::AudioTransmit newMode) {
switch (newMode) {
case Settings::Continuous:
qcbTransmitMode->setCurrentIndex(0);
return;
@ -887,6 +889,26 @@ void MainWindow::updateImagePath(QString filepath) const {
Global::get().s.qsImagePath = fi.absolutePath();
}
void MainWindow::setTransmissionMode(Settings::AudioTransmit mode) {
if (Global::get().s.atTransmit != mode) {
Global::get().s.atTransmit = mode;
switch (mode) {
case Settings::Continuous:
Global::get().l->log(Log::Information, tr("Transmit Mode set to Continuous"));
break;
case Settings::VAD:
Global::get().l->log(Log::Information, tr("Transmit Mode set to Voice Activity"));
break;
case Settings::PushToTalk:
Global::get().l->log(Log::Information, tr("Transmit Mode set to Push-to-Talk"));
break;
}
emit transmissionModeChanged(mode);
}
}
static void recreateServerHandler() {
// New server connection, so the sync has not happened yet
ChannelListener::setInitialServerSyncDone(false);
@ -1355,19 +1377,14 @@ void MainWindow::on_qaSelfRegister_triggered() {
void MainWindow::qcbTransmitMode_activated(int index) {
switch (index) {
case 0: // Continuous
Global::get().s.atTransmit = Settings::Continuous;
Global::get().l->log(Log::Information, tr("Transmit Mode set to Continuous"));
return;
setTransmissionMode(Settings::Continuous);
break;
case 1: // Voice Activity
Global::get().s.atTransmit = Settings::VAD;
Global::get().l->log(Log::Information, tr("Transmit Mode set to Voice Activity"));
return;
setTransmissionMode(Settings::VAD);
break;
case 2: // Push-to-Talk
Global::get().s.atTransmit = Settings::PushToTalk;
Global::get().l->log(Log::Information, tr("Transmit Mode set to Push-to-Talk"));
return;
setTransmissionMode(Settings::PushToTalk);
break;
}
}
@ -2604,7 +2621,7 @@ void MainWindow::on_qaConfigDialog_triggered() {
if (dlg->exec() == QDialog::Accepted) {
setupView(false);
updateTransmitModeComboBox();
updateTransmitModeComboBox(Global::get().s.atTransmit);
updateTrayIcon();
updateUserModel();
@ -2973,21 +2990,16 @@ void MainWindow::on_gsCycleTransmitMode_triggered(bool down, QVariant) {
switch (Global::get().s.atTransmit) {
case Settings::Continuous:
Global::get().s.atTransmit = Settings::VAD;
Global::get().l->log(Log::Information, tr("Transmit Mode set to Voice Activity"));
setTransmissionMode(Settings::VAD);
break;
case Settings::VAD:
Global::get().s.atTransmit = Settings::PushToTalk;
Global::get().l->log(Log::Information, tr("Transmit Mode set to Push-to-Talk"));
setTransmissionMode(Settings::PushToTalk);
break;
case Settings::PushToTalk:
Global::get().s.atTransmit = Settings::Continuous;
Global::get().l->log(Log::Information, tr("Transmit Mode set to Continuous"));
setTransmissionMode(Settings::Continuous);
break;
}
}
updateTransmitModeComboBox();
}
void MainWindow::on_gsToggleMainWindowVisibility_triggered(bool down, QVariant) {
@ -3002,29 +3014,20 @@ void MainWindow::on_gsToggleMainWindowVisibility_triggered(bool down, QVariant)
void MainWindow::on_gsTransmitModePushToTalk_triggered(bool down, QVariant) {
if (down) {
Global::get().s.atTransmit = Settings::PushToTalk;
Global::get().l->log(Log::Information, tr("Transmit Mode set to Push-to-Talk"));
setTransmissionMode(Settings::PushToTalk);
}
updateTransmitModeComboBox();
}
void MainWindow::on_gsTransmitModeContinuous_triggered(bool down, QVariant) {
if (down) {
Global::get().s.atTransmit = Settings::Continuous;
Global::get().l->log(Log::Information, tr("Transmit Mode set to Continuous"));
setTransmissionMode(Settings::Continuous);
}
updateTransmitModeComboBox();
}
void MainWindow::on_gsTransmitModeVAD_triggered(bool down, QVariant) {
if (down) {
Global::get().s.atTransmit = Settings::VAD;
Global::get().l->log(Log::Information, tr("Transmit Mode set to Voice Activity"));
setTransmissionMode(Settings::VAD);
}
updateTransmitModeComboBox();
}
void MainWindow::on_gsSendTextMessage_triggered(bool down, QVariant scdata) {

View File

@ -199,7 +199,7 @@ public slots:
void on_qaSelfComment_triggered();
void on_qaSelfRegister_triggered();
void qcbTransmitMode_activated(int index);
void updateTransmitModeComboBox();
void updateTransmitModeComboBox(Settings::AudioTransmit newMode);
void qmUser_aboutToShow();
void qmListener_aboutToShow();
void on_qaUserCommentReset_triggered();
@ -312,6 +312,7 @@ public slots:
/// Updates the user's image directory to the given path (any included
/// filename is discarded).
void updateImagePath(QString filepath) const;
void setTransmissionMode(Settings::AudioTransmit mode);
/// Sets the local user's mute state
///
/// @param mute Whether to mute the user
@ -328,6 +329,7 @@ signals:
void userAddedChannelListener(ClientUser *user, Channel *channel);
/// Signal emitted whenever a user removes a ChannelListener
void userRemovedChannelListener(ClientUser *user, Channel *channel);
void transmissionModeChanged(Settings::AudioTransmit newMode);
public:
MainWindow(QWidget *parent);