Merge remote-tracking branch 'upstream/master' into panning

This commit is contained in:
Tarmo Johannes 2020-05-16 20:39:16 +03:00
commit 2f200f5b12
43 changed files with 3460 additions and 1309 deletions

View File

@ -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)

View File

@ -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

View File

@ -1,5 +1,5 @@
<?xml version="1.0"?>
<manifest package="org.qtproject.jamulus" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.0" android:versionCode="1" android:installLocation="auto">
<manifest package="com.github.corrados.jamulus" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="-- %%INSERT_VERSION_NAME%% --" android:versionCode="-- %%INSERT_VERSION_CODE%% --" android:installLocation="auto">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28"/>
<!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application.
@ -18,9 +18,8 @@
<supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/>
<application android:hardwareAccelerated="true" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:label="Jamulus" android:extractNativeLibs="true">
<activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density" android:name="org.qtproject.qt5.android.bindings.QtActivity" android:label="@string/app_name" android:screenOrientation="landscape" android:launchMode="singleTop">
<application android:hardwareAccelerated="true" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:label="-- %%INSERT_APP_NAME%% --" android:extractNativeLibs="true" android:icon="@drawable/icon">
<activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density" android:name="org.qtproject.qt5.android.bindings.QtActivity" android:label="-- %%INSERT_APP_NAME%% --" android:screenOrientation="landscape" android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
@ -30,7 +29,7 @@
<!-- meta-data android:name="android.app.arguments" android:value="arg1 arg2 arg3"/ -->
<!-- Application arguments -->
<meta-data android:name="android.app.lib_name" android:value="Jamulus"/>
<meta-data android:name="android.app.lib_name" android:value="-- %%INSERT_APP_LIB_NAME%% --"/>
<meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/>
<meta-data android:name="android.app.repository" android:value="default"/>
<meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/>

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -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

View File

@ -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<int>( vecpChanFader.size() ); i++) {
// QObject::connect ( vecpChanFader[i], SIGNAL ( panValueChanged ( double ) ),
// this, SLOT ( OnPanValueChanged ( double ) ) );
// }
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
connectFaderSignalsToMixerBoardSlots<MAX_NUM_CHANNELS>();
@ -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<unsigned int slotId>
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<CChannelInfo>& 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

View File

@ -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<unsigned int slotId>
class CAudioMixerBoardSlots : public CAudioMixerBoardSlots<slotId - 1>
{
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<unsigned int slotId>
class CAudioMixerBoardSlots {};
#endif
class CAudioMixerBoard :
public QScrollArea,
public CAudioMixerBoardSlots<MAX_NUM_CHANNELS>

View File

@ -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 ) );
}

View File

@ -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" );
}
}

View File

@ -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<int> ( 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<int> ( 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
{

View File

@ -102,6 +102,7 @@ protected:
void OnAudioChannelsActivated ( int iChanIdx );
void OnAudioQualityActivated ( int iQualityIdx );
void OnCentServAddrTypeActivated ( int iTypeIdx );
void OnCentralServerAddressTypeChanged() { UpdateCentralServerDependency(); }
void OnDriverSetupClicked();
signals:

View File

@ -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 ( "<b>" + tr ( "Filter" ) + ":</b> " + 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<int> ( 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 ) );

View File

@ -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<QString>& 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<ECSAddType> ( iTypeIdx ) ); }
void OnFilterTextEdited ( const QString& ) { UpdateListFilter(); }
void OnExpandAllStateChanged ( int value ) { ShowAllMusicians ( value == Qt::Checked ); }
void OnConnectClicked();

View File

@ -29,6 +29,16 @@
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="lblList">
<property name="text">
<string>List</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="cbxCentServAddrType"/>
</item>
<item>
<widget class="QLabel" name="lblFilter">
<property name="text">

View File

@ -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 ( \
"<br><div align=right><font size=-1><i>" \
"For more information use the ""What's " \
"This"" help (? menu, right mouse button or Shift+F1)" \
"</i></font></div>" )
#define TOOLTIP_COM_END_TEXT \
"<br><div align=right><font size=-1><i>" + \
QCoreApplication::translate ( "global","For more information use the ""What's " \
"This"" help (help menu, right mouse button or Shift+F1)" ) + \
"</i></font></div>"
#define _MAXSHORT 32767
#define _MAXBYTE 255 // binary: 11111111

View File

@ -27,6 +27,7 @@
#include <QDir>
#include <QTextStream>
#include <QTranslator>
#include <QLibraryInfo>
#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

View File

@ -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

View File

@ -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<CVector<int16_t>>();
qRegisterMetaType<CVector<int16_t>> ( "CVector<int16_t>" );
QObject::connect( (const QObject *)server, SIGNAL ( AudioFrame( const int, const QString, const CHostAddress, const int, const CVector<int16_t> ) ),
this, SLOT( OnFrame (const int, const QString, const CHostAddress, const int, const CVector<int16_t> ) ),
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 );

View File

@ -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<int16_t> data );
private:
QDir recordBaseDir;
bool isRecording;
CJamSession* currentSession;
int iServerFrameSizeSamples;
QThread* thisThread;
};
}

View File

