From 33d6b9db68a6ead7677d46448c735bf232452fe7 Mon Sep 17 00:00:00 2001 From: Olivier Humbert Date: Sun, 17 May 2020 19:34:04 +0200 Subject: [PATCH 1/8] French translation update --- src/res/translation/translation_fr_FR.ts | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/res/translation/translation_fr_FR.ts b/src/res/translation/translation_fr_FR.ts index a2a9fd20..ff143b50 100644 --- a/src/res/translation/translation_fr_FR.ts +++ b/src/res/translation/translation_fr_FR.ts @@ -192,7 +192,7 @@ Personal Mix at the Server: - + Mixage personnel au serveur : @@ -1163,22 +1163,22 @@ Custom - + Personnalisé All Genres - + Tous les genres Genre Rock - + Genre Rock Genre Jazz - + Genre Jazz @@ -1187,7 +1187,7 @@ Default (North America) - Défault (Amérique du Nord) + Défaut (Amérique du Nord) @@ -1482,7 +1482,7 @@ List - + Liste @@ -1935,22 +1935,22 @@ Vocal Bass - + Voix basse Vocal Tenor - + Voix ténor Vocal Alto - + Voix alto Vocal Soprano - + Voix soprano @@ -2395,7 +2395,7 @@ Please restart the software. - + Veuillez redémarrer le logiciel From 27602468b9d8a15dd5c29d1e89a48ac5477eb78b Mon Sep 17 00:00:00 2001 From: Olivier Humbert Date: Sun, 17 May 2020 23:22:07 +0200 Subject: [PATCH 2/8] French translation update --- src/res/translation/translation_fr_FR.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/res/translation/translation_fr_FR.ts b/src/res/translation/translation_fr_FR.ts index ff143b50..15c49444 100644 --- a/src/res/translation/translation_fr_FR.ts +++ b/src/res/translation/translation_fr_FR.ts @@ -2250,7 +2250,7 @@ The Jack server is not running. This software requires a Jack server to run. Normally if the Jack server is not running this software will automatically start the Jack server. It seems that this auto start has not worked. Try to start the Jack server manually. - + Le serveur Jack n'est pas démarré. Ce logiciel nécessite un serveur Jack pour fonctionner. Normalement, si le serveur Jack n'est pas en cours d'exécution, ce logiciel démarrera automatiquement le serveur Jack. Il semble que ce démarrage automatique n'ait pas fonctionné. Essayez de démarrer le serveur Jack manuellement. From 59501c5f229531ab91dabf08cb4a1f6907df204f Mon Sep 17 00:00:00 2001 From: Olivier Humbert Date: Mon, 18 May 2020 00:27:32 +0200 Subject: [PATCH 3/8] update debian packaging --- distributions/debian/control | 3 --- 1 file changed, 3 deletions(-) diff --git a/distributions/debian/control b/distributions/debian/control index 10809972..9f198a9c 100644 --- a/distributions/debian/control +++ b/distributions/debian/control @@ -23,9 +23,6 @@ Depends: ${shlibs:Depends}, ${misc:Depends}, adduser, - jackd, - qt5-default, - qtchooser, Description: Low latency Audio Server/Client The Jamulus software enables musicians to perform real-time jam sessions over the internet. There is one server running the Jamulus server software which From 38fcf96ec9a517fb18e2b5f6ff74de83a4b02434 Mon Sep 17 00:00:00 2001 From: ignotus Date: Mon, 18 May 2020 10:12:22 +0200 Subject: [PATCH 4/8] Spanish translation update --- src/res/translation/translation_es_ES.ts | 26 ++++++++++++------------ 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/res/translation/translation_es_ES.ts b/src/res/translation/translation_es_ES.ts index 79c75f2c..219b825c 100644 --- a/src/res/translation/translation_es_ES.ts +++ b/src/res/translation/translation_es_ES.ts @@ -184,7 +184,7 @@ Personal Mix at the Server: - + Mezcla Personal en el Servidor: @@ -645,7 +645,7 @@ Central Server - + Servidor Central @@ -1155,22 +1155,22 @@ Custom - + Customizado All Genres - + Todos los Géneros Genre Rock - + Género Rock Genre Jazz - + Género Jazz @@ -1205,7 +1205,7 @@ Predefined Address - + Dirección Preestablecida @@ -1478,7 +1478,7 @@ List - + Lista @@ -1931,22 +1931,22 @@ Vocal Bass - + Voz bajo Vocal Tenor - + Voz Tenor Vocal Alto - + Voz Alto Vocal Soprano - + Voz Soprano @@ -2112,7 +2112,7 @@ Predefined Address - + Dirección Preestablecida Manual From df52fc80e017e60c70d29b31ae907582abe591fe Mon Sep 17 00:00:00 2001 From: ignotus Date: Mon, 18 May 2020 10:26:39 +0200 Subject: [PATCH 5/8] Correction --- src/res/translation/translation_es_ES.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/res/translation/translation_es_ES.ts b/src/res/translation/translation_es_ES.ts index 219b825c..f57e21b6 100644 --- a/src/res/translation/translation_es_ES.ts +++ b/src/res/translation/translation_es_ES.ts @@ -1155,7 +1155,7 @@ Custom - Customizado + Personalizado From a42302393f83394076fdadeafc8504441fa7f655 Mon Sep 17 00:00:00 2001 From: Volker Fischer Date: Mon, 18 May 2020 17:54:49 +0200 Subject: [PATCH 6/8] remove the "instr" from the instrument picture names since it is no longer needed because all pictures are now in a separate instrument directory --- Jamulus.pro | 56 +++++++++--------- .../{instraccordeon.png => accordeon.png} | Bin .../{instraguitar.png => aguitar.png} | Bin .../{instrbassguitar.png => bassguitar.png} | Bin .../instruments/{instrcello.png => cello.png} | Bin .../{instrclarinet.png => clarinet.png} | Bin .../{instrdjembe.png => djembe.png} | Bin .../{instrdoublebass.png => doublebass.png} | Bin .../{instrdrumset.png => drumset.png} | Bin .../{instreguitar.png => eguitar.png} | Bin .../instruments/{instrflute.png => flute.png} | Bin .../{instrfrenchhorn.png => frenchhorn.png} | Bin .../{instrgrandpiano.png => grandpiano.png} | Bin .../{instrguitarvocal.png => guitarvocal.png} | Bin .../{instrharmonica.png => harmonica.png} | Bin .../{instrkeyboard.png => keyboard.png} | Bin ...strkeyboardvocal.png => keyboardvocal.png} | Bin .../{instrlistener.png => listener.png} | Bin .../{instrmicrophone.png => microphone.png} | Bin .../instruments/{instrnone.png => none.png} | Bin .../{instrrecorder.png => recorder.png} | Bin .../{instrsaxophone.png => saxophone.png} | Bin .../{instrstreamer.png => streamer.png} | Bin .../{instrsynthesizer.png => synthesizer.png} | Bin .../{instrtrombone.png => trombone.png} | Bin .../{instrtrumpet.png => trumpet.png} | Bin .../instruments/{instrtuba.png => tuba.png} | Bin .../{instrviolin.png => violin.png} | Bin .../instruments/{instrvocal.png => vocal.png} | Bin src/resources.qrc | 56 +++++++++--------- src/util.cpp | 56 +++++++++--------- 31 files changed, 84 insertions(+), 84 deletions(-) rename src/res/instruments/{instraccordeon.png => accordeon.png} (100%) rename src/res/instruments/{instraguitar.png => aguitar.png} (100%) rename src/res/instruments/{instrbassguitar.png => bassguitar.png} (100%) rename src/res/instruments/{instrcello.png => cello.png} (100%) rename src/res/instruments/{instrclarinet.png => clarinet.png} (100%) rename src/res/instruments/{instrdjembe.png => djembe.png} (100%) rename src/res/instruments/{instrdoublebass.png => doublebass.png} (100%) rename src/res/instruments/{instrdrumset.png => drumset.png} (100%) rename src/res/instruments/{instreguitar.png => eguitar.png} (100%) rename src/res/instruments/{instrflute.png => flute.png} (100%) rename src/res/instruments/{instrfrenchhorn.png => frenchhorn.png} (100%) rename src/res/instruments/{instrgrandpiano.png => grandpiano.png} (100%) rename src/res/instruments/{instrguitarvocal.png => guitarvocal.png} (100%) rename src/res/instruments/{instrharmonica.png => harmonica.png} (100%) rename src/res/instruments/{instrkeyboard.png => keyboard.png} (100%) rename src/res/instruments/{instrkeyboardvocal.png => keyboardvocal.png} (100%) rename src/res/instruments/{instrlistener.png => listener.png} (100%) rename src/res/instruments/{instrmicrophone.png => microphone.png} (100%) rename src/res/instruments/{instrnone.png => none.png} (100%) rename src/res/instruments/{instrrecorder.png => recorder.png} (100%) rename src/res/instruments/{instrsaxophone.png => saxophone.png} (100%) rename src/res/instruments/{instrstreamer.png => streamer.png} (100%) rename src/res/instruments/{instrsynthesizer.png => synthesizer.png} (100%) rename src/res/instruments/{instrtrombone.png => trombone.png} (100%) rename src/res/instruments/{instrtrumpet.png => trumpet.png} (100%) rename src/res/instruments/{instrtuba.png => tuba.png} (100%) rename src/res/instruments/{instrviolin.png => violin.png} (100%) rename src/res/instruments/{instrvocal.png => vocal.png} (100%) diff --git a/Jamulus.pro b/Jamulus.pro index 66da708f..164258c3 100755 --- a/Jamulus.pro +++ b/Jamulus.pro @@ -678,34 +678,34 @@ DISTFILES += ChangeLog \ src/res/VRLEDRedSmall.png \ src/res/VRLEDYellow.png \ src/res/VRLEDYellowSmall.png \ - src/res/instruments/instraccordeon.png \ - src/res/instruments/instraguitar.png \ - src/res/instruments/instrbassguitar.png \ - src/res/instruments/instrcello.png \ - src/res/instruments/instrclarinet.png \ - src/res/instruments/instrdjembe.png \ - src/res/instruments/instrdoublebass.png \ - src/res/instruments/instrdrumset.png \ - src/res/instruments/instreguitar.png \ - src/res/instruments/instrflute.png \ - src/res/instruments/instrfrenchhorn.png \ - src/res/instruments/instrgrandpiano.png \ - src/res/instruments/instrharmonica.png \ - src/res/instruments/instrkeyboard.png \ - src/res/instruments/instrlistener.png \ - src/res/instruments/instrmicrophone.png \ - src/res/instruments/instrnone.png \ - src/res/instruments/instrrecorder.png \ - src/res/instruments/instrsaxophone.png \ - src/res/instruments/instrstreamer.png \ - src/res/instruments/instrsynthesizer.png \ - src/res/instruments/instrtrombone.png \ - src/res/instruments/instrtrumpet.png \ - src/res/instruments/instrtuba.png \ - src/res/instruments/instrviolin.png \ - src/res/instruments/instrvocal.png \ - src/res/instruments/instrguitarvocal.png \ - src/res/instruments/instrkeyboardvocal.png \ + src/res/instruments/accordeon.png \ + src/res/instruments/aguitar.png \ + src/res/instruments/bassguitar.png \ + src/res/instruments/cello.png \ + src/res/instruments/clarinet.png \ + src/res/instruments/djembe.png \ + src/res/instruments/doublebass.png \ + src/res/instruments/drumset.png \ + src/res/instruments/eguitar.png \ + src/res/instruments/flute.png \ + src/res/instruments/frenchhorn.png \ + src/res/instruments/grandpiano.png \ + src/res/instruments/harmonica.png \ + src/res/instruments/keyboard.png \ + src/res/instruments/listener.png \ + src/res/instruments/microphone.png \ + src/res/instruments/none.png \ + src/res/instruments/recorder.png \ + src/res/instruments/saxophone.png \ + src/res/instruments/streamer.png \ + src/res/instruments/synthesizer.png \ + src/res/instruments/trombone.png \ + src/res/instruments/trumpet.png \ + src/res/instruments/tuba.png \ + src/res/instruments/violin.png \ + src/res/instruments/vocal.png \ + src/res/instruments/guitarvocal.png \ + src/res/instruments/keyboardvocal.png \ src/res/instruments/bodhran.svg \ src/res/instruments/bodhran.png \ src/res/instruments/bassoon.svg \ diff --git a/src/res/instruments/instraccordeon.png b/src/res/instruments/accordeon.png similarity index 100% rename from src/res/instruments/instraccordeon.png rename to src/res/instruments/accordeon.png diff --git a/src/res/instruments/instraguitar.png b/src/res/instruments/aguitar.png similarity index 100% rename from src/res/instruments/instraguitar.png rename to src/res/instruments/aguitar.png diff --git a/src/res/instruments/instrbassguitar.png b/src/res/instruments/bassguitar.png similarity index 100% rename from src/res/instruments/instrbassguitar.png rename to src/res/instruments/bassguitar.png diff --git a/src/res/instruments/instrcello.png b/src/res/instruments/cello.png similarity index 100% rename from src/res/instruments/instrcello.png rename to src/res/instruments/cello.png diff --git a/src/res/instruments/instrclarinet.png b/src/res/instruments/clarinet.png similarity index 100% rename from src/res/instruments/instrclarinet.png rename to src/res/instruments/clarinet.png diff --git a/src/res/instruments/instrdjembe.png b/src/res/instruments/djembe.png similarity index 100% rename from src/res/instruments/instrdjembe.png rename to src/res/instruments/djembe.png diff --git a/src/res/instruments/instrdoublebass.png b/src/res/instruments/doublebass.png similarity index 100% rename from src/res/instruments/instrdoublebass.png rename to src/res/instruments/doublebass.png diff --git a/src/res/instruments/instrdrumset.png b/src/res/instruments/drumset.png similarity index 100% rename from src/res/instruments/instrdrumset.png rename to src/res/instruments/drumset.png diff --git a/src/res/instruments/instreguitar.png b/src/res/instruments/eguitar.png similarity index 100% rename from src/res/instruments/instreguitar.png rename to src/res/instruments/eguitar.png diff --git a/src/res/instruments/instrflute.png b/src/res/instruments/flute.png similarity index 100% rename from src/res/instruments/instrflute.png rename to src/res/instruments/flute.png diff --git a/src/res/instruments/instrfrenchhorn.png b/src/res/instruments/frenchhorn.png similarity index 100% rename from src/res/instruments/instrfrenchhorn.png rename to src/res/instruments/frenchhorn.png diff --git a/src/res/instruments/instrgrandpiano.png b/src/res/instruments/grandpiano.png similarity index 100% rename from src/res/instruments/instrgrandpiano.png rename to src/res/instruments/grandpiano.png diff --git a/src/res/instruments/instrguitarvocal.png b/src/res/instruments/guitarvocal.png similarity index 100% rename from src/res/instruments/instrguitarvocal.png rename to src/res/instruments/guitarvocal.png diff --git a/src/res/instruments/instrharmonica.png b/src/res/instruments/harmonica.png similarity index 100% rename from src/res/instruments/instrharmonica.png rename to src/res/instruments/harmonica.png diff --git a/src/res/instruments/instrkeyboard.png b/src/res/instruments/keyboard.png similarity index 100% rename from src/res/instruments/instrkeyboard.png rename to src/res/instruments/keyboard.png diff --git a/src/res/instruments/instrkeyboardvocal.png b/src/res/instruments/keyboardvocal.png similarity index 100% rename from src/res/instruments/instrkeyboardvocal.png rename to src/res/instruments/keyboardvocal.png diff --git a/src/res/instruments/instrlistener.png b/src/res/instruments/listener.png similarity index 100% rename from src/res/instruments/instrlistener.png rename to src/res/instruments/listener.png diff --git a/src/res/instruments/instrmicrophone.png b/src/res/instruments/microphone.png similarity index 100% rename from src/res/instruments/instrmicrophone.png rename to src/res/instruments/microphone.png diff --git a/src/res/instruments/instrnone.png b/src/res/instruments/none.png similarity index 100% rename from src/res/instruments/instrnone.png rename to src/res/instruments/none.png diff --git a/src/res/instruments/instrrecorder.png b/src/res/instruments/recorder.png similarity index 100% rename from src/res/instruments/instrrecorder.png rename to src/res/instruments/recorder.png diff --git a/src/res/instruments/instrsaxophone.png b/src/res/instruments/saxophone.png similarity index 100% rename from src/res/instruments/instrsaxophone.png rename to src/res/instruments/saxophone.png diff --git a/src/res/instruments/instrstreamer.png b/src/res/instruments/streamer.png similarity index 100% rename from src/res/instruments/instrstreamer.png rename to src/res/instruments/streamer.png diff --git a/src/res/instruments/instrsynthesizer.png b/src/res/instruments/synthesizer.png similarity index 100% rename from src/res/instruments/instrsynthesizer.png rename to src/res/instruments/synthesizer.png diff --git a/src/res/instruments/instrtrombone.png b/src/res/instruments/trombone.png similarity index 100% rename from src/res/instruments/instrtrombone.png rename to src/res/instruments/trombone.png diff --git a/src/res/instruments/instrtrumpet.png b/src/res/instruments/trumpet.png similarity index 100% rename from src/res/instruments/instrtrumpet.png rename to src/res/instruments/trumpet.png diff --git a/src/res/instruments/instrtuba.png b/src/res/instruments/tuba.png similarity index 100% rename from src/res/instruments/instrtuba.png rename to src/res/instruments/tuba.png diff --git a/src/res/instruments/instrviolin.png b/src/res/instruments/violin.png similarity index 100% rename from src/res/instruments/instrviolin.png rename to src/res/instruments/violin.png diff --git a/src/res/instruments/instrvocal.png b/src/res/instruments/vocal.png similarity index 100% rename from src/res/instruments/instrvocal.png rename to src/res/instruments/vocal.png diff --git a/src/resources.qrc b/src/resources.qrc index c10bebbc..d4fc7491 100755 --- a/src/resources.qrc +++ b/src/resources.qrc @@ -36,34 +36,34 @@ res/mixerboardbackground.png - res/instruments/instrnone.png - res/instruments/instrbassguitar.png - res/instruments/instrclarinet.png - res/instruments/instrdrumset.png - res/instruments/instreguitar.png - res/instruments/instrsaxophone.png - res/instruments/instrtrumpet.png - res/instruments/instrmicrophone.png - res/instruments/instrkeyboard.png - res/instruments/instrviolin.png - res/instruments/instraguitar.png - res/instruments/instrflute.png - res/instruments/instraccordeon.png - res/instruments/instrcello.png - res/instruments/instrtrombone.png - res/instruments/instrfrenchhorn.png - res/instruments/instrtuba.png - res/instruments/instrdoublebass.png - res/instruments/instrgrandpiano.png - res/instruments/instrsynthesizer.png - res/instruments/instrvocal.png - res/instruments/instrdjembe.png - res/instruments/instrharmonica.png - res/instruments/instrrecorder.png - res/instruments/instrlistener.png - res/instruments/instrstreamer.png - res/instruments/instrguitarvocal.png - res/instruments/instrkeyboardvocal.png + res/instruments/none.png + res/instruments/bassguitar.png + res/instruments/clarinet.png + res/instruments/drumset.png + res/instruments/eguitar.png + res/instruments/saxophone.png + res/instruments/trumpet.png + res/instruments/microphone.png + res/instruments/keyboard.png + res/instruments/violin.png + res/instruments/aguitar.png + res/instruments/flute.png + res/instruments/accordeon.png + res/instruments/cello.png + res/instruments/trombone.png + res/instruments/frenchhorn.png + res/instruments/tuba.png + res/instruments/doublebass.png + res/instruments/grandpiano.png + res/instruments/synthesizer.png + res/instruments/vocal.png + res/instruments/djembe.png + res/instruments/harmonica.png + res/instruments/recorder.png + res/instruments/listener.png + res/instruments/streamer.png + res/instruments/guitarvocal.png + res/instruments/keyboardvocal.png res/instruments/bodhran.png res/instruments/bassoon.png res/instruments/oboe.png diff --git a/src/util.cpp b/src/util.cpp index 3dfcfc01..d8ae833c 100755 --- a/src/util.cpp +++ b/src/util.cpp @@ -972,34 +972,34 @@ CVector& CInstPictures::GetTable() // instrument picture data base initialization // NOTE: Do not change the order of any instrument in the future! // NOTE: The very first entry is the "not used" element per definition. - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "None" ), ":/png/instr/res/instruments/instrnone.png", IC_OTHER_INSTRUMENT ) ); // special first element - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Drum Set" ), ":/png/instr/res/instruments/instrdrumset.png", IC_PERCUSSION_INSTRUMENT ) ); - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Djembe" ), ":/png/instr/res/instruments/instrdjembe.png", IC_PERCUSSION_INSTRUMENT ) ); - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Electric Guitar" ), ":/png/instr/res/instruments/instreguitar.png", IC_PLUCKING_INSTRUMENT ) ); - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Acoustic Guitar" ), ":/png/instr/res/instruments/instraguitar.png", IC_PLUCKING_INSTRUMENT ) ); - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Bass Guitar" ), ":/png/instr/res/instruments/instrbassguitar.png", IC_PLUCKING_INSTRUMENT ) ); - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Keyboard" ), ":/png/instr/res/instruments/instrkeyboard.png", IC_KEYBOARD_INSTRUMENT ) ); - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Synthesizer" ), ":/png/instr/res/instruments/instrsynthesizer.png", IC_KEYBOARD_INSTRUMENT ) ); - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Grand Piano" ), ":/png/instr/res/instruments/instrgrandpiano.png", IC_KEYBOARD_INSTRUMENT ) ); - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Accordion" ), ":/png/instr/res/instruments/instraccordeon.png", IC_KEYBOARD_INSTRUMENT ) ); - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Vocal" ), ":/png/instr/res/instruments/instrvocal.png", IC_OTHER_INSTRUMENT ) ); - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Microphone" ), ":/png/instr/res/instruments/instrmicrophone.png", IC_OTHER_INSTRUMENT ) ); - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Harmonica" ), ":/png/instr/res/instruments/instrharmonica.png", IC_WIND_INSTRUMENT ) ); - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Trumpet" ), ":/png/instr/res/instruments/instrtrumpet.png", IC_WIND_INSTRUMENT ) ); - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Trombone" ), ":/png/instr/res/instruments/instrtrombone.png", IC_WIND_INSTRUMENT ) ); - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "French Horn" ), ":/png/instr/res/instruments/instrfrenchhorn.png", IC_WIND_INSTRUMENT ) ); - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Tuba" ), ":/png/instr/res/instruments/instrtuba.png", IC_WIND_INSTRUMENT ) ); - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Saxophone" ), ":/png/instr/res/instruments/instrsaxophone.png", IC_WIND_INSTRUMENT ) ); - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Clarinet" ), ":/png/instr/res/instruments/instrclarinet.png", IC_WIND_INSTRUMENT ) ); - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Flute" ), ":/png/instr/res/instruments/instrflute.png", IC_WIND_INSTRUMENT ) ); - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Violin" ), ":/png/instr/res/instruments/instrviolin.png", IC_STRING_INSTRUMENT ) ); - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Cello" ), ":/png/instr/res/instruments/instrcello.png", IC_STRING_INSTRUMENT ) ); - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Double Bass" ), ":/png/instr/res/instruments/instrdoublebass.png", IC_STRING_INSTRUMENT ) ); - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Recorder" ), ":/png/instr/res/instruments/instrrecorder.png", IC_OTHER_INSTRUMENT ) ); - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Streamer" ), ":/png/instr/res/instruments/instrstreamer.png", IC_OTHER_INSTRUMENT ) ); - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Listener" ), ":/png/instr/res/instruments/instrlistener.png", IC_OTHER_INSTRUMENT ) ); - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Guitar+Vocal" ), ":/png/instr/res/instruments/instrguitarvocal.png", IC_MULTIPLE_INSTRUMENT ) ); - vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Keyboard+Vocal" ), ":/png/instr/res/instruments/instrkeyboardvocal.png", IC_MULTIPLE_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "None" ), ":/png/instr/res/instruments/none.png", IC_OTHER_INSTRUMENT ) ); // special first element + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Drum Set" ), ":/png/instr/res/instruments/drumset.png", IC_PERCUSSION_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Djembe" ), ":/png/instr/res/instruments/djembe.png", IC_PERCUSSION_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Electric Guitar" ), ":/png/instr/res/instruments/eguitar.png", IC_PLUCKING_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Acoustic Guitar" ), ":/png/instr/res/instruments/aguitar.png", IC_PLUCKING_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Bass Guitar" ), ":/png/instr/res/instruments/bassguitar.png", IC_PLUCKING_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Keyboard" ), ":/png/instr/res/instruments/keyboard.png", IC_KEYBOARD_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Synthesizer" ), ":/png/instr/res/instruments/synthesizer.png", IC_KEYBOARD_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Grand Piano" ), ":/png/instr/res/instruments/grandpiano.png", IC_KEYBOARD_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Accordion" ), ":/png/instr/res/instruments/accordeon.png", IC_KEYBOARD_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Vocal" ), ":/png/instr/res/instruments/vocal.png", IC_OTHER_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Microphone" ), ":/png/instr/res/instruments/microphone.png", IC_OTHER_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Harmonica" ), ":/png/instr/res/instruments/harmonica.png", IC_WIND_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Trumpet" ), ":/png/instr/res/instruments/trumpet.png", IC_WIND_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Trombone" ), ":/png/instr/res/instruments/trombone.png", IC_WIND_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "French Horn" ), ":/png/instr/res/instruments/frenchhorn.png", IC_WIND_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Tuba" ), ":/png/instr/res/instruments/tuba.png", IC_WIND_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Saxophone" ), ":/png/instr/res/instruments/saxophone.png", IC_WIND_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Clarinet" ), ":/png/instr/res/instruments/clarinet.png", IC_WIND_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Flute" ), ":/png/instr/res/instruments/flute.png", IC_WIND_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Violin" ), ":/png/instr/res/instruments/violin.png", IC_STRING_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Cello" ), ":/png/instr/res/instruments/cello.png", IC_STRING_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Double Bass" ), ":/png/instr/res/instruments/doublebass.png", IC_STRING_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Recorder" ), ":/png/instr/res/instruments/recorder.png", IC_OTHER_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Streamer" ), ":/png/instr/res/instruments/streamer.png", IC_OTHER_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Listener" ), ":/png/instr/res/instruments/listener.png", IC_OTHER_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Guitar+Vocal" ), ":/png/instr/res/instruments/guitarvocal.png", IC_MULTIPLE_INSTRUMENT ) ); + vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Keyboard+Vocal" ), ":/png/instr/res/instruments/keyboardvocal.png", IC_MULTIPLE_INSTRUMENT ) ); vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Bodhran" ), ":/png/instr/res/instruments/bodhran.png", IC_PERCUSSION_INSTRUMENT ) ); vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Bassoon" ), ":/png/instr/res/instruments/bassoon.png", IC_WIND_INSTRUMENT ) ); vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Oboe" ), ":/png/instr/res/instruments/oboe.png", IC_WIND_INSTRUMENT ) ); From 8724d1443c4fae071aeead0cbb33c6dda659379a Mon Sep 17 00:00:00 2001 From: Volker Fischer Date: Mon, 18 May 2020 18:01:04 +0200 Subject: [PATCH 7/8] updates for German translation --- src/res/translation/translation_de_DE.qm | Bin 91445 -> 92606 bytes src/res/translation/translation_de_DE.ts | 30 +++++++++++------------ src/res/translation/translation_es_ES.qm | Bin 93994 -> 95096 bytes src/res/translation/translation_fr_FR.qm | Bin 84240 -> 86099 bytes 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/res/translation/translation_de_DE.qm b/src/res/translation/translation_de_DE.qm index f7654dd1096759080999dd8ea6f1139b4881fdd8..97eca6ca6ad157af6b705e2f7b6b968e5590fe55 100644 GIT binary patch delta 4364 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 delta 3572 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 diff --git a/src/res/translation/translation_de_DE.ts b/src/res/translation/translation_de_DE.ts index 87c5608d..57aceaec 100644 --- a/src/res/translation/translation_de_DE.ts +++ b/src/res/translation/translation_de_DE.ts @@ -81,12 +81,12 @@ Dutch - + Holländisch German - + Deutsch @@ -180,7 +180,7 @@ Personal Mix at the Server: - + Eigener Mix am Server: @@ -641,7 +641,7 @@ Central Server - + Zentralserver @@ -1151,22 +1151,22 @@ Custom - + Benutzerdefiniert All Genres - + Alle Genres Genre Rock - + Genre Jazz - + @@ -1201,7 +1201,7 @@ Predefined Address - + Vordefinierte Adresse @@ -1470,7 +1470,7 @@ List - + Liste @@ -1923,22 +1923,22 @@ Vocal Bass - + Gesang Bass Vocal Tenor - + Gesang Tenor Vocal Alto - + Gesang Alt Vocal Soprano - + Gesang Sopran @@ -2104,7 +2104,7 @@ Predefined Address - + Vordefinierte Adresse Manual diff --git a/src/res/translation/translation_es_ES.qm b/src/res/translation/translation_es_ES.qm index 29b8f1da5c4c95cc7c957cd1637f0516c5d111b1..ccb1bf69a7771e0f92aeb2c1d6962be4beb93223 100644 GIT binary patch delta 4456 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 I3tKzrU%#jT_W%F@ delta 3680 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 diff --git a/src/res/translation/translation_fr_FR.qm b/src/res/translation/translation_fr_FR.qm index 37aab98669852ca4a1ca06361ae74531880fba90..52d8b3db7ef044a490ef014b7fe1c766a6ece990 100644 GIT binary patch delta 4632 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 delta 3353 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 JaU2U~{|BgQ@8bXf From d21acb0a7f3f6103e3f809ca2627a8ab6821e559 Mon Sep 17 00:00:00 2001 From: Volker Fischer Date: Mon, 18 May 2020 19:00:56 +0200 Subject: [PATCH 8/8] server sends version info on initial connection --- src/channel.h | 1 + src/protocol.cpp | 77 +++++++++++++++++++++++++++++++++++++++++++++++- src/protocol.h | 4 +++ src/server.cpp | 3 ++ 4 files changed, 84 insertions(+), 1 deletion(-) diff --git a/src/channel.h b/src/channel.h index 3369b535..9b8638df 100755 --- a/src/channel.h +++ b/src/channel.h @@ -105,6 +105,7 @@ public: { Protocol.CreateChanInfoMes ( ChInfo ); } void CreateReqChanInfoMes() { Protocol.CreateReqChanInfoMes(); } + void CreateVersionAndOSMes() { Protocol.CreateVersionAndOSMes(); } void SetGain ( const int iChanID, const double dNewGain ); double GetGain ( const int iChanID ); diff --git a/src/protocol.cpp b/src/protocol.cpp index 090fa992..abbbb3c3 100755 --- a/src/protocol.cpp +++ b/src/protocol.cpp @@ -154,7 +154,7 @@ MESSAGES (with connection) | 1 byte licence type | +---------------------+ -- PROTMESSID_CLM_REQ_CHANNEL_LEVEL_LIST: Opt in or out of the channel level list +- PROTMESSID_REQ_CHANNEL_LEVEL_LIST: Opt in or out of the channel level list +---------------+ | 1 byte option | @@ -162,6 +162,12 @@ MESSAGES (with connection) option is boolean, true to opt in, false to opt out +- PROTMESSID_VERSION_AND_OS: Version number and operating system + + +-------------------------+------------------+------------------------------+ + | 1 byte operating system | 2 bytes number n | n bytes UTF-8 string version | + +-------------------------+------------------+------------------------------+ + // #### COMPATIBILITY OLD VERSION, TO BE REMOVED #### - PROTMESSID_OPUS_SUPPORTED: Informs that OPUS codec is supported @@ -608,6 +614,10 @@ if ( rand() < ( RAND_MAX / 2 ) ) return false; case PROTMESSID_REQ_CHANNEL_LEVEL_LIST: bRet = EvaluateReqChannelLevelListMes ( vecbyMesBodyData ); break; + + case PROTMESSID_VERSION_AND_OS: + bRet = EvaluateVersionAndOSMes ( vecbyMesBodyData ); + break; } // immediately send acknowledge message @@ -1335,6 +1345,71 @@ bool CProtocol::EvaluateReqChannelLevelListMes ( const CVector& vecData return false; // no error } +void CProtocol::CreateVersionAndOSMes() +{ + int iPos = 0; // init position pointer + + // get the version number string + const QString strVerion = VERSION; + + // convert version string to utf-8 + const QByteArray strUTF8Version = strVerion.toUtf8(); + + // size of current message body + const int iEntrLen = + 1 /* operating system */ + + 2 /* version utf-8 string size */ + strUTF8Version.size(); + + // build data vector + CVector vecData ( iEntrLen ); + + // operating system (1 byte) + PutValOnStream ( vecData, iPos, + static_cast ( COSUtil::GetOperatingSystem() ), 1 ); + + // version + PutStringUTF8OnStream ( vecData, iPos, strUTF8Version ); + + CreateAndSendMessage ( PROTMESSID_VERSION_AND_OS, vecData ); +} + +bool CProtocol::EvaluateVersionAndOSMes ( const CVector& vecData ) +{ + int iPos = 0; // init position pointer + const int iDataLen = vecData.Size(); + + // check size (the first 1 byte) + if ( iDataLen < 1 ) + { + return true; // return error code + } + + // operating system (1 byte) + const COSUtil::EOpSystemType eOSType = + static_cast ( GetValFromStream ( vecData, iPos, 1 ) ); + + // version text + QString strVersion; + if ( GetStringFromStream ( vecData, + iPos, + MAX_LEN_VERSION_TEXT, + strVersion ) ) + { + return true; // return error code + } + + // check size: all data is read, the position must now be at the end + if ( iPos != iDataLen ) + { + return true; // return error code + } + + // invoke message action + emit VersionAndOSReceived ( eOSType, strVersion ); + + return false; // no error +} + // Connection less messages ---------------------------------------------------- void CProtocol::CreateCLPingMes ( const CHostAddress& InetAddr, const int iMs ) diff --git a/src/protocol.h b/src/protocol.h index 027c4284..524c4927 100755 --- a/src/protocol.h +++ b/src/protocol.h @@ -55,6 +55,7 @@ #define PROTMESSID_OPUS_SUPPORTED 26 // tells that OPUS codec is supported #define PROTMESSID_LICENCE_REQUIRED 27 // licence required #define PROTMESSID_REQ_CHANNEL_LEVEL_LIST 28 // request the channel level list +#define PROTMESSID_VERSION_AND_OS 29 // version number and operating system // message IDs of connection less messages (CLM) // DEFINITION -> start at 1000, end at 1999, see IsConnectionLessMessageID @@ -106,6 +107,7 @@ public: void CreateLicenceRequiredMes ( const ELicenceType eLicenceType ); void CreateOpusSupportedMes(); void CreateReqChannelLevelListMes ( const bool bRCL ); + void CreateVersionAndOSMes(); void CreateCLPingMes ( const CHostAddress& InetAddr, const int iMs ); void CreateCLPingWithNumClientsMes ( const CHostAddress& InetAddr, @@ -227,6 +229,7 @@ protected: bool EvaluateReqNetwTranspPropsMes(); bool EvaluateLicenceRequiredMes ( const CVector& vecData ); bool EvaluateReqChannelLevelListMes ( const CVector& vecData ); + bool EvaluateVersionAndOSMes ( const CVector& vecData ); bool EvaluateCLPingMes ( const CHostAddress& InetAddr, const CVector& vecData ); @@ -286,6 +289,7 @@ signals: void ReqNetTranspProps(); void LicenceRequired ( ELicenceType eLicenceType ); void ReqChannelLevelList ( bool bOptIn ); + void VersionAndOSReceived ( COSUtil::EOpSystemType eOSType, QString strVersion ); void CLPingReceived ( CHostAddress InetAddr, int iMs ); diff --git a/src/server.cpp b/src/server.cpp index 794799c1..6fa181bc 100755 --- a/src/server.cpp +++ b/src/server.cpp @@ -597,6 +597,9 @@ CreateAndSendChanListForAllConChannels(); vecChannels[iChID].CreateLicReqMes ( eLicenceType ); } + // send version info (for, e.g., feature activation in the client) + vecChannels[iChID].CreateVersionAndOSMes(); + // reset the conversion buffers DoubleFrameSizeConvBufIn[iChID].Reset(); DoubleFrameSizeConvBufOut[iChID].Reset();