diff --git a/src/channel.cpp b/src/channel.cpp index 2bb4c060..52ea1fc7 100755 --- a/src/channel.cpp +++ b/src/channel.cpp @@ -626,7 +626,7 @@ void CChannel::UpdateSocketBufferSize ( const double dLocalStdDev ) // completely filled // - we need at least a jitter buffer size of the audio packet duration // -> add audio buffer duration - const double dHysteresis = 0.3; + const double dHysteresis = 0.2; // accumulate the standard deviations of input network stream and // internal timer, diff --git a/src/llconclientdlg.cpp b/src/llconclientdlg.cpp index 2e4438be..029d495f 100755 --- a/src/llconclientdlg.cpp +++ b/src/llconclientdlg.cpp @@ -915,6 +915,33 @@ void CLlconClientDlg::UpdateDisplay() ledConnection->SetLight ( MUL_COL_LED_RED ); } } + + // update settings/chat buttons (do not fire signals since it is an update) + if ( chbSettings->isChecked() && !ClientSettingsDlg.isVisible() ) + { + chbSettings->blockSignals ( true ); + chbSettings->setChecked ( false ); + chbSettings->blockSignals ( false ); + } + if ( !chbSettings->isChecked() && ClientSettingsDlg.isVisible() ) + { + chbSettings->blockSignals ( true ); + chbSettings->setChecked ( true ); + chbSettings->blockSignals ( false ); + } + + if ( chbChat->isChecked() && !ChatDlg.isVisible() ) + { + chbChat->blockSignals ( true ); + chbChat->setChecked ( false ); + chbChat->blockSignals ( false ); + } + if ( !chbChat->isChecked() && ChatDlg.isVisible() ) + { + chbChat->blockSignals ( true ); + chbChat->setChecked ( true ); + chbChat->blockSignals ( false ); + } } void CLlconClientDlg::SetGUIDesign ( const EGUIDesign eNewDesign ) diff --git a/src/llconclientdlg.h b/src/llconclientdlg.h index 6f460a1d..bdfa3c58 100755 --- a/src/llconclientdlg.h +++ b/src/llconclientdlg.h @@ -1,173 +1,172 @@ -/******************************************************************************\ - * Copyright (c) 2004-2011 - * - * Author(s): - * Volker Fischer - * - ****************************************************************************** - * - * This program is free software; you can redistribute it and/or modify it under - * the terms of the GNU General Public License as published by the Free Software - * Foundation; either version 2 of the License, or (at your option) any later - * version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more - * details. - * - * You should have received a copy of the GNU General Public License along with - * this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * -\******************************************************************************/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "global.h" -#include "client.h" -#include "settings.h" -#include "multicolorled.h" -#include "audiomixerboard.h" -#include "clientsettingsdlg.h" -#include "chatdlg.h" -#include "connectdlg.h" -#ifdef _WIN32 -# include "../windows/moc/llconclientdlgbase.h" -#else -# ifdef _IS_QMAKE_CONFIG -# include "ui_llconclientdlgbase.h" -# else -# include "moc/llconclientdlgbase.h" -# endif -#endif - - -/* Definitions ****************************************************************/ -// text strings for connection button for connect and disconnect -#define CON_BUT_CONNECTTEXT "C&onnect" -#define CON_BUT_DISCONNECTTEXT "D&isconnect" - -// update time for GUI controls -#define LEVELMETER_UPDATE_TIME_MS 100 // ms -#define LED_BAR_UPDATE_TIME_MS 1000 // ms - -// range for signal level meter -#define LOW_BOUND_SIG_METER ( -50.0 ) // dB -#define UPPER_BOUND_SIG_METER ( 0.0 ) // dB - -// number of ping times > upper bound until error message is shown -#define NUM_HIGH_PINGS_UNTIL_ERROR 5 - - -/* Classes ********************************************************************/ -class CLlconClientDlg : public QDialog, private Ui_CLlconClientDlgBase -{ - Q_OBJECT - -public: - CLlconClientDlg ( CClient* pNCliP, - CSettings* pNSetP, - const bool bNewConnectOnStartup, - const bool bNewDisalbeLEDs, - QWidget* parent = 0, - Qt::WindowFlags f = 0 ); - -protected: - void SetGUIDesign ( const EGUIDesign eNewDesign ); - void SetMyWindowTitle ( const int iNumClients ); - void ShowGeneralSettings(); - void ShowChatWindow(); - void UpdateAudioFaderSlider(); - void UpdateRevSelection(); - void ConnectDisconnect ( const bool bDoStart ); - - CClient* pClient; - CSettings* pSettings; - - bool bConnected; - bool bUnreadChatMessage; - QTimer TimerSigMet; - QTimer TimerStatus; - QTimer TimerPing; - - virtual void customEvent ( QEvent* Event ); - virtual void closeEvent ( QCloseEvent* Event ); - void UpdateDisplay(); - - QMenu* pViewMenu; - QMenuBar* pMenu; - - CClientSettingsDlg ClientSettingsDlg; - CChatDlg ChatDlg; - CConnectDlg ConnectDlg; - -public slots: - void OnAboutToQuit() { pSettings->Save(); } - - void OnConnectDisconBut(); - void OnTimerSigMet(); - - void OnTimerStatus() - { UpdateDisplay(); } - - void OnTimerPing(); - void OnPingTimeResult ( int iPingTime ); - void OnCLPingTimeWithNumClientsReceived ( CHostAddress InetAddr, - int iPingTime, - int iNumClients ); - - void OnOpenGeneralSettings() { ShowGeneralSettings(); } - void OnOpenChatDialog() { ShowChatWindow(); } - +/******************************************************************************\ + * Copyright (c) 2004-2011 + * + * Author(s): + * Volker Fischer + * + ****************************************************************************** + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any later + * version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * +\******************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "global.h" +#include "client.h" +#include "settings.h" +#include "multicolorled.h" +#include "audiomixerboard.h" +#include "clientsettingsdlg.h" +#include "chatdlg.h" +#include "connectdlg.h" +#ifdef _WIN32 +# include "../windows/moc/llconclientdlgbase.h" +#else +# ifdef _IS_QMAKE_CONFIG +# include "ui_llconclientdlgbase.h" +# else +# include "moc/llconclientdlgbase.h" +# endif +#endif + + +/* Definitions ****************************************************************/ +// text strings for connection button for connect and disconnect +#define CON_BUT_CONNECTTEXT "C&onnect" +#define CON_BUT_DISCONNECTTEXT "D&isconnect" + +// update time for GUI controls +#define LEVELMETER_UPDATE_TIME_MS 100 // ms +#define LED_BAR_UPDATE_TIME_MS 1000 // ms + +// range for signal level meter +#define LOW_BOUND_SIG_METER ( -50.0 ) // dB +#define UPPER_BOUND_SIG_METER ( 0.0 ) // dB + +// number of ping times > upper bound until error message is shown +#define NUM_HIGH_PINGS_UNTIL_ERROR 5 + + +/* Classes ********************************************************************/ +class CLlconClientDlg : public QDialog, private Ui_CLlconClientDlgBase +{ + Q_OBJECT + +public: + CLlconClientDlg ( CClient* pNCliP, + CSettings* pNSetP, + const bool bNewConnectOnStartup, + const bool bNewDisalbeLEDs, + QWidget* parent = 0, + Qt::WindowFlags f = 0 ); + +protected: + void SetGUIDesign ( const EGUIDesign eNewDesign ); + void SetMyWindowTitle ( const int iNumClients ); + void ShowGeneralSettings(); + void ShowChatWindow(); + void UpdateAudioFaderSlider(); + void UpdateRevSelection(); + void ConnectDisconnect ( const bool bDoStart ); + + CClient* pClient; + CSettings* pSettings; + + bool bConnected; + bool bUnreadChatMessage; + QTimer TimerSigMet; + QTimer TimerStatus; + QTimer TimerPing; + + virtual void customEvent ( QEvent* Event ); + virtual void closeEvent ( QCloseEvent* Event ); + void UpdateDisplay(); + + QMenu* pViewMenu; + QMenuBar* pMenu; + + CClientSettingsDlg ClientSettingsDlg; + CChatDlg ChatDlg; + CConnectDlg ConnectDlg; + +public slots: + void OnAboutToQuit() { pSettings->Save(); } + + void OnConnectDisconBut(); + void OnTimerSigMet(); + + void OnTimerStatus() { UpdateDisplay(); } + + void OnTimerPing(); + void OnPingTimeResult ( int iPingTime ); + void OnCLPingTimeWithNumClientsReceived ( CHostAddress InetAddr, + int iPingTime, + int iNumClients ); + + void OnOpenGeneralSettings() { ShowGeneralSettings(); } + void OnOpenChatDialog() { ShowChatWindow(); } + void OnSettingsStateChanged ( int value ); - void OnChatStateChanged ( int value ); - - void OnAudioPanValueChanged ( int value ); - - void OnAudioReverbValueChanged ( int value ) - { pClient->SetReverbLevel ( value ); } - - void OnReverbSelLClicked() - { pClient->SetReverbOnLeftChan ( true ); } - - void OnReverbSelRClicked() - { pClient->SetReverbOnLeftChan ( false ); } - - void OnConClientListMesReceived ( CVector vecChanInfo ); - void OnFaderTagTextChanged ( const QString& strNewName ); - void OnChatTextReceived ( QString strChatText ); - - void OnChangeChanGain ( int iId, double dGain ) - { pClient->SetRemoteChanGain ( iId, dGain ); } - - void OnNewLocalInputText ( QString strChatText ) - { pClient->CreateChatTextMes ( strChatText ); } - - void OnReqServerListQuery ( CHostAddress InetAddr ) - { pClient->CreateCLReqServerListMes ( InetAddr ); } - - void OnCreateCLServerListPingMes ( CHostAddress InetAddr ) - { pClient->CreateCLServerListPingMes ( InetAddr ); } - - void OnCLServerListReceived ( CHostAddress InetAddr, - CVector vecServerInfo ) - { ConnectDlg.SetServerList ( InetAddr, vecServerInfo ); } - - void OnDisconnected(); - - void OnGUIDesignChanged() - { SetGUIDesign ( pClient->GetGUIDesign() ); } - - void OnStereoCheckBoxChanged() { UpdateRevSelection(); } - void OnNumClientsChanged ( int iNewNumClients ); -}; + void OnChatStateChanged ( int value ); + + void OnAudioPanValueChanged ( int value ); + + void OnAudioReverbValueChanged ( int value ) + { pClient->SetReverbLevel ( value ); } + + void OnReverbSelLClicked() + { pClient->SetReverbOnLeftChan ( true ); } + + void OnReverbSelRClicked() + { pClient->SetReverbOnLeftChan ( false ); } + + void OnConClientListMesReceived ( CVector vecChanInfo ); + void OnFaderTagTextChanged ( const QString& strNewName ); + void OnChatTextReceived ( QString strChatText ); + + void OnChangeChanGain ( int iId, double dGain ) + { pClient->SetRemoteChanGain ( iId, dGain ); } + + void OnNewLocalInputText ( QString strChatText ) + { pClient->CreateChatTextMes ( strChatText ); } + + void OnReqServerListQuery ( CHostAddress InetAddr ) + { pClient->CreateCLReqServerListMes ( InetAddr ); } + + void OnCreateCLServerListPingMes ( CHostAddress InetAddr ) + { pClient->CreateCLServerListPingMes ( InetAddr ); } + + void OnCLServerListReceived ( CHostAddress InetAddr, + CVector vecServerInfo ) + { ConnectDlg.SetServerList ( InetAddr, vecServerInfo ); } + + void OnDisconnected(); + + void OnGUIDesignChanged() + { SetGUIDesign ( pClient->GetGUIDesign() ); } + + void OnStereoCheckBoxChanged() { UpdateRevSelection(); } + void OnNumClientsChanged ( int iNewNumClients ); +};