@ -26,7 +26,7 @@
<message>
<location filename="../../util.cpp" line="357"/>
<source> client, mixes the audio data and sends the mix back to each client.</source>
<translation> Teilnehmern sammelt, zusammen mischt und wieder an alle verbundenen Teilnehmer zurück schickt.</translation>
<translation> Musikern sammelt, zusammen mischt und wieder an alle verbundenen Musikern zurück schickt.</translation>
</message>
<message>
<location filename="../../util.cpp" line="375"/>
@ -54,32 +54,57 @@
<translation>Die Bilder der Länderflaggen sind von Mark James</translation>
</message>
<message>
<location filename="../../util.cpp" line="402"/>
<location filename="../../util.cpp" line="403"/>
<source>For details on the contributions check out the </source>
<translation>Die Details über die Codebeiträge findet man in der </translation>
</message>
<message>
<location filename="../../util.cpp" line="403"/>
<location filename="../../util.cpp" line="404"/>
<source>Github Contributors list</source>
<translation>Github Liste der Mitwirkenden</translation>
</message>
<message>
<location filename="../../util.cpp" line="418"/>
<location filename="../../util.cpp" line="408"/>
<source>Spanish</source>
<translation>Spanisch</translation>
</message>
<message>
<location filename="../../util.cpp" line="410"/>
<source>French</source>
<translation>Französisch</translation>
</message>
<message>
<location filename="../../util.cpp" line="412"/>
<source>Portuguese</source>
<translation>Portugiesisch</translation>
</message>
<message>
<location filename="../../util.cpp" line="414"/>
<source>Dutch</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../util.cpp" line="416"/>
<source>German</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../util.cpp" line="423"/>
<source>About </source>
<translation>Über </translation>
</message>
<message>
<location filename="../../util.cpp" line="435"/>
<location filename="../../util.cpp" line="440"/>
<source>, Version </source>
<translation></translation>
</message>
<message>
<location filename="../../util.cpp" line="448"/>
<location filename="../../util.cpp" line="453"/>
<source>Internet Jam Session Software</source>
<translation></translation>
</message>
<message>
<location filename="../../util.cpp" line="452"/>
<location filename="../../util.cpp" line="457"/>
<source>Under the GNU General Public License (GPL)</source>
<translation>Unter der GNU General Public License (GPL)</translation>
</message>
@ -143,12 +168,12 @@
<context>
<name>CAudioMixerBoard</name>
<message>
<location filename="../../audiomixerboard.cpp" line="707"/>
<location filename="../../audiomixerboard.cpp" line="594"/>
<source>Server</source>
<translation></translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="716"/>
<location filename="../../audiomixerboard.cpp" line="603"/>
<source>T R Y I N G T O C O N N E C T</source>
<translation>V E R B I N D U N G S A U F B A U</translation>
</message>
@ -163,12 +188,12 @@
<message>
<location filename="../../audiomixerboard.cpp" line="111"/>
<source>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.</source>
<translation>Zeigt den Audiopegel vor dem Lautstärkeregler des Kanals. Allen verbundenen Teilnehmern am Server wird ein Audiopegel zugewiesen.</translation>
<translation>Zeigt den Audiopegel vor dem Lautstärkeregler des Kanals. Allen verbundenen Musikern am Server wird ein Audiopegel zugewiesen.</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="113"/>
<source>Input level of the current audio channel at the server</source>
<translation>Eingangspegel des aktuellen Teilnehmerkanals am Server</translation>
<translation>Eingangspegel des aktuellen Musikers am Server</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="116"/>
@ -178,7 +203,7 @@
<message>
<location filename="../../audiomixerboard.cpp" line="116"/>
<source>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.</source>
<translation>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.</translation>
<translation>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.</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="119"/>
@ -241,44 +266,44 @@
<translation></translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="442"/>
<location filename="../../audiomixerboard.cpp" line="440"/>
<source>Alias/Name</source>
<translation></translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="448"/>
<location filename="../../audiomixerboard.cpp" line="446"/>
<source>Instrument</source>
<translation></translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="456"/>
<location filename="../../audiomixerboard.cpp" line="454"/>
<source>Location</source>
<translation>Standort</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="478"/>
<location filename="../../audiomixerboard.cpp" line="482"/>
<location filename="../../audiomixerboard.cpp" line="486"/>
<location filename="../../audiomixerboard.cpp" line="476"/>
<location filename="../../audiomixerboard.cpp" line="480"/>
<location filename="../../audiomixerboard.cpp" line="484"/>
<source>Skill Level</source>
<translation>Spielstärke</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="478"/>
<location filename="../../audiomixerboard.cpp" line="476"/>
<source>Beginner</source>
<translation>Anfänger</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="482"/>
<location filename="../../audiomixerboard.cpp" line="480"/>
<source>Intermediate</source>
<translation>Mittlere Spielstärke</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="486"/>
<location filename="../../audiomixerboard.cpp" line="484"/>
<source>Expert</source>
<translation>Experte</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="497"/>
<location filename="../../audiomixerboard.cpp" line="495"/>
<source>Musician Profile</source>
<translation>Profil des Musikers</translation>
</message>
@ -322,7 +347,7 @@
<message>
<location filename="../../chatdlg.cpp" line="43"/>
<source>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.</source>
<translation>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.</translation>
<translation>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.</translation>
</message>
<message>
<location filename="../../chatdlg.cpp" line="48"/>
@ -383,7 +408,7 @@
<message>
<location filename="../../clientdlg.cpp" line="64"/>
<source> software, you should not hear your singing/instrument in the loudspeaker or your headphone when the </source>
<translation> Software optimal zu nutzen, sollte man sein eigenes Instrument oder Gesant nicht im Lautsprecher oder Kopfhörer hören, wenn die </translation>
<translation> Software optimal zu nutzen, sollte man sein eigenes Instrument oder Gesang nicht im Lautsprecher oder Kopfhörer hören, wenn die </translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="67"/>
@ -468,7 +493,7 @@
</message>
<message>
<location filename="../../clientdlg.cpp" line="204"/>
<location filename="../../clientdlg.cpp" line="1085"/>
<location filename="../../clientdlg.cpp" line="1075"/>
<source>C&amp;onnect</source>
<translation>&amp;Verbinden</translation>
</message>
@ -480,7 +505,7 @@
<message>
<location filename="../../clientdlg.cpp" line="258"/>
<source>&amp;Connection Setup...</source>
<translation>&amp;Konfiguration der Verbindung...</translation>
<translation>&amp;Verbinden...</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="261"/>
@ -609,17 +634,22 @@
<translation>Die CPU des Computers ist voll ausgelastet.</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="819"/>
<location filename="../../clientdlg.cpp" line="703"/>
<source>Central Server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="809"/>
<source>user</source>
<translation>Teilnehmer</translation>
<translation>Musiker</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="824"/>
<location filename="../../clientdlg.cpp" line="814"/>
<source>users</source>
<translation>Teilnehmer</translation>
<translation>Musiker</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="1061"/>
<location filename="../../clientdlg.cpp" line="1051"/>
<source>D&amp;isconnect</source>
<translation>&amp;Trennen</translation>
</message>
@ -727,7 +757,7 @@
<message>
<location filename="../../clientsettingsdlg.cpp" line="56"/>
<source>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.</source>
<translation>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).</translation>
<translation>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).</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="72"/>
@ -977,7 +1007,7 @@
<message>
<location filename="../../clientsettingsdlg.cpp" line="200"/>
<source>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.</source>
<translation>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.</translation>
<translation>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.</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="209"/>
@ -1110,17 +1140,17 @@
<translation>Hoch</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="349"/>
<location filename="../../util.h" line="579"/>
<source>Manual</source>
<translation>Manuell</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="350"/>
<location filename="../../util.h" line="585"/>
<source>Default</source>
<translation>Standard</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="351"/>
<location filename="../../util.h" line="582"/>
<source>Default (North America)</source>
<translation>Standard (Nordamerika)</translation>
</message>
@ -1145,6 +1175,11 @@
<source>Buffer Delay: </source>
<translation>Puffergröße: </translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="593"/>
<source>Predefined Address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="633"/>
<source>The selected audio device could not be used because of the following error: </source>
@ -1181,7 +1216,7 @@
<message>
<location filename="../../clientsettingsdlgbase.ui" line="83"/>
<source>Input Channel Mapping</source>
<translation>Eingangskanalzuweisung</translation>
<translation>Eingangskanalauswahl</translation>
</message>
<message>
<location filename="../../clientsettingsdlgbase.ui" line="103"/>
@ -1198,7 +1233,7 @@
<message>
<location filename="../../clientsettingsdlgbase.ui" line="140"/>
<source>Output Channel Mapping</source>
<translation>Ausgangskanalzuweisung</translation>
<translation>Ausgangskanalauswahl</translation>
</message>
<message>
<location filename="../../clientsettingsdlgbase.ui" line="213"/>
@ -1378,7 +1413,7 @@
</message>
<message>
<location filename="../../connectdlg.cpp" line="78"/>
<source>The server list is filered by the given text. Note that the filter is case insensitive.</source>
<source>The server list is filtered by the given text. Note that the filter is case insensitive.</source>
<translation>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.</translation>
</message>
<message>
@ -1389,7 +1424,7 @@
<message>
<location filename="../../connectdlg.cpp" line="83"/>
<source>Show All Musicians</source>
<translation>Zeige alle Teilnehmer</translation>
<translation>Zeige alle Musiker</translation>
</message>
<message>
<location filename="../../connectdlg.cpp" line="83"/>
@ -1399,7 +1434,7 @@
<message>
<location filename="../../connectdlg.cpp" line="86"/>
<source>Show all musicians check box</source>
<translation>Zeige alle Teilnehmer Schalter</translation>
<translation>Zeige alle Musiker Schalter</translation>
</message>
</context>
<context>
@ -1417,7 +1452,7 @@
<message>
<location filename="../../connectdlgbase.ui" line="45"/>
<source>Show All Musicians</source>
<translation>Zeige alle Teilnehmer</translation>
<translation>Zeige alle Musiker</translation>
</message>
<message>
<location filename="../../connectdlgbase.ui" line="61"/>
@ -1432,7 +1467,7 @@
<message>
<location filename="../../connectdlgbase.ui" line="71"/>
<source>Musicians</source>
<translation>Teilnehmer</translation>
<translation>Musiker</translation>
</message>
<message>
<location filename="../../connectdlgbase.ui" line="76"/>
@ -1458,28 +1493,28 @@
<context>
<name>CHelpMenu</name>
<message>
<location filename="../../util.cpp" line="835"/>
<location filename="../../util.cpp" line="840"/>
<source>&amp;Help</source>
<translation>&amp;Hilfe</translation>
</message>
<message>
<location filename="../../util.cpp" line="840"/>
<location filename="../../util.cpp" line="845"/>
<location filename="../../util.cpp" line="850"/>
<source>Getting &amp;Started...</source>
<translation>&amp;Erste Schritte...</translation>
</message>
<message>
<location filename="../../util.cpp" line="841"/>
<location filename="../../util.cpp" line="846"/>
<source>Software &amp;Manual...</source>
<translation>Software&amp;handbuch...</translation>
</message>
<message>
<location filename="../../util.cpp" line="848"/>
<location filename="../../util.cpp" line="853"/>
<source>What&apos;s &amp;This</source>
<translation>Konte&amp;xthilfe</translation>
</message>
<message>
<location filename="../../util.cpp" line="850"/>
<location filename="../../util.cpp" line="855"/>
<source>&amp;About...</source>
<translation>Ü&amp;ber...</translation>
</message>
@ -1487,102 +1522,102 @@
<context>
<name>CLicenceDlg</name>
<message>
<location filename="../../util.cpp" line="474"/>
<location filename="../../util.cpp" line="479"/>
<source>I &amp;agree to the above licence terms</source>
<translation>Ich &amp;stimme den Lizenzbedingungen zu</translation>
</message>
<message>
<location filename="../../util.cpp" line="475"/>
<location filename="../../util.cpp" line="480"/>
<source>Accept</source>
<translation>Einwilligen</translation>
</message>
<message>
<location filename="../../util.cpp" line="476"/>
<location filename="../../util.cpp" line="481"/>
<source>Decline</source>
<translation>Ablehnen</translation>
</message>
<message>
<location filename="../../util.cpp" line="492"/>
<location filename="../../util.cpp" line="497"/>
<source>By connecting to this server and agreeing to this notice, you agree to the following:</source>
<translation>Durch das Verbinden mit diesem Server und das Akzeptieren des Lizenztextes willigst du folgenden Bedingungen ein:</translation>
</message>
<message>
<location filename="../../util.cpp" line="494"/>
<location filename="../../util.cpp" line="499"/>
<source>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 </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../util.cpp" line="502"/>
<location filename="../../util.cpp" line="507"/>
<source>You are free to:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../util.cpp" line="504"/>
<location filename="../../util.cpp" line="509"/>
<source>Share</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../util.cpp" line="505"/>
<location filename="../../util.cpp" line="510"/>
<source>copy and redistribute the material in any medium or format</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../util.cpp" line="506"/>
<location filename="../../util.cpp" line="511"/>
<source>Adapt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../util.cpp" line="507"/>
<location filename="../../util.cpp" line="512"/>
<source>remix, transform, and build upon the material</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../util.cpp" line="508"/>
<location filename="../../util.cpp" line="513"/>
<source>The licensor cannot revoke these freedoms as long as you follow the license terms.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../util.cpp" line="510"/>
<location filename="../../util.cpp" line="515"/>
<source>Under the following terms:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../util.cpp" line="512"/>
<location filename="../../util.cpp" line="517"/>
<source>Attribution</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../util.cpp" line="513"/>
<location filename="../../util.cpp" line="518"/>
<source>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.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../util.cpp" line="516"/>
<location filename="../../util.cpp" line="521"/>
<source>NonCommercial</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../util.cpp" line="517"/>
<location filename="../../util.cpp" line="522"/>
<source>You may not use the material for commercial purposes.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../util.cpp" line="518"/>
<location filename="../../util.cpp" line="523"/>
<source>ShareAlike</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../util.cpp" line="519"/>
<location filename="../../util.cpp" line="524"/>
<source>If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../util.cpp" line="521"/>
<location filename="../../util.cpp" line="526"/>
<source>No additional restrictions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../util.cpp" line="522"/>
<location filename="../../util.cpp" line="527"/>
<source>You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.</source>
<translation type="unfinished"></translation>
</message>
@ -1590,270 +1625,270 @@
<context>
<name>CMusProfDlg</name>
<message>
<location filename="../../util.cpp" line="706"/>
<location filename="../../util.cpp" line="711"/>
<source> 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.</source>
<translation>-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.</translation>
<translation>-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.</translation>
</message>
<message>
<location filename="../../util.cpp" line="711"/>
<location filename="../../util.cpp" line="716"/>
<source>Alias or name edit box</source>
<translation>Alias oder Name Eingabefeld</translation>
</message>
<message>
<location filename="../../util.cpp" line="713"/>
<location filename="../../util.cpp" line="718"/>
<source>Instrument picture button</source>
<translation>Instrumentenbild Knopf</translation>
</message>
<message>
<location filename="../../util.cpp" line="715"/>
<location filename="../../util.cpp" line="720"/>
<source>Country flag button</source>
<translation>Landesflagge Knopf</translation>
</message>
<message>
<location filename="../../util.cpp" line="717"/>
<location filename="../../util.cpp" line="722"/>
<source>City edit box</source>
<translation>Stadt Eingabefeld</translation>
</message>
<message>
<location filename="../../util.cpp" line="719"/>
<location filename="../../util.cpp" line="724"/>
<source>Skill level combo box</source>
<translation>Fähigkeit Auswahlbox</translation>
</message>
<message>
<location filename="../../util.cpp" line="664"/>
<location filename="../../util.cpp" line="676"/>
<location filename="../../util.cpp" line="968"/>
<location filename="../../util.cpp" line="669"/>
<location filename="../../util.cpp" line="681"/>
<location filename="../../util.cpp" line="973"/>
<source>None</source>
<translation>Kein</translation>
</message>
<message>
<location filename="../../util.cpp" line="551"/>
<location filename="../../util.cpp" line="699"/>
<location filename="../../util.cpp" line="556"/>
<location filename="../../util.cpp" line="704"/>
<source>Musician Profile</source>
<translation>Musikerprofil</translation>
</message>
<message>
<location filename="../../util.cpp" line="556"/>
<location filename="../../util.cpp" line="561"/>
<source>Alias/Name</source>
<translation></translation>
</message>
<message>
<location filename="../../util.cpp" line="558"/>
<location filename="../../util.cpp" line="563"/>
<source>Instrument</source>
<translation></translation>
</message>
<message>
<location filename="../../util.cpp" line="560"/>
<location filename="../../util.cpp" line="565"/>
<source>Country</source>
<translation>Land</translation>
</message>
<message>
<location filename="../../util.cpp" line="562"/>
<location filename="../../util.cpp" line="567"/>
<source>City</source>
<translation>Stadt</translation>
</message>
<message>
<location filename="../../util.cpp" line="564"/>
<location filename="../../util.cpp" line="569"/>
<source>Skill</source>
<translation>Können</translation>
</message>
<message>
<location filename="../../util.cpp" line="566"/>
<location filename="../../util.cpp" line="571"/>
<source>&amp;Close</source>
<translation>&amp;Schließen</translation>
</message>
<message>
<location filename="../../util.cpp" line="682"/>
<location filename="../../util.cpp" line="687"/>
<source>Beginner</source>
<translation>Anfänger</translation>
</message>
<message>
<location filename="../../util.cpp" line="688"/>
<location filename="../../util.cpp" line="693"/>
<source>Intermediate</source>
<translation>Mittlere Spielstärke</translation>
</message>
<message>
<location filename="../../util.cpp" line="694"/>
<location filename="../../util.cpp" line="699"/>
<source>Expert</source>
<translation>Experte</translation>
</message>
<message>
<location filename="../../util.cpp" line="699"/>
<location filename="../../util.cpp" line="704"/>
<source>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.</source>
<translation>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.</translation>
</message>
<message>
<location filename="../../util.cpp" line="704"/>
<location filename="../../util.cpp" line="709"/>
<source>What you set here will appear at your fader on the mixer board when you are connected to a </source>
<translation>Was man hier sieht wird auch am Fader im Mixer angezeigt, wenn du mit einem </translation>
</message>
<message>
<location filename="../../util.cpp" line="969"/>
<location filename="../../util.cpp" line="974"/>
<source>Drum Set</source>
<translation>Schlagzeug</translation>
</message>
<message>
<location filename="../../util.cpp" line="970"/>
<location filename="../../util.cpp" line="975"/>
<source>Djembe</source>
<translation>Djembe</translation>
</message>
<message>
<location filename="../../util.cpp" line="971"/>
<location filename="../../util.cpp" line="976"/>
<source>Electric Guitar</source>
<translation>E-Gitarre</translation>
</message>
<message>
<location filename="../../util.cpp" line="972"/>
<location filename="../../util.cpp" line="977"/>
<source>Acoustic Guitar</source>
<translation>Akustikgitarre</translation>
</message>
<message>
<location filename="../../util.cpp" line="973"/>
<location filename="../../util.cpp" line="978"/>
<source>Bass Guitar</source>
<translation>E-Bass</translation>
</message>
<message>
<location filename="../../util.cpp" line="974"/>
<location filename="../../util.cpp" line="979"/>
<source>Keyboard</source>
<translation>Keyboard</translation>
</message>
<message>
<location filename="../../util.cpp" line="975"/>
<location filename="../../util.cpp" line="980"/>
<source>Synthesizer</source>
<translation>Synthesizer</translation>
</message>
<message>
<location filename="../../util.cpp" line="976"/>
<location filename="../../util.cpp" line="981"/>
<source>Grand Piano</source>
<translation>Flügel</translation>
</message>
<message>
<location filename="../../util.cpp" line="977"/>
<location filename="../../util.cpp" line="982"/>
<source>Accordion</source>
<translation>Akkordeon</translation>
</message>
<message>
<location filename="../../util.cpp" line="978"/>
<location filename="../../util.cpp" line="983"/>
<source>Vocal</source>
<translation>Gesang</translation>
</message>
<message>
<location filename="../../util.cpp" line="979"/>
<location filename="../../util.cpp" line="984"/>
<source>Microphone</source>
<translation>Mikrofon</translation>
</message>
<message>
<location filename="../../util.cpp" line="980"/>
<location filename="../../util.cpp" line="985"/>
<source>Harmonica</source>
<translation>Mundharmonika</translation>
</message>
<message>
<location filename="../../util.cpp" line="981"/>
<location filename="../../util.cpp" line="986"/>
<source>Trumpet</source>
<translation>Trompete</translation>
</message>
<message>
<location filename="../../util.cpp" line="982"/>
<location filename="../../util.cpp" line="987"/>
<source>Trombone</source>
<translation>Posaune</translation>
</message>
<message>
<location filename="../../util.cpp" line="983"/>
<location filename="../../util.cpp" line="988"/>
<source>French Horn</source>
<translation>Waldhorn</translation>
</message>
<message>
<location filename="../../util.cpp" line="984"/>
<location filename="../../util.cpp" line="989"/>
<source>Tuba</source>
<translation>Tuba</translation>
</message>
<message>
<location filename="../../util.cpp" line="985"/>
<location filename="../../util.cpp" line="990"/>
<source>Saxophone</source>
<translation>Saxophon</translation>
</message>
<message>
<location filename="../../util.cpp" line="986"/>
<location filename="../../util.cpp" line="991"/>
<source>Clarinet</source>
<translation>Klarinette</translation>
</message>
<message>
<location filename="../../util.cpp" line="987"/>
<location filename="../../util.cpp" line="992"/>
<source>Flute</source>
<translation>Flöte</translation>
</message>
<message>
<location filename="../../util.cpp" line="988"/>
<location filename="../../util.cpp" line="993"/>
<source>Violin</source>
<translation>Violine</translation>
</message>
<message>
<location filename="../../util.cpp" line="989"/>
<location filename="../../util.cpp" line="994"/>
<source>Cello</source>
<translation>Cello</translation>
</message>
<message>
<location filename="../../util.cpp" line="990"/>
<location filename="../../util.cpp" line="995"/>
<source>Double Bass</source>
<translation>Kontrabass</translation>
</message>
<message>
<location filename="../../util.cpp" line="991"/>
<location filename="../../util.cpp" line="996"/>
<source>Recorder</source>
<translation>Recorder</translation>
</message>
<message>
<location filename="../../util.cpp" line="992"/>
<location filename="../../util.cpp" line="997"/>
<source>Streamer</source>
<translation></translation>
</message>
<message>
<location filename="../../util.cpp" line="993"/>
<location filename="../../util.cpp" line="998"/>
<source>Listener</source>
<translation>Zuhörer</translation>
</message>
<message>
<location filename="../../util.cpp" line="994"/>
<location filename="../../util.cpp" line="999"/>
<source>Guitar+Vocal</source>
<translation>Gitarre+Gesang</translation>
</message>
<message>
<location filename="../../util.cpp" line="995"/>
<location filename="../../util.cpp" line="1000"/>
<source>Keyboard+Vocal</source>
<translation>Keyboard+Gesang</translation>
</message>
<message>
<location filename="../../util.cpp" line="996"/>
<location filename="../../util.cpp" line="1001"/>
<source>Bodhran</source>
<translation></translation>
</message>
<message>
<location filename="../../util.cpp" line="997"/>
<location filename="../../util.cpp" line="1002"/>
<source>Bassoon</source>
<translation>Fagott</translation>
</message>
<message>
<location filename="../../util.cpp" line="998"/>
<location filename="../../util.cpp" line="1003"/>
<source>Oboe</source>
<translation>Oboe</translation>
</message>
<message>
<location filename="../../util.cpp" line="999"/>
<location filename="../../util.cpp" line="1004"/>
<source>Harp</source>
<translation>Harfe</translation>
</message>
<message>
<location filename="../../util.cpp" line="1000"/>
<location filename="../../util.cpp" line="1005"/>
<source>Viola</source>
<translation>Viola</translation>
</message>
<message>
<location filename="../../util.cpp" line="1001"/>
<location filename="../../util.cpp" line="1006"/>
<source>Congas</source>
<translation>Congas</translation>
</message>
<message>
<location filename="../../util.cpp" line="1002"/>
<location filename="../../util.cpp" line="1007"/>
<source>Bongo</source>
<translation>Bongos</translation>
</message>
@ -1863,17 +1898,17 @@
<message>
<location filename="../../serverdlg.cpp" line="45"/>
<source>Client List</source>
<translation>Teilnehmerliste</translation>
<translation>Musikerliste</translation>
</message>
<message>
<location filename="../../serverdlg.cpp" line="45"/>
<source>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.</source>
<translation>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.</translation>
<translation>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.</translation>
</message>
<message>
<location filename="../../serverdlg.cpp" line="50"/>
<source>Connected clients list view</source>
<translation>Teilnehmerliste</translation>
<translation>Musikerliste</translation>
</message>
<message>
<location filename="../../serverdlg.cpp" line="53"/>
@ -2019,19 +2054,21 @@
<translation> Server </translation>
</message>
<message>
<location filename="../../serverdlg.cpp" line="191"/>
<location filename="../../serverdlg.cpp" line="525"/>
<source>Predefined Address</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Manual</source>
<translation>Manuell</translation>
<translation type="vanished">Manuell</translation>
</message>
<message>
<location filename="../../serverdlg.cpp" line="192"/>
<source>Default</source>
<translation>Standard</translation>
<translation type="vanished">Standard</translation>
</message>
<message>
<location filename="../../serverdlg.cpp" line="193"/>
<source>Default (North America)</source>
<translation>Standard (Nordamerika)</translation>
<translation type="vanished">Standard (Nordamerika)</translation>
</message>
<message>
<location filename="../../serverdlg.cpp" line="271"/>
@ -2044,42 +2081,42 @@
<translation>&amp;Fenster</translation>
</message>
<message>
<location filename="../../util.h" line="593"/>
<location filename="../../util.h" line="607"/>
<source>Unregistered</source>
<translation>Nicht registriert</translation>
</message>
<message>
<location filename="../../util.h" line="596"/>
<location filename="../../util.h" line="610"/>
<source>Bad address</source>
<translation>Ungültige Adresse</translation>
</message>
<message>
<location filename="../../util.h" line="599"/>
<location filename="../../util.h" line="613"/>
<source>Registration requested</source>
<translation>Registrierung angefordert</translation>
</message>
<message>
<location filename="../../util.h" line="602"/>
<location filename="../../util.h" line="616"/>
<source>Registration failed</source>
<translation>Registrierung fehlgeschlagen</translation>
</message>
<message>
<location filename="../../util.h" line="605"/>
<location filename="../../util.h" line="619"/>
<source>Check server version</source>
<translation>Überprüfe Version des Servers</translation>
</message>
<message>
<location filename="../../util.h" line="608"/>
<location filename="../../util.h" line="622"/>
<source>Registered</source>
<translation>Registriert</translation>
</message>
<message>
<location filename="../../util.h" line="611"/>
<location filename="../../util.h" line="625"/>
<source>Central Server full</source>
<translation>Zentralserver voll</translation>
</message>
<message>
<location filename="../../util.h" line="614"/>
<location filename="../../util.h" line="628"/>
<source>Unknown value </source>
<translation>Unbekannter Wert </translation>
</message>
@ -2331,4 +2368,12 @@
<translation> konnte nicht gestartet werden wegen Problemen mit dem Audiogerät.</translation>
</message>
</context>
<context>
<name>global</name>
<message>
<location filename="../../global.h" line="234"/>
<source>For more information use the What&apos;s This help (help menu, right mouse button or Shift+F1)</source>
<translation>Für weitere Informationen verwende die Kontexthilfe (Hilfe-Menü, rechte Maustaste oder Tastenkombination Shift+F1)</translation>
</message>
</context>
</TS>

