Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mumble-voip/mumble.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Hacker <dd0t@users.sourceforge.net>2012-08-04 06:46:55 +0400
committerStefan Hacker <dd0t@users.sourceforge.net>2012-08-04 06:46:55 +0400
commitc0886998794dd98d61b3a7bd13b1b78b0a13dafd (patch)
tree061a930505a95dac2589d9ef2adf78904f2af38d
parentf8c1b92f703497a757fb65a3d50e460406c1a7c7 (diff)
Redesign idle action configuration and add a mute idle action.
-rw-r--r--src/mumble/AudioConfigDialog.cpp33
-rw-r--r--src/mumble/AudioConfigDialog.h2
-rw-r--r--src/mumble/AudioInput.cpp15
-rw-r--r--src/mumble/AudioInput.h1
-rw-r--r--src/mumble/AudioInput.ui185
-rw-r--r--src/mumble/Settings.cpp14
-rw-r--r--src/mumble/Settings.h5
-rw-r--r--src/mumble/main.cpp12
8 files changed, 174 insertions, 93 deletions
diff --git a/src/mumble/AudioConfigDialog.cpp b/src/mumble/AudioConfigDialog.cpp
index fb386f02b..41a3f0f4a 100644
--- a/src/mumble/AudioConfigDialog.cpp
+++ b/src/mumble/AudioConfigDialog.cpp
@@ -84,6 +84,7 @@ AudioInputDialog::AudioInputDialog(Settings &st) : ConfigWidget(st) {
on_qcbPushClick_clicked(g.s.bTxAudioCue);
on_Tick_timeout();
+ on_qcbIdleAction_currentIndexChanged(g.s.iaeIdleAction);
}
QString AudioInputDialog::title() const {
@@ -133,7 +134,10 @@ void AudioInputDialog::load(const Settings &r) {
loadSlider(qsNoise, 14);
loadSlider(qsAmp, 20000 - r.iMinLoudness);
- loadSlider(qsIdle, r.iIdleTime);
+
+ // Idle auto actions
+ qsbIdle->setValue(r.iIdleTime / 60);
+ loadComboBox(qcbIdleAction, r.iaeIdleAction);
int echo = 0;
if (r.bEcho)
@@ -155,7 +159,10 @@ void AudioInputDialog::save() const {
s.uiDoublePush = qsDoublePush->value() * 1000;
s.uiPTTHold = qsPTTHold->value();
s.atTransmit = static_cast<Settings::AudioTransmit>(qcbTransmit->currentIndex());
- s.iIdleTime = qsIdle->value();
+
+ // Idle auto actions
+ s.iIdleTime = qsbIdle->value() * 60;
+ s.iaeIdleAction = static_cast<Settings::IdleAction>(qcbIdleAction->currentIndex());
s.bShowPTTButtonWindow = qcbPushWindow->isChecked();
s.bTxAudioCue = qcbPushClick->isChecked();
@@ -184,8 +191,10 @@ bool AudioInputDialog::expert(bool b) {
qlFrames->setVisible(b);
qswTransmit->setVisible(b);
qliIdle->setVisible(b);
- qsIdle->setVisible(b);
+ qsbIdle->setVisible(b);
+ qcbIdleAction->setVisible(b);
qlIdle->setVisible(b);
+ qlIdle2->setVisible(b);
return true;
}
@@ -237,13 +246,6 @@ void AudioInputDialog::on_qsAmp_valueChanged(int v) {
qlAmp->setText(QString::fromLatin1("%1").arg(d, 0, 'f', 2));
}
-void AudioInputDialog::on_qsIdle_valueChanged(int v) {
- if (v > 0)
- qlIdle->setText(tr("%1 min").arg(v / 60));
- else
- qlIdle->setText(tr("Off"));
-}
-
void AudioInputDialog::updateBitrate() {
if (! qsQuality || ! qsFrames || ! qlBitrate)
return;
@@ -394,6 +396,17 @@ void AudioInputDialog::on_Tick_timeout() {
abSpeech->update();
}
+
+void AudioInputDialog::on_qcbIdleAction_currentIndexChanged(int v) {
+ const Settings::IdleAction action = static_cast<Settings::IdleAction>(v);
+
+ const bool enabled = (action != Settings::Nothing);
+
+ qlIdle->setEnabled(enabled);
+ qlIdle2->setEnabled(enabled);
+ qsbIdle->setEnabled(enabled);
+}
+
AudioOutputDialog::AudioOutputDialog(Settings &st) : ConfigWidget(st) {
setupUi(this);
diff --git a/src/mumble/AudioConfigDialog.h b/src/mumble/AudioConfigDialog.h
index b171396d0..f0e62c13d 100644
--- a/src/mumble/AudioConfigDialog.h
+++ b/src/mumble/AudioConfigDialog.h
@@ -70,10 +70,10 @@ class AudioInputDialog : public ConfigWidget, public Ui::AudioInput {
void on_qsDoublePush_valueChanged(int v);
void on_qsPTTHold_valueChanged(int v);
void on_qsNoise_valueChanged(int v);
- void on_qsIdle_valueChanged(int v);
void on_qcbTransmit_currentIndexChanged(int v);
void on_qcbSystem_currentIndexChanged(int);
void on_Tick_timeout();
+ void on_qcbIdleAction_currentIndexChanged(int v);
};
class AudioOutputDialog : public ConfigWidget, public Ui::AudioOutput {
diff --git a/src/mumble/AudioInput.cpp b/src/mumble/AudioInput.cpp
index ace4a105f..eb6bb59be 100644
--- a/src/mumble/AudioInput.cpp
+++ b/src/mumble/AudioInput.cpp
@@ -156,6 +156,7 @@ AudioInput::AudioInput() : opusBuffer(g.s.iFramesPerPacket * (SAMPLE_RATE / 100)
bRunning = true;
connect(this, SIGNAL(doDeaf()), g.mw->qaAudioDeaf, SLOT(trigger()), Qt::QueuedConnection);
+ connect(this, SIGNAL(doMute()), g.mw->qaAudioMute, SLOT(trigger()), Qt::QueuedConnection);
}
AudioInput::~AudioInput() {
@@ -820,10 +821,18 @@ void AudioInput::encodeAudioFrame() {
if (! bIsSpeech && ! bPreviousVoice) {
iBitrate = 0;
- if (g.s.iIdleTime && ! g.s.bDeaf && ((tIdle.elapsed() / 1000000ULL) > g.s.iIdleTime)) {
- emit doDeaf();
- tIdle.restart();
+
+ if (g.s.iaeIdleAction != Settings::Nothing && ((tIdle.elapsed() / 1000000ULL) > g.s.iIdleTime)) {
+
+ if (g.s.iaeIdleAction == Settings::Deafen && !g.s.bDeaf) {
+ tIdle.restart();
+ emit doDeaf();
+ } else if (g.s.iaeIdleAction == Settings::Mute && !g.s.bMute) {
+ tIdle.restart();
+ emit doMute();
+ }
}
+
spx_int32_t increment = 0;
speex_preprocess_ctl(sppPreprocess, SPEEX_PREPROCESS_SET_AGC_INCREMENT, &increment);
return;
diff --git a/src/mumble/AudioInput.h b/src/mumble/AudioInput.h
index c928dc8ed..b6cce4169 100644
--- a/src/mumble/AudioInput.h
+++ b/src/mumble/AudioInput.h
@@ -155,6 +155,7 @@ class AudioInput : public QThread {
static void adjustBandwidth(int bitspersec, int &bitrate, int &frames);
signals:
void doDeaf();
+ void doMute();
public:
bool bResetProcessor;
diff --git a/src/mumble/AudioInput.ui b/src/mumble/AudioInput.ui
index d8a332ac6..fc1d4354b 100644
--- a/src/mumble/AudioInput.ui
+++ b/src/mumble/AudioInput.ui
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>533</width>
- <height>735</height>
+ <height>676</height>
</rect>
</property>
<property name="windowTitle">
@@ -680,79 +680,37 @@
<string>Misc</string>
</property>
<layout class="QGridLayout" name="_2">
- <item row="1" column="0">
- <widget class="QCheckBox" name="qcbPushClick">
+ <item row="2" column="5">
+ <widget class="QPushButton" name="qpbPushClickBrowseOff">
<property name="toolTip">
- <string>Audible audio cue when starting or stopping to transmit</string>
- </property>
- <property name="whatsThis">
- <string>&lt;b&gt;This enables transmission audio cues.&lt;/b&gt;&lt;br /&gt;Setting this will give you a short audio beep when you start and stop transmitting.</string>
+ <string>Browse for off audio file</string>
</property>
<property name="text">
- <string>Audio cue</string>
- </property>
- </widget>
- </item>
- <item row="11" column="5" colspan="2">
- <widget class="QSlider" name="qsIdle">
- <property name="toolTip">
- <string>How long to remain idle before auto-deafen.</string>
- </property>
- <property name="whatsThis">
- <string>This sets an idle timer. If the timer expires without any audio being sent to the server, you are muted and deafened.</string>
- </property>
- <property name="maximum">
- <number>1800</number>
- </property>
- <property name="singleStep">
- <number>60</number>
- </property>
- <property name="pageStep">
- <number>300</number>
- </property>
- <property name="value">
- <number>1800</number>
- </property>
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- <item row="1" column="5">
- <widget class="QLineEdit" name="qlePushClickPathOn">
- <property name="toolTip">
- <string>Gets played when starting to transmit</string>
+ <string>B&amp;rowse...</string>
</property>
</widget>
</item>
- <item row="1" column="3">
- <widget class="QLabel" name="qlPushClickOn">
+ <item row="2" column="3">
+ <widget class="QLabel" name="qlPushClickOff">
<property name="text">
- <string>On</string>
+ <string>Off</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
- <item row="2" column="5">
- <widget class="QLineEdit" name="qlePushClickPathOff">
- <property name="toolTip">
- <string>Gets played when stopping to transmit</string>
- </property>
- </widget>
- </item>
- <item row="2" column="3">
- <widget class="QLabel" name="qlPushClickOff">
+ <item row="1" column="3">
+ <widget class="QLabel" name="qlPushClickOn">
<property name="text">
- <string>Off</string>
+ <string>On</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
- <item row="1" column="7">
+ <item row="1" column="6">
<widget class="QPushButton" name="qpbPushClickPreview">
<property name="toolTip">
<string>Preview the audio cues</string>
@@ -765,7 +723,7 @@
</property>
</widget>
</item>
- <item row="2" column="7">
+ <item row="2" column="6">
<widget class="QPushButton" name="qpbPushClickReset">
<property name="toolTip">
<string>Reset audio cue to default</string>
@@ -778,43 +736,116 @@
</property>
</widget>
</item>
- <item row="11" column="0">
- <widget class="QLabel" name="qliIdle">
+ <item row="1" column="5">
+ <widget class="QPushButton" name="qpbPushClickBrowseOn">
+ <property name="toolTip">
+ <string>Browse for on audio file</string>
+ </property>
<property name="text">
- <string>Idle AutoDeafen</string>
+ <string>&amp;Browse...</string>
</property>
</widget>
</item>
- <item row="11" column="7">
- <widget class="QLabel" name="qlIdle">
- <property name="minimumSize">
- <size>
- <width>30</width>
- <height>0</height>
- </size>
+ <item row="1" column="4">
+ <widget class="QLineEdit" name="qlePushClickPathOn">
+ <property name="toolTip">
+ <string>Gets played when starting to transmit</string>
</property>
- <property name="text">
- <string/>
+ </widget>
+ </item>
+ <item row="2" column="4">
+ <widget class="QLineEdit" name="qlePushClickPathOff">
+ <property name="toolTip">
+ <string>Gets played when stopping to transmit</string>
</property>
</widget>
</item>
- <item row="2" column="6">
- <widget class="QPushButton" name="qpbPushClickBrowseOff">
+ <item row="1" column="0">
+ <widget class="QCheckBox" name="qcbPushClick">
<property name="toolTip">
- <string>Browse for off audio file</string>
+ <string>Audible audio cue when starting or stopping to transmit</string>
+ </property>
+ <property name="whatsThis">
+ <string>&lt;b&gt;This enables transmission audio cues.&lt;/b&gt;&lt;br /&gt;Setting this will give you a short audio beep when you start and stop transmitting.</string>
</property>
<property name="text">
- <string>B&amp;rowse...</string>
+ <string>Audio cue</string>
</property>
</widget>
</item>
- <item row="1" column="6">
- <widget class="QPushButton" name="qpbPushClickBrowseOn">
- <property name="toolTip">
- <string>Browse for on audio file</string>
- </property>
+ <item row="3" column="4">
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QLabel" name="qlIdle2">
+ <property name="text">
+ <string>after</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="qsbIdle">
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="maximum">
+ <number>5000</number>
+ </property>
+ <property name="value">
+ <number>5</number>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="qlIdle">
+ <property name="minimumSize">
+ <size>
+ <width>30</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>Minutes do</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="3" column="5">
+ <widget class="QComboBox" name="qcbIdleAction">
+ <item>
+ <property name="text">
+ <string>Nothing</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Deafen</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Mute</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="2">
+ <widget class="QLabel" name="qliIdle">
<property name="text">
- <string>&amp;Browse...</string>
+ <string>Idle action</string>
</property>
</widget>
</item>
diff --git a/src/mumble/Settings.cpp b/src/mumble/Settings.cpp
index fddc6dae4..2c4910b64 100644
--- a/src/mumble/Settings.cpp
+++ b/src/mumble/Settings.cpp
@@ -268,7 +268,11 @@ Settings::Settings() {
iJitterBufferSize = 1;
iFramesPerPacket = 2;
iNoiseSuppress = -30;
- iIdleTime = 0;
+
+ // Idle auto actions
+ iIdleTime = 5 * 60;
+ iaeIdleAction = Nothing;
+
vsVAD = Amplitude;
fVADmin = 0.80f;
fVADmax = 0.98f;
@@ -549,7 +553,11 @@ void Settings::load(QSettings* settings_ptr) {
SAVELOAD(iNoiseSuppress, "audio/noisesupress");
SAVELOAD(iVoiceHold, "audio/voicehold");
SAVELOAD(iOutputDelay, "audio/outputdelay");
+
+ // Idle auto actions
SAVELOAD(iIdleTime, "audio/idletime");
+ LOADENUM(iaeIdleAction, "audio/idleaction");
+
SAVELOAD(fAudioMinDistance, "audio/mindistance");
SAVELOAD(fAudioMaxDistance, "audio/maxdistance");
SAVELOAD(fAudioMaxDistVolume, "audio/maxdistancevolume");
@@ -830,7 +838,11 @@ void Settings::save() {
SAVELOAD(iNoiseSuppress, "audio/noisesupress");
SAVELOAD(iVoiceHold, "audio/voicehold");
SAVELOAD(iOutputDelay, "audio/outputdelay");
+
+ // Idle auto actions
SAVELOAD(iIdleTime, "audio/idletime");
+ SAVELOAD(iaeIdleAction, "audio/idleaction");
+
SAVELOAD(fAudioMinDistance, "audio/mindistance");
SAVELOAD(fAudioMaxDistance, "audio/maxdistance");
SAVELOAD(fAudioMaxDistVolume, "audio/maxdistancevolume");
diff --git a/src/mumble/Settings.h b/src/mumble/Settings.h
index 47383f92c..52b512ef2 100644
--- a/src/mumble/Settings.h
+++ b/src/mumble/Settings.h
@@ -164,6 +164,7 @@ struct Settings {
enum ChannelDrag { Ask, DoNothing, Move };
enum ServerShow { ShowPopulated, ShowReachable, ShowAll };
enum TalkState { Passive, Talking, Whispering, Shouting };
+ enum IdleAction { Nothing, Deafen, Mute };
typedef QPair<QList<QSslCertificate>, QSslKey> KeyPair;
AudioTransmit atTransmit;
@@ -187,7 +188,11 @@ struct Settings {
int iTTSVolume, iTTSThreshold;
int iQuality, iMinLoudness, iVoiceHold, iJitterBufferSize;
int iNoiseSuppress;
+
+ // Idle auto actions
unsigned int iIdleTime;
+ IdleAction iaeIdleAction;
+
VADSource vsVAD;
float fVADmin, fVADmax;
int iFramesPerPacket;
diff --git a/src/mumble/main.cpp b/src/mumble/main.cpp
index 490be718a..cca72fc33 100644
--- a/src/mumble/main.cpp
+++ b/src/mumble/main.cpp
@@ -397,6 +397,16 @@ int main(int argc, char **argv) {
if (g.s.uiUpdateCounter == 0) {
// Previous version was an pre 1.2.3 release or this is the first run
runaudiowizard = true;
+
+ } else if (g.s.uiUpdateCounter == 1) {
+ // Previous versions used old idle action style, convert it
+
+ if (g.s.iIdleTime == 5 * 60) { // New default
+ g.s.iaeIdleAction = Settings::Nothing;
+ } else {
+ g.s.iIdleTime = 60 * qRound(g.s.iIdleTime / 60.); // Round to minutes
+ g.s.iaeIdleAction = Settings::Deafen; // Old behavior
+ }
}
if (runaudiowizard) {
@@ -405,7 +415,7 @@ int main(int argc, char **argv) {
delete aw;
}
- g.s.uiUpdateCounter = 1;
+ g.s.uiUpdateCounter = 2;
if (! CertWizard::validateCert(g.s.kpCertificate)) {
QDir qd(QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation));