From 619a5248ecf9ee0e7fda60eb6209a168314c9bbd Mon Sep 17 00:00:00 2001 From: Robert Adam Date: Mon, 26 Apr 2021 19:32:48 +0200 Subject: [PATCH] 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. --- src/mumble/MainWindow.cpp | 73 ++++++++++++++++++++------------------- src/mumble/MainWindow.h | 4 ++- 2 files changed, 41 insertions(+), 36 deletions(-) diff --git a/src/mumble/MainWindow.cpp b/src/mumble/MainWindow.cpp index d4698d00d..f48b3ac1f 100644 --- a/src/mumble/MainWindow.cpp +++ b/src/mumble/MainWindow.cpp @@ -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) { diff --git a/src/mumble/MainWindow.h b/src/mumble/MainWindow.h index f29064831..6587fcb36 100644 --- a/src/mumble/MainWindow.h +++ b/src/mumble/MainWindow.h @@ -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);