View File

@ -20,17 +20,17 @@
<message>
<location filename="../../util.cpp" line="355"/>
<source> server which collects the audio data from each </source>
<translation> servidor que recoge el audio de cada </translation>
<translation> que recoge el audio de cada cliente </translation>
</message>
<message>
<location filename="../../util.cpp" line="355"/>
<source>There is a </source>
<translation>Hay un </translation>
<translation>Hay un servidor </translation>
</message>
<message>
<location filename="../../util.cpp" line="357"/>
<source> client, mixes the audio data and sends the mix back to each client.</source>
<translation> cliente, mezcla el audio y lo envía de vuelta a cada cliente.</translation>
<translation>, mezcla el audio y lo envía de vuelta a cada cliente.</translation>
</message>
<message>
<location filename="../../util.cpp" line="375"/>
@ -58,32 +58,57 @@
<translation>Iconos de banderas nacionales de Mark James</translation>
</message>
<message>
<location filename="../../util.cpp" line="402"/>
<location filename="../../util.cpp" line="403"/>
<source>For details on the contributions check out the </source>
<translation>Para más detalles sobre los contribuidores consulta la </translation>
</message>
<message>
<location filename="../../util.cpp" line="403"/>
<location filename="../../util.cpp" line="404"/>
<source>Github Contributors list</source>
<translation>lista de Contribuidores en Github</translation>
</message>
<message>
<location filename="../../util.cpp" line="418"/>
<location filename="../../util.cpp" line="408"/>
<source>Spanish</source>
<translation>Español</translation>
</message>
<message>
<location filename="../../util.cpp" line="410"/>
<source>French</source>
<translation>Francés</translation>
</message>
<message>
<location filename="../../util.cpp" line="412"/>
<source>Portuguese</source>
<translation>Portugués</translation>
</message>
<message>
<location filename="../../util.cpp" line="414"/>
<source>Dutch</source>
<translation>Neerlandés</translation>
</message>
<message>
<location filename="../../util.cpp" line="416"/>
<source>German</source>
<translation>Alemán</translation>
</message>
<message>
<location filename="../../util.cpp" line="423"/>
<source>About </source>
<translation>Acerca de </translation>
</message>
<message>
<location filename="../../util.cpp" line="435"/>
<location filename="../../util.cpp" line="440"/>
<source>, Version </source>
<translation>, Versión </translation>
</message>
<message>
<location filename="../../util.cpp" line="448"/>
<location filename="../../util.cpp" line="453"/>
<source>Internet Jam Session Software</source>
<translation>Internet Jam Session Software</translation>
</message>
<message>
<location filename="../../util.cpp" line="452"/>
<location filename="../../util.cpp" line="457"/>
<source>Under the GNU General Public License (GPL)</source>
<translation>Bajo la GNU General Public License (GPL)</translation>
</message>
@ -147,12 +172,12 @@
<context>
<name>CAudioMixerBoard</name>
<message>
<location filename="../../audiomixerboard.cpp" line="707"/>
<location filename="../../audiomixerboard.cpp" line="594"/>
<source>Server</source>
<translation>Servidor</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="716"/>
<location filename="../../audiomixerboard.cpp" line="603"/>
<source>T R Y I N G T O C O N N E C T</source>
<translation>I N T E N T A N D O C O N E C T A R</translation>
</message>
@ -245,44 +270,44 @@
<translation>SOLO</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="442"/>
<location filename="../../audiomixerboard.cpp" line="440"/>
<source>Alias/Name</source>
<translation>Alias/Nombre</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="448"/>
<location filename="../../audiomixerboard.cpp" line="446"/>
<source>Instrument</source>
<translation>Instrumento</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="456"/>
<location filename="../../audiomixerboard.cpp" line="454"/>
<source>Location</source>
<translation>Ubicación</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="478"/>
<location filename="../../audiomixerboard.cpp" line="482"/>
<location filename="../../audiomixerboard.cpp" line="486"/>
<location filename="../../audiomixerboard.cpp" line="476"/>
<location filename="../../audiomixerboard.cpp" line="480"/>
<location filename="../../audiomixerboard.cpp" line="484"/>
<source>Skill Level</source>
<translation>Nivel Habilidad</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="478"/>
<location filename="../../audiomixerboard.cpp" line="476"/>
<source>Beginner</source>
<translation>Principiante</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="482"/>
<location filename="../../audiomixerboard.cpp" line="480"/>
<source>Intermediate</source>
<translation>Intermedio</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="486"/>
<location filename="../../audiomixerboard.cpp" line="484"/>
<source>Expert</source>
<translation>Experto</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="497"/>
<location filename="../../audiomixerboard.cpp" line="495"/>
<source>Musician Profile</source>
<translation>Perfil Músico</translation>
</message>
@ -472,7 +497,7 @@
</message>
<message>
<location filename="../../clientdlg.cpp" line="204"/>
<location filename="../../clientdlg.cpp" line="1085"/>
<location filename="../../clientdlg.cpp" line="1075"/>
<source>C&amp;onnect</source>
<translation>C&amp;onectar</translation>
</message>
@ -613,17 +638,22 @@
<translation>El procesador del cliente o del servidor está al 100%.</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="819"/>
<location filename="../../clientdlg.cpp" line="703"/>
<source>Central Server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="809"/>
<source>user</source>
<translation>usuario</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="824"/>
<location filename="../../clientdlg.cpp" line="814"/>
<source>users</source>
<translation>usuarios</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="1061"/>
<location filename="../../clientdlg.cpp" line="1051"/>
<source>D&amp;isconnect</source>
<translation>D&amp;esconectar</translation>
</message>
@ -1091,7 +1121,7 @@
<message>
<location filename="../../clientsettingsdlg.cpp" line="336"/>
<source>Mono-in/Stereo-out</source>
<translation>Mono-in/Estéreo-out</translation>
<translation>Entrada mono/Salida estéreo</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="337"/>
@ -1114,17 +1144,17 @@
<translation>Alta</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="349"/>
<location filename="../../util.h" line="579"/>
<source>Manual</source>
<translation>Manual</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="350"/>
<location filename="../../util.h" line="585"/>
<source>Default</source>
<translation>Por defecto</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="351"/>
<location filename="../../util.h" line="582"/>
<source>Default (North America)</source>
<translation>Por defecto (Norteamérica)</translation>
</message>
@ -1149,6 +1179,11 @@
<source>Buffer Delay: </source>
<translation>Retardo Buffer: </translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="593"/>
<source>Predefined Address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="633"/>
<source>The selected audio device could not be used because of the following error: </source>
@ -1356,8 +1391,12 @@
<translation>La dirección IP o URL del servidor ejecutando el software del servidor </translation>
</message>
<message>
<location filename="../../connectdlg.cpp" line="62"/>
<source> 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:</source>
<translation type="vanished"> 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:</translation>
</message>
<message>
<location filename="../../connectdlg.cpp" line="62"/>
<source> 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:</source>
<translation> 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:</translation>
</message>
<message>
@ -1382,7 +1421,7 @@
</message>
<message>
<location filename="../../connectdlg.cpp" line="78"/>
<source>The server list is filered by the given text. Note that the filter is case insensitive.</source>
<source>The server list is filtered by the given text. Note that the filter is case insensitive.</source>
<translation>La lista de servidores se filtra con el texto introducido. El filtro no es sensible a mayúsculas/minúsculas.</translation>
</message>
<message>
@ -1462,28 +1501,28 @@
<context>
<name>CHelpMenu</name>
<message>
<location filename="../../util.cpp" line="835"/>
<location filename="../../util.cpp" line="840"/>
<source>&amp;Help</source>
<translation>&amp;Ayuda</translation>
</message>
<message>
<location filename="../../util.cpp" line="840"/>
<location filename="../../util.cpp" line="845"/>
<location filename="../../util.cpp" line="850"/>
<source>Getting &amp;Started...</source>
<translation>Cómo &amp;Empezar...</translation>
</message>
<message>
<location filename="../../util.cpp" line="841"/>
<location filename="../../util.cpp" line="846"/>
<source>Software &amp;Manual...</source>
<translation>Manual del &amp;Software...</translation>
</message>
<message>
<location filename="../../util.cpp" line="848"/>
<location filename="../../util.cpp" line="853"/>
<source>What&apos;s &amp;This</source>
<translation>Qué es &amp;Esto</translation>
</message>
<message>
<location filename="../../util.cpp" line="850"/>
<location filename="../../util.cpp" line="855"/>
<source>&amp;About...</source>
<translation>&amp;Acerca de...</translation>
</message>
@ -1491,102 +1530,102 @@
<context>
<name>CLicenceDlg</name>
<message>
<location filename="../../util.cpp" line="474"/>
<location filename="../../util.cpp" line="479"/>
<source>I &amp;agree to the above licence terms</source>
<translation>&amp;Acepto los términos de la licencia arriba expuestos</translation>
</message>
<message>
<location filename="../../util.cpp" line="475"/>
<location filename="../../util.cpp" line="480"/>
<source>Accept</source>
<translation>Acepto</translation>
</message>
<message>
<location filename="../../util.cpp" line="476"/>
<location filename="../../util.cpp" line="481"/>
<source>Decline</source>
<translation>No Acepto</translation>
</message>
<message>
<location filename="../../util.cpp" line="492"/>
<location filename="../../util.cpp" line="497"/>
<source>By connecting to this server and agreeing to this notice, you agree to the following:</source>
<translation>Al conectarte a este servidor y aceptar esta notificación, aceptas lo siguiente:</translation>
</message>
<message>
<location filename="../../util.cpp" line="494"/>
<location filename="../../util.cpp" line="499"/>
<source>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 </source>
<translation>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 </translation>
</message>
<message>
<location filename="../../util.cpp" line="502"/>
<location filename="../../util.cpp" line="507"/>
<source>You are free to:</source>
<translation>Ud. es libre de:</translation>
</message>
<message>
<location filename="../../util.cpp" line="504"/>
<location filename="../../util.cpp" line="509"/>
<source>Share</source>
<translation>Compartir</translation>
</message>
<message>
<location filename="../../util.cpp" line="505"/>
<location filename="../../util.cpp" line="510"/>
<source>copy and redistribute the material in any medium or format</source>
<translation>copiar y redistribuir el material en cualquier medio o formato</translation>
</message>
<message>
<location filename="../../util.cpp" line="506"/>
<location filename="../../util.cpp" line="511"/>
<source>Adapt</source>
<translation>Adaptar</translation>
</message>
<message>
<location filename="../../util.cpp" line="507"/>
<location filename="../../util.cpp" line="512"/>
<source>remix, transform, and build upon the material</source>
<translation>remezclar, transformar y construir a partir del material</translation>
</message>
<message>
<location filename="../../util.cpp" line="508"/>
<location filename="../../util.cpp" line="513"/>
<source>The licensor cannot revoke these freedoms as long as you follow the license terms.</source>
<translation>El licenciante no puede revocar estas libertades en tanto Ud. siga los términos de la licencia.</translation>
</message>
<message>
<location filename="../../util.cpp" line="510"/>
<location filename="../../util.cpp" line="515"/>
<source>Under the following terms:</source>
<translation>Bajo los siguientes términos:</translation>
</message>
<message>
<location filename="../../util.cpp" line="512"/>
<location filename="../../util.cpp" line="517"/>
<source>Attribution</source>
<translation>Atribución</translation>
</message>
<message>
<location filename="../../util.cpp" line="513"/>
<location filename="../../util.cpp" line="518"/>
<source>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.</source>
<translation>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.</translation>
</message>
<message>
<location filename="../../util.cpp" line="516"/>
<location filename="../../util.cpp" line="521"/>
<source>NonCommercial</source>
<translation>No-Comercial</translation>
</message>
<message>
<location filename="../../util.cpp" line="517"/>
<location filename="../../util.cpp" line="522"/>
<source>You may not use the material for commercial purposes.</source>
<translation>No puede utilizar el material con fines comerciales.</translation>
</message>
<message>
<location filename="../../util.cpp" line="518"/>
<location filename="../../util.cpp" line="523"/>
<source>ShareAlike</source>
<translation>ShareAlike</translation>
</message>
<message>
<location filename="../../util.cpp" line="519"/>
<location filename="../../util.cpp" line="524"/>
<source>If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.</source>
<translation>Si remezcla, transforma o construye sobre el material, debe distribuir sus contribuciones bajo la misma licencia que el original.</translation>
</message>
<message>
<location filename="../../util.cpp" line="521"/>
<location filename="../../util.cpp" line="526"/>
<source>No additional restrictions</source>
<translation>Sin restricciones adicionales</translation>
</message>
<message>
<location filename="../../util.cpp" line="522"/>
<location filename="../../util.cpp" line="527"/>
<source>You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.</source>
<translation>No puede aplicar términos legales o medidas tecnológicas que restringan legalmente a otras personas de hacer cualquier cosa permitida por la licencia.</translation>
</message>
@ -1594,270 +1633,270 @@
<context>
<name>CMusProfDlg</name>
<message>
<location filename="../../util.cpp" line="706"/>
<location filename="../../util.cpp" line="711"/>
<source> 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.</source>
<translation> Esta etiqueta también se mostrará a cada cliente conectado al mismo servidor que . Se se deja vacío, se muestra la dirección IP en su lugar.</translation>
</message>
<message>
<location filename="../../util.cpp" line="711"/>
<location filename="../../util.cpp" line="716"/>
<source>Alias or name edit box</source>
<translation>Campo para alias o nombre</translation>
</message>
<message>
<location filename="../../util.cpp" line="713"/>
<location filename="../../util.cpp" line="718"/>
<source>Instrument picture button</source>
<translation>Botón imagen instrumento</translation>
</message>
<message>
<location filename="../../util.cpp" line="715"/>
<location filename="../../util.cpp" line="720"/>
<source>Country flag button</source>
<translation>Botón bandera país</translation>
</message>
<message>
<location filename="../../util.cpp" line="717"/>
<location filename="../../util.cpp" line="722"/>
<source>City edit box</source>
<translation>Ciudad</translation>
</message>
<message>
<location filename="../../util.cpp" line="719"/>
<location filename="../../util.cpp" line="724"/>
<source>Skill level combo box</source>
<translation>Nivel de habilidad</translation>
</message>
<message>
<location filename="../../util.cpp" line="664"/>
<location filename="../../util.cpp" line="676"/>
<location filename="../../util.cpp" line="968"/>
<location filename="../../util.cpp" line="669"/>
<location filename="../../util.cpp" line="681"/>
<location filename="../../util.cpp" line="973"/>
<source>None</source>
<translation>Ninguno</translation>
</message>
<message>
<location filename="../../util.cpp" line="551"/>
<location filename="../../util.cpp" line="699"/>
<location filename="../../util.cpp" line="556"/>
<location filename="../../util.cpp" line="704"/>
<source>Musician Profile</source>
<translation>Perfil Músico</translation>
</message>
<message>
<location filename="../../util.cpp" line="556"/>
<location filename="../../util.cpp" line="561"/>
<source>Alias/Name</source>
<translation>Alias/Nombre</translation>
</message>
<message>
<location filename="../../util.cpp" line="558"/>
<location filename="../../util.cpp" line="563"/>
<source>Instrument</source>
<translation>Instrumento</translation>
</message>
<message>
<location filename="../../util.cpp" line="560"/>
<location filename="../../util.cpp" line="565"/>
<source>Country</source>
<translation>País</translation>
</message>
<message>
<location filename="../../util.cpp" line="562"/>
<location filename="../../util.cpp" line="567"/>
<source>City</source>
<translation>Ciudad</translation>
</message>
<message>
<location filename="../../util.cpp" line="564"/>
<location filename="../../util.cpp" line="569"/>
<source>Skill</source>
<translation>Habilidad</translation>
</message>
<message>
<location filename="../../util.cpp" line="566"/>
<location filename="../../util.cpp" line="571"/>
<source>&amp;Close</source>
<translation>&amp;Cerrar</translation>
</message>
<message>
<location filename="../../util.cpp" line="682"/>
<location filename="../../util.cpp" line="687"/>
<source>Beginner</source>
<translation>Principiante</translation>
</message>
<message>
<location filename="../../util.cpp" line="688"/>
<location filename="../../util.cpp" line="693"/>
<source>Intermediate</source>
<translation>Intermedio</translation>
</message>
<message>
<location filename="../../util.cpp" line="694"/>
<location filename="../../util.cpp" line="699"/>
<source>Expert</source>
<translation>Experto</translation>
</message>
<message>
<location filename="../../util.cpp" line="699"/>
<location filename="../../util.cpp" line="704"/>
<source>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.</source>
<translation>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.</translation>
</message>
<message>
<location filename="../../util.cpp" line="704"/>
<location filename="../../util.cpp" line="709"/>
<source>What you set here will appear at your fader on the mixer board when you are connected to a </source>
<translation>Lo que introduzcas aquí aparecerá en tu fader del mezclador cuando te conectes a un servidor </translation>
</message>
<message>
<location filename="../../util.cpp" line="969"/>
<location filename="../../util.cpp" line="974"/>
<source>Drum Set</source>
<translation>Batería</translation>
</message>
<message>
<location filename="../../util.cpp" line="970"/>
<location filename="../../util.cpp" line="975"/>
<source>Djembe</source>
<translation>Djembé</translation>
</message>
<message>
<location filename="../../util.cpp" line="971"/>
<location filename="../../util.cpp" line="976"/>
<source>Electric Guitar</source>
<translation>Guitarra Eléctrica</translation>
</message>
<message>
<location filename="../../util.cpp" line="972"/>
<location filename="../../util.cpp" line="977"/>
<source>Acoustic Guitar</source>
<translation>Guitarra Acústica</translation>
</message>
<message>
<location filename="../../util.cpp" line="973"/>
<location filename="../../util.cpp" line="978"/>
<source>Bass Guitar</source>
<translation>Bajo Eléctrico</translation>
</message>
<message>
<location filename="../../util.cpp" line="974"/>
<location filename="../../util.cpp" line="979"/>
<source>Keyboard</source>
<translation>Teclado</translation>
</message>
<message>
<location filename="../../util.cpp" line="975"/>
<location filename="../../util.cpp" line="980"/>
<source>Synthesizer</source>
<translation>Sintetizador</translation>
</message>
<message>
<location filename="../../util.cpp" line="976"/>
<location filename="../../util.cpp" line="981"/>
<source>Grand Piano</source>
<translation>Piano de Cola</translation>
</message>
<message>
<location filename="../../util.cpp" line="977"/>
<location filename="../../util.cpp" line="982"/>
<source>Accordion</source>
<translation>Acordeón</translation>
</message>
<message>
<location filename="../../util.cpp" line="978"/>
<location filename="../../util.cpp" line="983"/>
<source>Vocal</source>
<translation>Voz</translation>
</message>
<message>
<location filename="../../util.cpp" line="979"/>
<location filename="../../util.cpp" line="984"/>
<source>Microphone</source>
<translation>Micrófono</translation>
</message>
<message>
<location filename="../../util.cpp" line="980"/>
<location filename="../../util.cpp" line="985"/>
<source>Harmonica</source>
<translation>Armónica</translation>
</message>
<message>
<location filename="../../util.cpp" line="981"/>
<location filename="../../util.cpp" line="986"/>
<source>Trumpet</source>
<translation>Trompeta</translation>
</message>
<message>
<location filename="../../util.cpp" line="982"/>
<location filename="../../util.cpp" line="987"/>
<source>Trombone</source>
<translation>Trombón</translation>
</message>
<message>
<location filename="../../util.cpp" line="983"/>
<location filename="../../util.cpp" line="988"/>
<source>French Horn</source>
<translation>Trompa</translation>
</message>
<message>
<location filename="../../util.cpp" line="984"/>
<location filename="../../util.cpp" line="989"/>
<source>Tuba</source>
<translation>Tuba</translation>
</message>
<message>
<location filename="../../util.cpp" line="985"/>
<location filename="../../util.cpp" line="990"/>
<source>Saxophone</source>
<translation>Saxofón</translation>
</message>
<message>
<location filename="../../util.cpp" line="986"/>
<location filename="../../util.cpp" line="991"/>
<source>Clarinet</source>
<translation>Clarinete</translation>
</message>
<message>
<location filename="../../util.cpp" line="987"/>
<location filename="../../util.cpp" line="992"/>
<source>Flute</source>
<translation>Flauta</translation>
</message>
<message>
<location filename="../../util.cpp" line="988"/>
<location filename="../../util.cpp" line="993"/>
<source>Violin</source>
<translation>Violín</translation>
</message>
<message>
<location filename="../../util.cpp" line="989"/>
<location filename="../../util.cpp" line="994"/>
<source>Cello</source>
<translation>Violonchelo</translation>
</message>
<message>
<location filename="../../util.cpp" line="990"/>
<location filename="../../util.cpp" line="995"/>
<source>Double Bass</source>
<translation>Contrabajo</translation>
</message>
<message>
<location filename="../../util.cpp" line="991"/>
<location filename="../../util.cpp" line="996"/>
<source>Recorder</source>
<translation>Grabadora</translation>
</message>
<message>
<location filename="../../util.cpp" line="992"/>
<location filename="../../util.cpp" line="997"/>
<source>Streamer</source>
<translation>Streamer</translation>
</message>
<message>
<location filename="../../util.cpp" line="993"/>
<location filename="../../util.cpp" line="998"/>
<source>Listener</source>
<translation>Oyente</translation>
</message>
<message>
<location filename="../../util.cpp" line="994"/>
<location filename="../../util.cpp" line="999"/>
<source>Guitar+Vocal</source>
<translation>Guitarra+Voz</translation>
</message>
<message>
<location filename="../../util.cpp" line="995"/>
<location filename="../../util.cpp" line="1000"/>
<source>Keyboard+Vocal</source>
<translation>Teclado+Voz</translation>
</message>
<message>
<location filename="../../util.cpp" line="996"/>
<location filename="../../util.cpp" line="1001"/>
<source>Bodhran</source>
<translation>Bodhran</translation>
</message>
<message>
<location filename="../../util.cpp" line="997"/>
<location filename="../../util.cpp" line="1002"/>
<source>Bassoon</source>
<translation>Fagot</translation>
</message>
<message>
<location filename="../../util.cpp" line="998"/>
<location filename="../../util.cpp" line="1003"/>
<source>Oboe</source>
<translation>Oboe</translation>
</message>
<message>
<location filename="../../util.cpp" line="999"/>
<location filename="../../util.cpp" line="1004"/>
<source>Harp</source>
<translation>Arpa</translation>
</message>
<message>
<location filename="../../util.cpp" line="1000"/>
<location filename="../../util.cpp" line="1005"/>
<source>Viola</source>
<translation>Viola</translation>
</message>
<message>
<location filename="../../util.cpp" line="1001"/>
<location filename="../../util.cpp" line="1006"/>
<source>Congas</source>
<translation>Congas</translation>
</message>
<message>
<location filename="../../util.cpp" line="1002"/>
<location filename="../../util.cpp" line="1007"/>
<source>Bongo</source>
<translation>Bongo</translation>
</message>
@ -2023,19 +2062,21 @@
<translation> </translation>
</message>
<message>
<location filename="../../serverdlg.cpp" line="191"/>
<location filename="../../serverdlg.cpp" line="525"/>
<source>Predefined Address</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Manual</source>
<translation>Manual</translation>
<translation type="vanished">Manual</translation>
</message>
<message>
<location filename="../../serverdlg.cpp" line="192"/>
<source>Default</source>
<translation>Por defecto</translation>
<translation type="vanished">Por defecto</translation>
</message>
<message>
<location filename="../../serverdlg.cpp" line="193"/>
<source>Default (North America)</source>
<translation>Por defecto (Norteamérica)</translation>
<translation type="vanished">Por defecto (Norteamérica)</translation>
</message>
<message>
<location filename="../../serverdlg.cpp" line="271"/>
@ -2048,42 +2089,42 @@
<translation>&amp;Ventana</translation>
</message>
<message>
<location filename="../../util.h" line="593"/>
<location filename="../../util.h" line="607"/>
<source>Unregistered</source>
<translation>Sin registrar</translation>
</message>
<message>
<location filename="../../util.h" line="596"/>
<location filename="../../util.h" line="610"/>
<source>Bad address</source>
<translation>Dirección no válida</translation>
</message>
<message>
<location filename="../../util.h" line="599"/>
<location filename="../../util.h" line="613"/>
<source>Registration requested</source>
<translation>Registro solicitado</translation>
</message>
<message>
<location filename="../../util.h" line="602"/>
<location filename="../../util.h" line="616"/>
<source>Registration failed</source>
<translation>Error de registro</translation>
</message>
<message>
<location filename="../../util.h" line="605"/>
<location filename="../../util.h" line="619"/>
<source>Check server version</source>
<translation>Comprueba la versión del servidor</translation>
</message>
<message>
<location filename="../../util.h" line="608"/>
<location filename="../../util.h" line="622"/>
<source>Registered</source>
<translation>Registrado</translation>
</message>
<message>
<location filename="../../util.h" line="611"/>
<location filename="../../util.h" line="625"/>
<source>Central Server full</source>
<translation>Servidor Central lleno</translation>
</message>
<message>
<location filename="../../util.h" line="614"/>
<location filename="../../util.h" line="628"/>
<source>Unknown value </source>
<translation>Valor desconocido </translation>
</message>
@ -2335,4 +2376,12 @@
<translation> no pudo arrancar debido a problemas con el dispositivo de audio.</translation>
</message>
</context>
<context>
<name>global</name>
<message>
<location filename="../../global.h" line="234"/>
<source>For more information use the What&apos;s This help (help menu, right mouse button or Shift+F1)</source>
<translation>Para más información utiliza ¿Qué es Esto? (menú de ayuda, botón derecho del ratón o Shift+F1)</translation>
</message>
</context>
</TS>

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -15,7 +15,7 @@
<message>
<location filename="../../util.cpp" line="354"/>
<source> software enables musicians to perform real-time jam sessions over the internet.</source>
<translation type="unfinished"></translation>
<translation> permite aos músicos realizar jam sessions em tempo real pela Internet.</translation>
</message>
<message>
<location filename="../../util.cpp" line="355"/>
@ -25,7 +25,7 @@
<message>
<location filename="../../util.cpp" line="355"/>
<source>There is a </source>
<translation type="unfinished"></translation>
<translation>Existe um servidor </translation>
</message>
<message>
<location filename="../../util.cpp" line="357"/>
@ -40,50 +40,75 @@
<message>
<location filename="../../util.cpp" line="376"/>
<source>Qt cross-platform application framework</source>
<translation type="unfinished"></translation>
<translation>Estrutura de aplicações multiplataforma Qt</translation>
</message>
<message>
<location filename="../../util.cpp" line="380"/>
<source>Audio reverberation code by Perry R. Cook and Gary P. Scavone</source>
<translation type="unfinished"></translation>
<translation>Código de reverberação de áudio por Perry R. Cook e Gary P. Scavone</translation>
</message>
<message>
<location filename="../../util.cpp" line="383"/>
<source>Some pixmaps are from the</source>
<translation type="unfinished"></translation>
<translation>Alguns pixmaps são do</translation>
</message>
<message>
<location filename="../../util.cpp" line="385"/>
<source>Country flag icons from Mark James</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../util.cpp" line="402"/>
<source>For details on the contributions check out the </source>
<translation type="unfinished"></translation>
<translation>Ícones de bandeira do país de Mark James</translation>
</message>
<message>
<location filename="../../util.cpp" line="403"/>
<source>Github Contributors list</source>
<translation type="unfinished"></translation>
<source>For details on the contributions check out the </source>
<translation>Para detalhes sobre as contribuições, consulte a </translation>
</message>
<message>
<location filename="../../util.cpp" line="418"/>
<location filename="../../util.cpp" line="404"/>
<source>Github Contributors list</source>
<translation>lista de colaboradores do Github</translation>
</message>
<message>
<location filename="../../util.cpp" line="408"/>
<source>Spanish</source>
<translation>Espanhol</translation>
</message>
<message>
<location filename="../../util.cpp" line="410"/>
<source>French</source>
<translation>Francês</translation>
</message>
<message>
<location filename="../../util.cpp" line="412"/>
<source>Portuguese</source>
<translation>Português</translation>
</message>
<message>
<location filename="../../util.cpp" line="414"/>
<source>Dutch</source>
<translation>Holandês</translation>
</message>
<message>
<location filename="../../util.cpp" line="416"/>
<source>German</source>
<translation>Alemão</translation>
</message>
<message>
<location filename="../../util.cpp" line="423"/>
<source>About </source>
<translation>Sobre o </translation>
</message>
<message>
<location filename="../../util.cpp" line="435"/>
<location filename="../../util.cpp" line="440"/>
<source>, Version </source>
<translation>, Versão </translation>
</message>
<message>
<location filename="../../util.cpp" line="448"/>
<location filename="../../util.cpp" line="453"/>
<source>Internet Jam Session Software</source>
<translation>Programa de Jam Sessions pela Internet</translation>
</message>
<message>
<location filename="../../util.cpp" line="452"/>
<location filename="../../util.cpp" line="457"/>
<source>Under the GNU General Public License (GPL)</source>
<translation>Sob a Licença Pública Geral GNU (GPL)</translation>
</message>
@ -108,22 +133,22 @@
<message>
<location filename="../../aboutdlgbase.ui" line="106"/>
<source>A&amp;bout</source>
<translation type="unfinished"></translation>
<translation>&amp;Sobre</translation>
</message>
<message>
<location filename="../../aboutdlgbase.ui" line="120"/>
<source>&amp;Libraries</source>
<translation type="unfinished"></translation>
<translation>&amp;Bibliotecas</translation>
</message>
<message>
<location filename="../../aboutdlgbase.ui" line="134"/>
<source>&amp;Contributors</source>
<translation type="unfinished"></translation>
<translation>&amp;Colaboradores</translation>
</message>
<message>
<location filename="../../aboutdlgbase.ui" line="148"/>
<source>&amp;Translation</source>
<translation type="unfinished"></translation>
<translation>&amp;Tradução</translation>
</message>
<message>
<source>Author: Volker Fischer</source>
@ -155,12 +180,12 @@
<context>
<name>CAudioMixerBoard</name>
<message>
<location filename="../../audiomixerboard.cpp" line="707"/>
<location filename="../../audiomixerboard.cpp" line="594"/>
<source>Server</source>
<translation>Servidor</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="716"/>
<location filename="../../audiomixerboard.cpp" line="603"/>
<source>T R Y I N G T O C O N N E C T</source>
<translation>T E N T A N D O L I G A R</translation>
</message>
@ -253,44 +278,44 @@
<translation>SOLO</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="442"/>
<location filename="../../audiomixerboard.cpp" line="440"/>
<source>Alias/Name</source>
<translation>Nome/Alcunha</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="448"/>
<location filename="../../audiomixerboard.cpp" line="446"/>
<source>Instrument</source>
<translation>Instrumento</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="456"/>
<location filename="../../audiomixerboard.cpp" line="454"/>
<source>Location</source>
<translation>Localização</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="478"/>
<location filename="../../audiomixerboard.cpp" line="482"/>
<location filename="../../audiomixerboard.cpp" line="486"/>
<location filename="../../audiomixerboard.cpp" line="476"/>
<location filename="../../audiomixerboard.cpp" line="480"/>
<location filename="../../audiomixerboard.cpp" line="484"/>
<source>Skill Level</source>
<translation>Nível de Habilidade</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="478"/>
<location filename="../../audiomixerboard.cpp" line="476"/>
<source>Beginner</source>
<translation>Principiante</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="482"/>
<location filename="../../audiomixerboard.cpp" line="480"/>
<source>Intermediate</source>
<translation>Intermediário</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="486"/>
<location filename="../../audiomixerboard.cpp" line="484"/>
<source>Expert</source>
<translation>Avançado</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="497"/>
<location filename="../../audiomixerboard.cpp" line="495"/>
<source>Musician Profile</source>
<translation>Perfil do músico</translation>
</message>
@ -480,7 +505,7 @@
</message>
<message>
<location filename="../../clientdlg.cpp" line="204"/>
<location filename="../../clientdlg.cpp" line="1085"/>
<location filename="../../clientdlg.cpp" line="1075"/>
<source>C&amp;onnect</source>
<translation>&amp;Ligar</translation>
</message>
@ -621,17 +646,22 @@
<translation>O CPU do cliente ou servidor está a 100%.</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="819"/>
<location filename="../../clientdlg.cpp" line="703"/>
<source>Central Server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="809"/>
<source>user</source>
<translation>utilizador</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="824"/>
<location filename="../../clientdlg.cpp" line="814"/>
<source>users</source>
<translation>utilizadores</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="1061"/>
<location filename="../../clientdlg.cpp" line="1051"/>
<source>D&amp;isconnect</source>
<translation>Desl&amp;igar</translation>
</message>
@ -1122,24 +1152,24 @@
<translation>Alta</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="349"/>
<location filename="../../util.h" line="579"/>
<source>Manual</source>
<translation>Manual</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="350"/>
<location filename="../../util.h" line="585"/>
<source>Default</source>
<translation>Servidor Padrão</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="351"/>
<location filename="../../util.h" line="582"/>
<source>Default (North America)</source>
<translation>Servidor Padrão (America do Norte)</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="367"/>
<source>preferred</source>
<translation type="unfinished"></translation>
<translation>preferido</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="457"/>
@ -1157,6 +1187,11 @@
<source>Buffer Delay: </source>
<translation>Atraso do buffer:</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="593"/>
<source>Predefined Address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="633"/>
<source>The selected audio device could not be used because of the following error: </source>
@ -1390,7 +1425,7 @@
</message>
<message>
<location filename="../../connectdlg.cpp" line="78"/>
<source>The server list is filered by the given text. Note that the filter is case insensitive.</source>
<source>The server list is filtered by the given text. Note that the filter is case insensitive.</source>
<translation>A lista de servidores é filtrada pelo texto fornecido. Note que o filtro não diferencia maiúsculas de minúsculas.</translation>
</message>
<message>
@ -1470,28 +1505,28 @@
<context>
<name>CHelpMenu</name>
<message>
<location filename="../../util.cpp" line="835"/>
<location filename="../../util.cpp" line="840"/>
<source>&amp;Help</source>
<translation type="unfinished"></translation>
<translation>&amp;Ajuda</translation>
</message>
<message>
<location filename="../../util.cpp" line="840"/>
<location filename="../../util.cpp" line="845"/>
<location filename="../../util.cpp" line="850"/>
<source>Getting &amp;Started...</source>
<translation>Como Começa&amp;r...</translation>
</message>
<message>
<location filename="../../util.cpp" line="841"/>
<location filename="../../util.cpp" line="846"/>
<source>Software &amp;Manual...</source>
<translation>&amp;Manual do Programa...</translation>
</message>
<message>
<location filename="../../util.cpp" line="848"/>
<location filename="../../util.cpp" line="853"/>
<source>What&apos;s &amp;This</source>
<translation>O que é &amp;isto</translation>
</message>
<message>
<location filename="../../util.cpp" line="850"/>
<location filename="../../util.cpp" line="855"/>
<source>&amp;About...</source>
<translation>&amp;Sobre...</translation>
</message>
@ -1499,102 +1534,102 @@
<context>
<name>CLicenceDlg</name>
<message>
<location filename="../../util.cpp" line="474"/>
<location filename="../../util.cpp" line="479"/>
<source>I &amp;agree to the above licence terms</source>
<translation>Eu &amp;aceito os termos da licença acima</translation>
</message>
<message>
<location filename="../../util.cpp" line="475"/>
<location filename="../../util.cpp" line="480"/>
<source>Accept</source>
<translation>Aceitar</translation>
</message>
<message>
<location filename="../../util.cpp" line="476"/>
<location filename="../../util.cpp" line="481"/>
<source>Decline</source>
<translation>Rejeitar</translation>
</message>
<message>
<location filename="../../util.cpp" line="492"/>
<location filename="../../util.cpp" line="497"/>
<source>By connecting to this server and agreeing to this notice, you agree to the following:</source>
<translation>Ao ligar-se a este servidor e concordar com este aviso, está a concordar com o seguinte:</translation>
</message>
<message>
<location filename="../../util.cpp" line="494"/>
<location filename="../../util.cpp" line="499"/>
<source>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 </source>
<translation>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 </translation>
</message>
<message>
<location filename="../../util.cpp" line="502"/>
<location filename="../../util.cpp" line="507"/>
<source>You are free to:</source>
<translation>Você tem o direito de:</translation>
</message>
<message>
<location filename="../../util.cpp" line="504"/>
<location filename="../../util.cpp" line="509"/>
<source>Share</source>
<translation>Compartilhar</translation>
</message>
<message>
<location filename="../../util.cpp" line="505"/>
<location filename="../../util.cpp" line="510"/>
<source>copy and redistribute the material in any medium or format</source>
<translation>copiar e redistribuir o material em qualquer suporte ou formato</translation>
</message>
<message>
<location filename="../../util.cpp" line="506"/>
<location filename="../../util.cpp" line="511"/>
<source>Adapt</source>
<translation>Adaptar</translation>
</message>
<message>
<location filename="../../util.cpp" line="507"/>
<location filename="../../util.cpp" line="512"/>
<source>remix, transform, and build upon the material</source>
<translation>remisturar, transformar, e criar a partir do material</translation>
</message>
<message>
<location filename="../../util.cpp" line="508"/>
<location filename="../../util.cpp" line="513"/>
<source>The licensor cannot revoke these freedoms as long as you follow the license terms.</source>
<translation>O licenciante não pode revogar estes direitos desde que você respeite os termos da licença.</translation>
</message>
<message>
<location filename="../../util.cpp" line="510"/>
<location filename="../../util.cpp" line="515"/>
<source>Under the following terms:</source>
<translation>De acordo com os termos seguintes:</translation>
</message>
<message>
<location filename="../../util.cpp" line="512"/>
<location filename="../../util.cpp" line="517"/>
<source>Attribution</source>
<translation>Atribuição</translation>
</message>
<message>
<location filename="../../util.cpp" line="513"/>
<location filename="../../util.cpp" line="518"/>
<source>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.</source>
<translation>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.</translation>
</message>
<message>
<location filename="../../util.cpp" line="516"/>
<location filename="../../util.cpp" line="521"/>
<source>NonCommercial</source>
<translation>NãoComercial</translation>
</message>
<message>
<location filename="../../util.cpp" line="517"/>
<location filename="../../util.cpp" line="522"/>
<source>You may not use the material for commercial purposes.</source>
<translation>Você não pode usar o material para fins comerciais.</translation>
</message>
<message>
<location filename="../../util.cpp" line="518"/>
<location filename="../../util.cpp" line="523"/>
<source>ShareAlike</source>
<translation>CompartilhaIgual</translation>
</message>
<message>
<location filename="../../util.cpp" line="519"/>
<location filename="../../util.cpp" line="524"/>
<source>If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.</source>
<translation>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.</translation>
</message>
<message>
<location filename="../../util.cpp" line="521"/>
<location filename="../../util.cpp" line="526"/>
<source>No additional restrictions</source>
<translation>Sem restrições adicionais</translation>
</message>
<message>
<location filename="../../util.cpp" line="522"/>
<location filename="../../util.cpp" line="527"/>
<source>You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.</source>
<translation>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.</translation>
</message>
@ -1602,272 +1637,272 @@
<context>
<name>CMusProfDlg</name>
<message>
<location filename="../../util.cpp" line="706"/>
<location filename="../../util.cpp" line="711"/>
<source> 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.</source>
<translation>. 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.</translation>
</message>
<message>
<location filename="../../util.cpp" line="711"/>
<location filename="../../util.cpp" line="716"/>
<source>Alias or name edit box</source>
<translation>Caixa de edição do nome ou pseudônimo</translation>
</message>
<message>
<location filename="../../util.cpp" line="713"/>
<location filename="../../util.cpp" line="718"/>
<source>Instrument picture button</source>
<translation>Botão da imagem do instrumento</translation>
</message>
<message>
<location filename="../../util.cpp" line="715"/>
<location filename="../../util.cpp" line="720"/>
<source>Country flag button</source>
<translation>Botão da bandeira do país</translation>
</message>
<message>
<location filename="../../util.cpp" line="717"/>
<location filename="../../util.cpp" line="722"/>
<source>City edit box</source>
<translation>Caixa de edição da cidade</translation>
</message>
<message>
<location filename="../../util.cpp" line="719"/>
<location filename="../../util.cpp" line="724"/>
<source>Skill level combo box</source>
<translation>Caixa do nível de habilidade</translation>
</message>
<message>
<location filename="../../util.cpp" line="664"/>
<location filename="../../util.cpp" line="676"/>
<location filename="../../util.cpp" line="968"/>
<location filename="../../util.cpp" line="669"/>
<location filename="../../util.cpp" line="681"/>
<location filename="../../util.cpp" line="973"/>
<source>None</source>
<translation>Nenhum</translation>
</message>
<message>
<location filename="../../util.cpp" line="551"/>
<location filename="../../util.cpp" line="699"/>
<location filename="../../util.cpp" line="556"/>
<location filename="../../util.cpp" line="704"/>
<source>Musician Profile</source>
<translation>Perfil do músico</translation>
</message>
<message>
<location filename="../../util.cpp" line="556"/>
<location filename="../../util.cpp" line="561"/>
<source>Alias/Name</source>
<translation>Nome/Alcunha</translation>
</message>
<message>
<location filename="../../util.cpp" line="558"/>
<location filename="../../util.cpp" line="563"/>
<source>Instrument</source>
<translation>Instrumento</translation>
</message>
<message>
<location filename="../../util.cpp" line="560"/>
<location filename="../../util.cpp" line="565"/>
<source>Country</source>
<translation>País</translation>
</message>
<message>
<location filename="../../util.cpp" line="562"/>
<location filename="../../util.cpp" line="567"/>
<source>City</source>
<translation>Cidade</translation>
</message>
<message>
<location filename="../../util.cpp" line="564"/>
<location filename="../../util.cpp" line="569"/>
<source>Skill</source>
<translation>Habilidade</translation>
</message>
<message>
<location filename="../../util.cpp" line="566"/>
<location filename="../../util.cpp" line="571"/>
<source>&amp;Close</source>
<translation>&amp;Fechar</translation>
</message>
<message>
<location filename="../../util.cpp" line="682"/>
<location filename="../../util.cpp" line="687"/>
<source>Beginner</source>
<translation>Principiante</translation>
</message>
<message>
<location filename="../../util.cpp" line="688"/>
<location filename="../../util.cpp" line="693"/>
<source>Intermediate</source>
<translation>Intermediário</translation>
</message>
<message>
<location filename="../../util.cpp" line="694"/>
<location filename="../../util.cpp" line="699"/>
<source>Expert</source>
<translation>Avançado</translation>
</message>
<message>
<location filename="../../util.cpp" line="699"/>
<location filename="../../util.cpp" line="704"/>
<source>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.</source>
<translation>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.</translation>
</message>
<message>
<location filename="../../util.cpp" line="704"/>
<location filename="../../util.cpp" line="709"/>
<source>What you set here will appear at your fader on the mixer board when you are connected to a </source>
<translation>O que definir aqui aparecerá por baixo do seu fader na secção de mistura quando estiver ligado a um servidor </translation>
</message>
<message>
<location filename="../../util.cpp" line="969"/>
<location filename="../../util.cpp" line="974"/>
<source>Drum Set</source>
<translation>Bateria</translation>
</message>
<message>
<location filename="../../util.cpp" line="970"/>
<location filename="../../util.cpp" line="975"/>
<source>Djembe</source>
<translation>Djembe</translation>
</message>
<message>
<location filename="../../util.cpp" line="971"/>
<location filename="../../util.cpp" line="976"/>
<source>Electric Guitar</source>
<translation>Guitarra Elétrica</translation>
</message>
<message>
<location filename="../../util.cpp" line="972"/>
<location filename="../../util.cpp" line="977"/>
<source>Acoustic Guitar</source>
<translation>Guitarra Acústica</translation>
</message>
<message>
<location filename="../../util.cpp" line="973"/>
<location filename="../../util.cpp" line="978"/>
<source>Bass Guitar</source>
<translation>Baixo</translation>
</message>
<message>
<location filename="../../util.cpp" line="974"/>
<location filename="../../util.cpp" line="979"/>
<source>Keyboard</source>
<translation>Teclado</translation>
</message>
<message>
<location filename="../../util.cpp" line="975"/>
<location filename="../../util.cpp" line="980"/>
<source>Synthesizer</source>
<translation>Sintetizador</translation>
</message>
<message>
<location filename="../../util.cpp" line="976"/>
<location filename="../../util.cpp" line="981"/>
<source>Grand Piano</source>
<translation>Piano de Cauda</translation>
</message>
<message>
<location filename="../../util.cpp" line="977"/>
<location filename="../../util.cpp" line="982"/>
<source>Accordion</source>
<translation>Acordeão</translation>
</message>
<message>
<location filename="../../util.cpp" line="978"/>
<location filename="../../util.cpp" line="983"/>
<source>Vocal</source>
<translation>Voz</translation>
</message>
<message>
<location filename="../../util.cpp" line="979"/>
<location filename="../../util.cpp" line="984"/>
<source>Microphone</source>
<translation>Microfone</translation>
</message>
<message>
<location filename="../../util.cpp" line="980"/>
<location filename="../../util.cpp" line="985"/>
<source>Harmonica</source>
<translation>Harmónica</translation>
</message>
<message>
<location filename="../../util.cpp" line="981"/>
<location filename="../../util.cpp" line="986"/>
<source>Trumpet</source>
<translation>Trompete</translation>
</message>
<message>
<location filename="../../util.cpp" line="982"/>
<location filename="../../util.cpp" line="987"/>
<source>Trombone</source>
<translation>Trombone</translation>
</message>
<message>
<location filename="../../util.cpp" line="983"/>
<location filename="../../util.cpp" line="988"/>
<source>French Horn</source>
<translation>Trompa Francesa</translation>
</message>
<message>
<location filename="../../util.cpp" line="984"/>
<location filename="../../util.cpp" line="989"/>
<source>Tuba</source>
<translation>Tuba</translation>
</message>
<message>
<location filename="../../util.cpp" line="985"/>
<location filename="../../util.cpp" line="990"/>
<source>Saxophone</source>
<translation>Saxofone</translation>
</message>
<message>
<location filename="../../util.cpp" line="986"/>
<location filename="../../util.cpp" line="991"/>
<source>Clarinet</source>
<translation>Clarinete</translation>
</message>
<message>
<location filename="../../util.cpp" line="987"/>
<location filename="../../util.cpp" line="992"/>
<source>Flute</source>
<translation>Flauta</translation>
</message>
<message>
<location filename="../../util.cpp" line="988"/>
<location filename="../../util.cpp" line="993"/>
<source>Violin</source>
<translation>Violino</translation>
</message>
<message>
<location filename="../../util.cpp" line="989"/>
<location filename="../../util.cpp" line="994"/>
<source>Cello</source>
<translation>Violoncelo</translation>
</message>
<message>
<location filename="../../util.cpp" line="990"/>
<location filename="../../util.cpp" line="995"/>
<source>Double Bass</source>
<translation>Contrabaixo</translation>
</message>
<message>
<location filename="../../util.cpp" line="991"/>
<location filename="../../util.cpp" line="996"/>
<source>Recorder</source>
<translation>Gravador</translation>
</message>
<message>
<location filename="../../util.cpp" line="992"/>
<location filename="../../util.cpp" line="997"/>
<source>Streamer</source>
<translation>Streamer</translation>
</message>
<message>
<location filename="../../util.cpp" line="993"/>
<location filename="../../util.cpp" line="998"/>
<source>Listener</source>
<translation>Ouvinte</translation>
</message>
<message>
<location filename="../../util.cpp" line="994"/>
<location filename="../../util.cpp" line="999"/>
<source>Guitar+Vocal</source>
<translation>Guitarra+Voz</translation>
</message>
<message>
<location filename="../../util.cpp" line="995"/>
<location filename="../../util.cpp" line="1000"/>
<source>Keyboard+Vocal</source>
<translation>Teclado+Voz</translation>
</message>
<message>
<location filename="../../util.cpp" line="996"/>
<location filename="../../util.cpp" line="1001"/>
<source>Bodhran</source>
<translation>Bodhrán</translation>
</message>
<message>
<location filename="../../util.cpp" line="997"/>
<location filename="../../util.cpp" line="1002"/>
<source>Bassoon</source>
<translation>Fagote</translation>
</message>
<message>
<location filename="../../util.cpp" line="998"/>
<location filename="../../util.cpp" line="1003"/>
<source>Oboe</source>
<translation>Oboé</translation>
</message>
<message>
<location filename="../../util.cpp" line="999"/>
<location filename="../../util.cpp" line="1004"/>
<source>Harp</source>
<translation>Harpa</translation>
</message>
<message>
<location filename="../../util.cpp" line="1000"/>
<location filename="../../util.cpp" line="1005"/>
<source>Viola</source>
<translation>Viola de Arco</translation>
</message>
<message>
<location filename="../../util.cpp" line="1001"/>
<location filename="../../util.cpp" line="1006"/>
<source>Congas</source>
<translation type="unfinished"></translation>
<translation>Congas</translation>
</message>
<message>
<location filename="../../util.cpp" line="1002"/>
<location filename="../../util.cpp" line="1007"/>
<source>Bongo</source>
<translation type="unfinished"></translation>
<translation>Bongo</translation>
</message>
</context>
<context>
@ -2031,19 +2066,21 @@
<translation> </translation>
</message>
<message>
<location filename="../../serverdlg.cpp" line="191"/>
<location filename="../../serverdlg.cpp" line="525"/>
<source>Predefined Address</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Manual</source>
<translation>Manual</translation>
<translation type="vanished">Manual</translation>
</message>
<message>
<location filename="../../serverdlg.cpp" line="192"/>
<source>Default</source>
<translation>Servidor Padrão</translation>
<translation type="vanished">Servidor Padrão</translation>
</message>
<message>
<location filename="../../serverdlg.cpp" line="193"/>
<source>Default (North America)</source>
<translation>Servidor Padrão (America do Norte)</translation>
<translation type="vanished">Servidor Padrão (America do Norte)</translation>
</message>
<message>
<location filename="../../serverdlg.cpp" line="271"/>
@ -2056,42 +2093,42 @@
<translation>&amp;Janela</translation>
</message>
<message>
<location filename="../../util.h" line="593"/>
<location filename="../../util.h" line="607"/>
<source>Unregistered</source>
<translation>Não Registado</translation>
</message>
<message>
<location filename="../../util.h" line="596"/>
<location filename="../../util.h" line="610"/>
<source>Bad address</source>
<translation>Endereço incorrecto</translation>
</message>
<message>
<location filename="../../util.h" line="599"/>
<location filename="../../util.h" line="613"/>
<source>Registration requested</source>
<translation>Registo solicitado</translation>
</message>
<message>
<location filename="../../util.h" line="602"/>
<location filename="../../util.h" line="616"/>
<source>Registration failed</source>
<translation>Falha no registo</translation>
</message>
<message>
<location filename="../../util.h" line="605"/>
<location filename="../../util.h" line="619"/>
<source>Check server version</source>
<translation>Verifique versão do servidor</translation>
</message>
<message>
<location filename="../../util.h" line="608"/>
<location filename="../../util.h" line="622"/>
<source>Registered</source>
<translation>Registado</translation>
</message>
<message>
<location filename="../../util.h" line="611"/>
<location filename="../../util.h" line="625"/>
<source>Central Server full</source>
<translation>Servidor Central Cheio</translation>
</message>
<message>
<location filename="../../util.h" line="614"/>
<location filename="../../util.h" line="628"/>
<source>Unknown value </source>
<translation>Valor desconhecido </translation>
</message>
@ -2292,7 +2329,7 @@
<message>
<location filename="../../../android/sound.cpp" line="137"/>
<source>Error closing stream: $s</source>
<translation type="unfinished"></translation>
<translation>Erro ao fechar o stream: $s</translation>
</message>
</context>
<context>
@ -2343,4 +2380,12 @@
<translation> não pôde ser iniciado devido a problemas na interface de áudio.</translation>
</message>
</context>
<context>
<name>global</name>
<message>
<location filename="../../global.h" line="234"/>
<source>For more information use the What&apos;s This help (help menu, right mouse button or Shift+F1)</source>
<translation>Para mais informações, use O que é isto (menu Ajuda, botão direito do rato ou Shift + F1)</translation>
</message>
</context>
</TS>

