added some more help texts and accessibility texts

This commit is contained in:
Volker Fischer 2009-11-27 12:44:56 +00:00
parent 7e0ae4b765
commit 7d8698853e
2 changed files with 130 additions and 26 deletions

View file

@ -33,19 +33,123 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
// add help text to controls ----------------------------------------------- // add help text to controls -----------------------------------------------
// jitter buffer // jitter buffer
QString strJitterBufferSize = tr ( "<b>Jitter Buffer Size:</b> The size of " QString strJitterBufferSize = tr ( "<b>Jitter Buffer Size:</b> The jitter "
"the network buffer (jitter buffer). The jitter buffer compensates for " "buffer compensates for network and sound card timing jitters. The "
"the network jitter. The larger this buffer is, the more robust the " "size of this jitter buffer has therefore influence on the quality of "
"connection is against network jitter but the higher is the latency. " "the audio stream (how many dropouts occur) and the overall delay "
"This setting is therefore a trade-off between audio drop outs and " "(the longer the buffer, the higher the delay).<br/>"
"overall audio delay.<br>By changing this setting, both, the client " "Dropouts in the audio stream are indicated by the light on the bottom "
"and the server jitter buffer is set to the same value." ); "of the jitter buffer size fader. If the light turns to red, a buffer "
"overrun/underrun took place and the audio stream is interrupted.<br/>"
"The jitter buffer setting is therefore a trade-off between audio "
"quality and overall delay.<br/>"
"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 ); TextNetBuf->setWhatsThis ( strJitterBufferSize );
GroupBoxJitterBuffer->setWhatsThis ( strJitterBufferSize ); GroupBoxJitterBuffer->setWhatsThis ( strJitterBufferSize );
SliderNetBuf->setWhatsThis ( strJitterBufferSize ); SliderNetBuf->setWhatsThis ( strJitterBufferSize );
SliderNetBuf->setAccessibleName ( "Jitter buffer slider control" ); SliderNetBuf->setAccessibleName ( tr ( "Jitter buffer slider control" ) );
cbAutoJitBuf->setAccessibleName ( "Auto jitter buffer switch" ); cbAutoJitBuf->setAccessibleName ( tr ( "Auto jitter buffer switch" ) );
CLEDNetw->setAccessibleName ( tr ( "Jitter buffer status LED indicator" ) );
// sound card device
cbSoundcard->setWhatsThis ( tr ( "<b>Sound Card Device:</b> 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.<br/>"
"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 ( "<b>Sound Card Buffer Delay:</b> The "
"buffer delay setting is a fundamental setting of the llcon software. "
"This setting has influence on many connection properties.<br/>"
"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.<br/>"
"Three buffer sizes are supported:"
"<ul>"
"<li>128 samples: This is the preferred setting since it gives lowest "
"latency but does not work with all sound cards.</li>"
"<li>256 samples: This is the default setting and should work on most "
"of the available sound cards.</li>"
"<li>512 samples: This setting should only be used if only a very slow "
"computer or a slow internet connection is available.</li>"
"</ul>"
"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.<br/>"
"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.<br/>"
"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.<br/>"
"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 ( "<b>Open Chat on New "
"Message:</b> 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 ( "<b>Use High Quality Audio</b> "
"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 ( "<b>Current Connection Status "
"Parameter:</b> 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.<br/>"
"The overall delay is calculated from the current ping time and the "
"delay which is introduced by the current buffer settings.<br/>"
"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 // init driver button
#ifdef _WIN32 #ifdef _WIN32

View file

@ -58,8 +58,8 @@ CLlconClientDlg::CLlconClientDlg ( CClient* pNCliP,
"of the audio input.<br/>" "of the audio input.<br/>"
"Make sure not to clip the input signal to avoid distortions of the " "Make sure not to clip the input signal to avoid distortions of the "
"audio signal." ); "audio signal." );
QString strInpLevHAccText = "Input level meter"; QString strInpLevHAccText = tr ( "Input level meter" );
QString strInpLevHAccDescr = "Simulates an analog LED level meter."; QString strInpLevHAccDescr = tr ( "Simulates an analog LED level meter." );
TextLabelInputLevelL->setWhatsThis ( strInpLevH ); TextLabelInputLevelL->setWhatsThis ( strInpLevH );
TextLabelInputLevelR->setWhatsThis ( strInpLevH ); TextLabelInputLevelR->setWhatsThis ( strInpLevH );
MultiColorLEDBarInputLevelL->setWhatsThis ( strInpLevH ); MultiColorLEDBarInputLevelL->setWhatsThis ( strInpLevH );
@ -74,17 +74,17 @@ CLlconClientDlg::CLlconClientDlg ( CClient* pNCliP,
"</b> Push this button to connect the server. A valid IP address has " "</b> Push this button to connect the server. A valid IP address has "
"to be specified before. If the client is connected, pressing this " "to be specified before. If the client is connected, pressing this "
"button will disconnect the connection." ) ); "button will disconnect the connection." ) );
PushButtonConnect->setAccessibleName ( "Connect and disconnect toggle button" ); PushButtonConnect->setAccessibleName ( tr ( "Connect and disconnect toggle button" ) );
PushButtonConnect->setAccessibleDescription ( "Clicking on this button " PushButtonConnect->setAccessibleDescription ( tr ( "Clicking on this button "
"changes the caption of the button from Connect to Disconnect, i.e., it " "changes the caption of the button from Connect to Disconnect, i.e., it "
"implements a toggle functionality for connecting and disconnecting " "implements a toggle functionality for connecting and disconnecting "
"the llcon software." ); "the llcon software." ) );
// status bar // status bar
TextLabelStatus->setWhatsThis ( tr ( "<b>Status Bar:</b> In the status bar " TextLabelStatus->setWhatsThis ( tr ( "<b>Status Bar:</b> In the status bar "
"different messages are displayed. E.g., if an error occurred or the " "different messages are displayed. E.g., if an error occurred or the "
"status of the connection is shown." ) ); "status of the connection is shown." ) );
TextLabelStatus->setAccessibleName ( "Status bar" ); TextLabelStatus->setAccessibleName ( tr ( "Status bar" ) );
// server address // server address
QString strServAddrH = tr ( "<b>Server Address:</b> The IP address or URL " QString strServAddrH = tr ( "<b>Server Address:</b> The IP address or URL "
@ -94,9 +94,9 @@ CLlconClientDlg::CLlconClientDlg ( CClient* pNCliP,
"shown in the status bar." ); "shown in the status bar." );
TextLabelServerAddr->setWhatsThis ( strServAddrH ); TextLabelServerAddr->setWhatsThis ( strServAddrH );
LineEditServerAddr->setWhatsThis ( strServAddrH ); LineEditServerAddr->setWhatsThis ( strServAddrH );
LineEditServerAddr->setAccessibleName ( "Server address input" ); LineEditServerAddr->setAccessibleName ( tr ( "Server address edit box" ) );
LineEditServerAddr->setAccessibleDescription ( "Holds the current server " LineEditServerAddr->setAccessibleDescription ( tr ( "Holds the current server "
"URL. It also stores old URLs in the combo box list." ); "URL. It also stores old URLs in the combo box list." ) );
// fader tag // fader tag
QString strFaderTag = tr ( "<b>Fader Tag:</b> The fader tag of the local " QString strFaderTag = tr ( "<b>Fader Tag:</b> 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 " "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 " "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, " "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 ); TextLabelServerTag->setWhatsThis ( strFaderTag );
LineEditFaderTag->setWhatsThis ( strFaderTag ); LineEditFaderTag->setWhatsThis ( strFaderTag );
LineEditFaderTag->setAccessibleName ( "Fader tag edit box" ); LineEditFaderTag->setAccessibleName ( tr ( "Fader tag edit box" ) );
// local audio input fader // local audio input fader
QString strAudFader = tr ( "<b>Local Audio Input Fader:</b> With the " QString strAudFader = tr ( "<b>Local Audio Input Fader:</b> With the "
@ -120,7 +120,7 @@ CLlconClientDlg::CLlconClientDlg ( CClient* pNCliP,
"<i>x</i> is the current attenuation indication. " ); "<i>x</i> is the current attenuation indication. " );
TextAudInFader->setWhatsThis ( strAudFader ); TextAudInFader->setWhatsThis ( strAudFader );
SliderAudInFader->setWhatsThis ( strAudFader ); SliderAudInFader->setWhatsThis ( strAudFader );
SliderAudInFader->setAccessibleName ( "Local audio input fader (left/right)" ); SliderAudInFader->setAccessibleName ( tr ( "Local audio input fader (left/right)" ) );
// reverberation level // reverberation level
QString strAudReverb = tr ( "<b>Reverberation Level:</b> A reverberation " QString strAudReverb = tr ( "<b>Reverberation Level:</b> A reverberation "
@ -136,7 +136,7 @@ CLlconClientDlg::CLlconClientDlg ( CClient* pNCliP,
"switched off and does not cause any additional CPU usage." ); "switched off and does not cause any additional CPU usage." );
TextLabelAudReverb->setWhatsThis ( strAudReverb ); TextLabelAudReverb->setWhatsThis ( strAudReverb );
SliderAudReverb->setWhatsThis ( strAudReverb ); SliderAudReverb->setWhatsThis ( strAudReverb );
SliderAudReverb->setAccessibleName ( "Reverberation effect level setting" ); SliderAudReverb->setAccessibleName ( tr ( "Reverberation effect level setting" ) );
// reverberation channel selection // reverberation channel selection
QString strRevChanSel = tr ( "<b>Reverberation Channel Selection:</b> " QString strRevChanSel = tr ( "<b>Reverberation Channel Selection:</b> "
@ -144,9 +144,9 @@ CLlconClientDlg::CLlconClientDlg ( CClient* pNCliP,
"reverberation effect is applied can be chosen. Either the left " "reverberation effect is applied can be chosen. Either the left "
"or right input channel can be selected." ); "or right input channel can be selected." );
RadioButtonRevSelL->setWhatsThis ( strRevChanSel ); RadioButtonRevSelL->setWhatsThis ( strRevChanSel );
RadioButtonRevSelL->setAccessibleName ( "Left channel selection for reverberation" ); RadioButtonRevSelL->setAccessibleName ( tr ( "Left channel selection for reverberation" ) );
RadioButtonRevSelR->setWhatsThis ( strRevChanSel ); RadioButtonRevSelR->setWhatsThis ( strRevChanSel );
RadioButtonRevSelR->setAccessibleName ( "Right channel selection for reverberation" ); RadioButtonRevSelR->setAccessibleName ( tr ( "Right channel selection for reverberation" ) );
// overall status // overall status
LEDOverallStatus->setWhatsThis ( tr ( "<b>Overall Status:</b> " LEDOverallStatus->setWhatsThis ( tr ( "<b>Overall Status:</b> "
@ -163,7 +163,7 @@ CLlconClientDlg::CLlconClientDlg ( CClient* pNCliP,
"available internet bandwidth.</li>" "available internet bandwidth.</li>"
"<li>The CPU of the client or server is at 100%.</li>" "<li>The CPU of the client or server is at 100%.</li>"
"</ul>" ) ); "</ul>" ) );
LEDOverallStatus->setAccessibleName ( "Overall status LED indicator" ); LEDOverallStatus->setAccessibleName ( tr ( "Overall status LED indicator" ) );
// init GUI design // init GUI design