Merge branch 'master' into master

This commit is contained in:
Alberstein8 2020-06-13 11:29:21 +02:00 committed by GitHub
commit 3dbddc5568
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 74 additions and 29 deletions

View file

@ -314,7 +314,7 @@ void CChannelFader::Reset()
plblInstrument->setToolTip ( "" ); plblInstrument->setToolTip ( "" );
plblCountryFlag->setVisible ( false ); plblCountryFlag->setVisible ( false );
plblCountryFlag->setToolTip ( "" ); plblCountryFlag->setToolTip ( "" );
strReceivedName = ""; cReceivedChanInfo = CChannelInfo();
SetupFaderTag ( SL_NOT_SET ); SetupFaderTag ( SL_NOT_SET );
// set a defined tool tip time out // set a defined tool tip time out
@ -438,17 +438,15 @@ void CChannelFader::SetChannelLevel ( const uint16_t iLevel )
void CChannelFader::SetChannelInfos ( const CChannelInfo& cChanInfo ) void CChannelFader::SetChannelInfos ( const CChannelInfo& cChanInfo )
{ {
// store received channel info
cReceivedChanInfo = cChanInfo;
// init properties for the tool tip // init properties for the tool tip
int iTTInstrument = CInstPictures::GetNotUsedInstrument(); int iTTInstrument = CInstPictures::GetNotUsedInstrument();
QLocale::Country eTTCountry = QLocale::AnyCountry; QLocale::Country eTTCountry = QLocale::AnyCountry;
// Label text -------------------------------------------------------------- // Label text --------------------------------------------------------------
// store original received name
strReceivedName = cChanInfo.strName;
// store received instrument for sorting
iReceivedInstrument = cChanInfo.iInstrument;
// break text at predefined position // break text at predefined position
const int iBreakPos = MAX_LEN_FADER_TAG / 2; const int iBreakPos = MAX_LEN_FADER_TAG / 2;
@ -524,9 +522,9 @@ void CChannelFader::SetChannelInfos ( const CChannelInfo& cChanInfo )
QString strToolTip = ""; QString strToolTip = "";
// alias/name // alias/name
if ( !strReceivedName.isEmpty() ) if ( !cChanInfo.strName.isEmpty() )
{ {
strToolTip += "<h4>" + tr ( "Alias/Name" ) + "</h4>" + strReceivedName; strToolTip += "<h4>" + tr ( "Alias/Name" ) + "</h4>" + cChanInfo.strName;
} }
// instrument // instrument
@ -771,21 +769,33 @@ void CAudioMixerBoard::HideAll()
iMyChannelID = INVALID_INDEX; iMyChannelID = INVALID_INDEX;
// use original order of channel (by server ID) // use original order of channel (by server ID)
ChangeFaderOrder ( false );
ChangeFaderOrderByInstrument ( false ); ChangeFaderOrder ( false, ST_BY_NAME );
// emit status of connected clients // emit status of connected clients
emit NumClientsChanged ( 0 ); // -> no clients connected emit NumClientsChanged ( 0 ); // -> no clients connected
} }
void CAudioMixerBoard::ChangeFaderOrder ( const bool bDoSort ) void CAudioMixerBoard::ChangeFaderOrder ( const bool bDoSort,
const EChSortType eChSortType )
{ {
// create a pair list of lower strings and fader ID for each channel // create a pair list of lower strings and fader ID for each channel
QList<QPair<QString, int> > PairList; QList<QPair<QString, int> > PairList;
for ( int i = 0; i < MAX_NUM_CHANNELS; i++ ) for ( int i = 0; i < MAX_NUM_CHANNELS; i++ )
{ {
PairList << QPair<QString, int> ( vecpChanFader[i]->GetReceivedName().toLower(), i ); if ( eChSortType == ST_BY_NAME )
{
PairList << QPair<QString, int> ( vecpChanFader[i]->GetReceivedName().toLower(), i );
}
else // ST_BY_INSTRUMENT
{
// note that the sorting will not be the same as we would use QPair<int, int>
// but this is not a problem since the order of the instrument IDs are arbitrary
// anyway
PairList << QPair<QString, int> ( QString::number ( vecpChanFader[i]->GetReceivedInstrument() ), i );
}
} }
// if requested, sort the channels // if requested, sort the channels

View file

@ -49,8 +49,9 @@ class CChannelFader : public QObject
public: public:
CChannelFader ( QWidget* pNW ); CChannelFader ( QWidget* pNW );
QString GetReceivedName() { return strReceivedName; }
int GetReceivedInstrument() { return iReceivedInstrument; } QString GetReceivedName() { return cReceivedChanInfo.strName; }
int GetReceivedInstrument() { return cReceivedChanInfo.iInstrument; }
void SetChannelInfos ( const CChannelInfo& cChanInfo ); void SetChannelInfos ( const CChannelInfo& cChanInfo );
void Show() { pFrame->show(); } void Show() { pFrame->show(); }
void Hide() { pFrame->hide(); } void Hide() { pFrame->hide(); }
@ -102,7 +103,7 @@ protected:
QLabel* plblInstrument; QLabel* plblInstrument;
QLabel* plblCountryFlag; QLabel* plblCountryFlag;
QString strReceivedName; CChannelInfo cReceivedChanInfo;
int iReceivedInstrument; int iReceivedInstrument;
@ -150,8 +151,6 @@ public:
CAudioMixerBoard ( QWidget* parent = nullptr, Qt::WindowFlags f = nullptr ); CAudioMixerBoard ( QWidget* parent = nullptr, Qt::WindowFlags f = nullptr );
void HideAll(); void HideAll();
void ChangeFaderOrder ( const bool bDoSort );
void ChangeFaderOrderByInstrument (const bool bDoSort );
void ApplyNewConClientList ( CVector<CChannelInfo>& vecChanInfo ); void ApplyNewConClientList ( CVector<CChannelInfo>& vecChanInfo );
void SetServerName ( const QString& strNewServerName ); void SetServerName ( const QString& strNewServerName );
void SetGUIDesign ( const EGUIDesign eNewDesign ); void SetGUIDesign ( const EGUIDesign eNewDesign );
@ -164,6 +163,9 @@ public:
void SetFaderLevel ( const int iChannelIdx, void SetFaderLevel ( const int iChannelIdx,
const int iValue ); const int iValue );
void ChangeFaderOrder ( const bool bDoSort,
const EChSortType eChSortType );
void SetChannelLevels ( const CVector<uint16_t>& vecChannelLevel ); void SetChannelLevels ( const CVector<uint16_t>& vecChannelLevel );
// settings // settings

View file

@ -152,8 +152,8 @@ public slots:
void OnOpenGeneralSettings() { ShowGeneralSettings(); } void OnOpenGeneralSettings() { ShowGeneralSettings(); }
void OnOpenChatDialog() { ShowChatWindow(); } void OnOpenChatDialog() { ShowChatWindow(); }
void OnOpenAnalyzerConsole() { ShowAnalyzerConsole(); } void OnOpenAnalyzerConsole() { ShowAnalyzerConsole(); }
void OnSortChannelsByName() { MainMixerBoard->ChangeFaderOrder ( true ); } void OnSortChannelsByName() { MainMixerBoard->ChangeFaderOrder ( true, ST_BY_NAME ); }
void OnSortChannelsByInstrument() { MainMixerBoard->ChangeFaderOrderByInstrument ( true ); }
void OnSettingsStateChanged ( int value ); void OnSettingsStateChanged ( int value );
void OnChatStateChanged ( int value ); void OnChatStateChanged ( int value );

View file

@ -93,7 +93,7 @@ in a direction where the label above the fader shows L -x, where x is the curren
In the audio mixer frame, a fader is shown for each connected client at the server (including yourself). In the audio mixer frame, a fader is shown for each connected client at the server (including yourself).
The faders allow you to adjust the level of what you hear without affecting what others hear. The faders allow you to adjust the level of what you hear without affecting what others hear.
The VU meter shows the input level at the server - that is, the sound you are sending. The VU meter shows the input level at the server - that is, the sound being sent.
If you have set your Audio Channel to Stereo or Stereo Out in your Settings, you will also see a pan control. If you have set your Audio Channel to Stereo or Stereo Out in your Settings, you will also see a pan control.
@ -103,6 +103,7 @@ Using the **Mute button** prevents the indicated channel being heard in your loc
The **Solo button** allows you to hear one or more musicians on their own. Those not soloed will be muted. Note also that those musicians who are not soloed will see a "muted" icon above your fader. The **Solo button** allows you to hear one or more musicians on their own. Those not soloed will be muted. Note also that those musicians who are not soloed will see a "muted" icon above your fader.
Channels are listed left to right in the order that clients connect until they leave, at which point their "slot" is filled by the next new arrival. You can change the sort order using the Edit option in the application menu.

View file

@ -240,6 +240,7 @@ CServer::CServer ( const int iNewMaxNumChan,
Logging ( iMaxDaysHistory ), Logging ( iMaxDaysHistory ),
iFrameCount ( 0 ), iFrameCount ( 0 ),
JamRecorder ( strRecordingDirName ), JamRecorder ( strRecordingDirName ),
bEnableRecording ( false ),
bWriteStatusHTMLFile ( false ), bWriteStatusHTMLFile ( false ),
HighPrecisionTimer ( bNUseDoubleSystemFrameSize ), HighPrecisionTimer ( bNUseDoubleSystemFrameSize ),
ServerListManager ( iPortNumber, ServerListManager ( iPortNumber,
@ -405,7 +406,7 @@ CServer::CServer ( const int iNewMaxNumChan,
if ( !strRecordingDirName.isEmpty() ) if ( !strRecordingDirName.isEmpty() )
{ {
bRecorderInitialised = JamRecorder.Init ( this, iServerFrameSizeSamples ); bRecorderInitialised = JamRecorder.Init ( this, iServerFrameSizeSamples );
bEnableRecording = bRecorderInitialised; SetEnableRecording ( bRecorderInitialised );
} }
// enable all channels (for the server all channel must be enabled the // enable all channels (for the server all channel must be enabled the
@ -665,6 +666,10 @@ void CServer::OnAboutToQuit()
void CServer::OnHandledSignal ( int sigNum ) void CServer::OnHandledSignal ( int sigNum )
{ {
// show the signal number on the command line (note that this does not work for the Windows command line)
// TODO we should use the ConsoleWriterFactory() instead of qDebug()
qDebug() << "OnHandledSignal: " << sigNum;
#ifdef _WIN32 #ifdef _WIN32
// Windows does not actually get OnHandledSignal triggered // Windows does not actually get OnHandledSignal triggered
QCoreApplication::instance()->exit(); QCoreApplication::instance()->exit();
@ -705,8 +710,16 @@ void CServer::SetEnableRecording ( bool bNewEnableRecording )
{ {
if ( bRecorderInitialised ) if ( bRecorderInitialised )
{ {
// note that this block executes regardless of whether
// what appears to be a change is being applied, to ensure
// the requested state is the result
bEnableRecording = bNewEnableRecording; bEnableRecording = bNewEnableRecording;
#if QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)
// TODO we should use the ConsoleWriterFactory() instead of qInfo()
qInfo() << "Recording state " << ( bEnableRecording ? "enabled" : "disabled" );
#endif
if ( !bEnableRecording ) if ( !bEnableRecording )
{ {
emit StopRecorder(); emit StopRecorder();

View file

@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>588</width> <width>588</width>
<height>415</height> <height>419</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -69,9 +69,27 @@
</property> </property>
</widget> </widget>
</item> </item>
</layout>
</item>
<item>
<layout class="QHBoxLayout">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Genre</string>
</property>
</widget>
</item>
<item> <item>
<widget class="QComboBox" name="cbxCentServAddrType"/> <widget class="QComboBox" name="cbxCentServAddrType"/>
</item> </item>
<item>
<widget class="QLabel" name="lblRegSvrStatus">
<property name="text">
<string>STATUS</string>
</property>
</widget>
</item>
<item> <item>
<spacer> <spacer>
<property name="orientation"> <property name="orientation">
@ -88,13 +106,6 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item>
<widget class="QLabel" name="lblRegSvrStatus">
<property name="text">
<string>STATUS</string>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
<item> <item>

View file

@ -563,6 +563,14 @@ enum ELicenceType
}; };
// Channel sort type -----------------------------------------------------------
enum EChSortType
{
ST_BY_NAME = 0,
ST_BY_INSTRUMENT = 1
};
// Central server address type ------------------------------------------------- // Central server address type -------------------------------------------------
enum ECSAddType enum ECSAddType
{ {