View File

@ -11,6 +11,9 @@
<qresource prefix="/translations" lang="es">
<file alias="translation.qm">res/translation/translation_es_ES.qm</file>
</qresource>
<qresource prefix="/translations" lang="nl">
<file alias="translation.qm">res/translation/translation_nl_NL.qm</file>
</qresource>
<qresource prefix="/png/LEDs">
<file>res/CLEDDisabledSmall.png</file>
<file>res/CLEDGreenArrow.png</file>

View File

@ -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<MAX_NUM_CHANNELS>();
#else
// CODE TAG: MAX_NUM_CHANNELS_TAG
// make sure we have MAX_NUM_CHANNELS connections!!!
// send message
QObject::connect ( &vecChannels[0], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh0 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[1], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh1 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[2], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh2 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[3], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh3 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[4], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh4 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[5], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh5 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[6], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh6 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[7], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh7 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[8], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh8 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[9], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh9 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[10], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh10 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[11], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh11 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[12], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh12 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[13], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh13 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[14], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh14 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[15], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh15 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[16], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh16 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[17], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh17 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[18], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh18 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[19], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh19 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[20], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh20 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[21], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh21 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[22], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh22 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[23], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh23 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[24], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh24 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[25], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh25 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[26], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh26 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[27], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh27 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[28], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh28 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[29], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh29 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[30], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh30 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[31], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh31 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[32], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh32 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[33], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh33 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[34], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh34 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[35], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh35 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[36], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh36 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[37], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh37 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[38], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh38 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[39], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh39 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[40], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh40 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[41], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh41 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[42], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh42 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[43], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh43 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[44], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh44 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[45], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh45 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[46], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh46 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[47], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh47 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[48], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh48 ( CVector<uint8_t> ) ) );
QObject::connect ( &vecChannels[49], SIGNAL ( MessReadyForSending ( CVector<uint8_t> ) ), this, SLOT ( OnSendProtMessCh49 ( CVector<uint8_t> ) ) );
// 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<unsigned int slotId>
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<slotId - 1>();
};
@ -800,8 +532,6 @@ void CServer::CreateAndSendJitBufMessage ( const int iCurChanID,
vecChannels[iCurChanID].CreateJitBufMes ( iNNumFra );
}
#endif
void CServer::SendProtMessage ( int iChID, CVector<uint8_t> 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()

View File

@ -117,8 +117,6 @@ signals:
};
#endif
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
template<unsigned int slotId>
class CServerSlots : public CServerSlots<slotId - 1>
{
@ -153,12 +151,6 @@ protected:
template<>
class CServerSlots<0> {};
#else
template<unsigned int slotId>
class CServerSlots {};
#endif
class CServer :
public QObject,
public CServerSlots<MAX_NUM_CHANNELS>
@ -258,9 +250,9 @@ protected:
int GetNumberOfConnectedClients();
CVector<CChannelInfo> 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<unsigned int slotId>
inline void connectChannelSignalsToServerSlots();
#else
void CreateAndSendChanListForAllConChannels();
void CreateAndSendChanListForThisChan ( const int iCurChanID );
void CreateAndSendChatTextForAllConChannels ( const int iCurChanID,
const QString& strChatText );
void SendProtMessage ( int iChID,
CVector<uint8_t> vecMessage );
#endif
void WriteHTMLChannelList();
void ProcessData ( const CVector<CVector<int16_t> >& vecvecsData,
@ -305,6 +286,8 @@ protected:
const CVector<CVector<int16_t> > vecvecsData,
CVector<uint16_t>& 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<int16_t> 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<uint8_t> mess ) { SendProtMessage ( 0, mess ); }
void OnSendProtMessCh1 ( CVector<uint8_t> mess ) { SendProtMessage ( 1, mess ); }
void OnSendProtMessCh2 ( CVector<uint8_t> mess ) { SendProtMessage ( 2, mess ); }
void OnSendProtMessCh3 ( CVector<uint8_t> mess ) { SendProtMessage ( 3, mess ); }
void OnSendProtMessCh4 ( CVector<uint8_t> mess ) { SendProtMessage ( 4, mess ); }
void OnSendProtMessCh5 ( CVector<uint8_t> mess ) { SendProtMessage ( 5, mess ); }
void OnSendProtMessCh6 ( CVector<uint8_t> mess ) { SendProtMessage ( 6, mess ); }
void OnSendProtMessCh7 ( CVector<uint8_t> mess ) { SendProtMessage ( 7, mess ); }
void OnSendProtMessCh8 ( CVector<uint8_t> mess ) { SendProtMessage ( 8, mess ); }
void OnSendProtMessCh9 ( CVector<uint8_t> mess ) { SendProtMessage ( 9, mess ); }
void OnSendProtMessCh10 ( CVector<uint8_t> mess ) { SendProtMessage ( 10, mess ); }
void OnSendProtMessCh11 ( CVector<uint8_t> mess ) { SendProtMessage ( 11, mess ); }
void OnSendProtMessCh12 ( CVector<uint8_t> mess ) { SendProtMessage ( 12, mess ); }
void OnSendProtMessCh13 ( CVector<uint8_t> mess ) { SendProtMessage ( 13, mess ); }
void OnSendProtMessCh14 ( CVector<uint8_t> mess ) { SendProtMessage ( 14, mess ); }
void OnSendProtMessCh15 ( CVector<uint8_t> mess ) { SendProtMessage ( 15, mess ); }
void OnSendProtMessCh16 ( CVector<uint8_t> mess ) { SendProtMessage ( 16, mess ); }
void OnSendProtMessCh17 ( CVector<uint8_t> mess ) { SendProtMessage ( 17, mess ); }
void OnSendProtMessCh18 ( CVector<uint8_t> mess ) { SendProtMessage ( 18, mess ); }
void OnSendProtMessCh19 ( CVector<uint8_t> mess ) { SendProtMessage ( 19, mess ); }
void OnSendProtMessCh20 ( CVector<uint8_t> mess ) { SendProtMessage ( 20, mess ); }
void OnSendProtMessCh21 ( CVector<uint8_t> mess ) { SendProtMessage ( 21, mess ); }
void OnSendProtMessCh22 ( CVector<uint8_t> mess ) { SendProtMessage ( 22, mess ); }
void OnSendProtMessCh23 ( CVector<uint8_t> mess ) { SendProtMessage ( 23, mess ); }
void OnSendProtMessCh24 ( CVector<uint8_t> mess ) { SendProtMessage ( 24, mess ); }
void OnSendProtMessCh25 ( CVector<uint8_t> mess ) { SendProtMessage ( 25, mess ); }
void OnSendProtMessCh26 ( CVector<uint8_t> mess ) { SendProtMessage ( 26, mess ); }
void OnSendProtMessCh27 ( CVector<uint8_t> mess ) { SendProtMessage ( 27, mess ); }
void OnSendProtMessCh28 ( CVector<uint8_t> mess ) { SendProtMessage ( 28, mess ); }
void OnSendProtMessCh29 ( CVector<uint8_t> mess ) { SendProtMessage ( 29, mess ); }
void OnSendProtMessCh30 ( CVector<uint8_t> mess ) { SendProtMessage ( 30, mess ); }
void OnSendProtMessCh31 ( CVector<uint8_t> mess ) { SendProtMessage ( 31, mess ); }
void OnSendProtMessCh32 ( CVector<uint8_t> mess ) { SendProtMessage ( 32, mess ); }
void OnSendProtMessCh33 ( CVector<uint8_t> mess ) { SendProtMessage ( 33, mess ); }
void OnSendProtMessCh34 ( CVector<uint8_t> mess ) { SendProtMessage ( 34, mess ); }
void OnSendProtMessCh35 ( CVector<uint8_t> mess ) { SendProtMessage ( 35, mess ); }
void OnSendProtMessCh36 ( CVector<uint8_t> mess ) { SendProtMessage ( 36, mess ); }
void OnSendProtMessCh37 ( CVector<uint8_t> mess ) { SendProtMessage ( 37, mess ); }
void OnSendProtMessCh38 ( CVector<uint8_t> mess ) { SendProtMessage ( 38, mess ); }
void OnSendProtMessCh39 ( CVector<uint8_t> mess ) { SendProtMessage ( 39, mess ); }
void OnSendProtMessCh40 ( CVector<uint8_t> mess ) { SendProtMessage ( 40, mess ); }
void OnSendProtMessCh41 ( CVector<uint8_t> mess ) { SendProtMessage ( 41, mess ); }
void OnSendProtMessCh42 ( CVector<uint8_t> mess ) { SendProtMessage ( 42, mess ); }
void OnSendProtMessCh43 ( CVector<uint8_t> mess ) { SendProtMessage ( 43, mess ); }
void OnSendProtMessCh44 ( CVector<uint8_t> mess ) { SendProtMessage ( 44, mess ); }
void OnSendProtMessCh45 ( CVector<uint8_t> mess ) { SendProtMessage ( 45, mess ); }
void OnSendProtMessCh46 ( CVector<uint8_t> mess ) { SendProtMessage ( 46, mess ); }
void OnSendProtMessCh47 ( CVector<uint8_t> mess ) { SendProtMessage ( 47, mess ); }
void OnSendProtMessCh48 ( CVector<uint8_t> mess ) { SendProtMessage ( 48, mess ); }
void OnSendProtMessCh49 ( CVector<uint8_t> 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 );
};

