diff --git a/src/clientsettingsdlg.cpp b/src/clientsettingsdlg.cpp
index a5555471..58ae1f88 100755
--- a/src/clientsettingsdlg.cpp
+++ b/src/clientsettingsdlg.cpp
@@ -33,19 +33,123 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
// add help text to controls -----------------------------------------------
// jitter buffer
- QString strJitterBufferSize = tr ( "Jitter Buffer Size: The size of "
- "the network buffer (jitter buffer). The jitter buffer compensates for "
- "the network jitter. The larger this buffer is, the more robust the "
- "connection is against network jitter but the higher is the latency. "
- "This setting is therefore a trade-off between audio drop outs and "
- "overall audio delay.
By changing this setting, both, the client "
- "and the server jitter buffer is set to the same value." );
+ QString strJitterBufferSize = tr ( "Jitter Buffer Size: The jitter "
+ "buffer compensates for network and sound card timing jitters. The "
+ "size of this jitter buffer has therefore influence on the quality of "
+ "the audio stream (how many dropouts occur) and the overall delay "
+ "(the longer the buffer, the higher the delay).
"
+ "Dropouts in the audio stream are indicated by the light on the bottom "
+ "of the jitter buffer size fader. If the light turns to red, a buffer "
+ "overrun/underrun took place and the audio stream is interrupted.
"
+ "The jitter buffer setting is therefore a trade-off between audio "
+ "quality and overall delay.
"
+ "An auto setting of the jitter buffer size setting is available. If "
+ "the check Auto is enabled, the jitter buffer is set automatically "
+ "based on measurements of the network and sound card timing jitter. If "
+ "the Auto check is enabled, the jitter buffer size fader is disabled "
+ "(cannot be moved by the mouse)." );
+
TextNetBuf->setWhatsThis ( strJitterBufferSize );
GroupBoxJitterBuffer->setWhatsThis ( strJitterBufferSize );
SliderNetBuf->setWhatsThis ( strJitterBufferSize );
- SliderNetBuf->setAccessibleName ( "Jitter buffer slider control" );
- cbAutoJitBuf->setAccessibleName ( "Auto jitter buffer switch" );
-
+ SliderNetBuf->setAccessibleName ( tr ( "Jitter buffer slider control" ) );
+ cbAutoJitBuf->setAccessibleName ( tr ( "Auto jitter buffer switch" ) );
+ CLEDNetw->setAccessibleName ( tr ( "Jitter buffer status LED indicator" ) );
+
+ // sound card device
+ cbSoundcard->setWhatsThis ( tr ( "Sound Card Device: The ASIO "
+ "driver (sound card) can be selected using llcon under the Windows "
+ "operating system. Under Linux, no sound card selection is possible "
+ "(always wave mapper is shown and cannot be changed). If the selected "
+ "ASIO driver is not valid an error message is shown and the previous "
+ "valid driver is selected.
"
+ "If the driver is selected during an active connection, the connection "
+ "is stopped, the driver is changed and the connection is started again "
+ "automatically." ) );
+ cbSoundcard->setAccessibleName ( tr ( "Sound card device selector combo box" ) );
+
+ // sound card buffer delay
+ QString strSndCrdBufDelay = tr ( "Sound Card Buffer Delay: The "
+ "buffer delay setting is a fundamental setting of the llcon software. "
+ "This setting has influence on many connection properties.
"
+ "With the buffer delay setting, the preferred buffer delay (actually "
+ "the buffer size) is chosen. This value must not be necessary the same "
+ "as the Actual buffer delay since some sound card driver do not allow "
+ "the buffer delay to be changed from within the llcon software. The "
+ "value which is actually used in the llcon software is the Actual "
+ "buffer delay.
"
+ "Three buffer sizes are supported:"
+ "
"
+ "- 128 samples: This is the preferred setting since it gives lowest "
+ "latency but does not work with all sound cards.
"
+ "- 256 samples: This is the default setting and should work on most "
+ "of the available sound cards.
"
+ "- 512 samples: This setting should only be used if only a very slow "
+ "computer or a slow internet connection is available.
"
+ "
"
+ "Buffer sizes different from the three sizes listed above will be "
+ "shown in red color. Trying to connect with this setting will not "
+ "work, an error message is shown instead.
"
+ "If the actual buffer delay differs from the preferred one, it is "
+ "printed in yellow color. To change the actual buffer delay, this "
+ "setting has to be changed in the sound card driver. On Windows, press "
+ "the ASIO Setup button to open the driver settings panel. On Linux, "
+ "use the Jack configuration tool to change the buffer size.
"
+ "The actual buffer delay has influence on the connection status, the "
+ "current upload rate and the overall delay. The lower the buffer size, "
+ "the higher the probability of red light in the status indicator (drop "
+ "outs) and the higher the upload rate and the lower the overall "
+ "delay.
"
+ "The jitter buffer setting is therefore a trade-off between audio "
+ "quality and overall delay." );
+
+ rButBufferDelayPreferred->setWhatsThis ( strSndCrdBufDelay );
+ rButBufferDelayPreferred->setAccessibleName ( tr ( "128 samples setting radio button" ) );
+ rButBufferDelayDefault->setWhatsThis ( strSndCrdBufDelay );
+ rButBufferDelayDefault->setAccessibleName ( tr ( "256 samples setting radio button" ) );
+ rButBufferDelaySafe->setWhatsThis ( strSndCrdBufDelay );
+ rButBufferDelaySafe->setAccessibleName ( tr ( "512 samples setting radio button" ) );
+ ButtonDriverSetup->setWhatsThis ( strSndCrdBufDelay );
+ ButtonDriverSetup->setAccessibleName ( tr ( "ASIO setup push button" ) );
+
+ // open chat on new message
+ cbOpenChatOnNewMessage->setWhatsThis ( tr ( "Open Chat on New "
+ "Message: If this checkbox is enabled, the chat window will "
+ "open on any incoming chat text if it not already opened." ) );
+ cbOpenChatOnNewMessage->setAccessibleName ( tr ( "Open chat on new "
+ "message check box" ) );
+
+ // use high quality audio
+ cbUseHighQualityAudio->setWhatsThis ( tr ( "Use High Quality Audio "
+ "Enabling ""Use High Quality Audio"" will improve the audio quality "
+ "by increasing the stream data rate. Make sure that the current "
+ "upload rate does not exceed the available bandwidth of your "
+ "internet connection." ) );
+ cbUseHighQualityAudio->setAccessibleName ( tr ( "Use high quality audio "
+ "check box" ) );
+
+ // current connection status parameter
+ QString strConnStats = tr ( "Current Connection Status "
+ "Parameter: The ping time is the time required for the audio "
+ "stream to travel from the client to the server and backwards. This "
+ "delay is introduced by the network. This delay should be as low as "
+ "20-30 ms. If this delay is higher (e.g., 50-60 ms), your distance to "
+ "the server is too large or your internet connection is not "
+ "sufficient.
"
+ "The overall delay is calculated from the current ping time and the "
+ "delay which is introduced by the current buffer settings.
"
+ "The upstream rate depends on the current audio packet size and the "
+ "audio compression setting. Make sure that the upstream rate is not "
+ "higher than the available rate (check the upstream capabilities of "
+ "your internet connection by, e.g., using speedtest.net)." );
+
+ TextPingTime->setWhatsThis ( strConnStats );
+ TextLabelPingTime->setWhatsThis ( strConnStats );
+ TextOverallDelay->setWhatsThis ( strConnStats );
+ TextLabelOverallDelay->setWhatsThis ( strConnStats );
+ TextUpstream->setWhatsThis ( strConnStats );
+ TextUpstreamValue->setWhatsThis ( strConnStats );
+
// init driver button
#ifdef _WIN32
diff --git a/src/llconclientdlg.cpp b/src/llconclientdlg.cpp
index 308758e6..0e819470 100755
--- a/src/llconclientdlg.cpp
+++ b/src/llconclientdlg.cpp
@@ -58,8 +58,8 @@ CLlconClientDlg::CLlconClientDlg ( CClient* pNCliP,
"of the audio input.
"
"Make sure not to clip the input signal to avoid distortions of the "
"audio signal." );
- QString strInpLevHAccText = "Input level meter";
- QString strInpLevHAccDescr = "Simulates an analog LED level meter.";
+ QString strInpLevHAccText = tr ( "Input level meter" );
+ QString strInpLevHAccDescr = tr ( "Simulates an analog LED level meter." );
TextLabelInputLevelL->setWhatsThis ( strInpLevH );
TextLabelInputLevelR->setWhatsThis ( strInpLevH );
MultiColorLEDBarInputLevelL->setWhatsThis ( strInpLevH );
@@ -74,17 +74,17 @@ CLlconClientDlg::CLlconClientDlg ( CClient* pNCliP,
" Push this button to connect the server. A valid IP address has "
"to be specified before. If the client is connected, pressing this "
"button will disconnect the connection." ) );
- PushButtonConnect->setAccessibleName ( "Connect and disconnect toggle button" );
- PushButtonConnect->setAccessibleDescription ( "Clicking on this button "
+ PushButtonConnect->setAccessibleName ( tr ( "Connect and disconnect toggle button" ) );
+ PushButtonConnect->setAccessibleDescription ( tr ( "Clicking on this button "
"changes the caption of the button from Connect to Disconnect, i.e., it "
"implements a toggle functionality for connecting and disconnecting "
- "the llcon software." );
+ "the llcon software." ) );
// status bar
TextLabelStatus->setWhatsThis ( tr ( "Status Bar: In the status bar "
"different messages are displayed. E.g., if an error occurred or the "
"status of the connection is shown." ) );
- TextLabelStatus->setAccessibleName ( "Status bar" );
+ TextLabelStatus->setAccessibleName ( tr ( "Status bar" ) );
// server address
QString strServAddrH = tr ( "Server Address: The IP address or URL "
@@ -94,9 +94,9 @@ CLlconClientDlg::CLlconClientDlg ( CClient* pNCliP,
"shown in the status bar." );
TextLabelServerAddr->setWhatsThis ( strServAddrH );
LineEditServerAddr->setWhatsThis ( strServAddrH );
- LineEditServerAddr->setAccessibleName ( "Server address input" );
- LineEditServerAddr->setAccessibleDescription ( "Holds the current server "
- "URL. It also stores old URLs in the combo box list." );
+ LineEditServerAddr->setAccessibleName ( tr ( "Server address edit box" ) );
+ LineEditServerAddr->setAccessibleDescription ( tr ( "Holds the current server "
+ "URL. It also stores old URLs in the combo box list." ) );
// fader tag
QString strFaderTag = tr ( "Fader Tag: The fader tag of the local "
@@ -104,10 +104,10 @@ CLlconClientDlg::CLlconClientDlg ( CClient* pNCliP,
"at your fader on the mixer board when you are connected to a llcon "
"server. This tag will also show up at each client which is connected "
"to the same server as the local client. If the fader tag is empty, "
- "the IP address of the client is displayed instead.");
+ "the IP address of the client is displayed instead." );
TextLabelServerTag->setWhatsThis ( strFaderTag );
LineEditFaderTag->setWhatsThis ( strFaderTag );
- LineEditFaderTag->setAccessibleName ( "Fader tag edit box" );
+ LineEditFaderTag->setAccessibleName ( tr ( "Fader tag edit box" ) );
// local audio input fader
QString strAudFader = tr ( "Local Audio Input Fader: With the "
@@ -120,7 +120,7 @@ CLlconClientDlg::CLlconClientDlg ( CClient* pNCliP,
"x is the current attenuation indication. " );
TextAudInFader->setWhatsThis ( strAudFader );
SliderAudInFader->setWhatsThis ( strAudFader );
- SliderAudInFader->setAccessibleName ( "Local audio input fader (left/right)" );
+ SliderAudInFader->setAccessibleName ( tr ( "Local audio input fader (left/right)" ) );
// reverberation level
QString strAudReverb = tr ( "Reverberation Level: A reverberation "
@@ -136,7 +136,7 @@ CLlconClientDlg::CLlconClientDlg ( CClient* pNCliP,
"switched off and does not cause any additional CPU usage." );
TextLabelAudReverb->setWhatsThis ( strAudReverb );
SliderAudReverb->setWhatsThis ( strAudReverb );
- SliderAudReverb->setAccessibleName ( "Reverberation effect level setting" );
+ SliderAudReverb->setAccessibleName ( tr ( "Reverberation effect level setting" ) );
// reverberation channel selection
QString strRevChanSel = tr ( "Reverberation Channel Selection: "
@@ -144,9 +144,9 @@ CLlconClientDlg::CLlconClientDlg ( CClient* pNCliP,
"reverberation effect is applied can be chosen. Either the left "
"or right input channel can be selected." );
RadioButtonRevSelL->setWhatsThis ( strRevChanSel );
- RadioButtonRevSelL->setAccessibleName ( "Left channel selection for reverberation" );
+ RadioButtonRevSelL->setAccessibleName ( tr ( "Left channel selection for reverberation" ) );
RadioButtonRevSelR->setWhatsThis ( strRevChanSel );
- RadioButtonRevSelR->setAccessibleName ( "Right channel selection for reverberation" );
+ RadioButtonRevSelR->setAccessibleName ( tr ( "Right channel selection for reverberation" ) );
// overall status
LEDOverallStatus->setWhatsThis ( tr ( "Overall Status: "
@@ -163,7 +163,7 @@ CLlconClientDlg::CLlconClientDlg ( CClient* pNCliP,
"available internet bandwidth."
"The CPU of the client or server is at 100%."
"" ) );
- LEDOverallStatus->setAccessibleName ( "Overall status LED indicator" );
+ LEDOverallStatus->setAccessibleName ( tr ( "Overall status LED indicator" ) );
// init GUI design