diff --git a/ChangeLog b/ChangeLog index fd172635..6d31f332 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,22 +2,46 @@ +3.5.4git + +- support intermediate Reaper RPP file while recording, coded by pljones (Ticket #170) + +- duplicate Central Server type dropdown to Connection Setup (#157) + + +TODO Keep lrelease? Does it work as expected? + +TODO fix Linux deploy script -> gives errors right now + +TODO fix incorrect what's this help texts + +TODO WIP support internationalization + +TODO implement panning for channels (Ticket #52, #145) + +TODO show mute state of others + + + + -3.5.3git + +3.5.3 (2020-05-15) - correct unregister of headless server and RPP file creation on SIGINT/SIGTERM, coded by pljones (Tickets #130, #168) - for CoreAudio and 4 channel input, support mixing channels 1&2 with 3&4 -- added bassoon/oboe/harp instrument icons created by dszgit; +- added bassoon/oboe/harp instrument icons created by dszgit, congas/bongo created by bspeer (Ticket #131) - link to docs from application Help menu (Ticket #90) - support Mac CoreAudio aggregated devices (Ticket #138) -- added translations: french by trebmuh, portuguese by Snayler, spanish by ignotus666 (Ticket #77) +- added translations: French by trebmuh, Portuguese by Snayler, + Spanish by ignotus666, Dutch by jerogee, German by corrados (Ticket #77) - new design for the About dialog (Ticket #189) @@ -30,18 +54,7 @@ - bug fix: better handling of disconnect message in the client - -TODO check if Tickets #130, #168 are really solved by code from pljones - -TODO WIP support internationalization - -TODO implement panning for channels (Ticket #52, #145) - -TODO show mute state of others - - - - +- note: Jamulus is no longer compatible to Qt4 3.5.2 (2020-04-24) diff --git a/Jamulus.pro b/Jamulus.pro index 31e840bb..2884dcba 100755 --- a/Jamulus.pro +++ b/Jamulus.pro @@ -1,4 +1,4 @@ -VERSION = 3.5.3git +VERSION = 3.5.4git # use target name which does not use a captital letter at the beginning contains(CONFIG, "noupcasename") { @@ -18,7 +18,8 @@ QT += widgets \ TRANSLATIONS = src/res/translation/translation_de_DE.ts \ src/res/translation/translation_fr_FR.ts \ src/res/translation/translation_pt_PT.ts \ - src/res/translation/translation_es_ES.ts + src/res/translation/translation_es_ES.ts \ + src/res/translation/translation_nl_NL.ts INCLUDEPATH += src @@ -262,7 +263,7 @@ DISTFILES_OBOE += libs/oboe/AUTHORS \ } else:unix { # we want to compile with C++11 - QMAKE_CXXFLAGS += -std=c++11 + CONFIG += c++11 # we assume to have lrintf() one moderately modern linux distributions # would be better to have that tested, though diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml index cba6d9a2..383efd24 100644 --- a/android/AndroidManifest.xml +++ b/android/AndroidManifest.xml @@ -1,5 +1,5 @@ - + - + diff --git a/android/res/drawable-hdpi/icon.png b/android/res/drawable-hdpi/icon.png new file mode 100644 index 00000000..0ccf07af Binary files /dev/null and b/android/res/drawable-hdpi/icon.png differ diff --git a/android/res/drawable-ldpi/icon.png b/android/res/drawable-ldpi/icon.png new file mode 100644 index 00000000..a4feee4b Binary files /dev/null and b/android/res/drawable-ldpi/icon.png differ diff --git a/android/res/drawable-mdpi/icon.png b/android/res/drawable-mdpi/icon.png new file mode 100644 index 00000000..b3cb62fa Binary files /dev/null and b/android/res/drawable-mdpi/icon.png differ diff --git a/android/res/drawable-xhdpi/icon.png b/android/res/drawable-xhdpi/icon.png new file mode 100644 index 00000000..44170dde Binary files /dev/null and b/android/res/drawable-xhdpi/icon.png differ diff --git a/android/res/drawable-xxhdpi/icon.png b/android/res/drawable-xxhdpi/icon.png new file mode 100644 index 00000000..ba542bc0 Binary files /dev/null and b/android/res/drawable-xxhdpi/icon.png differ diff --git a/android/res/drawable-xxxhdpi/icon.png b/android/res/drawable-xxxhdpi/icon.png new file mode 100644 index 00000000..aa894729 Binary files /dev/null and b/android/res/drawable-xxxhdpi/icon.png differ diff --git a/distributions/debian/watch b/distributions/debian/watch index 95b58e4b..39d4a1fe 100644 --- a/distributions/debian/watch +++ b/distributions/debian/watch @@ -1,5 +1,5 @@ version=4 # GitHub hosted projects -opts="filenamemangle=s%(?:.*?)?v?(\d[\d.]*)\.tar\.gz%@PACKAGE@-$1.tar.gz%" \ +opts=uversionmangle=s%_%.%g,filenamemangle=s%(?:.*?)?(r\d[\d_]*)\.tar\.gz%@PACKAGE@-$1.tar.gz% \ https://github.com/corrados/jamulus/tags \ - (?:.*?/)?v?(\d[\d.]*)\.tar\.gz debian uupdate + (?:.*?/)?r(\d[\d_]*)\.tar\.gz debian uupdate diff --git a/src/audiomixerboard.cpp b/src/audiomixerboard.cpp index 4be336b0..9c0a6702 100644 --- a/src/audiomixerboard.cpp +++ b/src/audiomixerboard.cpp @@ -278,13 +278,11 @@ void CChannelFader::Reset() strReceivedName = ""; SetupFaderTag ( SL_NOT_SET ); - // set a defined tool tip time out (only available in Qt5) -#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) + // set a defined tool tip time out const int iToolTipDurMs = 30000; plblLabel->setToolTipDuration ( iToolTipDurMs ); plblInstrument->setToolTipDuration ( iToolTipDurMs ); plblCountryFlag->setToolTipDuration ( iToolTipDurMs ); -#endif bOtherChannelIsSolo = false; } @@ -599,12 +597,6 @@ CAudioMixerBoard::CAudioMixerBoard ( QWidget* parent, Qt::WindowFlags ) : // Connections ------------------------------------------------------------- -// for (int i=0; i< static_cast( vecpChanFader.size() ); i++) { -// QObject::connect ( vecpChanFader[i], SIGNAL ( panValueChanged ( double ) ), -// this, SLOT ( OnPanValueChanged ( double ) ) ); -// } - - #if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) connectFaderSignalsToMixerBoardSlots(); @@ -766,9 +758,9 @@ CAudioMixerBoard::CAudioMixerBoard ( QWidget* parent, Qt::WindowFlags ) : QObject::connect ( vecpChanFader[49], SIGNAL ( soloStateChanged ( int ) ), this, SLOT ( OnChSoloStateChanged() ) ); #endif + } -#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) template inline void CAudioMixerBoard::connectFaderSignalsToMixerBoardSlots() { @@ -795,8 +787,6 @@ inline void CAudioMixerBoard::connectFaderSignalsToMixerBoardSlots() template<> inline void CAudioMixerBoard::connectFaderSignalsToMixerBoardSlots<0>() {}; -#endif - void CAudioMixerBoard::SetServerName ( const QString& strNewServerName ) { // store the current server name @@ -867,9 +857,9 @@ void CAudioMixerBoard::ApplyNewConClientList ( CVector& vecChanInf { // we want to set the server name only if the very first faders appear // in the audio mixer board to show a "try to connect" before - if ( pGroupBox->title().compare ( strServerName ) ) + if ( bNoFaderVisible ) { - pGroupBox->setTitle ( strServerName ); + pGroupBox->setTitle ( tr ( "Personal Mix at the Server: " ) + strServerName ); } // get number of connected clients diff --git a/src/audiomixerboard.h b/src/audiomixerboard.h index c1bdda38..8868d15c 100644 --- a/src/audiomixerboard.h +++ b/src/audiomixerboard.h @@ -8,16 +8,16 @@ * * 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 + * 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 + * 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 + * 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., + * this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * \******************************************************************************/ @@ -107,12 +107,10 @@ signals: void soloStateChanged ( int value ); }; - #if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) template class CAudioMixerBoardSlots : public CAudioMixerBoardSlots { - public: void OnChGainValueChanged ( double dValue ) { UpdateGainValue ( slotId - 1, dValue ); } void OnChPanValueChanged ( double dValue ) { UpdatePanValue ( slotId - 1, dValue ); } @@ -130,9 +128,9 @@ class CAudioMixerBoardSlots<0> {}; #else template class CAudioMixerBoardSlots {}; - #endif + class CAudioMixerBoard : public QScrollArea, public CAudioMixerBoardSlots diff --git a/src/chatdlg.cpp b/src/chatdlg.cpp index f2fd1769..0a1554f3 100755 --- a/src/chatdlg.cpp +++ b/src/chatdlg.cpp @@ -94,11 +94,5 @@ void CChatDlg::AddChatText ( QString strChatText ) txvChatWindow->append ( strChatText ); // notify accessibility plugin that text has changed - QAccessible::updateAccessibility ( -#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) - txvChatWindow, 0, QAccessible::ValueChanged -#else - new QAccessibleValueChangeEvent ( txvChatWindow, strChatText ) -#endif - ); + QAccessible::updateAccessibility ( new QAccessibleValueChangeEvent ( txvChatWindow, strChatText ) ); } diff --git a/src/clientdlg.cpp b/src/clientdlg.cpp index 349433d9..bd748a09 100755 --- a/src/clientdlg.cpp +++ b/src/clientdlg.cpp @@ -39,7 +39,7 @@ CClientDlg::CClientDlg ( CClient* pNCliP, bConnectDlgWasShown ( false ), ClientSettingsDlg ( pNCliP, parent, Qt::Window ), ChatDlg ( parent, Qt::Window ), - ConnectDlg ( bNewShowComplRegConnList, parent, Qt::Dialog ), + ConnectDlg ( pNCliP, bNewShowComplRegConnList, parent, Qt::Dialog ), AnalyzerConsole ( pNCliP, parent, Qt::Window ), MusicianProfileDlg ( pNCliP, parent ) { @@ -705,7 +705,7 @@ void CClientDlg::OnConnectDlgAccepted() if ( strSelectedAddress.isEmpty() ) { strSelectedAddress = DEFAULT_SERVER_ADDRESS; - strMixerBoardLabel = DEFAULT_SERVER_NAME; + strMixerBoardLabel = tr ( "Central Server" ); } } diff --git a/src/clientsettingsdlg.cpp b/src/clientsettingsdlg.cpp index 0e18604c..e59cb3a7 100755 --- a/src/clientsettingsdlg.cpp +++ b/src/clientsettingsdlg.cpp @@ -346,9 +346,9 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent, // central server address type combo box cbxCentServAddrType->clear(); - cbxCentServAddrType->addItem ( tr ( "Manual" ) ); // AT_MANUAL - cbxCentServAddrType->addItem ( tr ( "Default" ) ); // AT_DEFAULT - cbxCentServAddrType->addItem ( tr ( "Default (North America)" ) ); // AT_NORTH_AMERICA + cbxCentServAddrType->addItem ( csCentServAddrTypeToString ( AT_MANUAL ) ); + cbxCentServAddrType->addItem ( csCentServAddrTypeToString ( AT_DEFAULT ) ); + cbxCentServAddrType->addItem ( csCentServAddrTypeToString ( AT_GENERAL_NORTHAMERICA ) ); cbxCentServAddrType->setCurrentIndex ( static_cast ( pClient->GetCentralServerAddressType() ) ); UpdateCentralServerDependency(); @@ -443,6 +443,10 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent, SIGNAL ( buttonClicked ( QAbstractButton* ) ), this, SLOT ( OnSndCrdBufferDelayButtonGroupClicked ( QAbstractButton* ) ) ); + QObject::connect ( pClient, + SIGNAL ( CentralServerAddressTypeChanged() ), + this, SLOT ( OnCentralServerAddressTypeChanged() ) ); + // Timers ------------------------------------------------------------------ // start timer for status bar @@ -583,6 +587,13 @@ void CClientSettingsDlg::UpdateCentralServerDependency() { const bool bCurUseDefCentServAddr = ( pClient->GetCentralServerAddressType() != AT_MANUAL ); + // update server type combo box (because the value may have ben changed + // by a control in another dialog, e.g., the connect dialog), + // since it is just an update, do not fire signals for the update + cbxCentServAddrType->blockSignals ( true ); + cbxCentServAddrType->setCurrentIndex ( static_cast ( pClient->GetCentralServerAddressType() ) ); + cbxCentServAddrType->blockSignals ( false ); + // make sure the line edit does not fire signals when we update the text edtCentralServerAddress->blockSignals ( true ); { @@ -590,7 +601,7 @@ void CClientSettingsDlg::UpdateCentralServerDependency() { // if the default central server is used, just show a text of the // server name - edtCentralServerAddress->setText ( DEFAULT_SERVER_NAME ); + edtCentralServerAddress->setText ( tr ( "Predefined Address" ) ); } else { diff --git a/src/clientsettingsdlg.h b/src/clientsettingsdlg.h index 330c44b3..5d199a7e 100755 --- a/src/clientsettingsdlg.h +++ b/src/clientsettingsdlg.h @@ -102,6 +102,7 @@ protected: void OnAudioChannelsActivated ( int iChanIdx ); void OnAudioQualityActivated ( int iQualityIdx ); void OnCentServAddrTypeActivated ( int iTypeIdx ); + void OnCentralServerAddressTypeChanged() { UpdateCentralServerDependency(); } void OnDriverSetupClicked(); signals: diff --git a/src/connectdlg.cpp b/src/connectdlg.cpp index b3aa823e..06fc74e2 100755 --- a/src/connectdlg.cpp +++ b/src/connectdlg.cpp @@ -26,10 +26,12 @@ /* Implementation *************************************************************/ -CConnectDlg::CConnectDlg ( const bool bNewShowCompleteRegList, - QWidget* parent, +CConnectDlg::CConnectDlg ( CClient* pNCliP, + const bool bNewShowCompleteRegList, + QWidget* parent, Qt::WindowFlags f ) : QDialog ( parent, f ), + pClient ( pNCliP ), strCentralServerAddress ( "" ), strSelectedAddress ( "" ), strSelectedServerName ( "" ), @@ -63,7 +65,7 @@ CConnectDlg::CConnectDlg ( const bool bNewShowCompleteRegList, " server software must be set here. An optional port number can be added after the IP " "address or URL using a colon as a separator, e.g, " "example.org:" ) + - QString().setNum ( LLCON_DEFAULT_PORT_NUMBER ) + tr ( ". A list of " + QString().setNum ( DEFAULT_PORT_NUMBER ) + tr ( ". A list of " "the most recent used server IP addresses or URLs is available for " "selection." ); @@ -74,9 +76,15 @@ CConnectDlg::CConnectDlg ( const bool bNewShowCompleteRegList, cbxServerAddr->setAccessibleDescription ( tr ( "Holds the current server " "IP address or URL. It also stores old URLs in the combo box list." ) ); + // central server address type combo box + cbxCentServAddrType->clear(); + cbxCentServAddrType->addItem ( csCentServAddrTypeToString ( AT_MANUAL ) ); + cbxCentServAddrType->addItem ( csCentServAddrTypeToString ( AT_DEFAULT ) ); + cbxCentServAddrType->addItem ( csCentServAddrTypeToString ( AT_GENERAL_NORTHAMERICA ) ); + // filter edtFilter->setWhatsThis ( "" + tr ( "Filter" ) + ": " + tr ( "The server " - "list is filered by the given text. Note that the filter is case insensitive." ) ); + "list is filtered by the given text. Note that the filter is case insensitive." ) ); edtFilter->setAccessibleName ( tr ( "Filter edit box" ) ); // show all mucisians @@ -162,6 +170,9 @@ CConnectDlg::CConnectDlg ( const bool bNewShowCompleteRegList, QObject::connect ( cbxServerAddr, SIGNAL ( editTextChanged ( const QString& ) ), this, SLOT ( OnServerAddrEditTextChanged ( const QString& ) ) ); + QObject::connect ( cbxCentServAddrType, SIGNAL ( activated ( int ) ), + this, SLOT ( OnCentServAddrTypeChanged ( int ) ) ); + // check boxes QObject::connect ( chbExpandAll, SIGNAL ( stateChanged ( int ) ), this, SLOT ( OnExpandAllStateChanged ( int ) ) ); @@ -220,6 +231,11 @@ void CConnectDlg::RequestServerList() // clear filter edit box edtFilter->setText ( "" ); + // update list combo box (disable events to avoid a signal) + cbxCentServAddrType->blockSignals ( true ); + cbxCentServAddrType->setCurrentIndex ( static_cast ( pClient->GetCentralServerAddressType() ) ); + cbxCentServAddrType->blockSignals ( false ); + // get the IP address of the central server (using the ParseNetworAddress // function) when the connect dialog is opened, this seems to be the correct // time to do it @@ -304,7 +320,7 @@ void CConnectDlg::SetServerList ( const CHostAddress& InetAddr, // IP address and port (use IP number without last byte) // Definition: If the port number is the default port number, we do // not show it. - if ( vecServerInfo[iIdx].HostAddr.iPort == LLCON_DEFAULT_PORT_NUMBER ) + if ( vecServerInfo[iIdx].HostAddr.iPort == DEFAULT_PORT_NUMBER ) { // only show IP number, no port number pNewListViewItem->setText ( 0, CurHostAddress.toString ( CHostAddress::SM_IP_NO_LAST_BYTE ) ); diff --git a/src/connectdlg.h b/src/connectdlg.h index 14aef15f..ae6442c8 100755 --- a/src/connectdlg.h +++ b/src/connectdlg.h @@ -47,8 +47,9 @@ class CConnectDlg : public QDialog, private Ui_CConnectDlgBase Q_OBJECT public: - CConnectDlg ( const bool bNewShowCompleteRegList, - QWidget* parent = nullptr, + CConnectDlg ( CClient* pNCliP, + const bool bNewShowCompleteRegList, + QWidget* parent = nullptr, Qt::WindowFlags f = nullptr ); void Init ( const CVector& vstrIPAddresses ); @@ -88,6 +89,8 @@ protected: void UpdateListFilter(); void ShowAllMusicians ( const bool bState ); + CClient* pClient; + QTimer TimerPing; QTimer TimerReRequestServList; QString strCentralServerAddress; @@ -104,6 +107,7 @@ public slots: void OnServerListItemSelectionChanged(); void OnServerListItemDoubleClicked ( QTreeWidgetItem* Item, int ); void OnServerAddrEditTextChanged ( const QString& ); + void OnCentServAddrTypeChanged ( int iTypeIdx ) { pClient->SetCentralServerAddressType ( static_cast ( iTypeIdx ) ); } void OnFilterTextEdited ( const QString& ) { UpdateListFilter(); } void OnExpandAllStateChanged ( int value ) { ShowAllMusicians ( value == Qt::Checked ); } void OnConnectClicked(); diff --git a/src/connectdlgbase.ui b/src/connectdlgbase.ui index 7eaf1112..5f0a820a 100755 --- a/src/connectdlgbase.ui +++ b/src/connectdlgbase.ui @@ -29,6 +29,16 @@ 0 + + + + List + + + + + + diff --git a/src/global.h b/src/global.h index defc3489..dfef04dc 100755 --- a/src/global.h +++ b/src/global.h @@ -101,9 +101,10 @@ LED bar: lbr #define SYSTEM_FRAME_SIZE_SAMPLES 64 #define DOUBLE_SYSTEM_FRAME_SIZE_SAMPLES ( 2 * SYSTEM_FRAME_SIZE_SAMPLES ) -// default server address +// default server address and port numbers #define DEFAULT_SERVER_ADDRESS "jamulus.fischvolk.de" -#define DEFAULT_SERVER_NAME "Central Server" +#define DEFAULT_PORT_NUMBER 22124 +#define CENTSERV_GENERAL_NORTHAMERICA "jamulus.fischvolk.de:22224" // getting started and software manual URL #define CLIENT_GETTING_STARTED_URL "https://github.com/corrados/jamulus/wiki/Software-Manual" @@ -116,10 +117,6 @@ LED bar: lbr #define WELL_KNOWN_PORT 53 // DNS #define IP_LOOKUP_TIMEOUT 500 // ms -// defined port numbers for client and server -#define LLCON_DEFAULT_PORT_NUMBER 22124 -#define LLCON_PORT_NUMBER_NORTHAMERICA 22224 - // system sample rate (the sound card and audio coder works on this sample rate) #define SYSTEM_SAMPLE_RATE_HZ 48000 // Hz @@ -178,10 +175,6 @@ LED bar: lbr #define UPPER_BOUND_SIG_METER ( 0.0 ) // dB // Maximum number of connected clients at the server. -#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) -// If you want to change this paramter you have to modify the code on some places, too! The code tag -// "MAX_NUM_CHANNELS_TAG" shows these places (just search for the tag in the entire code) -#endif #define MAX_NUM_CHANNELS 50 // max number channels for server // actual number of used channels in the server @@ -241,11 +234,11 @@ LED bar: lbr #define MAX_LEN_VERSION_TEXT 20 // common tool tip bottom line text -#define TOOLTIP_COM_END_TEXT tr ( \ - "
" \ - "For more information use the ""What's " \ - "This"" help (? menu, right mouse button or Shift+F1)" \ - "
" ) +#define TOOLTIP_COM_END_TEXT \ + "
" + \ + QCoreApplication::translate ( "global","For more information use the ""What's " \ + "This"" help (help menu, right mouse button or Shift+F1)" ) + \ + "
" #define _MAXSHORT 32767 #define _MAXBYTE 255 // binary: 11111111 diff --git a/src/main.cpp b/src/main.cpp index 385b5fef..6dda5852 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #include "global.h" #include "clientdlg.h" #include "serverdlg.h" @@ -68,7 +69,7 @@ int main ( int argc, char** argv ) int iNumServerChannels = DEFAULT_USED_NUM_CHANNELS; int iMaxDaysHistory = DEFAULT_DAYS_HISTORY; int iCtrlMIDIChannel = INVALID_MIDI_CH; - quint16 iPortNumber = LLCON_DEFAULT_PORT_NUMBER; + quint16 iPortNumber = DEFAULT_PORT_NUMBER; ELicenceType eLicenceType = LT_NO_LICENCE; QString strConnOnStartupAddress = ""; QString strIniFileName = ""; @@ -554,7 +555,7 @@ int main ( int argc, char** argv ) Q_INIT_RESOURCE(resources); // load translations - QTranslator myappTranslator; + QTranslator myappTranslator, myqtTranslator; if ( bUseGUI && bUseTranslation ) { @@ -562,11 +563,17 @@ int main ( int argc, char** argv ) { pApp->installTranslator ( &myappTranslator ); } + + // allows the Qt messages to be translated in the application + if ( myqtTranslator.load ( QLocale(), "qt", "_", QLibraryInfo::location ( QLibraryInfo::TranslationsPath ) ) ) + { + pApp->installTranslator ( &myqtTranslator ); + } } // TEST -> activate the following line to activate the test bench, -//CTestbench Testbench ( "127.0.0.1", LLCON_DEFAULT_PORT_NUMBER ); +//CTestbench Testbench ( "127.0.0.1", DEFAULT_PORT_NUMBER ); try diff --git a/src/protocol.cpp b/src/protocol.cpp index a1b6cc59..61945493 100755 --- a/src/protocol.cpp +++ b/src/protocol.cpp @@ -143,6 +143,7 @@ MESSAGES (with connection) - 0: none, no audio coding applied - 1: CELT - 2: OPUS + - 3: OPUS64 - "version": version of the audio coder, if not used this value shall be set to 0 - "audiocod arg": argument for the audio coder, if not used this value diff --git a/src/recorder/jamrecorder.cpp b/src/recorder/jamrecorder.cpp index 2c817919..4327ccf2 100755 --- a/src/recorder/jamrecorder.cpp +++ b/src/recorder/jamrecorder.cpp @@ -314,6 +314,10 @@ void CJamRecorder::Init( const CServer* server, throw std::runtime_error( (recordBaseDir.absolutePath() + " is a directory but cannot be written to").toStdString() ); } + QObject::connect( (const QObject *)server, SIGNAL ( RestartRecorder() ), + this, SLOT( OnTriggerSession() ), + Qt::ConnectionType::QueuedConnection ); + QObject::connect( (const QObject *)server, SIGNAL ( Stopped() ), this, SLOT( OnEnd() ), Qt::ConnectionType::QueuedConnection ); @@ -322,13 +326,12 @@ void CJamRecorder::Init( const CServer* server, this, SLOT( OnDisconnected ( int ) ), Qt::ConnectionType::QueuedConnection ); - qRegisterMetaType>(); + qRegisterMetaType> ( "CVector" ); QObject::connect( (const QObject *)server, SIGNAL ( AudioFrame( const int, const QString, const CHostAddress, const int, const CVector ) ), this, SLOT( OnFrame (const int, const QString, const CHostAddress, const int, const CVector ) ), Qt::ConnectionType::QueuedConnection ); - QObject::connect( QCoreApplication::instance(), - SIGNAL ( aboutToQuit() ), + QObject::connect( QCoreApplication::instance(), SIGNAL ( aboutToQuit() ), this, SLOT( OnAboutToQuit() ) ); iServerFrameSizeSamples = _iServerFrameSizeSamples; @@ -338,11 +341,10 @@ void CJamRecorder::Init( const CServer* server, thisThread->start(); } - /** - * @brief CJamRecorder::OnStart Start up tasks when the first client connects + * @brief CJamRecorder::Start Start up tasks for a new session */ -void CJamRecorder::OnStart() { +void CJamRecorder::Start() { // Ensure any previous cleaning up has been done. OnEnd(); @@ -350,11 +352,17 @@ void CJamRecorder::OnStart() { isRecording = true; } + /** * @brief CJamRecorder::OnEnd Finalise the recording and emit the Reaper RPP file + * + * Emits RecordingSessionEnded with the Reaper project file name, + * or null if was not recording or a problem occurs */ void CJamRecorder::OnEnd() { + QString reaperProjectFileName = QString::Null(); + if ( isRecording ) { isRecording = false; @@ -366,21 +374,46 @@ void CJamRecorder::OnEnd() if (fi.exists()) { qWarning() << "CJamRecorder::OnEnd():" << fi.absolutePath() << "exists and will not be overwritten."; + reaperProjectFileName = QString::Null(); } else { QFile outf (reaperProjectFileName); - outf.open(QFile::WriteOnly); - QTextStream out(&outf); - out << CReaperProject( currentSession->Tracks(), iServerFrameSizeSamples ).toString() << endl; - qDebug() << "Session RPP:" << reaperProjectFileName; + if ( outf.open(QFile::WriteOnly) ) + { + QTextStream out(&outf); + out << CReaperProject( currentSession->Tracks(), iServerFrameSizeSamples ).toString() << endl; + qDebug() << "Session RPP:" << reaperProjectFileName; + } + else + { + qWarning() << "CJamRecorder::OnEnd():" << fi.absolutePath() << "could not be created, no RPP written."; + reaperProjectFileName = QString::Null(); + } } delete currentSession; currentSession = nullptr; } + + emit RecordingSessionEnded ( reaperProjectFileName ); } +/** + * @brief CJamRecorder::OnTriggerSession End one session and start a new one + */ +void CJamRecorder::OnTriggerSession() +{ + // This should magically get everything right... + if ( isRecording ) + { + Start(); + } +} + +/** + * @brief CJamRecorder::OnAboutToQuit End any recording and exit thread + */ void CJamRecorder::OnAboutToQuit() { OnEnd(); @@ -452,7 +485,7 @@ void CJamRecorder::OnFrame(const int iChID, const QString name, const CHostAddre // Make sure we are ready if ( !isRecording ) { - OnStart(); + Start(); } currentSession->Frame( iChID, name, address, numAudioChannels, data, iServerFrameSizeSamples ); diff --git a/src/recorder/jamrecorder.h b/src/recorder/jamrecorder.h index eb5a0581..2bc128db 100755 --- a/src/recorder/jamrecorder.h +++ b/src/recorder/jamrecorder.h @@ -143,21 +143,44 @@ public: { } + /** + * @brief Create recording directory, if necessary, and connect signal handlers + * @param server Server object emiting signals + */ void Init( const CServer* server, const int _iServerFrameSizeSamples ); + /** + * @brief SessionDirToReaper Method that allows an RPP file to be recreated + * @param strSessionDirName Where the session wave files are + * @param serverFrameSizeSamples What the server frame size was for the session + */ static void SessionDirToReaper( QString& strSessionDirName, int serverFrameSizeSamples ); -public slots: - /** - * @brief Raised when first client joins the server, triggering a new recording. - */ - void OnStart(); +private: + void Start(); + QDir recordBaseDir; + + bool isRecording; + CJamSession* currentSession; + int iServerFrameSizeSamples; + + QThread* thisThread; + +signals: + void RecordingSessionEnded ( QString sessionDir ); + +private slots: /** * @brief Raised when last client leaves the server, ending the recording. */ void OnEnd(); + /** + * @brief Raised to end one session and start a new one. + */ + void OnTriggerSession(); + /** * @brief Raised when application is stopping */ @@ -173,15 +196,6 @@ public slots: * @brief Raised when a frame of data is available to process */ void OnFrame ( const int iChID, const QString name, const CHostAddress address, const int numAudioChannels, const CVector data ); - -private: - QDir recordBaseDir; - - bool isRecording; - CJamSession* currentSession; - int iServerFrameSizeSamples; - - QThread* thisThread; }; } diff --git a/src/res/translation/translation_de_DE.qm b/src/res/translation/translation_de_DE.qm index 296f9faf..c6f385ed 100644 Binary files a/src/res/translation/translation_de_DE.qm and b/src/res/translation/translation_de_DE.qm differ diff --git a/src/res/translation/translation_de_DE.ts b/src/res/translation/translation_de_DE.ts index 4e38a76f..f1b66add 100644 --- a/src/res/translation/translation_de_DE.ts +++ b/src/res/translation/translation_de_DE.ts @@ -26,7 +26,7 @@ client, mixes the audio data and sends the mix back to each client. - Teilnehmern sammelt, zusammen mischt und wieder an alle verbundenen Teilnehmer zurück schickt. + Musikern sammelt, zusammen mischt und wieder an alle verbundenen Musikern zurück schickt. @@ -54,32 +54,57 @@ Die Bilder der Länderflaggen sind von Mark James - + For details on the contributions check out the Die Details über die Codebeiträge findet man in der - + Github Contributors list Github Liste der Mitwirkenden - + + Spanish + Spanisch + + + + French + Französisch + + + + Portuguese + Portugiesisch + + + + Dutch + + + + + German + + + + About Über - + , Version - + Internet Jam Session Software - + Under the GNU General Public License (GPL) Unter der GNU General Public License (GPL) @@ -143,12 +168,12 @@ CAudioMixerBoard - + Server - + T R Y I N G T O C O N N E C T V E R B I N D U N G S A U F B A U @@ -163,12 +188,12 @@ Displays the pre-fader audio level of this channel. All connected clients at the server will be assigned an audio level, the same value for each client. - Zeigt den Audiopegel vor dem Lautstärkeregler des Kanals. Allen verbundenen Teilnehmern am Server wird ein Audiopegel zugewiesen. + Zeigt den Audiopegel vor dem Lautstärkeregler des Kanals. Allen verbundenen Musikern am Server wird ein Audiopegel zugewiesen. Input level of the current audio channel at the server - Eingangspegel des aktuellen Teilnehmerkanals am Server + Eingangspegel des aktuellen Musikers am Server @@ -178,7 +203,7 @@ Adjusts the audio level of this channel. All connected clients at the server will be assigned an audio fader at each client, adjusting the local mix. - Regelt die Lautstärke des Kanals. Für alle Teilnehmer, die gerade am Server verbunden sind, wird ein Lautstärkeregler angezeigt. Damit kann man seinen eigenen lokalen Mix erstellen. + Regelt die Lautstärke des Kanals. Für alle Musiker, die gerade am Server verbunden sind, wird ein Lautstärkeregler angezeigt. Damit kann man seinen eigenen lokalen Mix erstellen. @@ -241,44 +266,44 @@ - + Alias/Name - + Instrument - + Location Standort - - - + + + Skill Level Spielstärke - + Beginner Anfänger - + Intermediate Mittlere Spielstärke - + Expert Experte - + Musician Profile Profil des Musikers @@ -322,7 +347,7 @@ Enter the chat message text in the edit box and press enter to send the message to the server which distributes the message to all connected clients. Your message will then show up in the chat window. - Tippe die Chatnachricht in dieses Feld und drücke anschließend die Eingabetaste um die Nachricht an den Server zu schicken. Der Server verteilt die Nachrichti anschließend an alle Teilnehmer. Die eigene Nachricht wird dann im Chatfenster angezeigt. + Tippe die Chatnachricht in dieses Feld und drücke anschließend die Eingabetaste um die Nachricht an den Server zu schicken. Der Server verteilt die Nachricht anschließend an alle Musiker. Die eigene Nachricht wird dann im Chatfenster angezeigt. @@ -383,7 +408,7 @@ software, you should not hear your singing/instrument in the loudspeaker or your headphone when the - Software optimal zu nutzen, sollte man sein eigenes Instrument oder Gesant nicht im Lautsprecher oder Kopfhörer hören, wenn die + Software optimal zu nutzen, sollte man sein eigenes Instrument oder Gesang nicht im Lautsprecher oder Kopfhörer hören, wenn die @@ -468,7 +493,7 @@ - + C&onnect &Verbinden @@ -480,7 +505,7 @@ &Connection Setup... - &Konfiguration der Verbindung... + &Verbinden... @@ -609,17 +634,22 @@ Die CPU des Computers ist voll ausgelastet. - + + Central Server + + + + user - Teilnehmer + Musiker - + users - Teilnehmer + Musiker - + D&isconnect &Trennen @@ -727,7 +757,7 @@ In case the auto setting of the jitter buffer is enabled, the network buffers of the local client and the remote server are set to a conservative value to minimize the audio dropout probability. To tweak the audio delay/latency it is recommended to disable the auto setting functionality and to lower the jitter buffer size manually by using the sliders until your personal acceptable limit of the amount of dropouts is reached. The LED indicator will visualize the audio dropouts of the local jitter buffer by a red light. - Wenn die Automatik zum Einstellen der Netzwerkpuffer aktiviert ist, dann werden die Netzwerkpuffer der Applikation und des entfernten Servers auf einen konservativen Wert eingestellt, um eine möglichst gute Audioqualität zu garantieren. Um die Gesamtverzögerung zu optimieren, bietet es sich an, die Automatik zu deaktivieren und die Netzwerkpuffer etwas kleiner einzustellen. Die Werte sollte man so weit reduzieren, bis die Audioqualität gerade noch der persönlichen Akkzeptanz entspricht. Die LED-Anzeige hilft dabei die Audioaussetzer verursacht durch den lokalen Netzwerkpuffer zu visualisieren (wenn die LED rot leuchtet). + Wenn die Automatik zum Einstellen der Netzwerkpuffer aktiviert ist, dann werden die Netzwerkpuffer der Applikation und des entfernten Servers auf einen konservativen Wert eingestellt, um eine möglichst gute Audioqualität zu garantieren. Um die Gesamtverzögerung zu optimieren, bietet es sich an, die Automatik zu deaktivieren und die Netzwerkpuffer etwas kleiner einzustellen. Die Werte sollte man so weit reduzieren, bis die Audioqualität gerade noch der persönlichen Akzeptanz entspricht. Die LED-Anzeige hilft dabei die Audioaussetzer verursacht durch den lokalen Netzwerkpuffer zu visualisieren (wenn die LED rot leuchtet). @@ -977,7 +1007,7 @@ Select the number of audio channels to be used. There are three modes available. The mono and stereo modes use one and two audio channels respectively. In the mono-in/stereo-out mode the audio signal which is sent to the server is mono but the return signal is stereo. This is useful for the case that the sound card puts the instrument on one input channel and the microphone on the other channel. In that case the two input signals can be mixed to one mono channel but the server mix can be heard in stereo. - Hiermit kann man die Anzahl an Audiokanälen auswählen. Es gibt drei Modi. Die Mono- und Stereomodi verwenden jeweils einen oder zwei Kanäle. Im Mono-In/Stereo-Out Modus wird ein Monosignal zum Server geschickt aber es kommt ein Stereo-Signal zurück vom Server. Dies is nützlich für den Fall, dass man an die Soundkarte ein Instrument an den einen Eingangskanal und ein Mikrofon an den anderen Eingangskanal angeschlossen hat. In diesem Fall können die beiden Signale zusammen gemischt werden und an den Server geschickt werden aber man kann das Stereo-Signal von den anderen Musikern hören. + Hiermit kann man die Anzahl an Audiokanälen auswählen. Es gibt drei Modi. Die Mono- und Stereomodi verwenden jeweils einen oder zwei Kanäle. Im Mono-In/Stereo-Out Modus wird ein Monosignal zum Server geschickt aber es kommt ein Stereo-Signal zurück vom Server. Dies ist nützlich für den Fall, dass man an die Soundkarte ein Instrument an den einen Eingangskanal und ein Mikrofon an den anderen Eingangskanal angeschlossen hat. In diesem Fall können die beiden Signale zusammen gemischt werden und an den Server geschickt werden aber man kann das Stereo-Signal von den anderen Musikern hören. @@ -1110,17 +1140,17 @@ Hoch - + Manual Manuell - + Default Standard - + Default (North America) Standard (Nordamerika) @@ -1145,6 +1175,11 @@ Buffer Delay: Puffergröße: + + + Predefined Address + + The selected audio device could not be used because of the following error: @@ -1181,7 +1216,7 @@ Input Channel Mapping - Eingangskanalzuweisung + Eingangskanalauswahl @@ -1198,7 +1233,7 @@ Output Channel Mapping - Ausgangskanalzuweisung + Ausgangskanalauswahl @@ -1378,7 +1413,7 @@ - The server list is filered by the given text. Note that the filter is case insensitive. + The server list is filtered by the given text. Note that the filter is case insensitive. Die Serverliste kann mit dem eingegebenen Text gefiltert werden, d.h. es werden nur Einträge angezeigt, die dem Filtertext entsprechen. Die Groß- und Kleinschreibung des Filtertexts wird dabei nicht beachtet. @@ -1389,7 +1424,7 @@ Show All Musicians - Zeige alle Teilnehmer + Zeige alle Musiker @@ -1399,7 +1434,7 @@ Show all musicians check box - Zeige alle Teilnehmer Schalter + Zeige alle Musiker Schalter @@ -1417,7 +1452,7 @@ Show All Musicians - Zeige alle Teilnehmer + Zeige alle Musiker @@ -1432,7 +1467,7 @@ Musicians - Teilnehmer + Musiker @@ -1458,28 +1493,28 @@ CHelpMenu - + &Help &Hilfe - + Getting &Started... &Erste Schritte... - + Software &Manual... Software&handbuch... - + What's &This Konte&xthilfe - + &About... Ü&ber... @@ -1487,102 +1522,102 @@ CLicenceDlg - + I &agree to the above licence terms Ich &stimme den Lizenzbedingungen zu - + Accept Einwilligen - + Decline Ablehnen - + By connecting to this server and agreeing to this notice, you agree to the following: Durch das Verbinden mit diesem Server und das Akzeptieren des Lizenztextes willigst du folgenden Bedingungen ein: - + You agree that all data, sounds, or other works transmitted to this server are owned and created by you or your licensors, and that you are making these data, sounds or other works available via the following Creative Commons License (for more information on this license, see - + You are free to: - + Share - + copy and redistribute the material in any medium or format - + Adapt - + remix, transform, and build upon the material - + The licensor cannot revoke these freedoms as long as you follow the license terms. - + Under the following terms: - + Attribution - + You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use. - + NonCommercial - + You may not use the material for commercial purposes. - + ShareAlike - + If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original. - + No additional restrictions - + You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits. @@ -1590,270 +1625,270 @@ CMusProfDlg - + server. This tag will also show up at each client which is connected to the same server as you. If the name is left empty, the IP address is shown instead. - -Server. Dieses Schild wird auch bei allen anderen Teilnehmern, die mit dem gleichen Server verbunden sind, angezeigt. Wenn der Name leer gelassen wurde, dann wird die IP-Adresse stattdessen angezeigt. + -Server. Dieses Schild wird auch bei allen anderen Musikern, die mit dem gleichen Server verbunden sind, angezeigt. Wenn der Name leer gelassen wurde, dann wird die IP-Adresse stattdessen angezeigt. - + Alias or name edit box Alias oder Name Eingabefeld - + Instrument picture button Instrumentenbild Knopf - + Country flag button Landesflagge Knopf - + City edit box Stadt Eingabefeld - + Skill level combo box Fähigkeit Auswahlbox - - - + + + None Kein - - + + Musician Profile Musikerprofil - + Alias/Name - + Instrument - + Country Land - + City Stadt - + Skill Können - + &Close &Schließen - + Beginner Anfänger - + Intermediate Mittlere Spielstärke - + Expert Experte - + Set your name or an alias here so that the other musicians you want to play with know who you are. Additionally you may set an instrument picture of the instrument you play and a flag of the country you are living. The city you live in and the skill level of playing your instrument may also be added. Schreibe den Namen oder Alias hier rein so dass die anderen Musikern mit denen du spielst wissen wer du bist. Zusätzlich kannst du dein Instrument auswählen und eine Flagge des Landes auswählen in dem du dich befindest. Deine Stadt und deine Spielstärke des Instruments kannst du ebenso angeben. - + What you set here will appear at your fader on the mixer board when you are connected to a Was man hier sieht wird auch am Fader im Mixer angezeigt, wenn du mit einem - + Drum Set Schlagzeug - + Djembe Djembe - + Electric Guitar E-Gitarre - + Acoustic Guitar Akustikgitarre - + Bass Guitar E-Bass - + Keyboard Keyboard - + Synthesizer Synthesizer - + Grand Piano Flügel - + Accordion Akkordeon - + Vocal Gesang - + Microphone Mikrofon - + Harmonica Mundharmonika - + Trumpet Trompete - + Trombone Posaune - + French Horn Waldhorn - + Tuba Tuba - + Saxophone Saxophon - + Clarinet Klarinette - + Flute Flöte - + Violin Violine - + Cello Cello - + Double Bass Kontrabass - + Recorder Recorder - + Streamer - + Listener Zuhörer - + Guitar+Vocal Gitarre+Gesang - + Keyboard+Vocal Keyboard+Gesang - + Bodhran - + Bassoon Fagott - + Oboe Oboe - + Harp Harfe - + Viola Viola - + Congas Congas - + Bongo Bongos @@ -1863,17 +1898,17 @@ Client List - Teilnehmerliste + Musikerliste The client list shows all clients which are currently connected to this server. Some information about the clients like the IP address and name are given for each connected client. - Die Teilnehmerliste zeigt alle gerade mit dem Server verbunden Musiker an. Für jeden Teilnehmer werden zusätzliche Informationen wie die IP-Adresse und Namen angezeigt. + Die Musikerliste zeigt alle gerade mit dem Server verbunden Musiker an. Für jeden Musiker werden zusätzliche Informationen wie die IP-Adresse und Namen angezeigt. Connected clients list view - Teilnehmerliste + Musikerliste @@ -2019,19 +2054,21 @@ Server - + + Predefined Address + + + Manual - Manuell + Manuell - Default - Standard + Standard - Default (North America) - Standard (Nordamerika) + Standard (Nordamerika) @@ -2044,42 +2081,42 @@ &Fenster - + Unregistered Nicht registriert - + Bad address Ungültige Adresse - + Registration requested Registrierung angefordert - + Registration failed Registrierung fehlgeschlagen - + Check server version Überprüfe Version des Servers - + Registered Registriert - + Central Server full Zentralserver voll - + Unknown value Unbekannter Wert @@ -2331,4 +2368,12 @@ konnte nicht gestartet werden wegen Problemen mit dem Audiogerät. + + global + + + For more information use the What's This help (help menu, right mouse button or Shift+F1) + Für weitere Informationen verwende die Kontexthilfe (Hilfe-Menü, rechte Maustaste oder Tastenkombination Shift+F1) + + diff --git a/src/res/translation/translation_es_ES.qm b/src/res/translation/translation_es_ES.qm index 1b23987e..04a888af 100644 Binary files a/src/res/translation/translation_es_ES.qm and b/src/res/translation/translation_es_ES.qm differ diff --git a/src/res/translation/translation_es_ES.ts b/src/res/translation/translation_es_ES.ts index f7289637..38068bf3 100644 --- a/src/res/translation/translation_es_ES.ts +++ b/src/res/translation/translation_es_ES.ts @@ -20,17 +20,17 @@ server which collects the audio data from each - servidor que recoge el audio de cada + que recoge el audio de cada cliente There is a - Hay un + Hay un servidor client, mixes the audio data and sends the mix back to each client. - cliente, mezcla el audio y lo envía de vuelta a cada cliente. + , mezcla el audio y lo envía de vuelta a cada cliente. @@ -58,32 +58,57 @@ Iconos de banderas nacionales de Mark James - + For details on the contributions check out the Para más detalles sobre los contribuidores consulta la - + Github Contributors list lista de Contribuidores en Github - + + Spanish + Español + + + + French + Francés + + + + Portuguese + Portugués + + + + Dutch + Neerlandés + + + + German + Alemán + + + About Acerca de - + , Version , Versión - + Internet Jam Session Software Internet Jam Session Software - + Under the GNU General Public License (GPL) Bajo la GNU General Public License (GPL) @@ -147,12 +172,12 @@ CAudioMixerBoard - + Server Servidor - + T R Y I N G T O C O N N E C T I N T E N T A N D O C O N E C T A R @@ -245,44 +270,44 @@ SOLO - + Alias/Name Alias/Nombre - + Instrument Instrumento - + Location Ubicación - - - + + + Skill Level Nivel Habilidad - + Beginner Principiante - + Intermediate Intermedio - + Expert Experto - + Musician Profile Perfil Músico @@ -472,7 +497,7 @@ - + C&onnect C&onectar @@ -613,17 +638,22 @@ El procesador del cliente o del servidor está al 100%. - + + Central Server + + + + user usuario - + users usuarios - + D&isconnect D&esconectar @@ -1091,7 +1121,7 @@ Mono-in/Stereo-out - Mono-in/Estéreo-out + Entrada mono/Salida estéreo @@ -1114,17 +1144,17 @@ Alta - + Manual Manual - + Default Por defecto - + Default (North America) Por defecto (Norteamérica) @@ -1149,6 +1179,11 @@ Buffer Delay: Retardo Buffer: + + + Predefined Address + + The selected audio device could not be used because of the following error: @@ -1356,8 +1391,12 @@ La dirección IP o URL del servidor ejecutando el software del servidor - server software must be set here. An optional port number can be added after the IP address or URL using a comma as a separator, e.g, example.org: + debe introducirse aquí. Se puede añadir un número de puerto opcional detrás de la dirección IP o URL utilizando dos puntos como separador, por ej. ejemplo.org: + + + + server software must be set here. An optional port number can be added after the IP address or URL using a colon as a separator, e.g, example.org: debe introducirse aquí. Se puede añadir un número de puerto opcional detrás de la dirección IP o URL utilizando dos puntos como separador, por ej. ejemplo.org: @@ -1382,7 +1421,7 @@ - The server list is filered by the given text. Note that the filter is case insensitive. + The server list is filtered by the given text. Note that the filter is case insensitive. La lista de servidores se filtra con el texto introducido. El filtro no es sensible a mayúsculas/minúsculas. @@ -1462,28 +1501,28 @@ CHelpMenu - + &Help &Ayuda - + Getting &Started... Cómo &Empezar... - + Software &Manual... Manual del &Software... - + What's &This Qué es &Esto - + &About... &Acerca de... @@ -1491,102 +1530,102 @@ CLicenceDlg - + I &agree to the above licence terms &Acepto los términos de la licencia arriba expuestos - + Accept Acepto - + Decline No Acepto - + By connecting to this server and agreeing to this notice, you agree to the following: Al conectarte a este servidor y aceptar esta notificación, aceptas lo siguiente: - + You agree that all data, sounds, or other works transmitted to this server are owned and created by you or your licensors, and that you are making these data, sounds or other works available via the following Creative Commons License (for more information on this license, see Ud. declara que todos los datos, audios u otras obras transmitidas a este servidor son la propiedad de Ud. y creadas por Ud. o sus licenciatarios, y que pone a disposición de terceras partes estos datos, audios u otras obras mediante la siguiente Licencia Creative Commons (para más información sobre esta licencia, ver - + You are free to: Ud. es libre de: - + Share Compartir - + copy and redistribute the material in any medium or format copiar y redistribuir el material en cualquier medio o formato - + Adapt Adaptar - + remix, transform, and build upon the material remezclar, transformar y construir a partir del material - + The licensor cannot revoke these freedoms as long as you follow the license terms. El licenciante no puede revocar estas libertades en tanto Ud. siga los términos de la licencia. - + Under the following terms: Bajo los siguientes términos: - + Attribution Atribución - + You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use. Ud. debe dar crédito de manera adecuada, brindar un enlace a la licencia, e indicar si se han realizado cambios. Puede hacerlo en cualquier forma razonable, pero no de forma tal que sugiera que Ud. o su uso tienen el apoyo de la licenciante. - + NonCommercial No-Comercial - + You may not use the material for commercial purposes. No puede utilizar el material con fines comerciales. - + ShareAlike ShareAlike - + If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original. Si remezcla, transforma o construye sobre el material, debe distribuir sus contribuciones bajo la misma licencia que el original. - + No additional restrictions Sin restricciones adicionales - + You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits. No puede aplicar términos legales o medidas tecnológicas que restringan legalmente a otras personas de hacer cualquier cosa permitida por la licencia. @@ -1594,270 +1633,270 @@ CMusProfDlg - + server. This tag will also show up at each client which is connected to the same server as you. If the name is left empty, the IP address is shown instead. Esta etiqueta también se mostrará a cada cliente conectado al mismo servidor que tú. Se se deja vacío, se muestra la dirección IP en su lugar. - + Alias or name edit box Campo para alias o nombre - + Instrument picture button Botón imagen instrumento - + Country flag button Botón bandera país - + City edit box Ciudad - + Skill level combo box Nivel de habilidad - - - + + + None Ninguno - - + + Musician Profile Perfil Músico - + Alias/Name Alias/Nombre - + Instrument Instrumento - + Country País - + City Ciudad - + Skill Habilidad - + &Close &Cerrar - + Beginner Principiante - + Intermediate Intermedio - + Expert Experto - + Set your name or an alias here so that the other musicians you want to play with know who you are. Additionally you may set an instrument picture of the instrument you play and a flag of the country you are living. The city you live in and the skill level of playing your instrument may also be added. Escribe tu nombre o alias aquí para que los demás músicos con quien quieras tocar te reconozcan. Puedes además añadir una imagen del instrumento que tocas y la bandera del país donde vives. La ciudad donde vives y tu nivel de habilidad con el instrumento también pueden añadirse. - + What you set here will appear at your fader on the mixer board when you are connected to a Lo que introduzcas aquí aparecerá en tu fader del mezclador cuando te conectes a un servidor - + Drum Set Batería - + Djembe Djembé - + Electric Guitar Guitarra Eléctrica - + Acoustic Guitar Guitarra Acústica - + Bass Guitar Bajo Eléctrico - + Keyboard Teclado - + Synthesizer Sintetizador - + Grand Piano Piano de Cola - + Accordion Acordeón - + Vocal Voz - + Microphone Micrófono - + Harmonica Armónica - + Trumpet Trompeta - + Trombone Trombón - + French Horn Trompa - + Tuba Tuba - + Saxophone Saxofón - + Clarinet Clarinete - + Flute Flauta - + Violin Violín - + Cello Violonchelo - + Double Bass Contrabajo - + Recorder Grabadora - + Streamer Streamer - + Listener Oyente - + Guitar+Vocal Guitarra+Voz - + Keyboard+Vocal Teclado+Voz - + Bodhran Bodhran - + Bassoon Fagot - + Oboe Oboe - + Harp Arpa - + Viola Viola - + Congas Congas - + Bongo Bongo @@ -2023,19 +2062,21 @@ - + + Predefined Address + + + Manual - Manual + Manual - Default - Por defecto + Por defecto - Default (North America) - Por defecto (Norteamérica) + Por defecto (Norteamérica) @@ -2048,42 +2089,42 @@ &Ventana - + Unregistered Sin registrar - + Bad address Dirección no válida - + Registration requested Registro solicitado - + Registration failed Error de registro - + Check server version Comprueba la versión del servidor - + Registered Registrado - + Central Server full Servidor Central lleno - + Unknown value Valor desconocido @@ -2335,4 +2376,12 @@ no pudo arrancar debido a problemas con el dispositivo de audio. + + global + + + For more information use the What's This help (help menu, right mouse button or Shift+F1) + Para más información utiliza ¿Qué es Esto? (menú de ayuda, botón derecho del ratón o Shift+F1) + + diff --git a/src/res/translation/translation_fr_FR.qm b/src/res/translation/translation_fr_FR.qm index 8d5adb43..dbb9c0db 100644 Binary files a/src/res/translation/translation_fr_FR.qm and b/src/res/translation/translation_fr_FR.qm differ diff --git a/src/res/translation/translation_fr_FR.ts b/src/res/translation/translation_fr_FR.ts index 084b6ad9..ae06c835 100644 --- a/src/res/translation/translation_fr_FR.ts +++ b/src/res/translation/translation_fr_FR.ts @@ -58,32 +58,57 @@ Icônes de drapeaux de pays par Mark James - + For details on the contributions check out the Pour plus de détails sur les contributions, consultez la - + Github Contributors list liste de contributeurs sur github - + + Spanish + Espagnol + + + + French + Français + + + + Portuguese + Portugais + + + + Dutch + Néerlandais + + + + German + Allemand + + + About À propos - + , Version , version - + Internet Jam Session Software Logiciels de bœuf sur Internet - + Under the GNU General Public License (GPL) Sous la licence public général GNU (GPL) @@ -155,12 +180,12 @@ CAudioMixerBoard - + Server Serveur - + T R Y I N G T O C O N N E C T T E N T A T I V E D E C O N N E X I O N @@ -253,44 +278,44 @@ SOLO - + Alias/Name Pseudo/nom - + Instrument Instrument - + Location Localisation - - - + + + Skill Level Niveau de compétence - + Beginner Débutant - + Intermediate Intermédiaire - + Expert Expert - + Musician Profile Profil de musicien @@ -314,12 +339,12 @@ Chat Window - + Fenêtre de tchate The chat window shows a history of all chat messages. - + La fenêtre de tchate affiche un historique de tous les messages de chat. @@ -329,12 +354,12 @@ Input Message Text - + Saisie du texte du message Enter the chat message text in the edit box and press enter to send the message to the server which distributes the message to all connected clients. Your message will then show up in the chat window. - + Saisissez le texte du message de tchate dans la zone d'édition et appuyez sur la touche Entrée pour envoyer le message au serveur qui le distribue à tous les clients connectés. Votre message apparaîtra alors dans la fenêtre de tchate. @@ -380,27 +405,27 @@ If the - + Si le logiciel software, you should not hear your singing/instrument in the loudspeaker or your headphone when the - + , vous ne cevriez pas entendre votre chant/instrument dans le haut-parleur ou votre casque lorsque le logiciel software is connected and you play your instrument/sing in the microphone, the LED level meter should flicker. If this is not the case, you have probably selected the wrong input channel (e.g. line in instead of the microphone input) or set the input gain too low in the (Windows) audio mixer. - + est connecté et que vous jouez de votre instrument ou chantez dans le microphone, le voyant de niveau devrait clignoter. Si ce n'est pas le cas, vous avez probablement sélectionné le mauvais canal d'entrée (par exemple, entrée ligne au lieu de l'entrée microphone) ou réglé le gain d'entrée trop bas dans le mixeur audio (Windows). For a proper usage of the - + Pour un bon usage du logiciel software is not connected. This can be achieved by muting your input audio channel in the Playback mixer (not the Recording mixer!). - + n'est pas connecté. Vous pouvez y parvenir en mettant en sourdine votre canal audio d'entrée dans le mixeur de lecture (et âs dans le mixeur d'enregistrement !). @@ -466,7 +491,7 @@ If this LED indicator turns red, you will not have much fun using the - Si ce voyant devient rouge, vous n'aurez pas beaucoup de plaisir à utiliser le logiciel + Si ce voyant devient rouge, vous n'aurez pas beaucoup de plaisir à utiliser le logiciel @@ -480,7 +505,7 @@ - + C&onnect Se c&onnecter @@ -621,17 +646,22 @@ Le processeur du client ou du serveur est à 100%. - + + Central Server + + + + user utilisateur - + users utilisateurs - + D&isconnect Dé&connecter @@ -739,7 +769,7 @@ In case the auto setting of the jitter buffer is enabled, the network buffers of the local client and the remote server are set to a conservative value to minimize the audio dropout probability. To tweak the audio delay/latency it is recommended to disable the auto setting functionality and to lower the jitter buffer size manually by using the sliders until your personal acceptable limit of the amount of dropouts is reached. The LED indicator will visualize the audio dropouts of the local jitter buffer by a red light. - + Si le réglage automatique du tampon de gigue est activé, les tampons réseau du client local et du serveur distant sont réglés à une valeur prudente pour minimiser la probabilité de décrochage audio. Pour ajuster le délai/latence audio, il est recommandé de désactiver la fonction de réglage automatique et de réduire manuellement la taille du tampon de gigue en utilisant les curseurs jusqu'à ce que votre limite personnelle acceptable du nombre d'interruptions soit atteinte. Le voyant visualisera les décrochages audio du tampon de gigue local par une lumière rouge. @@ -764,22 +794,22 @@ Sound Card Device - + Périphérique d'interface audio The ASIO driver (sound card) can be selected using - + Le pilote ASIO (interface audio) peut être sélectionné en utilisant under the Windows operating system. Under MacOS/Linux, no sound card selection is possible. If the selected ASIO driver is not valid an error message is shown and the previous valid driver is selected. - + sous le système d'exploitation Windows. Sous MacOS/Linux, aucune sélection de carte son n'est possible. Si le pilote ASIO sélectionné n'est pas valide, un message d'erreur s'affiche et le pilote valide précédent est sélectionné. If the driver is selected during an active connection, the connection is stopped, the driver is changed and the connection is started again automatically. - + Si le pilote est sélectionné pendant une connexion active, la connexion est interrompue, le pilote est modifié et la connexion est automatiquement relancée. @@ -854,7 +884,7 @@ Enable small network buffers check box - Cochez la case Activer les petits tampons de réseau + @@ -964,7 +994,7 @@ Fancy skin check box - Cocher la case Habillage fantaisie + @@ -979,7 +1009,7 @@ Display channel levels check box - Cocher la case Afficher les niveaux des canaux + @@ -1089,57 +1119,57 @@ ASIO Setup - + Paramètres ASIO Mono - + Mono Mono-in/Stereo-out - + Mono-entrée/stéréo-sortie Stereo - + Stéréo Low - + Basse Normal - + Normale High - + Haute - + Manual - + Manuel - + Default - + Défaut - + Default (North America) - + Défault (Amérique du Nord) preferred - + préféré @@ -1155,17 +1185,22 @@ Buffer Delay: + Délai de temporisation : + + + + Predefined Address The selected audio device could not be used because of the following error: - + Le périphérique audio sélectionné n'a pas pu être utilisé en raison de l'erreur suivante : The previous driver will be selected. - + Le pilote précédent sera sélectionné. @@ -1341,7 +1376,7 @@ The server list shows a list of available servers which are registered at the central server. Select a server from the list and press the connect button to connect to this server. Alternatively, double click a server from the list to connect to it. If a server is occupied, a list of the connected musicians is available by expanding the list item. Permanent servers are shown in bold font. - La liste de serveurs affiche une liste des serveurs disponibles qui sont enregistrés sur le serveur central. Sélectionnez un serveur dans la liste et appuyez sur le bouton de connexion pour vous connecter à ce serveur. Vous pouvez également double-cliquer sur un serveur de la liste pour vous y connecter. Si un serveur est occupé, une liste des musiciens connectés est disponible en développant l'élément de la liste. Les serveurs permanents sont indiqués en caractères gras. + La liste de serveurs affiche une liste des serveurs disponibles qui sont inscrits sur le serveur central. Sélectionnez un serveur dans la liste et appuyez sur le bouton de connexion pour vous connecter à ce serveur. Vous pouvez également double-cliquer sur un serveur de la liste pour vous y connecter. Si un serveur est occupé, une liste des musiciens connectés est disponible en développant l'élément de la liste. Les serveurs permanents sont indiqués en caractères gras. @@ -1371,12 +1406,12 @@ . A list of the most recent used server IP addresses or URLs is available for selection. - Une liste des adresses IP ou URL de serveur les plus récentes est disponible pour la sélection. + . Une liste des adresses IP ou URL de serveur les plus récentes est disponible pour la sélection. Server address edit box - Boîte d'édition de l'adresse du serveur + @@ -1390,8 +1425,8 @@ - The server list is filered by the given text. Note that the filter is case insensitive. - + The server list is filtered by the given text. Note that the filter is case insensitive. + La liste des serveurs est filtrée par le texte donné. Notez que le filtre n'est pas sensible à la casse. @@ -1411,7 +1446,7 @@ Show all musicians check box - Cochez la case Afficher tous les musiciens + @@ -1470,28 +1505,28 @@ CHelpMenu - + &Help &Aide - + Getting &Started... Premier pa&s... - + Software &Manual... &Manuel du logiciel... - + What's &This - C'es&t quoi ça + Qu'est-ce que c'est ? - + &About... À &propos @@ -1499,102 +1534,102 @@ CLicenceDlg - + I &agree to the above licence terms J'&accepte les conditions de licence ci-dessus - + Accept Accepter - + Decline Décliner - + By connecting to this server and agreeing to this notice, you agree to the following: En vous connectant à ce serveur et en acceptant le présent avis, vous acceptez ce qui suit : - + You agree that all data, sounds, or other works transmitted to this server are owned and created by you or your licensors, and that you are making these data, sounds or other works available via the following Creative Commons License (for more information on this license, see Vous acceptez que toutes les données, sons ou autres œuvres transmises à ce serveur soient détenus et créés par vous ou vos ayant-droits, et que vous rendiez ces données, sons ou autres œuvres disponibles via la licence Creative Commons suivante (pour plus d'informations sur cette licence, voir - + You are free to: Vous êtes libres de : - + Share Partager - + copy and redistribute the material in any medium or format copier et redistribuer le matériel sur tout support ou format - + Adapt Adapter - + remix, transform, and build upon the material remixer, transformer et développer à partir du matériel - + The licensor cannot revoke these freedoms as long as you follow the license terms. Le donneur de licence ne peut pas révoquer ces libertés tant que vous respectez les conditions de la licence. - + Under the following terms: Dans les conditions suivantes : - + Attribution Attribution - + You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use. Vous devez donner un crédit approprié, fournir un lien vers la licence et indiquer si des modifications ont été apportées. Vous pouvez le faire de toute manière raisonnable, mais pas d'une manière qui suggère que le donneur de licence vous cautionne ou cautionne votre utilisation. - + NonCommercial Non commercial - + You may not use the material for commercial purposes. Vous ne pouvez pas utiliser le matériel à des fins commerciales. - + ShareAlike Partager à l'identique - + If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original. Si vous remixez, transformez ou développez à partir du matériel, vous devez distribuer vos contributions sous la même licence que l'original. - + No additional restrictions Aucune restriction supplémentaire - + You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits. Vous ne pouvez pas appliquer des termes juridiques ou des mesures technologiques qui empêchent légalement d'autres personnes de faire ce que la licence autorise. @@ -1602,270 +1637,270 @@ CMusProfDlg - + server. This tag will also show up at each client which is connected to the same server as you. If the name is left empty, the IP address is shown instead. - + . Cette balise apparaîtra également sur chaque client connecté au même serveur que vous. Si le nom est laissé vide, l'adresse IP est affichée à la place. - + Alias or name edit box - + Instrument picture button Bouton d'image d'instrument - + Country flag button Bouton de drapeau de pays - + City edit box - Boîte d'édition de la ville + - + Skill level combo box - Boîte combo de niveau de compétence + - - - + + + None Aucune - - + + Musician Profile Profil de musicien - + Alias/Name Pseudo/nom - + Instrument Instrument - + Country Pays - + City Ville - + Skill Compétence - + &Close &Fermer - + Beginner Débutant - + Intermediate Intermédiaire - + Expert Expert - - - Set your name or an alias here so that the other musicians you want to play with know who you are. Additionally you may set an instrument picture of the instrument you play and a flag of the country you are living. The city you live in and the skill level of playing your instrument may also be added. - - - What you set here will appear at your fader on the mixer board when you are connected to a - + Set your name or an alias here so that the other musicians you want to play with know who you are. Additionally you may set an instrument picture of the instrument you play and a flag of the country you are living. The city you live in and the skill level of playing your instrument may also be added. + Indiquez ici votre nom ou un pseudonyme afin que les autres musiciens avec lesquels vous voulez jouer sachent qui vous êtes. Vous pouvez également mettre une photo de l'instrument dont vous jouez et un drapeau du pays dans lequel vous vivez. La ville dans laquelle vous vivez et le niveau de compétence pour jouer de votre instrument peuvent également être ajoutés. - + + What you set here will appear at your fader on the mixer board when you are connected to a + Ce que vous réglez ici apparaîtra au niveau de votre fader sur la table de mixage lorsque vous serez connecté à un serveur + + + Drum Set Batterie - + Djembe Djembé - + Electric Guitar Guitare électrique - + Acoustic Guitar Guitare accoustique - + Bass Guitar Guitare basse - + Keyboard Clavier - + Synthesizer Synthétiseur - + Grand Piano Piano à queue - + Accordion Accordéon - + Vocal Voix - + Microphone Microphone - + Harmonica Harmonica - + Trumpet Trompette - + Trombone Trombone - + French Horn Cor d'harmonie - + Tuba Tuba - + Saxophone Saxophone - + Clarinet Clarinette - + Flute Flute - + Violin Violon - + Cello Violoncelle - + Double Bass Contrebasse - + Recorder Enregistreur - + Streamer Diffuseur - + Listener Auditeur - + Guitar+Vocal Guitare+voix - + Keyboard+Vocal Clavier+voix - + Bodhran Bodhran - + Bassoon Basson - + Oboe Hautbois - + Harp Harpe - + Viola Alto - + Congas Congas - + Bongo Bongo @@ -1875,12 +1910,12 @@ Client List - + Liste des clients The client list shows all clients which are currently connected to this server. Some information about the clients like the IP address and name are given for each connected client. - + La liste des clients affiche tous les clients qui sont actuellement connectés à ce serveur. Certaines informations sur les clients, telles que les adresses IP et le nom, sont données pour chaque client connecté. @@ -1910,42 +1945,42 @@ If enabled, a Creative Commons BY-NC-SA 4.0 Licence dialog is shown each time a new user connects the server. - + Si activé, une boîte de dialogue de licence Creative Commons BY-NC-SA 4.0 est affichée chaque fois qu'un nouvel utilisateur se connecte au serveur. Make My Server Public - + Rendre mon serveur public If the Make My Server Public check box is checked, this server registers itself at the central server so that all - + Si la case Rendre mon serveur public est cochée, ce serveur s'inscrit sur le serveur central afin que tous les utilisateurs de users can see the server in the connect dialog server list and connect to it. The registering of the server is renewed periodically to make sure that all servers in the connect dialog server list are actually available. - + puisse voir le serveur dans la liste des serveurs du dialogue de connexion et s'y connecter. L'inscription du serveur est renouvelée périodiquement pour s'assurer que tous les serveurs de la liste des serveurs du dialogue de connexion sont effectivement disponibles. Register Server Status - + État du serveur inscrit If the Make My Server Public check box is checked, this will show the success of registration with the central server. - + Si la case Rendre mon serveur public est cochée, cela indiquera le succès de l'enregistrement auprès du serveur central. Central Server Address - + Adresse du serveur central The Central server address is the IP address or URL of the central server at which this server is registered. With the central server address type either the local region can be selected of the default central servers or a manual address can be specified. - + L'adresse du serveur central est l'adresse IP ou l'URL du serveur central auquel ce serveur est inscrit. Avec le type d'adresse du serveur central, on peut soit sélectionner la région locale parmi les serveurs centraux par défaut, soit spécifier une adresse manuelle. @@ -1960,12 +1995,12 @@ Server Name - Nom du serveur + Nom du serveur The server name identifies your server in the connect dialog server list at the clients. If no name is given, the IP address is shown instead. - + Le nom du serveur identifie votre serveur dans la liste des serveurs du dialogue de connexion chez les clients. Si aucun nom n'est donné, l'adresse IP est affichée à la place. @@ -1975,12 +2010,12 @@ Location City - + Ville de localisation The city in which this server is located can be set here. If a city name is entered, it will be shown in the connect dialog server list at the clients. - + La ville dans laquelle ce serveur est situé peut être définie ici. Si un nom de ville est saisi, il sera affiché dans la liste des serveurs du dialogue de connexion chez les clients. @@ -1990,12 +2025,12 @@ Location country - + Pays de localisation The country in which this server is located can be set here. If a country is entered, it will be shown in the connect dialog server list at the clients. - + Le pays dans lequel ce serveur est situé peut être défini ici. Si un pays est saisi, il sera affiché dans la liste des serveurs du dialogue de connexion chez les clients. @@ -2006,94 +2041,96 @@ E&xit - &Quitter + &Quitter &Hide - + Cac&hé server - + serveur &Open - + &Ouvrir server + serveur + + + + Predefined Address - Manual - + Manuel - Default - + Défaut - Default (North America) - + Défaut (Amérique du nord) Server - + serveur &Window - + &Fenêtre - + Unregistered - + Non inscrit - + Bad address - + Mauvaise adresse - + Registration requested - + Inscription demandée - + Registration failed - + Échec de l'inscription - + Check server version - + Vérifier la version du serveur - + Registered - + Inscrit - + Central Server full - + Serveur central rempli - + Unknown value - + Valeur inconnue @@ -2101,13 +2138,13 @@ Client IP:Port - + IP Client:Port Name - + Nom @@ -2122,37 +2159,37 @@ Show Creative Commons BY-NC-SA 4.0 Licence Dialog - + Afficher le dialogue de la licence Creative Commons BY-NC-SA 4.0 Make My Server Public (Register My Server in the Server List) - + Rendre mon serveur public (inscrire mon serveur dans la liste des serveurs) STATUS - + ÉTAT Central Server Address: - Adresse du serveur central : + Adresse du serveur central : My Server Info - + Informations de mon serveur Location: City - + Emplacement : ville Location: Country - + Emplacement : pays @@ -2343,4 +2380,12 @@ + + global + + + For more information use the What's This help (help menu, right mouse button or Shift+F1) + + + diff --git a/src/res/translation/translation_nl_NL.qm b/src/res/translation/translation_nl_NL.qm new file mode 100644 index 00000000..76089100 Binary files /dev/null and b/src/res/translation/translation_nl_NL.qm differ diff --git a/src/res/translation/translation_nl_NL.ts b/src/res/translation/translation_nl_NL.ts new file mode 100644 index 00000000..b2dd4bf5 --- /dev/null +++ b/src/res/translation/translation_nl_NL.ts @@ -0,0 +1,2379 @@ + + + + + CAboutDlg + + + The + De + + + + software enables musicians to perform real-time jam sessions over the internet. + software stelt muzikanten in staat om real-time jamsessies uit te voeren via het internet. + + + + There is a + Er is een + + + + server which collects the audio data from each + server die audiodata van elke client verzamelt, + + + + client, mixes the audio data and sends the mix back to each client. + deze mixt, en de mix weer terugstuurt naar iedere client. + + + + uses the following libraries, resources or code snippets: + gebruikt de volgende libraries, bronnen of code snippets: + + + + Qt cross-platform application framework + Qt cross-platform applicatieframework + + + + Audio reverberation code by Perry R. Cook and Gary P. Scavone + Audio reverberatiecode door Perry R. Cook en Gary P. Scavone + + + + Some pixmaps are from the + Sommige pixmaps zijn van de + + + + Country flag icons from Mark James + Landvlag-iconen van Mark James + + + + For details on the contributions check out the + Voor details over de bijdragen, zie de + + + + Github Contributors list + Github Bijdragerslijst + + + + Spanish + Spaans + + + + French + Frans + + + + Portuguese + Portugees + + + + Dutch + Nederlands + + + + German + Duits + + + + About + Over + + + + , Version + , Versie + + + + Internet Jam Session Software + Internet Jamsessie Software + + + + Under the GNU General Public License (GPL) + Onder de GNU General Public License (GPL) + + + + CAboutDlgBase + + + About + Over + + + + TextLabelVersion + TextLabelVersion + + + + Copyright (C) 2005-2020 Volker Fischer and others + Copyright (C) 2005-2020 Volker Fischer en anderen + + + + A&bout + &Over + + + + &Libraries + &Libraries + + + + &Contributors + Bijdragers + + + + &Translation + Vertaling + + + + &OK + &OK + + + + CAnalyzerConsole + + + Analyzer Console + Analyzer Console + + + + Error Rate of Each Buffer Size + Foutpercentage van elke buffergrootte + + + + CAudioMixerBoard + + + Server + Server + + + + T R Y I N G T O C O N N E C T + A A N H E T V E R B I N D E N + + + + CChannelFader + + + + + Mute + Demp + + + + + + Solo + Solo + + + + Channel Level + Kanaalniveau + + + + Displays the pre-fader audio level of this channel. All connected clients at the server will be assigned an audio level, the same value for each client. + Geeft het pre-fader-audioniveau van dit kanaal weer. Alle verbonden clients op de server krijgen een audioniveau toegewezen, dezelfde waarde voor elke client. + + + + Input level of the current audio channel at the server + Invoerniveau van het huidige audiokanaal op de server + + + + Mixer Fader + Mixer Fader + + + + Adjusts the audio level of this channel. All connected clients at the server will be assigned an audio fader at each client, adjusting the local mix. + Past het geluidsniveau van dit kanaal aan. Alle verbonden clients op de server krijgen een audiofader toegewezen bij elke client, waarbij de lokale mix wordt aangepast. + + + + Local mix level setting of the current audio channel at the server + Lokale instelling van het mixniveau van het huidige audiokanaal op de server + + + + With the Mute checkbox, the audio channel can be muted. + Met het selectievakje Demp kan het audiokanaal worden gedempt. + + + + Mute button + Dempknop + + + + With the Solo checkbox, the audio channel can be set to solo which means that all other channels except of the current channel are muted. It is possible to set more than one channel to solo. + Met het selectievakje Solo kan het audiokanaal worden ingesteld op solo, zodat alle overige kanalen worden gedempt. Het is mogelijk om meer dan één kanaal op solo in te stellen. + + + + Solo button + Soloknop + + + + Fader Tag + Fader tag + + + + The fader tag identifies the connected client. The tag name, the picture of your instrument and a flag of your country can be set in the main window. + De fadertag identificeert de verbonden client. De tagnaam, de afbeelding van uw instrument en een vlag van uw land kunnen in het hoofdvenster worden ingesteld. + + + + Mixer channel instrument picture + Afbeelding van het mengkanaalinstrument + + + + Mixer channel label (fader tag) + Label van het mengkanaal (faderlabel) + + + + Mixer channel country flag + Landvlag van het kanaal + + + + MUTE + DEMP + + + + SOLO + SOLO + + + + Alias/Name + Alias/Naam + + + + Instrument + Instrument + + + + Location + Locatie + + + + + + Skill Level + Vaardigheidssniveau + + + + Beginner + Beginner + + + + Intermediate + Gemiddeld + + + + Expert + Gevorderd + + + + Musician Profile + Muzikantenprofiel + + + + CChatDlg + + + Chat Window + Chatvenster + + + + The chat window shows a history of all chat messages. + Het chatvenster toont een geschiedenis van alle chatberichten. + + + + Chat history + Chatgeschiedenis + + + + Input Message Text + Tekst van het invoerbericht + + + + Enter the chat message text in the edit box and press enter to send the message to the server which distributes the message to all connected clients. Your message will then show up in the chat window. + Type het chatbericht in het bewerkingsvak in en druk op enter om het bericht naar de server te sturen, die het bericht naar alle verbonden clients distribueert. Uw bericht verschijnt dan in het chatvenster. + + + + New chat text edit box + Nieuw chat tekstbewerkingsvak + + + + CChatDlgBase + + + Chat + Chat + + + + Cl&ear + Wiss&en + + + + &Close + &Sluiten + + + + CClientDlg + + + Input Level Meter + Ingangsniveaumeter + + + + The input level indicators show the input level of the two stereo channels of the current selected audio input. + De indicatoren voor het ingangsniveau geven het ingangsniveau van de twee stereokanalen van de huidige geselecteerde audio-ingang weer. + + + + Make sure not to clip the input signal to avoid distortions of the audio signal. + Zorg ervoor dat u het ingangssignaal niet clipt om vervorming van het audiosignaal te voorkomen. + + + + If the + Als de + + + + software is connected and you play your instrument/sing in the microphone, the LED level meter should flicker. If this is not the case, you have probably selected the wrong input channel (e.g. line in instead of the microphone input) or set the input gain too low in the (Windows) audio mixer. + software is verbonden en u speelt of zingt in de microfoon, dan zou de LED-niveaumeter moeten flikkeren. Als dit niet het geval is, heeft u waarschijnlijk het verkeerde ingangskanaal gekozen (bijv. line in i.p.v. de microfooningang) of heeft u de ingangsversterking te laag ingesteld in de (Windows) audiomixer. + + + + For a proper usage of the + Voor juist gebruik van de + + + + software, you should not hear your singing/instrument in the loudspeaker or your headphone when the + software, moet uw zang/instrument niet hoorbaar zijn door de luidspreker of uw koptelefoon wanneer de + + + + software is not connected. This can be achieved by muting your input audio channel in the Playback mixer (not the Recording mixer!). + software niet is verbonden. Dit kan worden bereikt door het geluidskanaal in de afspeelmixer (niet de opnamemixer!) te dempen. + + + + Input level meter + Ingangsniveaumeter + + + + Simulates an analog LED level meter. + Simuleert een analoge LED-niveaumeter. + + + + Connect/Disconnect Button + Verbinden/Verbreken-knop + + + + Push this button to connect a server. A dialog where you can select a server will open. If you are connected, pressing this button will end the session. + Druk op deze knop om verbinding te maken met een server. In het daaropvolgende dialoogvenster kunt u een server kunt selecteren. Als u verbonden bent, wordt de sessie beëindigd door weer op deze knop te drukken. + + + + Connect and disconnect toggle button + Knop voor het opzetten en verbreken van de verbinding + + + + 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 + Door op deze knop te klikken verandert het onderschrift van de knop van Verbinden naar Verbreken, d.w.z. dat het een toggle-functie heeft voor verbinden/verbreken van de + + + + + software. + software. + + + + Local Audio Input Fader + Lokale audio-ingangsfader + + + + With the audio fader, the relative levels of the left and right local audio channels can be changed. For a mono signal it acts like a panning between the two channels. If, e.g., a microphone is connected to the right input channel and an instrument is connected to the left input channel which is much louder than the microphone, move the audio fader in a direction where the label above the fader shows + Met de audiofader kunnen de relatieve niveaus van de linker en rechter lokale audiokanalen worden gewijzigd. Voor een monosignaal werkt het als een panning tussen de twee kanalen. Als bijvoorbeeld een microfoon is verbonden op het rechter ingangskanaal en een veel luider instrument is verbonden op het linker ingangskanaal, beweeg dan de audiofader in de richting: + + + + + L + L + + + + , where + , waar + + + + is the current attenuation indicator. + is de huidige dempingsindicator. + + + + Local audio input fader (left/right) + Lokale audio-ingangsfader (links/rechts) + + + + Reverberation Level + Niveau van de galm + + + + A reverberation effect can be applied to one local mono audio channel or to both channels in stereo mode. The mono channel selection and the reverberation level can be modified. If, e.g., the microphone signal is fed into the right audio channel of the sound card and a reverberation effect shall be applied, set the channel selector to right and move the fader upwards until the desired reverberation level is reached. + Een galmeffect kan worden toegepast op één lokaal mono-audiokanaal of op beide kanalen in de stereomodus. De monokanaalselectie en het galmniveau kunnen worden aangepast. Als bijvoorbeeld het microfoonsignaal in het juiste audiokanaal van de geluidskaart binnenkomt en er een galmeffect wordt toegepast, zet u de kanaalkeuzeschakelaar naar rechts en beweegt u de fader omhoog tot het gewenste galmniveau is bereikt. + + + + The reverberation effect requires significant CPU so that it should only be used on fast PCs. If the reverberation level fader is set to minimum (which is the default setting), the reverberation effect is switched off and does not cause any additional CPU usage. + Het galmeffect vereist aanzienlijk wat CPU, zodat deze alleen op snelle PC's kan worden gebruikt. Als de fader voor het galmniveau op minimaal is ingesteld (wat de standaardinstelling is), wordt het galmeffect uitgeschakeld en veroorzaakt het geen extra CPU-gebruik. + + + + Reverberation effect level setting + Instelling van het niveau van het galmeffect + + + + Reverberation Channel Selection + Selectie van het galmkanaal + + + + With these radio buttons the audio input channel on which the reverberation effect is applied can be chosen. Either the left or right input channel can be selected. + Met deze radioknoppen kan het audio-invoerkanaal worden gekozen waarop het galmeffect wordt toegepast. Het linker of rechter ingangskanaal kan worden gekozen. + + + + Left channel selection for reverberation + Linker kanaalselectie voor galm + + + + Right channel selection for reverberation + Rechter kanaalselectie voor galm + + + + Delay Status LED + Vertragingsstatus LED + + + + The delay status LED indicator shows the current audio delay status. If the light is green, the delay is perfect for a jam session. If the light is yellow, a session is still possible but it may be harder to play. If the light is red, the delay is too large for jamming. + De vertragingsstatus LED-indicator geeft de huidige geluidsvertragingsstatus aan. Als het lampje groen is, is de vertraging perfect voor een storingssessie. Als het lampje geel is, is een sessie nog steeds mogelijk, maar kan het moeilijker zijn om te spelen. Als het lichtje rood is, is de vertraging te groot voor een storing. + + + + If this LED indicator turns red, you will not have much fun using the + Als deze LED-indicator rood wordt, zult u niet veel plezier beleven aan het gebruik van de + + + + Delay status LED indicator + Vertragingsstatus LED-indicator + + + + Buffers Status LED + Buffers Status LED + + + + The buffers status LED indicator shows the current audio/streaming status. If the light is green, there are no buffer overruns/underruns and the audio stream is not interrupted. If the light is red, the audio stream is interrupted caused by one of the following problems: + De indicator voor de status van de buffers geeft de huidige status van de audio/streaming aan. Als het lampje groen is, zijn er geen bufferoverschrijdingen/onderschrijdingen en wordt de audiostream niet onderbroken. Als het lampje rood is, wordt de audiostream onderbroken door een van de volgende problemen: + + + + The network jitter buffer is not large enough for the current network/audio interface jitter. + De buffer voor de netwerkjitter is niet groot genoeg voor de huidige netwerk-/audio-interfacejitter. + + + + The sound card buffer delay (buffer size) is set to a too small value. + De buffer vertraging van de geluidskaart (buffergrootte) is op een te kleine waarde ingesteld. + + + + The upload or download stream rate is too high for the current available internet bandwidth. + De upload- of downloadstroomsnelheid is te hoog voor de huidige beschikbare internetbandbreedte. + + + + The CPU of the client or server is at 100%. + De CPU van de client of server staat op 100%. + + + + Buffers status LED indicator + Status van de buffers LED-indicator + + + + + C&onnect + C&onnect + + + + &View + &Bekijken + + + + &Connection Setup... + &Verbindingsinstellingen... + + + + My &Profile... + Mijn &Profiel... + + + + C&hat... + C&hat... + + + + &Settings... + &Settings... + + + + &Analyzer Console... + &Analyzer Console... + + + + E&xit + E&xit + + + + None + Geen + + + + Center + Centrum + + + + R + R + + + + Central Server + + + + + user + gebruiker + + + + users + gebruikers + + + + D&isconnect + &Afmelden + + + + CClientDlgBase + + + Delay + Vertraging + + + + Buffers + Buffers + + + + Input + Invoer + + + + L + L + + + + R + R + + + + Settings + Instellingen + + + + Chat + Chat + + + + Mute Myself + Demp Mijzelf + + + + C&onnect + &Verbinden + + + + Pan + Pan + + + + Center + Centrum + + + + Reverb + Galm + + + + Left + Links + + + + Right + Rechts + + + + CClientSettingsDlg + + + Jitter Buffer Size + Jitter Buffermaat + + + + 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). + De jitterbuffer compenseert voor netwerk- en geluidskaart-timingstoestanden. De grootte van deze jitterbuffer heeft dus invloed op de kwaliteit van de audiostream (hoeveel uitvallers er optreden) en de totale vertraging (hoe langer de buffer, hoe hoger de vertraging). + + + + The jitter buffer size can be manually chosen for the local client and the remote server. For the local jitter buffer, dropouts in the audio stream are indicated by the light on the bottom of the jitter buffer size faders. If the light turns to red, a buffer overrun/underrun took place and the audio stream is interrupted. + De jitter-buffergrootte kan handmatig worden gekozen voor de lokale client en de externe server. Voor de lokale jitterbuffer worden drop-outs in de audiostream aangegeven door het lampje op de onderkant van de faders voor de jitterbuffergrootte. Als het lampje op rood springt, heeft er een bufferoverschrijding/onderbenedenrijding plaatsgevonden en wordt de audiostream onderbroken. + + + + The jitter buffer setting is therefore a trade-off between audio quality and overall delay. + De jitterbufferinstelling is dus een afweging tussen geluidskwaliteit en totale vertraging. + + + + An auto setting of the jitter buffer size setting is available. If the check Auto is enabled, the jitter buffers of the local client and the remote server are set automatically based on measurements of the network and sound card timing jitter. If the Auto check is enabled, the jitter buffer size faders are disabled (they cannot be moved with the mouse). + Een automatische instelling van de jitterbuffergrootte is beschikbaar. Als de controle Auto is ingeschakeld, worden de jitterbuffers van de lokale client en de externe server automatisch ingesteld op basis van metingen van de netwerk- en geluidskaarttimingsjitter. Als de automatische controle is ingeschakeld, zijn de faders voor de jitterbuffergrootte uitgeschakeld (ze kunnen niet met de muis worden verplaatst). + + + + In case the auto setting of the jitter buffer is enabled, the network buffers of the local client and the remote server are set to a conservative value to minimize the audio dropout probability. To tweak the audio delay/latency it is recommended to disable the auto setting functionality and to lower the jitter buffer size manually by using the sliders until your personal acceptable limit of the amount of dropouts is reached. The LED indicator will visualize the audio dropouts of the local jitter buffer by a red light. + In het geval dat de automatische instelling van de jitterbuffer is ingeschakeld, worden de netwerkbuffers van de lokale client en de externe server op een conservatieve waarde gezet om de kans op audio-uitval te minimaliseren. Om de audio delay/latentie te tweaken is het aan te raden om de automatische instelling uit te schakelen en de grootte van de jitterbuffer handmatig te verlagen met behulp van de schuifregelaars totdat de persoonlijke aanvaardbare limiet van het aantal drop-outs is bereikt. De LED-indicator zal de audio dropouts van de lokale jitterbuffer visualiseren met een rood lampje. + + + + Local jitter buffer slider control + Lokale jitter-buffer-schuifregelaar + + + + Server jitter buffer slider control + Server jitter-buffer-schuifregelaar + + + + Auto jitter buffer switch + Automatische jitterbufferschakelaar + + + + Jitter buffer status LED indicator + Jitter-buffer status LED-indicator + + + + Sound Card Device + Geluidskaartapparaat + + + + The ASIO driver (sound card) can be selected using + Het ASIO-stuurprogramma (geluidskaart) kan worden geselecteerd met behulp van + + + + under the Windows operating system. Under MacOS/Linux, no sound card selection is possible. If the selected ASIO driver is not valid an error message is shown and the previous valid driver is selected. + onder het Windows besturingssysteem. Onder MacOS/Linux is geen geluidskaartkeuze mogelijk. Als het geselecteerde ASIO-stuurprogramma niet geldig is, wordt een foutmelding weergegeven en wordt het vorige geldige stuurprogramma geselecteerd. + + + + If the driver is selected during an active connection, the connection is stopped, the driver is changed and the connection is started again automatically. + Als het stuurprogramma tijdens een actieve verbinding wordt geselecteerd, wordt de verbinding gestopt, wordt het stuurprogramma gewijzigd en wordt de verbinding automatisch opnieuw gestart. + + + + Sound card device selector combo box + Geluidskaart apparaat selector combo box + + + + In case the ASIO4ALL driver is used, please note that this driver usually introduces approx. 10-30 ms of additional audio delay. Using a sound card with a native ASIO driver is therefore recommended. + In het geval dat de ASIO4ALL driver wordt gebruikt, dient u er rekening mee te houden dat deze driver meestal ongeveer 10-30 ms extra geluidsvertraging introduceert. Het gebruik van een geluidskaart met een native ASIO-driver wordt daarom aanbevolen. + + + + If you are using the kX ASIO driver, make sure to connect the ASIO inputs in the kX DSP settings panel. + Als u het kX ASIO-stuurprogramma gebruikt, zorg er dan voor dat u de ASIO-ingangen in het kX DSP-instellingenpaneel aansluit. + + + + Sound Card Channel Mapping + Geluidskaartkanalen in kaart brengen + + + + In case the selected sound card device offers more than one input or output channel, the Input Channel Mapping and Output Channel Mapping settings are visible. + In het geval dat het geselecteerde geluidskaartapparaat meer dan één ingangs- of uitgangskanaal biedt, zijn de instellingen voor het ingangs- en uitgangskanaal in kaart brengen zichtbaar. + + + + For each + Voor elk + + + + input/output channel (Left and Right channel) a different actual sound card channel can be selected. + Invoer-/uitvoerkanaal (linker- en rechterkanaal) kan een ander daadwerkelijk kanaal van de geluidskaart worden geselecteerd. + + + + Left input channel selection combo box + Linker ingangskanaal selectie combo box + + + + Right input channel selection combo box + Juiste ingangskanaal selectie combo box + + + + Left output channel selection combo box + Linkeruitgangskanaal selectie combobox + + + + Right output channel selection combo box + Rechter uitgangskanaal selectie combo box + + + + Enable Small Network Buffers + Kleine netwerkbuffers inschakelen + + + + If enabled, the support for very small network audio packets is activated. Very small network packets are only actually used if the sound card buffer delay is smaller than + Indien ingeschakeld, wordt de ondersteuning voor zeer kleine netwerkaudiopakketten geactiveerd. Zeer kleine netwerkpakketten worden alleen daadwerkelijk gebruikt als de buffervertraging van de geluidskaart kleiner is dan + + + + samples. The smaller the network buffers, the smaller the audio latency. But at the same time the network load increases and the probability of audio dropouts also increases. + monsters. Hoe kleiner de netwerkbuffers, hoe kleiner de audiolatentie. Maar tegelijkertijd neemt de netwerkbelasting toe en neemt ook de kans op audio-uitval toe. + + + + Enable small network buffers check box + Schakel het selectievakje kleine netwerkbuffers in + + + + Sound Card Buffer Delay + Geluidskaartbuffervertraging + + + + The buffer delay setting is a fundamental setting of the + De instelling van de buffervertraging is een belangrijke instelling van de + + + + software. This setting has influence on many connection properties. + software. Deze instelling heeft invloed op veel verbindingseigenschappen. + + + + Three buffer sizes are supported + Drie buffermaten worden ondersteund + + + + 64 samples: This is the preferred setting since it gives lowest latency but does not work with all sound cards. + 64 monsters: Dit is de voorkeursinstelling omdat het de laagste latentie geeft, maar niet met alle geluidskaarten werkt. + + + + 128 samples: This setting should work on most of the available sound cards. + 128 monsters: Deze instelling zou moeten werken op de meeste beschikbare geluidskaarten. + + + + 256 samples: This setting should only be used if only a very slow computer or a slow internet connection is available. + 256 monsters: Deze instelling mag alleen worden gebruikt als er alleen een zeer langzame computer of een langzame internetverbinding beschikbaar is. + + + + Some sound card driver do not allow the buffer delay to be changed from within the + Sommige geluidskaartbestuurders staan niet toe dat de buffervertraging wordt gewijzigd van binnenuit de + + + + software. In this case the buffer delay setting is disabled. 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. + software. In dit geval is de instelling van de buffervertraging uitgeschakeld. Om de eigenlijke buffervertraging te wijzigen, moet deze instelling in het stuurprogramma van de geluidskaart worden gewijzigd. Druk in Windows op de knop ASIO Setup om het instellingenpaneel van het stuurprogramma te openen. Op Linux gebruikt u de Jack-configuratietool om de grootte van de buffer te wijzigen. + + + + If no buffer size is selected and all settings are disabled, an unsupported buffer size is used by the driver. The + Als er geen buffergrootte is geselecteerd en alle instellingen zijn uitgeschakeld, wordt een niet-ondersteunde buffergrootte gebruikt door het stuurprogramma. De + + + + software will still work with this setting but with restricted performance. + software zal nog steeds werken met deze instelling, maar met beperkte prestaties. + + + + 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. + De werkelijke buffervertraging heeft invloed op de verbindingsstatus, de huidige uploadsnelheid en de totale vertraging. Hoe lager de buffergrootte, hoe hoger de kans op rood licht in de statusindicator (drop outs) en hoe hoger de uploadsnelheid en hoe lager de totale vertraging. + + + + The buffer setting is therefore a trade-off between audio quality and overall delay. + De bufferinstelling is dus een afweging tussen de geluidskwaliteit en de totale vertraging. + + + + If the buffer delay settings are disabled, it is prohibited by the audio driver to modify this setting from within the + Als de instellingen voor de buffervertraging zijn uitgeschakeld, is het door het audiostuurprogramma verboden om deze instelling te wijzigen vanuit de + + + + software. 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. + software. Druk in Windows op de knop ASIO Setup om het instellingenpaneel van het stuurprogramma te openen. Op Linux gebruikt u de Jack-configuratietool om de grootte van de buffer te wijzigen. + + + + 128 samples setting radio button + 128 monsters instellen radioknop + + + + 256 samples setting radio button + 256 voorbeelden van het instellen van de radioknop + + + + 512 samples setting radio button + 512 voorbeelden van het instellen van het radioknopje + + + + ASIO setup push button + ASIO-instellingsdrukknop + + + + Fancy Skin + Edele huid + + + + If enabled, a fancy skin will be applied to the main window. + Indien ingeschakeld wordt er een fancy skin op het hoofdvenster aangebracht. + + + + Fancy skin check box + Fancy skin check box + + + + Display Channel Levels + Weergave Kanaalniveaus + + + + If enabled, each client channel will display a pre-fader level bar. + Indien ingeschakeld, zal elk clientkanaal een pre-fader niveau balk weergeven. + + + + Display channel levels check box + Vinkje bij de weergave van de kanaalniveaus + + + + Audio Channels + Audiokanalen + + + + Select the number of audio channels to be used. There are three modes available. The mono and stereo modes use one and two audio channels respectively. In the mono-in/stereo-out mode the audio signal which is sent to the server is mono but the return signal is stereo. This is useful for the case that the sound card puts the instrument on one input channel and the microphone on the other channel. In that case the two input signals can be mixed to one mono channel but the server mix can be heard in stereo. + Selecteer het aantal te gebruiken audiokanalen. Er zijn drie modi beschikbaar. De mono- en stereomodus gebruiken respectievelijk één en twee audiokanalen. In de mono-in/stereo-uit modus is het audiosignaal dat naar de server wordt gestuurd mono, maar het retoursignaal is stereo. Dit is handig voor het geval dat de geluidskaart het instrument op het ene ingangskanaal zet en de microfoon op het andere kanaal. In dat geval kunnen de twee ingangssignalen worden gemixt naar één monokanaal, maar de servermix is in stereo te horen. + + + + Enabling the stereo streaming mode will increase the stream data rate. Make sure that the current upload rate does not exceed the available bandwidth of your internet connection. + Het inschakelen van de stereo-streaming modus zal de stream-datasnelheid verhogen. Zorg ervoor dat de huidige uploadsnelheid niet hoger is dan de beschikbare bandbreedte van uw internetverbinding. + + + + In case of the stereo streaming mode, no audio channel selection for the reverberation effect will be available on the main window since the effect is applied on both channels in this case. + In het geval van de stereo streaming-mode is er geen audiokanaalselectie voor het galmeffect beschikbaar op het hoofdvenster, aangezien het effect in dit geval op beide kanalen wordt toegepast. + + + + Audio channels combo box + Audiokanalen combo-box + + + + Audio Quality + Audiokwaliteit + + + + Select the desired audio quality. A low, normal or high audio quality can be selected. The higher the audio quality, the higher the audio stream data rate. Make sure that the current upload rate does not exceed the available bandwidth of your internet connection. + Selecteer de gewenste audiokwaliteit. Er kan een lage, normale of hoge audiokwaliteit worden geselecteerd. Hoe hoger de audiokwaliteit, hoe meer audiodata moet worden verstuurd. Zorg ervoor dat de vereiste bandbreedte niet hoger is dan de beschikbare bandbreedte van uw internetverbinding. + + + + Audio quality combo box + Audiokwaliteit combo-box + + + + New Client Level + Nieuw clientniveau + + + + The new client level setting defines the fader level of a new connected client in percent. I.e. if a new client connects to the current server, it will get the specified initial fader level if no other fader level of a previous connection of that client was already stored. + De nieuwe instelling van het clientniveau definieert het faderniveau van een nieuwe verbonden client in procenten. D.w.z. als een nieuwe client verbinding maakt met de server, krijgt hij het opgegeven initiële faderniveau als er in de vorige verbinding niets is opgeslagen. + + + + New client level edit box + Nieuw bewerkingsvak op clientniveau + + + + Central Server Address + Centraal Serveradres + + + + The central server address is the IP address or URL of the central server at which the server list of the connection dialog is managed. With the central server address type either the local region can be selected of the default central servers or a manual address can be specified. + Het centrale serveradres is het IP-adres of de URL van de centrale server waarop de serverlijst van het verbindingsdialoogvenster wordt beheerd. Met het centraal serveradrestype kan ofwel de lokale regio worden geselecteerd van de standaard centrale servers, ofwel kan een handmatig adres worden opgegeven. + + + + Default central server type combo box + Centraal serveradrestype combo box + + + + Central server address line edit + Centraal serveradres bewerking van de lijn + + + + Current Connection Status Parameter + Huidige verbindingsstatus-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. + De ping-tijd is de tijd die nodig is voor de audiostream om van de client naar de server en terug te reizen. Deze vertraging wordt geïntroduceerd door het netwerk. Deze vertraging moet zo laag zijn als 20-30 ms. Als deze vertraging hoger is (bijv. 50-60 ms), is uw afstand tot de server te groot of is uw internetverbinding niet toereikend. + + + + The overall delay is calculated from the current ping time and the delay which is introduced by the current buffer settings. + De totale vertraging wordt berekend op basis van de huidige ping-tijd en de vertraging die door de huidige bufferinstellingen wordt veroorzaakt. + + + + 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). + De upstreamsnelheid is afhankelijk van de huidige grootte van het audiopakket en de instelling van de audiocompressie. Zorg ervoor dat de upstreamsnelheid niet hoger is dan de beschikbare snelheid (controleer de upstreammogelijkheden van uw internetverbinding door bijvoorbeeld speedtest.net te gebruiken). + + + + If this LED indicator turns red, you will not have much fun using the + Als deze LED-indicator rood wordt, zult u niet veel plezier beleven aan het gebruik van de + + + + software. + software. + + + + ASIO Setup + ASIO-instelling + + + + Mono + Mono + + + + Mono-in/Stereo-out + Mono-in/Stereo-out + + + + Stereo + Stereo + + + + Low + Laag + + + + Normal + Normaal + + + + High + Hoog + + + + Manual + Handmatig + + + + Default + Standaard + + + + Default (North America) + Standaard (Noord-Amerika) + + + + preferred + gewenst + + + + + Size: + Size: + + + + Buffer Delay + Buffervertraging + + + + Buffer Delay: + Buffervertraging: + + + + Predefined Address + + + + + The selected audio device could not be used because of the following error: + Het geselecteerde audioapparaat kon niet worden gebruikt vanwege de volgende fout: + + + + The previous driver will be selected. + Het vorige stuurprogramma wordt geselecteerd. + + + + Ok + Ok + + + + CClientSettingsDlgBase + + + Settings + Instellingen + + + + Soundcard + Geluidskaart + + + + Device + Apparaat + + + + Input Channel Mapping + Invoerkanaal Mapping + + + + + L + L + + + + + R + R + + + + Output Channel Mapping + Uitgangskanaal in kaart brengen + + + + Enable Small Network Buffers + Kleine netwerkbuffers inschakelen + + + + Buffer Delay + Buffervertraging + + + + (preferred) + (voorkeur) + + + + (default) + (standaard) + + + + (safe) + (veilig) + + + + Driver Setup + Stuurprogramma-instelling + + + + Jitter Buffer + Jitterbuffer + + + + Auto + Auto + + + + Local + Lokaal + + + + Server + Server + + + + + Size + Size + + + + Misc + Overige + + + + Audio Channels + Audiokanalen + + + + Audio Quality + Audiokwaliteit + + + + New Client Level + Nieuw client-niveau + + + + % + % + + + + Fancy Skin + Fancy Skin + + + + Display Channel Levels + Weergave Kanaalniveaus + + + + Central Server Address: + Centraal Serveradres: + + + + Audio Stream Rate + Audio Stream Rate + + + + + + val + val + + + + Ping Time + Ping-tijd + + + + Overall Delay + Algehele vertraging + + + + CConnectDlg + + + Server List + Serverlijst + + + + The server list shows a list of available servers which are registered at the central server. Select a server from the list and press the connect button to connect to this server. Alternatively, double click a server from the list to connect to it. If a server is occupied, a list of the connected musicians is available by expanding the list item. Permanent servers are shown in bold font. + De serverlijst toont een lijst van beschikbare servers die op de centrale server zijn geregistreerd. Selecteer een server uit de lijst en druk op de verbindingsknop om verbinding te maken met deze server. U kunt ook dubbelklikken op een server uit de lijst om verbinding te maken met deze server. Als een server bezet is, is een lijst van de verbonden muzikanten beschikbaar door het lijstitem uit te breiden. Permanente servers worden vetgedrukt weergegeven. + + + + Note that it may take some time to retrieve the server list from the central server. If no valid central server address is specified in the settings, no server list will be available. + Merk op dat het enige tijd kan duren om de serverlijst op te halen van de centrale server. Als er geen geldig centraal serveradres is opgegeven in de instellingen, zal er geen serverlijst beschikbaar zijn. + + + + Server list view + Serverlijstweergave + + + + Server Address + Serveradres + + + + The IP address or URL of the server running the + Het IP-adres of de URL van de server waarop de + + + + server software must be set here. An optional port number can be added after the IP address or URL using a colon as a separator, e.g, example.org: + serversoftware moet worden ingesteld. Een optioneel poortnummer kan worden toegevoegd na het IP-adres of de URL met een dubbele punt als scheidingsteken, bijvoorbeeld example.org: + + + + . A list of the most recent used server IP addresses or URLs is available for selection. + . Een lijst met de meest recent gebruikte server-IP-adressen of URL's is beschikbaar voor selectie. + + + + Server address edit box + Serveradres bewerkingsvak + + + + Holds the current server IP address or URL. It also stores old URLs in the combo box list. + Bevat het huidige server-IP-adres of de URL. Het slaat ook oude URL's op in de comboboxlijst. + + + + Filter + Filter + + + + The server list is filtered by the given text. Note that the filter is case insensitive. + De serverlijst wordt gefilterd met de gegeven tekst. Merk op dat het filter ongevoelig is voor hoofdletters. + + + + Filter edit box + Filter bewerkingsvak + + + + Show All Musicians + Toon alle muzikanten + + + + If you check this check box, the musicians of all servers are shown. If you uncheck the check box, all list view items are collapsed. + Als u dit selectievakje aanvinkt, worden de muzikanten van alle servers getoond. Als u het selectievakje uitvinkt, worden alle items van de lijstweergave samengevouwen. + + + + Show all musicians check box + Toon alle muzikanten checkbox + + + + CConnectDlgBase + + + Connection Setup + Verbindingsinstellingen + + + + Filter + Filter + + + + Show All Musicians + Toon alle muzikanten + + + + Server Name + Servernaam + + + + Ping Time + Ping-tijd + + + + Musicians + Muzikanten + + + + Location + Locatie + + + + Server Name/Address + Servernaam/Adres + + + + C&ancel + Annuleren + + + + &Connect + Verbinden + + + + CHelpMenu + + + &Help + &Hulp + + + + + Getting &Started... + Aan de slag... + + + + Software &Manual... + Softwarehandleiding... + + + + What's &This + Wat Is Dit + + + + &About... + &Over... + + + + CLicenceDlg + + + I &agree to the above licence terms + Ik stem in met bovenstaande licentievoorwaarden + + + + Accept + Accepteer + + + + Decline + Niet akkoord + + + + By connecting to this server and agreeing to this notice, you agree to the following: + Door verbinding te maken met deze server en akkoord te gaan met deze mededeling, gaat u akkoord met het volgende: + + + + You agree that all data, sounds, or other works transmitted to this server are owned and created by you or your licensors, and that you are making these data, sounds or other works available via the following Creative Commons License (for more information on this license, see + U gaat ermee akkoord dat alle gegevens, geluiden of andere werken die naar deze server worden verzonden, eigendom zijn van en gemaakt zijn door u of uw licentiegevers, en dat u deze gegevens, geluiden of andere werken beschikbaar stelt via de volgende Creative Commons Licentie (voor meer informatie over deze licentie, zie + + + + You are free to: + Je staat vrij om: + + + + Share + het materiaal + + + + copy and redistribute the material in any medium or format + te delen, te kopiëren en te herdistribueren in elk medium of formaat + + + + Adapt + Aanpassen + + + + remix, transform, and build upon the material + remixen, transformeren en bouwen op het materiaal + + + + The licensor cannot revoke these freedoms as long as you follow the license terms. + De licentiegever kan deze vrijheden niet herroepen zolang u zich aan de licentievoorwaarden houdt. + + + + Under the following terms: + Onder de volgende voorwaarden: + + + + Attribution + Naamsvermelding + + + + You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use. + U moet de juiste erkenning geven, een link naar de licentie geven en aangeven of er wijzigingen zijn aangebracht. U mag dit op elke redelijke manier doen, maar niet op een manier die suggereert dat de licentiegever u of uw gebruik goedkeurt. + + + + NonCommercial + Niet-commercieel + + + + You may not use the material for commercial purposes. + U mag het materiaal niet voor commerciële doeleinden gebruiken. + + + + ShareAlike + hareAlike + + + + If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original. + Als u het materiaal remixt, transformeert of uitbouwt, moet u uw bijdragen distribueren onder dezelfde licentie als het origineel. + + + + No additional restrictions + Geen extra beperkingen + + + + You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits. + U mag geen wettelijke voorwaarden of technologische maatregelen toepassen die anderen wettelijk beperken om iets te doen wat de licentie toestaat. + + + + CMusProfDlg + + + + Musician Profile + Muzikantenprofiel + + + + Alias/Name + Alias/Naam + + + + Instrument + Instrument + + + + Country + Land + + + + City + Stad + + + + Skill + Vaardigheid + + + + &Close + &Sluiten + + + + + + None + Geen + + + + Beginner + Beginner + + + + Intermediate + Gemiddeld + + + + Expert + Gevorderd + + + + Set your name or an alias here so that the other musicians you want to play with know who you are. Additionally you may set an instrument picture of the instrument you play and a flag of the country you are living. The city you live in and the skill level of playing your instrument may also be added. + Stel hier je naam of een alias in zodat de andere muzikanten met wie je wilt spelen weten wie je bent. Daarnaast kun je een instrumentfoto van het instrument dat je bespeelt en een vlag van het land waar je woont, instellen. De stad waar je woont en het vaardigheidsniveau van het spelen van je instrument kunnen ook worden toegevoegd. + + + + What you set here will appear at your fader on the mixer board when you are connected to a + Wat u hier instelt, verschijnt bij uw fader op het mengpaneel wanneer u verbonden bent met een + + + + server. This tag will also show up at each client which is connected to the same server as you. If the name is left empty, the IP address is shown instead. + server. Deze tag zal ook verschijnen op elke client die verbonden is met dezelfde server als u. Als de naam leeg is, wordt in plaats daarvan het IP-adres getoond. + + + + Alias or name edit box + Alias of naam bewerkingsvak + + + + Instrument picture button + Afbeelding van het instrument + + + + Country flag button + Landvlag knop + + + + City edit box + Bewerkingsbox voor de stad + + + + Skill level combo box + Combo-box voor vaardigheidsniveau + + + + Drum Set + Drumstel + + + + Djembe + Djembe + + + + Electric Guitar + Elektrische Gitaar + + + + Acoustic Guitar + Akoestische Gitaar + + + + Bass Guitar + Basgitaar + + + + Keyboard + Toetsenbord + + + + Synthesizer + Synthesizer + + + + Grand Piano + Piano + + + + Accordion + Accordeon + + + + Vocal + Vocaal + + + + Microphone + Microfoon + + + + Harmonica + Harmonica + + + + Trumpet + Trompet + + + + Trombone + Trombone + + + + French Horn + Hoorn + + + + Tuba + Tuba + + + + Saxophone + Saxofoon + + + + Clarinet + Klarinet + + + + Flute + Fluit + + + + Violin + Viool + + + + Cello + Cello + + + + Double Bass + Contrabas + + + + Recorder + Opnemer + + + + Streamer + Streamer + + + + Listener + Luisteraar + + + + Guitar+Vocal + Gitaar+Vocaal + + + + Keyboard+Vocal + Toetsenbord+Vocaal + + + + Bodhran + Bodhran + + + + Bassoon + Fagot + + + + Oboe + Hobo + + + + Harp + Harp + + + + Viola + Viola + + + + Congas + Congas + + + + Bongo + Bongo + + + + CServerDlg + + + Client List + Clientlijst + + + + The client list shows all clients which are currently connected to this server. Some information about the clients like the IP address and name are given for each connected client. + De clientlijst toont alle clients die op dit moment verbonden zijn met deze server. Voor elke verbonden client wordt enige informatie over de clients gegeven, zoals het IP-adres en de naam. + + + + Connected clients list view + Overzicht van de lijst met verbonden clients + + + + Start Minimized on Operating System Start + Start geminimaliseerd bij de start van het besturingssysteem + + + + If the start minimized on operating system start check box is checked, the + Als het selectievakje Starten geminimaliseerd op het besturingssysteem is aangevinkt, wordt de + + + + server will be started when the operating system starts up and is automatically minimized to a system task bar icon. + server gestart wanneer het besturingssysteem wordt opgestart en wordt automatisch geminimaliseerd tot een systeemtaakbalkpictogram. + + + + Show Creative Commons Licence Dialog + Toon de Creative Commons Licentie + + + + If enabled, a Creative Commons BY-NC-SA 4.0 Licence dialog is shown each time a new user connects the server. + Indien ingeschakeld, wordt een Creative Commons BY-NC-SA 4.0 Licentiedialoogvenster getoond telkens wanneer een nieuwe gebruiker de server verbindt. + + + + Make My Server Public + Maak Mijn Server Openbaar + + + + If the Make My Server Public check box is checked, this server registers itself at the central server so that all + Als het selectievakje Maak Mijn Server Openbaar is aangevinkt, registreert deze server zichzelf op de centrale server zodat alle + + + + users can see the server in the connect dialog server list and connect to it. The registering of the server is renewed periodically to make sure that all servers in the connect dialog server list are actually available. + gebruikers kunnen de server zien in de lijst van de verbindingsserver in het dialoogvenster en er verbinding mee maken. De registratie van de server wordt periodiek vernieuwd om er zeker van te zijn dat alle servers in de connect dialog server lijst daadwerkelijk beschikbaar zijn. + + + + Register Server Status + Tabblad Serverstatus + + + + If the Make My Server Public check box is checked, this will show the success of registration with the central server. + Als het selectievakje Maak Mijn Server Openbaar is aangevinkt, zal dit het succes van de registratie bij de centrale server laten zien. + + + + Central Server Address + Centrale Serveradres + + + + The Central server address is the IP address or URL of the central server at which this server is registered. With the central server address type either the local region can be selected of the default central servers or a manual address can be specified. + Het adres van de centrale server is het IP-adres of de URL van de centrale server waarop deze server is geregistreerd. Met het type centraal serveradres kan ofwel de lokale regio worden geselecteerd van de standaard centrale servers of kan een handmatig adres worden opgegeven. + + + + Default central server type combo box + Standaard centrale server type combo box + + + + Central server address line edit + Centrale server adresbewerking van de lijn + + + + Server Name + Servernaam + + + + The server name identifies your server in the connect dialog server list at the clients. If no name is given, the IP address is shown instead. + De naam van de server identificeert uw server in de lijst van de connect-dialoog-server bij de clients. Als er geen naam wordt gegeven, wordt in plaats daarvan het IP-adres getoond. + + + + Server name line edit + Servernaam lijnbewerking + + + + Location City + Locatie Stad + + + + The city in which this server is located can be set here. If a city name is entered, it will be shown in the connect dialog server list at the clients. + De stad waar deze server zich bevindt kan hier worden ingesteld. Als er een plaatsnaam wordt ingevoerd, wordt deze getoond in de lijst van de connect-dialoog-server bij de clients. + + + + City where the server is located line edit + Stad waar de server zich bevindt lijnbewerking + + + + Location country + Land van locatie + + + + The country in which this server is located can be set here. If a country is entered, it will be shown in the connect dialog server list at the clients. + Het land waarin deze server zich bevindt kan hier worden ingesteld. Als er een land is ingevoerd, wordt dit getoond in de lijst van de verbindingsserver bij de clients. + + + + Country where the server is located combo box + Land waar de server zich bevindt combo box + + + + + E&xit + &Sluiten + + + + &Hide + Verbergen + + + + + + server + server + + + + &Open + &Open + + + + server + server + + + + Predefined Address + + + + Manual + Handmatig + + + Default + Standaard + + + Default (North America) + Standaard (Noord-Amerika) + + + + Server + Server + + + + &Window + &Window + + + + Unregistered + Niet geregistreerd + + + + Bad address + Slecht adres + + + + Registration requested + Aanmelding gevraagd + + + + Registration failed + Registratie is mislukt + + + + Check server version + Controleer de versie van de server + + + + Registered + Geregistreerd + + + + Central Server full + Centrale server vol + + + + Unknown value + Onbekende waarde + + + + CServerDlgBase + + + Client IP:Port + Client IP:Poort + + + + + Name + Naam + + + + Jitter Buffer Size + Jitter Buffermaat + + + + Start Minimized on Windows Start + Start geminimaliseerd bij Windows-start + + + + Show Creative Commons BY-NC-SA 4.0 Licence Dialog + Toon Creative Commons BY-NC-SA 4.0 Licentie Dialoog + + + + Make My Server Public (Register My Server in the Server List) + Maak mijn server openbaar (Registreer mijn server in de lijst met servers) + + + + STATUS + STATUS + + + + Central Server Address: + Adres Centrale Server: + + + + My Server Info + Mijn serverinfo + + + + Location: City + Locatie: Stad + + + + Location: Country + Locatie: Land + + + + TextLabelNameVersion + TextLabelNameVersion + + + + CSound + + + Error closing stream: $s + Fout tijdens afsluiten: $s + + + + The Jack server is not running. This software requires a Jack server to run. Normally if the Jack server is not running this software will automatically start the Jack server. It seems that this auto start has not worked. Try to start the Jack server manually. + De Jack server draait niet. Voor deze software is een Jack-server nodig om te kunnen draaien. Normaal gesproken als de Jack-server niet draait zal deze software automatisch de Jack-server opstarten. Het lijkt erop dat deze automatische start niet heeft gewerkt. Probeer de Jack server handmatig te starten. + + + + The Jack server sample rate is different from the required one. The required sample rate is: + De Jack-server sample rate is anders dan de vereiste. De vereiste sample rate is: + + + + You can use a tool like <i><a href=http://qjackctl.sourceforge.net>QJackCtl</a></i> to adjust the Jack server sample rate. + U kunt een tool als <i><a href=http://qjackctl.sourceforge.net>QJackCtl</a></i> gebruiken om de sample rate van de Jack-server aan te passen. + + + + Make sure to set the Frames/Period to a low value like + Zorg ervoor dat u de Frames/Periode op een lage waarde instelt, zoals + + + + to achieve a low delay. + om een lage vertraging te bereiken. + + + + + The Jack port registering failed. + De registratie van de Jack-poort is mislukt. + + + + Cannot activate the Jack client. + Kan de Jack-client niet activeren. + + + + The Jack server was shut down. This software requires a Jack server to run. Try to restart the software to solve the issue. + De Jack-server werd afgesloten. Voor deze software is een Jack-server nodig om te kunnen draaien. Probeer de software te herstarten om het probleem op te lossen. + + + + CoreAudio input AudioHardwareGetProperty call failed. It seems that no sound card is available in the system. + CoreAudio-ingang AudioHardwareGetProperty-oproep mislukt. Het lijkt erop dat er geen geluidskaart beschikbaar is in het systeem. + + + + CoreAudio output AudioHardwareGetProperty call failed. It seems that no sound card is available in the system. + CoreAudio uitgang AudioHardwareGetProperty call mislukt. Het lijkt erop dat er geen geluidskaart beschikbaar is in het systeem. + + + + Current system audio input device sample rate of %1 Hz is not supported. Please open the Audio-MIDI-Setup in Applications->Utilities and try to set a sample rate of %2 Hz. + Een sample rate van %1 Hz voor het audio-ingangsapparaat van het huidige systeem wordt niet ondersteund. Open de Audio-MIDI-Setup in Applications->Utilities en probeer een sample rate van %2 Hz in te stellen. + + + + Current system audio output device sample rate of %1 Hz is not supported. Please open the Audio-MIDI-Setup in Applications->Utilities and try to set a sample rate of %2 Hz. + De sample rate van %1 Hz van het huidige systeem audiouitgangsapparaat wordt niet ondersteund. Open de Audio-MIDI-Setup in Applications->Utilities en probeer een sample rate van %2 Hz in te stellen. + + + + The audio input stream format for this audio device is not compatible with this software. + Het audio input stream-formaat voor dit audioapparaat is niet compatibel met deze software. + + + + The audio output stream format for this audio device is not compatible with this software. + Het formaat van de audio-uitgangsstroom voor dit audioapparaat is niet compatibel met deze software. + + + + The buffer sizes of the current input and output audio device cannot be set to a common value. Please choose other input/output audio devices in your system settings. + De buffergrootte van het huidige in- en uitgaande audioapparaat kan niet op een gemeenschappelijke waarde worden ingesteld. Kies andere in-/uitgangsaudioapparaten in uw systeeminstellingen. + + + + The audio driver could not be initialized. + De audiodriver kon niet worden geïnitialiseerd. + + + + The audio device does not support the required sample rate. The required sample rate is: + Het audioapparaat ondersteunt niet de vereiste samplefrequentie. De vereiste samplefrequentie wel: + + + + The audio device does not support to set the required sampling rate. This error can happen if you have an audio interface like the Roland UA-25EX where you set the sample rate with a hardware switch on the audio device. If this is the case, please change the sample rate to + Het audioapparaat biedt geen ondersteuning voor het instellen van de vereiste bemonsteringsfrequentie. Deze fout kan zich voordoen als u een audio-interface heeft zoals de Roland UA-25EX waarbij u de samplefrequentie instelt met een hardwareschakelaar op het audioapparaat. Als dit het geval is, verander dan de samplefrequentie in + + + + Hz on the device and restart the + Hz op het apparaat en start de + + + + software. + software. + + + + The audio device does not support the required number of channels. The required number of channels for input and output is: + Het audioapparaat ondersteunt niet het vereiste aantal kanalen. Het vereiste aantal kanalen voor in- en uitvoer is: + + + + + Required audio sample format not available. + Vereist audiosampleformaat niet beschikbaar. + + + + No ASIO audio device (driver) found. + Geen ASIO-audioapparaat (stuurprogramma) gevonden. + + + + The + De + + + + software requires the low latency audio interface ASIO to work properly. This is no standard Windows audio interface and therefore a special audio driver is required. Either your sound card has a native ASIO driver (which is recommended) or you might want to use alternative drivers like the ASIO4All driver. + software vereist de lage-latency audio-interface ASIO om goed te kunnen werken. Dit is geen standaard Windows audio-interface en daarom is een speciale audio-stuurprogramma vereist. Ofwel heeft uw geluidskaart een native ASIO driver (die wordt aanbevolen), ofwel wilt u alternatieve drivers gebruiken zoals de ASIO4All driver. + + + + CSoundBase + + + Invalid device selection. + Ongeldige apparaatkeuze. + + + + The audio driver properties have changed to a state which is incompatible to this software. The selected audio device could not be used because of the following error: + De eigenschappen van de audiodriver zijn veranderd in een toestand die niet compatibel is met deze software. Het geselecteerde audioapparaat kon niet worden gebruikt vanwege de volgende fout: + + + + Please restart the software. + Start de software opnieuw op. + + + + Close + Sluiten + + + + No usable + Niet bruikbaar + + + + audio device (driver) found. + audioapparaat (stuurprogramma) gevonden. + + + + In the following there is a list of all available drivers with the associated error message: + Hieronder vindt u een lijst van alle beschikbare drivers met de bijbehorende foutmelding: + + + + Do you want to open the ASIO driver setups? + Wilt u de ASIO-stuurprogramma's openen? + + + + could not be started because of audio interface issues. + kon niet worden gestart vanwege problemen met de audio-interface. + + + + global + + + For more information use the What's This help (help menu, right mouse button or Shift+F1) + Voor meer informatie gebruik de Wat Is Dit hulp (helpmenu, rechtermuisklik of Shift+F1) + + + diff --git a/src/res/translation/translation_pt_PT.qm b/src/res/translation/translation_pt_PT.qm index b6fd9264..5c2ebc81 100644 Binary files a/src/res/translation/translation_pt_PT.qm and b/src/res/translation/translation_pt_PT.qm differ diff --git a/src/res/translation/translation_pt_PT.ts b/src/res/translation/translation_pt_PT.ts index a8d45ac7..e58b3548 100644 --- a/src/res/translation/translation_pt_PT.ts +++ b/src/res/translation/translation_pt_PT.ts @@ -15,7 +15,7 @@ software enables musicians to perform real-time jam sessions over the internet. - + permite aos músicos realizar jam sessions em tempo real pela Internet. @@ -25,7 +25,7 @@ There is a - + Existe um servidor @@ -40,50 +40,75 @@ Qt cross-platform application framework - + Estrutura de aplicações multiplataforma Qt Audio reverberation code by Perry R. Cook and Gary P. Scavone - + Código de reverberação de áudio por Perry R. Cook e Gary P. Scavone Some pixmaps are from the - + Alguns pixmaps são do Country flag icons from Mark James - - - - - For details on the contributions check out the - + Ícones de bandeira do país de Mark James - Github Contributors list - + For details on the contributions check out the + Para detalhes sobre as contribuições, consulte a - + + Github Contributors list + lista de colaboradores do Github + + + + Spanish + Espanhol + + + + French + Francês + + + + Portuguese + Português + + + + Dutch + Holandês + + + + German + Alemão + + + About Sobre o - + , Version , Versão - + Internet Jam Session Software Programa de Jam Sessions pela Internet - + Under the GNU General Public License (GPL) Sob a Licença Pública Geral GNU (GPL) @@ -108,22 +133,22 @@ A&bout - + &Sobre &Libraries - + &Bibliotecas &Contributors - + &Colaboradores &Translation - + &Tradução Author: Volker Fischer @@ -155,12 +180,12 @@ CAudioMixerBoard - + Server Servidor - + T R Y I N G T O C O N N E C T T E N T A N D O L I G A R @@ -253,44 +278,44 @@ SOLO - + Alias/Name Nome/Alcunha - + Instrument Instrumento - + Location Localização - - - + + + Skill Level Nível de Habilidade - + Beginner Principiante - + Intermediate Intermediário - + Expert Avançado - + Musician Profile Perfil do músico @@ -480,7 +505,7 @@ - + C&onnect &Ligar @@ -621,17 +646,22 @@ O CPU do cliente ou servidor está a 100%. - + + Central Server + + + + user utilizador - + users utilizadores - + D&isconnect Desl&igar @@ -1122,24 +1152,24 @@ Alta - + Manual Manual - + Default Servidor Padrão - + Default (North America) Servidor Padrão (America do Norte) preferred - + preferido @@ -1157,6 +1187,11 @@ Buffer Delay: Atraso do buffer: + + + Predefined Address + + The selected audio device could not be used because of the following error: @@ -1390,7 +1425,7 @@ - The server list is filered by the given text. Note that the filter is case insensitive. + The server list is filtered by the given text. Note that the filter is case insensitive. A lista de servidores é filtrada pelo texto fornecido. Note que o filtro não diferencia maiúsculas de minúsculas. @@ -1470,28 +1505,28 @@ CHelpMenu - + &Help - + &Ajuda - + Getting &Started... Como Começa&r... - + Software &Manual... &Manual do Programa... - + What's &This O que é &isto - + &About... &Sobre... @@ -1499,102 +1534,102 @@ CLicenceDlg - + I &agree to the above licence terms Eu &aceito os termos da licença acima - + Accept Aceitar - + Decline Rejeitar - + By connecting to this server and agreeing to this notice, you agree to the following: Ao ligar-se a este servidor e concordar com este aviso, está a concordar com o seguinte: - + You agree that all data, sounds, or other works transmitted to this server are owned and created by you or your licensors, and that you are making these data, sounds or other works available via the following Creative Commons License (for more information on this license, see Você concorda que todos os dados, sons ou outros trabalhos transmitidos para este servidor pertencem e são criados por você ou por seus licenciadores, e que você está disponibilizando esses dados, sons ou outros trabalhos através da seguinte licença Creative Commons (para obter mais informações sobre esta licença, consulte - + You are free to: Você tem o direito de: - + Share Compartilhar - + copy and redistribute the material in any medium or format copiar e redistribuir o material em qualquer suporte ou formato - + Adapt Adaptar - + remix, transform, and build upon the material remisturar, transformar, e criar a partir do material - + The licensor cannot revoke these freedoms as long as you follow the license terms. O licenciante não pode revogar estes direitos desde que você respeite os termos da licença. - + Under the following terms: De acordo com os termos seguintes: - + Attribution Atribuição - + You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use. Você deve atribuir o devido crédito, fornecer um link para a licença, e indicar se foram feitas alterações. Você pode fazê-lo de qualquer forma razoável, mas não de uma forma que sugira que o licenciante o apoia ou aprova o seu uso. - + NonCommercial NãoComercial - + You may not use the material for commercial purposes. Você não pode usar o material para fins comerciais. - + ShareAlike CompartilhaIgual - + If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original. Se você remisturar, transformar, ou criar a partir do material, tem de distribuir as suas contribuições ao abrigo da mesma licença que o original. - + No additional restrictions Sem restrições adicionais - + You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits. Você não pode aplicar termos jurídicos ou medidas de caráter tecnológico que restrinjam legalmente outros de fazerem algo que a licença permita. @@ -1602,272 +1637,272 @@ CMusProfDlg - + server. This tag will also show up at each client which is connected to the same server as you. If the name is left empty, the IP address is shown instead. . Esta identificação também será exibida em cada cliente ligado ao mesmo servidor que você. Se o nome estiver vazio, o endereço IP será mostrado. - + Alias or name edit box Caixa de edição do nome ou pseudônimo - + Instrument picture button Botão da imagem do instrumento - + Country flag button Botão da bandeira do país - + City edit box Caixa de edição da cidade - + Skill level combo box Caixa do nível de habilidade - - - + + + None Nenhum - - + + Musician Profile Perfil do músico - + Alias/Name Nome/Alcunha - + Instrument Instrumento - + Country País - + City Cidade - + Skill Habilidade - + &Close &Fechar - + Beginner Principiante - + Intermediate Intermediário - + Expert Avançado - + Set your name or an alias here so that the other musicians you want to play with know who you are. Additionally you may set an instrument picture of the instrument you play and a flag of the country you are living. The city you live in and the skill level of playing your instrument may also be added. Defina o seu nome ou um pseudônimo aqui para que os outros músicos com quem quer tocar saibam quem você é. Além disso, pode definir uma imagem do instrumento que toca e uma bandeira do país em que vive. A cidade em que vive e o nível de habilidade com o seu instrumento também podem ser adicionados. - + What you set here will appear at your fader on the mixer board when you are connected to a O que definir aqui aparecerá por baixo do seu fader na secção de mistura quando estiver ligado a um servidor - + Drum Set Bateria - + Djembe Djembe - + Electric Guitar Guitarra Elétrica - + Acoustic Guitar Guitarra Acústica - + Bass Guitar Baixo - + Keyboard Teclado - + Synthesizer Sintetizador - + Grand Piano Piano de Cauda - + Accordion Acordeão - + Vocal Voz - + Microphone Microfone - + Harmonica Harmónica - + Trumpet Trompete - + Trombone Trombone - + French Horn Trompa Francesa - + Tuba Tuba - + Saxophone Saxofone - + Clarinet Clarinete - + Flute Flauta - + Violin Violino - + Cello Violoncelo - + Double Bass Contrabaixo - + Recorder Gravador - + Streamer Streamer - + Listener Ouvinte - + Guitar+Vocal Guitarra+Voz - + Keyboard+Vocal Teclado+Voz - + Bodhran Bodhrán - + Bassoon Fagote - + Oboe Oboé - + Harp Harpa - + Viola Viola de Arco - + Congas - + Congas - + Bongo - + Bongo @@ -2031,19 +2066,21 @@ - + + Predefined Address + + + Manual - Manual + Manual - Default - Servidor Padrão + Servidor Padrão - Default (North America) - Servidor Padrão (America do Norte) + Servidor Padrão (America do Norte) @@ -2056,42 +2093,42 @@ &Janela - + Unregistered Não Registado - + Bad address Endereço incorrecto - + Registration requested Registo solicitado - + Registration failed Falha no registo - + Check server version Verifique versão do servidor - + Registered Registado - + Central Server full Servidor Central Cheio - + Unknown value Valor desconhecido @@ -2292,7 +2329,7 @@ Error closing stream: $s - + Erro ao fechar o stream: $s @@ -2343,4 +2380,12 @@ não pôde ser iniciado devido a problemas na interface de áudio. + + global + + + For more information use the What's This help (help menu, right mouse button or Shift+F1) + Para mais informações, use O que é isto (menu Ajuda, botão direito do rato ou Shift + F1) + + diff --git a/src/resources.qrc b/src/resources.qrc index 51b5fe74..a60fac09 100755 --- a/src/resources.qrc +++ b/src/resources.qrc @@ -11,6 +11,9 @@ res/translation/translation_es_ES.qm + + res/translation/translation_nl_NL.qm + res/CLEDDisabledSmall.png res/CLEDGreenArrow.png diff --git a/src/server.cpp b/src/server.cpp index 061b7325..e0bcad00 100755 --- a/src/server.cpp +++ b/src/server.cpp @@ -473,284 +473,16 @@ CServer::CServer ( const int iNewMaxNumChan, this, SLOT ( OnAboutToQuit() ) ); QObject::connect ( pSignalHandler, - SIGNAL ( ShutdownSignal ( int ) ), - this, SLOT ( OnShutdown ( int ) ) ); + SIGNAL ( HandledSignal ( int ) ), + this, SLOT ( OnHandledSignal ( int ) ) ); -#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) connectChannelSignalsToServerSlots(); -#else - // CODE TAG: MAX_NUM_CHANNELS_TAG - // make sure we have MAX_NUM_CHANNELS connections!!! - // send message - QObject::connect ( &vecChannels[0], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh0 ( CVector ) ) ); - QObject::connect ( &vecChannels[1], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh1 ( CVector ) ) ); - QObject::connect ( &vecChannels[2], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh2 ( CVector ) ) ); - QObject::connect ( &vecChannels[3], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh3 ( CVector ) ) ); - QObject::connect ( &vecChannels[4], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh4 ( CVector ) ) ); - QObject::connect ( &vecChannels[5], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh5 ( CVector ) ) ); - QObject::connect ( &vecChannels[6], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh6 ( CVector ) ) ); - QObject::connect ( &vecChannels[7], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh7 ( CVector ) ) ); - QObject::connect ( &vecChannels[8], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh8 ( CVector ) ) ); - QObject::connect ( &vecChannels[9], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh9 ( CVector ) ) ); - QObject::connect ( &vecChannels[10], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh10 ( CVector ) ) ); - QObject::connect ( &vecChannels[11], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh11 ( CVector ) ) ); - QObject::connect ( &vecChannels[12], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh12 ( CVector ) ) ); - QObject::connect ( &vecChannels[13], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh13 ( CVector ) ) ); - QObject::connect ( &vecChannels[14], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh14 ( CVector ) ) ); - QObject::connect ( &vecChannels[15], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh15 ( CVector ) ) ); - QObject::connect ( &vecChannels[16], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh16 ( CVector ) ) ); - QObject::connect ( &vecChannels[17], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh17 ( CVector ) ) ); - QObject::connect ( &vecChannels[18], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh18 ( CVector ) ) ); - QObject::connect ( &vecChannels[19], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh19 ( CVector ) ) ); - QObject::connect ( &vecChannels[20], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh20 ( CVector ) ) ); - QObject::connect ( &vecChannels[21], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh21 ( CVector ) ) ); - QObject::connect ( &vecChannels[22], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh22 ( CVector ) ) ); - QObject::connect ( &vecChannels[23], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh23 ( CVector ) ) ); - QObject::connect ( &vecChannels[24], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh24 ( CVector ) ) ); - QObject::connect ( &vecChannels[25], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh25 ( CVector ) ) ); - QObject::connect ( &vecChannels[26], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh26 ( CVector ) ) ); - QObject::connect ( &vecChannels[27], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh27 ( CVector ) ) ); - QObject::connect ( &vecChannels[28], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh28 ( CVector ) ) ); - QObject::connect ( &vecChannels[29], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh29 ( CVector ) ) ); - QObject::connect ( &vecChannels[30], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh30 ( CVector ) ) ); - QObject::connect ( &vecChannels[31], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh31 ( CVector ) ) ); - QObject::connect ( &vecChannels[32], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh32 ( CVector ) ) ); - QObject::connect ( &vecChannels[33], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh33 ( CVector ) ) ); - QObject::connect ( &vecChannels[34], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh34 ( CVector ) ) ); - QObject::connect ( &vecChannels[35], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh35 ( CVector ) ) ); - QObject::connect ( &vecChannels[36], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh36 ( CVector ) ) ); - QObject::connect ( &vecChannels[37], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh37 ( CVector ) ) ); - QObject::connect ( &vecChannels[38], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh38 ( CVector ) ) ); - QObject::connect ( &vecChannels[39], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh39 ( CVector ) ) ); - QObject::connect ( &vecChannels[40], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh40 ( CVector ) ) ); - QObject::connect ( &vecChannels[41], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh41 ( CVector ) ) ); - QObject::connect ( &vecChannels[42], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh42 ( CVector ) ) ); - QObject::connect ( &vecChannels[43], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh43 ( CVector ) ) ); - QObject::connect ( &vecChannels[44], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh44 ( CVector ) ) ); - QObject::connect ( &vecChannels[45], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh45 ( CVector ) ) ); - QObject::connect ( &vecChannels[46], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh46 ( CVector ) ) ); - QObject::connect ( &vecChannels[47], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh47 ( CVector ) ) ); - QObject::connect ( &vecChannels[48], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh48 ( CVector ) ) ); - QObject::connect ( &vecChannels[49], SIGNAL ( MessReadyForSending ( CVector ) ), this, SLOT ( OnSendProtMessCh49 ( CVector ) ) ); - - // request connected clients list - QObject::connect ( &vecChannels[0], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh0() ) ); - QObject::connect ( &vecChannels[1], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh1() ) ); - QObject::connect ( &vecChannels[2], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh2() ) ); - QObject::connect ( &vecChannels[3], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh3() ) ); - QObject::connect ( &vecChannels[4], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh4() ) ); - QObject::connect ( &vecChannels[5], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh5() ) ); - QObject::connect ( &vecChannels[6], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh6() ) ); - QObject::connect ( &vecChannels[7], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh7() ) ); - QObject::connect ( &vecChannels[8], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh8() ) ); - QObject::connect ( &vecChannels[9], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh9() ) ); - QObject::connect ( &vecChannels[10], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh10() ) ); - QObject::connect ( &vecChannels[11], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh11() ) ); - QObject::connect ( &vecChannels[12], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh12() ) ); - QObject::connect ( &vecChannels[13], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh13() ) ); - QObject::connect ( &vecChannels[14], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh14() ) ); - QObject::connect ( &vecChannels[15], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh15() ) ); - QObject::connect ( &vecChannels[16], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh16() ) ); - QObject::connect ( &vecChannels[17], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh17() ) ); - QObject::connect ( &vecChannels[18], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh18() ) ); - QObject::connect ( &vecChannels[19], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh19() ) ); - QObject::connect ( &vecChannels[20], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh20() ) ); - QObject::connect ( &vecChannels[21], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh21() ) ); - QObject::connect ( &vecChannels[22], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh22() ) ); - QObject::connect ( &vecChannels[23], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh23() ) ); - QObject::connect ( &vecChannels[24], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh24() ) ); - QObject::connect ( &vecChannels[25], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh25() ) ); - QObject::connect ( &vecChannels[26], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh26() ) ); - QObject::connect ( &vecChannels[27], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh27() ) ); - QObject::connect ( &vecChannels[28], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh28() ) ); - QObject::connect ( &vecChannels[29], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh29() ) ); - QObject::connect ( &vecChannels[30], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh30() ) ); - QObject::connect ( &vecChannels[31], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh31() ) ); - QObject::connect ( &vecChannels[32], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh32() ) ); - QObject::connect ( &vecChannels[33], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh33() ) ); - QObject::connect ( &vecChannels[34], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh34() ) ); - QObject::connect ( &vecChannels[35], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh35() ) ); - QObject::connect ( &vecChannels[36], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh36() ) ); - QObject::connect ( &vecChannels[37], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh37() ) ); - QObject::connect ( &vecChannels[38], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh38() ) ); - QObject::connect ( &vecChannels[39], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh39() ) ); - QObject::connect ( &vecChannels[40], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh40() ) ); - QObject::connect ( &vecChannels[41], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh41() ) ); - QObject::connect ( &vecChannels[42], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh42() ) ); - QObject::connect ( &vecChannels[43], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh43() ) ); - QObject::connect ( &vecChannels[44], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh44() ) ); - QObject::connect ( &vecChannels[45], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh45() ) ); - QObject::connect ( &vecChannels[46], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh46() ) ); - QObject::connect ( &vecChannels[47], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh47() ) ); - QObject::connect ( &vecChannels[48], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh48() ) ); - QObject::connect ( &vecChannels[49], SIGNAL ( ReqConnClientsList() ), this, SLOT ( OnReqConnClientsListCh49() ) ); - - // channel info has changed - QObject::connect ( &vecChannels[0], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh0() ) ); - QObject::connect ( &vecChannels[1], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh1() ) ); - QObject::connect ( &vecChannels[2], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh2() ) ); - QObject::connect ( &vecChannels[3], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh3() ) ); - QObject::connect ( &vecChannels[4], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh4() ) ); - QObject::connect ( &vecChannels[5], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh5() ) ); - QObject::connect ( &vecChannels[6], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh6() ) ); - QObject::connect ( &vecChannels[7], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh7() ) ); - QObject::connect ( &vecChannels[8], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh8() ) ); - QObject::connect ( &vecChannels[9], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh9() ) ); - QObject::connect ( &vecChannels[10], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh10() ) ); - QObject::connect ( &vecChannels[11], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh11() ) ); - QObject::connect ( &vecChannels[12], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh12() ) ); - QObject::connect ( &vecChannels[13], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh13() ) ); - QObject::connect ( &vecChannels[14], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh14() ) ); - QObject::connect ( &vecChannels[15], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh15() ) ); - QObject::connect ( &vecChannels[16], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh16() ) ); - QObject::connect ( &vecChannels[17], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh17() ) ); - QObject::connect ( &vecChannels[18], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh18() ) ); - QObject::connect ( &vecChannels[19], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh19() ) ); - QObject::connect ( &vecChannels[20], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh20() ) ); - QObject::connect ( &vecChannels[21], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh21() ) ); - QObject::connect ( &vecChannels[22], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh22() ) ); - QObject::connect ( &vecChannels[23], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh23() ) ); - QObject::connect ( &vecChannels[24], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh24() ) ); - QObject::connect ( &vecChannels[25], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh25() ) ); - QObject::connect ( &vecChannels[26], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh26() ) ); - QObject::connect ( &vecChannels[27], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh27() ) ); - QObject::connect ( &vecChannels[28], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh28() ) ); - QObject::connect ( &vecChannels[29], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh29() ) ); - QObject::connect ( &vecChannels[30], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh30() ) ); - QObject::connect ( &vecChannels[31], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh31() ) ); - QObject::connect ( &vecChannels[32], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh32() ) ); - QObject::connect ( &vecChannels[33], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh33() ) ); - QObject::connect ( &vecChannels[34], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh34() ) ); - QObject::connect ( &vecChannels[35], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh35() ) ); - QObject::connect ( &vecChannels[36], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh36() ) ); - QObject::connect ( &vecChannels[37], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh37() ) ); - QObject::connect ( &vecChannels[38], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh38() ) ); - QObject::connect ( &vecChannels[39], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh39() ) ); - QObject::connect ( &vecChannels[40], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh40() ) ); - QObject::connect ( &vecChannels[41], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh41() ) ); - QObject::connect ( &vecChannels[42], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh42() ) ); - QObject::connect ( &vecChannels[43], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh43() ) ); - QObject::connect ( &vecChannels[44], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh44() ) ); - QObject::connect ( &vecChannels[45], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh45() ) ); - QObject::connect ( &vecChannels[46], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh46() ) ); - QObject::connect ( &vecChannels[47], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh47() ) ); - QObject::connect ( &vecChannels[48], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh48() ) ); - QObject::connect ( &vecChannels[49], SIGNAL ( ChanInfoHasChanged() ), this, SLOT ( OnChanInfoHasChangedCh49() ) ); - - // chat text received - QObject::connect ( &vecChannels[0], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh0 ( QString ) ) ); - QObject::connect ( &vecChannels[1], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh1 ( QString ) ) ); - QObject::connect ( &vecChannels[2], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh2 ( QString ) ) ); - QObject::connect ( &vecChannels[3], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh3 ( QString ) ) ); - QObject::connect ( &vecChannels[4], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh4 ( QString ) ) ); - QObject::connect ( &vecChannels[5], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh5 ( QString ) ) ); - QObject::connect ( &vecChannels[6], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh6 ( QString ) ) ); - QObject::connect ( &vecChannels[7], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh7 ( QString ) ) ); - QObject::connect ( &vecChannels[8], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh8 ( QString ) ) ); - QObject::connect ( &vecChannels[9], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh9 ( QString ) ) ); - QObject::connect ( &vecChannels[10], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh10 ( QString ) ) ); - QObject::connect ( &vecChannels[11], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh11 ( QString ) ) ); - QObject::connect ( &vecChannels[12], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh12 ( QString ) ) ); - QObject::connect ( &vecChannels[13], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh13 ( QString ) ) ); - QObject::connect ( &vecChannels[14], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh14 ( QString ) ) ); - QObject::connect ( &vecChannels[15], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh15 ( QString ) ) ); - QObject::connect ( &vecChannels[16], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh16 ( QString ) ) ); - QObject::connect ( &vecChannels[17], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh17 ( QString ) ) ); - QObject::connect ( &vecChannels[18], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh18 ( QString ) ) ); - QObject::connect ( &vecChannels[19], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh19 ( QString ) ) ); - QObject::connect ( &vecChannels[20], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh20 ( QString ) ) ); - QObject::connect ( &vecChannels[21], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh21 ( QString ) ) ); - QObject::connect ( &vecChannels[22], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh22 ( QString ) ) ); - QObject::connect ( &vecChannels[23], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh23 ( QString ) ) ); - QObject::connect ( &vecChannels[24], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh24 ( QString ) ) ); - QObject::connect ( &vecChannels[25], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh25 ( QString ) ) ); - QObject::connect ( &vecChannels[26], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh26 ( QString ) ) ); - QObject::connect ( &vecChannels[27], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh27 ( QString ) ) ); - QObject::connect ( &vecChannels[28], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh28 ( QString ) ) ); - QObject::connect ( &vecChannels[29], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh29 ( QString ) ) ); - QObject::connect ( &vecChannels[30], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh30 ( QString ) ) ); - QObject::connect ( &vecChannels[31], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh31 ( QString ) ) ); - QObject::connect ( &vecChannels[32], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh32 ( QString ) ) ); - QObject::connect ( &vecChannels[33], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh33 ( QString ) ) ); - QObject::connect ( &vecChannels[34], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh34 ( QString ) ) ); - QObject::connect ( &vecChannels[35], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh35 ( QString ) ) ); - QObject::connect ( &vecChannels[36], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh36 ( QString ) ) ); - QObject::connect ( &vecChannels[37], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh37 ( QString ) ) ); - QObject::connect ( &vecChannels[38], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh38 ( QString ) ) ); - QObject::connect ( &vecChannels[39], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh39 ( QString ) ) ); - QObject::connect ( &vecChannels[40], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh40 ( QString ) ) ); - QObject::connect ( &vecChannels[41], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh41 ( QString ) ) ); - QObject::connect ( &vecChannels[42], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh42 ( QString ) ) ); - QObject::connect ( &vecChannels[43], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh43 ( QString ) ) ); - QObject::connect ( &vecChannels[44], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh44 ( QString ) ) ); - QObject::connect ( &vecChannels[45], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh45 ( QString ) ) ); - QObject::connect ( &vecChannels[46], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh46 ( QString ) ) ); - QObject::connect ( &vecChannels[47], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh47 ( QString ) ) ); - QObject::connect ( &vecChannels[48], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh48 ( QString ) ) ); - QObject::connect ( &vecChannels[49], SIGNAL ( ChatTextReceived ( QString ) ), this, SLOT ( OnChatTextReceivedCh49 ( QString ) ) ); - - // auto socket buffer size change - QObject::connect ( &vecChannels[0], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh0 ( int ) ) ); - QObject::connect ( &vecChannels[1], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh1 ( int ) ) ); - QObject::connect ( &vecChannels[2], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh2 ( int ) ) ); - QObject::connect ( &vecChannels[3], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh3 ( int ) ) ); - QObject::connect ( &vecChannels[4], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh4 ( int ) ) ); - QObject::connect ( &vecChannels[5], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh5 ( int ) ) ); - QObject::connect ( &vecChannels[6], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh6 ( int ) ) ); - QObject::connect ( &vecChannels[7], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh7 ( int ) ) ); - QObject::connect ( &vecChannels[8], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh8 ( int ) ) ); - QObject::connect ( &vecChannels[9], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh9 ( int ) ) ); - QObject::connect ( &vecChannels[10], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh10 ( int ) ) ); - QObject::connect ( &vecChannels[11], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh11 ( int ) ) ); - QObject::connect ( &vecChannels[12], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh12 ( int ) ) ); - QObject::connect ( &vecChannels[13], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh13 ( int ) ) ); - QObject::connect ( &vecChannels[14], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh14 ( int ) ) ); - QObject::connect ( &vecChannels[15], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh15 ( int ) ) ); - QObject::connect ( &vecChannels[16], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh16 ( int ) ) ); - QObject::connect ( &vecChannels[17], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh17 ( int ) ) ); - QObject::connect ( &vecChannels[18], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh18 ( int ) ) ); - QObject::connect ( &vecChannels[19], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh19 ( int ) ) ); - QObject::connect ( &vecChannels[20], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh20 ( int ) ) ); - QObject::connect ( &vecChannels[21], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh21 ( int ) ) ); - QObject::connect ( &vecChannels[22], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh22 ( int ) ) ); - QObject::connect ( &vecChannels[23], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh23 ( int ) ) ); - QObject::connect ( &vecChannels[24], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh24 ( int ) ) ); - QObject::connect ( &vecChannels[25], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh25 ( int ) ) ); - QObject::connect ( &vecChannels[26], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh26 ( int ) ) ); - QObject::connect ( &vecChannels[27], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh27 ( int ) ) ); - QObject::connect ( &vecChannels[28], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh28 ( int ) ) ); - QObject::connect ( &vecChannels[29], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh29 ( int ) ) ); - QObject::connect ( &vecChannels[30], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh30 ( int ) ) ); - QObject::connect ( &vecChannels[31], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh31 ( int ) ) ); - QObject::connect ( &vecChannels[32], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh32 ( int ) ) ); - QObject::connect ( &vecChannels[33], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh33 ( int ) ) ); - QObject::connect ( &vecChannels[34], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh34 ( int ) ) ); - QObject::connect ( &vecChannels[35], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh35 ( int ) ) ); - QObject::connect ( &vecChannels[36], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh36 ( int ) ) ); - QObject::connect ( &vecChannels[37], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh37 ( int ) ) ); - QObject::connect ( &vecChannels[38], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh38 ( int ) ) ); - QObject::connect ( &vecChannels[39], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh39 ( int ) ) ); - QObject::connect ( &vecChannels[40], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh40 ( int ) ) ); - QObject::connect ( &vecChannels[41], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh41 ( int ) ) ); - QObject::connect ( &vecChannels[42], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh42 ( int ) ) ); - QObject::connect ( &vecChannels[43], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh43 ( int ) ) ); - QObject::connect ( &vecChannels[44], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh44 ( int ) ) ); - QObject::connect ( &vecChannels[45], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh45 ( int ) ) ); - QObject::connect ( &vecChannels[46], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh46 ( int ) ) ); - QObject::connect ( &vecChannels[47], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh47 ( int ) ) ); - QObject::connect ( &vecChannels[48], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh48 ( int ) ) ); - QObject::connect ( &vecChannels[49], SIGNAL ( ServerAutoSockBufSizeChange ( int ) ), this, SLOT ( OnServerAutoSockBufSizeChangeCh49 ( int ) ) ); - -#endif - // start the socket (it is important to start the socket after all // initializations and connections) Socket.Start(); } -#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) - template inline void CServer::connectChannelSignalsToServerSlots() { @@ -778,15 +510,15 @@ inline void CServer::connectChannelSignalsToServerSlots() // channel info has changed QObject::connect ( &vecChannels[iCurChanID], &CChannel::ChanInfoHasChanged, - this, &CServer::CreateAndSendChanListForAllConChannels ); + this, &CServer::CreateAndSendChanListForAllConChannels ); // chat text received QObject::connect ( &vecChannels[iCurChanID], &CChannel::ChatTextReceived, - this, pOnChatTextReceivedCh ); + this, pOnChatTextReceivedCh ); // auto socket buffer size change QObject::connect ( &vecChannels[iCurChanID], &CChannel::ServerAutoSockBufSizeChange, - this, pOnServerAutoSockBufSizeChangeCh ); + this, pOnServerAutoSockBufSizeChangeCh ); connectChannelSignalsToServerSlots(); }; @@ -800,8 +532,6 @@ void CServer::CreateAndSendJitBufMessage ( const int iCurChanID, vecChannels[iCurChanID].CreateJitBufMes ( iNNumFra ); } -#endif - void CServer::SendProtMessage ( int iChID, CVector vecMessage ) { // the protocol queries me to call the function to send the message @@ -937,10 +667,38 @@ void CServer::OnAboutToQuit() } } -void CServer::OnShutdown ( int ) +void CServer::OnHandledSignal ( int sigNum ) { - // This should trigger OnAboutToQuit +#ifdef _WIN32 + // Windows does not actually get OnHandledSignal triggered QCoreApplication::instance()->exit(); + Q_UNUSED ( sigNum ) +#else + switch ( sigNum ) + { + + case SIGUSR1: + RequestNewRecording(); + break; + + case SIGINT: + case SIGTERM: + // This should trigger OnAboutToQuit + QCoreApplication::instance()->exit(); + break; + + default: + break; + } +#endif +} + +void CServer::RequestNewRecording() +{ + if ( bEnableRecording ) + { + emit RestartRecorder(); + } } void CServer::Start() diff --git a/src/server.h b/src/server.h index 97fa404c..1369f8b8 100755 --- a/src/server.h +++ b/src/server.h @@ -117,8 +117,6 @@ signals: }; #endif - -#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) template class CServerSlots : public CServerSlots { @@ -153,12 +151,6 @@ protected: template<> class CServerSlots<0> {}; -#else -template -class CServerSlots {}; - -#endif - class CServer : public QObject, public CServerSlots @@ -258,9 +250,9 @@ protected: int GetNumberOfConnectedClients(); CVector CreateChannelList(); -#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) virtual void CreateAndSendChanListForAllConChannels(); virtual void CreateAndSendChanListForThisChan ( const int iCurChanID ); + virtual void CreateAndSendChatTextForAllConChannels ( const int iCurChanID, const QString& strChatText ); @@ -273,17 +265,6 @@ protected: template inline void connectChannelSignalsToServerSlots(); -#else - void CreateAndSendChanListForAllConChannels(); - void CreateAndSendChanListForThisChan ( const int iCurChanID ); - void CreateAndSendChatTextForAllConChannels ( const int iCurChanID, - const QString& strChatText ); - - void SendProtMessage ( int iChID, - CVector vecMessage ); - -#endif - void WriteHTMLChannelList(); void ProcessData ( const CVector >& vecvecsData, @@ -305,6 +286,8 @@ protected: const CVector > vecvecsData, CVector& vecLevelsOut ); + void RequestNewRecording(); + // do not use the vector class since CChannel does not have appropriate // copy constructor/operator CChannel vecChannels[MAX_NUM_CHANNELS]; @@ -385,6 +368,7 @@ signals: const CHostAddress RecHostAddr, const int iNumAudChan, const CVector vecsData ); + void RestartRecorder(); public slots: void OnTimer(); @@ -462,266 +446,5 @@ public slots: void OnAboutToQuit(); - void OnShutdown ( int ); - -#if QT_VERSION < 0x50000 // MOC does not expand macros in Qt 4, so we cannot use QT_VERSION_CHECK(5, 0, 0) - // CODE TAG: MAX_NUM_CHANNELS_TAG - // make sure we have MAX_NUM_CHANNELS connections!!! - // send message - void OnSendProtMessCh0 ( CVector mess ) { SendProtMessage ( 0, mess ); } - void OnSendProtMessCh1 ( CVector mess ) { SendProtMessage ( 1, mess ); } - void OnSendProtMessCh2 ( CVector mess ) { SendProtMessage ( 2, mess ); } - void OnSendProtMessCh3 ( CVector mess ) { SendProtMessage ( 3, mess ); } - void OnSendProtMessCh4 ( CVector mess ) { SendProtMessage ( 4, mess ); } - void OnSendProtMessCh5 ( CVector mess ) { SendProtMessage ( 5, mess ); } - void OnSendProtMessCh6 ( CVector mess ) { SendProtMessage ( 6, mess ); } - void OnSendProtMessCh7 ( CVector mess ) { SendProtMessage ( 7, mess ); } - void OnSendProtMessCh8 ( CVector mess ) { SendProtMessage ( 8, mess ); } - void OnSendProtMessCh9 ( CVector mess ) { SendProtMessage ( 9, mess ); } - void OnSendProtMessCh10 ( CVector mess ) { SendProtMessage ( 10, mess ); } - void OnSendProtMessCh11 ( CVector mess ) { SendProtMessage ( 11, mess ); } - void OnSendProtMessCh12 ( CVector mess ) { SendProtMessage ( 12, mess ); } - void OnSendProtMessCh13 ( CVector mess ) { SendProtMessage ( 13, mess ); } - void OnSendProtMessCh14 ( CVector mess ) { SendProtMessage ( 14, mess ); } - void OnSendProtMessCh15 ( CVector mess ) { SendProtMessage ( 15, mess ); } - void OnSendProtMessCh16 ( CVector mess ) { SendProtMessage ( 16, mess ); } - void OnSendProtMessCh17 ( CVector mess ) { SendProtMessage ( 17, mess ); } - void OnSendProtMessCh18 ( CVector mess ) { SendProtMessage ( 18, mess ); } - void OnSendProtMessCh19 ( CVector mess ) { SendProtMessage ( 19, mess ); } - void OnSendProtMessCh20 ( CVector mess ) { SendProtMessage ( 20, mess ); } - void OnSendProtMessCh21 ( CVector mess ) { SendProtMessage ( 21, mess ); } - void OnSendProtMessCh22 ( CVector mess ) { SendProtMessage ( 22, mess ); } - void OnSendProtMessCh23 ( CVector mess ) { SendProtMessage ( 23, mess ); } - void OnSendProtMessCh24 ( CVector mess ) { SendProtMessage ( 24, mess ); } - void OnSendProtMessCh25 ( CVector mess ) { SendProtMessage ( 25, mess ); } - void OnSendProtMessCh26 ( CVector mess ) { SendProtMessage ( 26, mess ); } - void OnSendProtMessCh27 ( CVector mess ) { SendProtMessage ( 27, mess ); } - void OnSendProtMessCh28 ( CVector mess ) { SendProtMessage ( 28, mess ); } - void OnSendProtMessCh29 ( CVector mess ) { SendProtMessage ( 29, mess ); } - void OnSendProtMessCh30 ( CVector mess ) { SendProtMessage ( 30, mess ); } - void OnSendProtMessCh31 ( CVector mess ) { SendProtMessage ( 31, mess ); } - void OnSendProtMessCh32 ( CVector mess ) { SendProtMessage ( 32, mess ); } - void OnSendProtMessCh33 ( CVector mess ) { SendProtMessage ( 33, mess ); } - void OnSendProtMessCh34 ( CVector mess ) { SendProtMessage ( 34, mess ); } - void OnSendProtMessCh35 ( CVector mess ) { SendProtMessage ( 35, mess ); } - void OnSendProtMessCh36 ( CVector mess ) { SendProtMessage ( 36, mess ); } - void OnSendProtMessCh37 ( CVector mess ) { SendProtMessage ( 37, mess ); } - void OnSendProtMessCh38 ( CVector mess ) { SendProtMessage ( 38, mess ); } - void OnSendProtMessCh39 ( CVector mess ) { SendProtMessage ( 39, mess ); } - void OnSendProtMessCh40 ( CVector mess ) { SendProtMessage ( 40, mess ); } - void OnSendProtMessCh41 ( CVector mess ) { SendProtMessage ( 41, mess ); } - void OnSendProtMessCh42 ( CVector mess ) { SendProtMessage ( 42, mess ); } - void OnSendProtMessCh43 ( CVector mess ) { SendProtMessage ( 43, mess ); } - void OnSendProtMessCh44 ( CVector mess ) { SendProtMessage ( 44, mess ); } - void OnSendProtMessCh45 ( CVector mess ) { SendProtMessage ( 45, mess ); } - void OnSendProtMessCh46 ( CVector mess ) { SendProtMessage ( 46, mess ); } - void OnSendProtMessCh47 ( CVector mess ) { SendProtMessage ( 47, mess ); } - void OnSendProtMessCh48 ( CVector mess ) { SendProtMessage ( 48, mess ); } - void OnSendProtMessCh49 ( CVector mess ) { SendProtMessage ( 49, mess ); } - - void OnReqConnClientsListCh0() { CreateAndSendChanListForThisChan ( 0 ); } - void OnReqConnClientsListCh1() { CreateAndSendChanListForThisChan ( 1 ); } - void OnReqConnClientsListCh2() { CreateAndSendChanListForThisChan ( 2 ); } - void OnReqConnClientsListCh3() { CreateAndSendChanListForThisChan ( 3 ); } - void OnReqConnClientsListCh4() { CreateAndSendChanListForThisChan ( 4 ); } - void OnReqConnClientsListCh5() { CreateAndSendChanListForThisChan ( 5 ); } - void OnReqConnClientsListCh6() { CreateAndSendChanListForThisChan ( 6 ); } - void OnReqConnClientsListCh7() { CreateAndSendChanListForThisChan ( 7 ); } - void OnReqConnClientsListCh8() { CreateAndSendChanListForThisChan ( 8 ); } - void OnReqConnClientsListCh9() { CreateAndSendChanListForThisChan ( 9 ); } - void OnReqConnClientsListCh10() { CreateAndSendChanListForThisChan ( 10 ); } - void OnReqConnClientsListCh11() { CreateAndSendChanListForThisChan ( 11 ); } - void OnReqConnClientsListCh12() { CreateAndSendChanListForThisChan ( 12 ); } - void OnReqConnClientsListCh13() { CreateAndSendChanListForThisChan ( 13 ); } - void OnReqConnClientsListCh14() { CreateAndSendChanListForThisChan ( 14 ); } - void OnReqConnClientsListCh15() { CreateAndSendChanListForThisChan ( 15 ); } - void OnReqConnClientsListCh16() { CreateAndSendChanListForThisChan ( 16 ); } - void OnReqConnClientsListCh17() { CreateAndSendChanListForThisChan ( 17 ); } - void OnReqConnClientsListCh18() { CreateAndSendChanListForThisChan ( 18 ); } - void OnReqConnClientsListCh19() { CreateAndSendChanListForThisChan ( 19 ); } - void OnReqConnClientsListCh20() { CreateAndSendChanListForThisChan ( 20 ); } - void OnReqConnClientsListCh21() { CreateAndSendChanListForThisChan ( 21 ); } - void OnReqConnClientsListCh22() { CreateAndSendChanListForThisChan ( 22 ); } - void OnReqConnClientsListCh23() { CreateAndSendChanListForThisChan ( 23 ); } - void OnReqConnClientsListCh24() { CreateAndSendChanListForThisChan ( 24 ); } - void OnReqConnClientsListCh25() { CreateAndSendChanListForThisChan ( 25 ); } - void OnReqConnClientsListCh26() { CreateAndSendChanListForThisChan ( 26 ); } - void OnReqConnClientsListCh27() { CreateAndSendChanListForThisChan ( 27 ); } - void OnReqConnClientsListCh28() { CreateAndSendChanListForThisChan ( 28 ); } - void OnReqConnClientsListCh29() { CreateAndSendChanListForThisChan ( 29 ); } - void OnReqConnClientsListCh30() { CreateAndSendChanListForThisChan ( 30 ); } - void OnReqConnClientsListCh31() { CreateAndSendChanListForThisChan ( 31 ); } - void OnReqConnClientsListCh32() { CreateAndSendChanListForThisChan ( 32 ); } - void OnReqConnClientsListCh33() { CreateAndSendChanListForThisChan ( 33 ); } - void OnReqConnClientsListCh34() { CreateAndSendChanListForThisChan ( 34 ); } - void OnReqConnClientsListCh35() { CreateAndSendChanListForThisChan ( 35 ); } - void OnReqConnClientsListCh36() { CreateAndSendChanListForThisChan ( 36 ); } - void OnReqConnClientsListCh37() { CreateAndSendChanListForThisChan ( 37 ); } - void OnReqConnClientsListCh38() { CreateAndSendChanListForThisChan ( 38 ); } - void OnReqConnClientsListCh39() { CreateAndSendChanListForThisChan ( 39 ); } - void OnReqConnClientsListCh40() { CreateAndSendChanListForThisChan ( 40 ); } - void OnReqConnClientsListCh41() { CreateAndSendChanListForThisChan ( 41 ); } - void OnReqConnClientsListCh42() { CreateAndSendChanListForThisChan ( 42 ); } - void OnReqConnClientsListCh43() { CreateAndSendChanListForThisChan ( 43 ); } - void OnReqConnClientsListCh44() { CreateAndSendChanListForThisChan ( 44 ); } - void OnReqConnClientsListCh45() { CreateAndSendChanListForThisChan ( 45 ); } - void OnReqConnClientsListCh46() { CreateAndSendChanListForThisChan ( 46 ); } - void OnReqConnClientsListCh47() { CreateAndSendChanListForThisChan ( 47 ); } - void OnReqConnClientsListCh48() { CreateAndSendChanListForThisChan ( 48 ); } - void OnReqConnClientsListCh49() { CreateAndSendChanListForThisChan ( 49 ); } - - void OnChanInfoHasChangedCh0() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh1() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh2() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh3() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh4() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh5() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh6() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh7() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh8() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh9() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh10() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh11() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh12() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh13() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh14() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh15() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh16() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh17() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh18() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh19() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh20() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh21() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh22() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh23() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh24() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh25() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh26() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh27() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh28() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh29() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh30() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh31() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh32() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh33() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh34() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh35() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh36() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh37() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh38() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh39() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh40() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh41() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh42() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh43() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh44() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh45() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh46() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh47() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh48() { CreateAndSendChanListForAllConChannels(); } - void OnChanInfoHasChangedCh49() { CreateAndSendChanListForAllConChannels(); } - - void OnChatTextReceivedCh0 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 0, strChatText ); } - void OnChatTextReceivedCh1 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 1, strChatText ); } - void OnChatTextReceivedCh2 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 2, strChatText ); } - void OnChatTextReceivedCh3 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 3, strChatText ); } - void OnChatTextReceivedCh4 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 4, strChatText ); } - void OnChatTextReceivedCh5 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 5, strChatText ); } - void OnChatTextReceivedCh6 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 6, strChatText ); } - void OnChatTextReceivedCh7 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 7, strChatText ); } - void OnChatTextReceivedCh8 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 8, strChatText ); } - void OnChatTextReceivedCh9 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 9, strChatText ); } - void OnChatTextReceivedCh10 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 10, strChatText ); } - void OnChatTextReceivedCh11 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 11, strChatText ); } - void OnChatTextReceivedCh12 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 12, strChatText ); } - void OnChatTextReceivedCh13 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 13, strChatText ); } - void OnChatTextReceivedCh14 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 14, strChatText ); } - void OnChatTextReceivedCh15 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 15, strChatText ); } - void OnChatTextReceivedCh16 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 16, strChatText ); } - void OnChatTextReceivedCh17 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 17, strChatText ); } - void OnChatTextReceivedCh18 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 18, strChatText ); } - void OnChatTextReceivedCh19 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 19, strChatText ); } - void OnChatTextReceivedCh20 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 20, strChatText ); } - void OnChatTextReceivedCh21 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 21, strChatText ); } - void OnChatTextReceivedCh22 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 22, strChatText ); } - void OnChatTextReceivedCh23 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 23, strChatText ); } - void OnChatTextReceivedCh24 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 24, strChatText ); } - void OnChatTextReceivedCh25 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 25, strChatText ); } - void OnChatTextReceivedCh26 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 26, strChatText ); } - void OnChatTextReceivedCh27 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 27, strChatText ); } - void OnChatTextReceivedCh28 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 28, strChatText ); } - void OnChatTextReceivedCh29 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 29, strChatText ); } - void OnChatTextReceivedCh30 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 30, strChatText ); } - void OnChatTextReceivedCh31 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 31, strChatText ); } - void OnChatTextReceivedCh32 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 32, strChatText ); } - void OnChatTextReceivedCh33 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 33, strChatText ); } - void OnChatTextReceivedCh34 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 34, strChatText ); } - void OnChatTextReceivedCh35 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 35, strChatText ); } - void OnChatTextReceivedCh36 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 36, strChatText ); } - void OnChatTextReceivedCh37 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 37, strChatText ); } - void OnChatTextReceivedCh38 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 38, strChatText ); } - void OnChatTextReceivedCh39 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 39, strChatText ); } - void OnChatTextReceivedCh40 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 40, strChatText ); } - void OnChatTextReceivedCh41 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 41, strChatText ); } - void OnChatTextReceivedCh42 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 42, strChatText ); } - void OnChatTextReceivedCh43 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 43, strChatText ); } - void OnChatTextReceivedCh44 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 44, strChatText ); } - void OnChatTextReceivedCh45 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 45, strChatText ); } - void OnChatTextReceivedCh46 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 46, strChatText ); } - void OnChatTextReceivedCh47 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 47, strChatText ); } - void OnChatTextReceivedCh48 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 48, strChatText ); } - void OnChatTextReceivedCh49 ( QString strChatText ) { CreateAndSendChatTextForAllConChannels ( 49, strChatText ); } - - void OnServerAutoSockBufSizeChangeCh0 ( int iNNumFra ) { vecChannels[0].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh1 ( int iNNumFra ) { vecChannels[1].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh2 ( int iNNumFra ) { vecChannels[2].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh3 ( int iNNumFra ) { vecChannels[3].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh4 ( int iNNumFra ) { vecChannels[4].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh5 ( int iNNumFra ) { vecChannels[5].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh6 ( int iNNumFra ) { vecChannels[6].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh7 ( int iNNumFra ) { vecChannels[7].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh8 ( int iNNumFra ) { vecChannels[8].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh9 ( int iNNumFra ) { vecChannels[9].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh10 ( int iNNumFra ) { vecChannels[10].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh11 ( int iNNumFra ) { vecChannels[11].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh12 ( int iNNumFra ) { vecChannels[12].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh13 ( int iNNumFra ) { vecChannels[13].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh14 ( int iNNumFra ) { vecChannels[14].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh15 ( int iNNumFra ) { vecChannels[15].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh16 ( int iNNumFra ) { vecChannels[16].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh17 ( int iNNumFra ) { vecChannels[17].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh18 ( int iNNumFra ) { vecChannels[18].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh19 ( int iNNumFra ) { vecChannels[19].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh20 ( int iNNumFra ) { vecChannels[20].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh21 ( int iNNumFra ) { vecChannels[21].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh22 ( int iNNumFra ) { vecChannels[22].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh23 ( int iNNumFra ) { vecChannels[23].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh24 ( int iNNumFra ) { vecChannels[24].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh25 ( int iNNumFra ) { vecChannels[25].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh26 ( int iNNumFra ) { vecChannels[26].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh27 ( int iNNumFra ) { vecChannels[27].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh28 ( int iNNumFra ) { vecChannels[28].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh29 ( int iNNumFra ) { vecChannels[29].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh30 ( int iNNumFra ) { vecChannels[30].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh31 ( int iNNumFra ) { vecChannels[31].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh32 ( int iNNumFra ) { vecChannels[32].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh33 ( int iNNumFra ) { vecChannels[33].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh34 ( int iNNumFra ) { vecChannels[34].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh35 ( int iNNumFra ) { vecChannels[35].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh36 ( int iNNumFra ) { vecChannels[36].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh37 ( int iNNumFra ) { vecChannels[37].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh38 ( int iNNumFra ) { vecChannels[38].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh39 ( int iNNumFra ) { vecChannels[39].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh40 ( int iNNumFra ) { vecChannels[40].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh41 ( int iNNumFra ) { vecChannels[41].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh42 ( int iNNumFra ) { vecChannels[42].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh43 ( int iNNumFra ) { vecChannels[43].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh44 ( int iNNumFra ) { vecChannels[44].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh45 ( int iNNumFra ) { vecChannels[45].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh46 ( int iNNumFra ) { vecChannels[46].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh47 ( int iNNumFra ) { vecChannels[47].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh48 ( int iNNumFra ) { vecChannels[48].CreateJitBufMes ( iNNumFra ); } - void OnServerAutoSockBufSizeChangeCh49 ( int iNNumFra ) { vecChannels[49].CreateJitBufMes ( iNNumFra ); } - -#endif + void OnHandledSignal ( int sigNum ); }; diff --git a/src/serverdlg.cpp b/src/serverdlg.cpp index 7df039ed..d2129481 100755 --- a/src/serverdlg.cpp +++ b/src/serverdlg.cpp @@ -188,9 +188,9 @@ lvwClients->setMinimumHeight ( 140 ); // central server address type combo box cbxCentServAddrType->clear(); - cbxCentServAddrType->addItem ( tr ( "Manual" ) ); // AT_MANUAL - cbxCentServAddrType->addItem ( tr ( "Default" ) ); // AT_DEFAULT - cbxCentServAddrType->addItem ( tr ( "Default (North America)" ) ); // AT_NORTH_AMERICA + cbxCentServAddrType->addItem ( csCentServAddrTypeToString ( AT_MANUAL ) ); + cbxCentServAddrType->addItem ( csCentServAddrTypeToString ( AT_DEFAULT ) ); + cbxCentServAddrType->addItem ( csCentServAddrTypeToString ( AT_GENERAL_NORTHAMERICA ) ); cbxCentServAddrType->setCurrentIndex ( static_cast ( pServer->GetCentralServerAddressType() ) ); // update server name line edit @@ -522,7 +522,7 @@ void CServerDlg::UpdateGUIDependencies() { // if the default central server is used, just show a text of the // server name - edtCentralServerAddress->setText ( DEFAULT_SERVER_NAME ); + edtCentralServerAddress->setText ( tr ( "Predefined Address" ) ); } else { diff --git a/src/settings.cpp b/src/settings.cpp index 5a47a5aa..0655ed39 100755 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -299,7 +299,7 @@ void CSettings::Load() // central server address type if ( GetNumericIniSet ( IniXMLDocument, "client", "centservaddrtype", - 0, 2 /* AT_NORTH_AMERICA */, iValue ) ) + 0, 2 /* AT_GENERAL_NORTHAMERICA */, iValue ) ) { pClient->SetCentralServerAddressType ( static_cast ( iValue ) ); } @@ -370,7 +370,7 @@ if ( GetFlagIniSet ( IniXMLDocument, "client", "defcentservaddr", bValue ) ) // central server address type (note that it is important // to set this setting prior to the "central server address") if ( GetNumericIniSet ( IniXMLDocument, "server", "centservaddrtype", - 0, 2 /* AT_NORTH_AMERICA */, iValue ) ) + 0, 2 /* AT_GENERAL_NORTHAMERICA */, iValue ) ) { pServer->SetCentralServerAddressType ( static_cast ( iValue ) ); } diff --git a/src/signalhandler.cpp b/src/signalhandler.cpp index 4c37d018..d0205c9e 100755 --- a/src/signalhandler.cpp +++ b/src/signalhandler.cpp @@ -75,7 +75,7 @@ CSignalHandler* CSignalHandler::getSingletonP() { return singleton; } bool CSignalHandler::emitSignal ( int sigNum ) { - return QMetaObject::invokeMethod( singleton, "ShutdownSignal", Qt::QueuedConnection, Q_ARG( int, sigNum ) ); + return QMetaObject::invokeMethod( singleton, "HandledSignal", Qt::QueuedConnection, Q_ARG( int, sigNum ) ); } #ifndef _WIN32 @@ -124,11 +124,11 @@ QReadWriteLock* CSignalWin::getLock() const return &lock; } -BOOL WINAPI CSignalWin::signalHandler ( _In_ DWORD sigNum ) +BOOL WINAPI CSignalWin::signalHandler ( _In_ DWORD ) { auto self = getSelf(); QReadLocker lock ( self->getLock() ); - return self->pSignalHandler->emitSignal ( static_cast( sigNum ) ); + return self->pSignalHandler->emitSignal ( -1 ); } #else @@ -145,12 +145,14 @@ CSignalUnix::CSignalUnix ( CSignalHandler* nPSignalHandler ) : socketNotifier->setEnabled ( true ); + setSignalHandled ( SIGUSR1, true ); setSignalHandled ( SIGINT, true ); setSignalHandled ( SIGTERM, true ); } } CSignalUnix::~CSignalUnix() { + setSignalHandled ( SIGUSR1, false ); setSignalHandled ( SIGINT, false ); setSignalHandled ( SIGTERM, false ); } diff --git a/src/signalhandler.h b/src/signalhandler.h index 1263ee6a..59409d13 100755 --- a/src/signalhandler.h +++ b/src/signalhandler.h @@ -104,7 +104,7 @@ public slots: #endif signals: - void ShutdownSignal ( int sigNum ); + void HandledSignal ( int sigNum ); private: QScopedPointer pSignalBase; @@ -153,7 +153,7 @@ public: private: mutable QReadWriteLock lock; - static BOOL WINAPI signalHandler ( _In_ DWORD sigNum ); + static BOOL WINAPI signalHandler ( _In_ DWORD ); }; #else diff --git a/src/util.cpp b/src/util.cpp index 44ceb1fd..825919a6 100755 --- a/src/util.cpp +++ b/src/util.cpp @@ -399,17 +399,22 @@ CAboutDlg::CAboutDlg ( QWidget* parent ) : QDialog ( parent ) "

Jos van den Oever (vandenoever)

" "

Tormod Volden (tormodvolden)

" "

Stanislas Michalak (stanislas-m)

" + "

JP Cimalando (jpcima)

" "
" + tr ( "For details on the contributions check out the " ) + "" + tr ( "Github Contributors list" ) + "." ); // translators txvTranslation->setText ( - "

Spanish

" + "

" + tr ( "Spanish" ) + "

" "

Daryl Hanlon (ignotus666)

" - "

French

" + "

" + tr ( "French" ) + "

" "

Olivier Humbert (trebmuh)

" - "

Portuguese

" - "

Miguel de Matos (Snayler)

" ); + "

" + tr ( "Portuguese" ) + "

" + "

Miguel de Matos (Snayler)

" + "

" + tr ( "Dutch" ) + "

" + "

Jeroen Geertzen (jerogee)

" + "

" + tr ( "German" ) + "

" + "

Volker Fischer (corrados)

" ); // set version number in about dialog lblVersion->setText ( GetVersionAndNameStr() ); @@ -859,7 +864,7 @@ bool NetworkUtil::ParseNetworkAddress ( QString strAddress, CHostAddress& HostAddress ) { QHostAddress InetAddr; - quint16 iNetPort = LLCON_DEFAULT_PORT_NUMBER; + quint16 iNetPort = DEFAULT_PORT_NUMBER; // init requested host address with invalid address first HostAddress = CHostAddress(); @@ -945,9 +950,9 @@ QString NetworkUtil::GetCentralServerAddress ( const ECSAddType eCentralServerAd { switch ( eCentralServerAddressType ) { - case AT_MANUAL: return strCentralServerAddress; - case AT_NORTH_AMERICA: return QString ( "%1:%2" ).arg ( DEFAULT_SERVER_ADDRESS ).arg ( LLCON_PORT_NUMBER_NORTHAMERICA ); - default: return DEFAULT_SERVER_ADDRESS; // AT_DEFAULT + case AT_MANUAL: return strCentralServerAddress; + case AT_GENERAL_NORTHAMERICA: return CENTSERV_GENERAL_NORTHAMERICA; + default: return DEFAULT_SERVER_ADDRESS; // AT_DEFAULT } } @@ -1323,7 +1328,7 @@ ECSAddType CLocale::GetCentralServerAddressType ( const QLocale::Country eCountr case QLocale::Canada: case QLocale::Mexico: case QLocale::Greenland: - return AT_NORTH_AMERICA; + return AT_GENERAL_NORTHAMERICA; default: return AT_DEFAULT; diff --git a/src/util.h b/src/util.h index 3c688f59..09840f7e 100755 --- a/src/util.h +++ b/src/util.h @@ -39,9 +39,7 @@ #include #include #include -#if QT_VERSION >= QT_VERSION_CHECK(4, 7, 0) -# include -#endif +#include #include #include #include "global.h" @@ -567,11 +565,27 @@ enum ELicenceType // Central server address type ------------------------------------------------- enum ECSAddType { + // used for settings -> enum values must be fixed! AT_MANUAL = 0, - AT_DEFAULT = 1, // Europe and others - AT_NORTH_AMERICA = 2 + AT_DEFAULT = 1, + AT_GENERAL_NORTHAMERICA = 2 }; +inline QString csCentServAddrTypeToString ( ECSAddType eAddrType ) +{ + switch ( eAddrType ) + { + case AT_MANUAL: + return QCoreApplication::translate ( "CClientSettingsDlg", "Manual" ); + + case AT_GENERAL_NORTHAMERICA: + return QCoreApplication::translate ( "CClientSettingsDlg", "Default (North America)" ); + + default: // AT_DEFAULT + return QCoreApplication::translate ( "CClientSettingsDlg", "Default" ); + } +} + // Slave server registration state --------------------------------------------- enum ESvrRegStatus @@ -1217,7 +1231,6 @@ public: // Timing measurement ---------------------------------------------------------- // intended for debugging the timing jitter of the sound card or server timer -#if QT_VERSION >= QT_VERSION_CHECK(4, 7, 0) class CTimingMeas { public: @@ -1269,7 +1282,6 @@ protected: QElapsedTimer ElapsedTimer; int iCnt; }; -#endif /******************************************************************************\