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);