View File

@ -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<int> ( 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
{

View File

@ -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<ECSAddType> ( 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<ECSAddType> ( iValue ) );
}

View File

@ -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<CSignalWin>();
QReadLocker lock ( self->getLock() );
return self->pSignalHandler->emitSignal ( static_cast<int>( 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 );
}

View File

@ -104,7 +104,7 @@ public slots:
#endif
signals:
void ShutdownSignal ( int sigNum );
void HandledSignal ( int sigNum );
private:
QScopedPointer<CSignalBase> pSignalBase;
@ -153,7 +153,7 @@ public:
private:
mutable QReadWriteLock lock;
static BOOL WINAPI signalHandler ( _In_ DWORD sigNum );
static BOOL WINAPI signalHandler ( _In_ DWORD );
};
#else

View File

@ -399,17 +399,22 @@ CAboutDlg::CAboutDlg ( QWidget* parent ) : QDialog ( parent )
"<p>Jos van den Oever (<a href=""https://github.com/vandenoever"">vandenoever</a>)</p>"
"<p>Tormod Volden (<a href=""https://github.com/tormodvolden"">tormodvolden</a>)</p>"
"<p>Stanislas Michalak (<a href=""https://github.com/stanislas-m"">stanislas-m</a>)</p>"
"<p>JP Cimalando (<a href=""https://github.com/jpcima"">jpcima</a>)</p>"
"<br>" + tr ( "For details on the contributions check out the " ) +
"<a href=""https://github.com/corrados/jamulus/graphs/contributors"">" + tr ( "Github Contributors list" ) + "</a>." );
// translators
txvTranslation->setText (
"<p><b>Spanish</b></p>"
"<p><b>" + tr ( "Spanish" ) + "</b></p>"
"<p>Daryl Hanlon (<a href=""https://github.com/ignotus666"">ignotus666</a>)</p>"
"<p><b>French</b></p>"
"<p><b>" + tr ( "French" ) + "</b></p>"
"<p>Olivier Humbert (<a href=""https://github.com/trebmuh"">trebmuh</a>)</p>"
"<p><b>Portuguese</b></p>"
"<p>Miguel de Matos (<a href=""https://github.com/Snayler"">Snayler</a>)</p>" );
"<p><b>" + tr ( "Portuguese" ) + "</b></p>"
"<p>Miguel de Matos (<a href=""https://github.com/Snayler"">Snayler</a>)</p>"
"<p><b>" + tr ( "Dutch" ) + "</b></p>"
"<p>Jeroen Geertzen (<a href=""https://github.com/jerogee"">jerogee</a>)</p>"
"<p><b>" + tr ( "German" ) + "</b></p>"
"<p>Volker Fischer (<a href=""https://github.com/corrados"">corrados</a>)</p>" );
// 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;

View File

@ -39,9 +39,7 @@
#include <QDesktopServices>
#include <QUrl>
#include <QLocale>
#if QT_VERSION >= QT_VERSION_CHECK(4, 7, 0)
# include <QElapsedTimer>
#endif
#include <QElapsedTimer>
#include <vector>
#include <algorithm>
#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
/******************************************************************************\