diff --git a/linux/Makefile.am b/linux/Makefile.am index 05b6e7fe..42fc483f 100755 --- a/linux/Makefile.am +++ b/linux/Makefile.am @@ -15,7 +15,8 @@ llcon_SOURCES = ../src/buffer.cpp \ ../src/server.cpp \ ../src/settings.cpp \ ../src/protocol.cpp \ - ../src/multicolorled.cpp \ + ../src/multicolorled.cpp \ + ../src/audiomixerboard.cpp \ sound.cpp \ ../src/buffer.h \ ../src/global.h \ @@ -29,7 +30,8 @@ llcon_SOURCES = ../src/buffer.cpp \ ../src/server.h \ ../src/settings.h \ ../src/protocol.h \ - ../src/multicolorled.h \ + ../src/multicolorled.h \ + ../src/audiomixerboard.h \ ../src/llconserverdlg.h \ ../src/llconclientdlg.h \ ../src/clientsettingsdlg.h \ @@ -45,7 +47,8 @@ BUILT_SOURCES=moc/moc_server.cpp \ moc/moc_protocol.cpp \ moc/moc_channel.cpp \ moc/moc_socket.cpp \ - moc/moc_multicolorled.cpp \ + moc/moc_multicolorled.cpp \ + moc/moc_audiomixerboard.cpp \ moc/moc_util.cpp \ moc/moc_llconclientdlg.cpp moc/moc_llconclientdlgbase.cpp moc/llconclientdlgbase.h moc/llconclientdlgbase.cpp \ moc/moc_clientsettingsdlg.cpp moc/moc_clientsettingsdlgbase.cpp moc/clientsettingsdlgbase.h moc/clientsettingsdlgbase.cpp \ @@ -71,6 +74,9 @@ moc/moc_socket.cpp: ../src/socket.h moc/moc_multicolorled.cpp: ../src/multicolorled.h $(MOC) ../src/multicolorled.h -o moc/moc_multicolorled.cpp + +moc/moc_audiomixerboard.cpp: ../src/audiomixerboard.h + $(MOC) ../src/audiomixerboard.h -o moc/moc_audiomixerboard.cpp moc/moc_util.cpp: ../src/util.h $(MOC) ../src/util.h -o moc/moc_util.cpp diff --git a/src/audiomixerboard.cpp b/src/audiomixerboard.cpp new file mode 100755 index 00000000..54b1f512 --- /dev/null +++ b/src/audiomixerboard.cpp @@ -0,0 +1,157 @@ +/******************************************************************************\ + * Copyright (c) 2004-2006 + * + * Author(s): + * Volker Fischer + * + * Description: + * + * + ****************************************************************************** + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any later + * version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * +\******************************************************************************/ + +#include "audiomixerboard.h" + + +/* Implementation *************************************************************/ +CChannelFader::CChannelFader ( QWidget* pNW, + QHBoxLayout* pNPtLy, + QString sName ) : + pParentLayout ( pNPtLy ) +{ + // create new GUI control objects and store pointers to them + pMainGrid = new QGridLayout ( pNW, 2, 1 ); + pFader = new QSlider ( Qt::Vertical, pNW ); + pLabel = new QLabel ( "", pNW ); + + // setup slider + pFader->setPageStep ( 1 ); + pFader->setTickmarks ( QSlider::Both ); + pFader->setRange ( 0, AUD_MIX_FADER_MAX ); + pFader->setTickInterval ( AUD_MIX_FADER_MAX / 9 ); + +// TEST set value and make read only +pFader->setValue ( 0 ); +pFader->setEnabled ( FALSE ); + + // set label text + pLabel->setText ( sName ); + + // add slider to grid as position 0 / 0 + pMainGrid->addWidget( pFader, 0, 0, Qt::AlignHCenter ); + + // add label to grid as position 1 / 0 + pMainGrid->addWidget( pLabel, 1, 0, Qt::AlignHCenter ); + + pParentLayout->insertLayout ( 0, pMainGrid ); +} + +void CChannelFader::SetText ( const std::string sText ) +{ + const int iBreakPos = 6; + + // break text at predefined position + QString sModText = sText.c_str(); + + if ( sModText.length() > iBreakPos ) + { + sModText.insert ( iBreakPos, QString ( "
" ) ); + } + + // use bold text + sModText.prepend ( "" ); + sModText.append ( "" ); + + pLabel->setText ( sModText ); +} + +CAudioMixerBoard::CAudioMixerBoard ( QWidget* parent, + const char* name, + WFlags f ) : + QFrame ( parent, name, f ) +{ + // set modified style + setFrameShape ( QFrame::StyledPanel ); + setFrameShadow ( QFrame::Sunken ); + + // add hboxlayout with horizontal spacer + pMainLayout = new QHBoxLayout ( this, 11, 6 ); + pMainLayout->addItem ( new QSpacerItem ( 0, 0, QSizePolicy::Expanding ) ); + + // create all mixer controls and make them invisible + vecpChanFader.Init ( MAX_NUM_CHANNELS ); + for ( int i = 0; i < MAX_NUM_CHANNELS; i++ ) + { + vecpChanFader[i] = new CChannelFader ( this, + pMainLayout, "test" ); + + vecpChanFader[i]->Hide(); + } + + +// TEST +//vecpChanFader.Init(0); +//vecpChanFader.Add(new CLlconClientDlg::CChannelFader(FrameAudioFaders, FrameAudioFadersLayout, "test")); + +//FrameAudioFadersLayout->addWidget(new QLabel ( "test", FrameAudioFaders )); +/* +for ( int z = 0; z < 100; z++) +{ +CLlconClientDlg::CChannelFader* pTest = new CLlconClientDlg::CChannelFader(FrameAudioFaders, FrameAudioFadersLayout); +delete pTest; +} +*/ + + +} + +void CAudioMixerBoard::Clear() +{ + // make old controls invisible + for ( int i = 0; i < MAX_NUM_CHANNELS; i++ ) + { + vecpChanFader[i]->Hide(); + } +} + +void CAudioMixerBoard::ApplyNewConClientList ( CVector& vecChanInfo ) +{ + int i; + + +// TODO + +// make old controls invisible +Clear(); + + +// TEST add current faders +for ( i = 0; i < vecChanInfo.Size(); i++ ) +{ + QHostAddress addrTest ( vecChanInfo[i].veciIpAddr ); + + vecpChanFader[i]->SetText ( addrTest.toString().latin1() ); + vecpChanFader[i]->Show(); + + + +// vecpChanFader[i] = new CLlconClientDlg::CChannelFader ( FrameAudioFaders, +// FrameAudioFadersLayout, addrTest.toString() ); +} + +} diff --git a/src/audiomixerboard.h b/src/audiomixerboard.h new file mode 100755 index 00000000..caf79305 --- /dev/null +++ b/src/audiomixerboard.h @@ -0,0 +1,91 @@ +/******************************************************************************\ + * Copyright (c) 2004-2006 + * + * Author(s): + * Volker Fischer + * + * Description: + * + * + ****************************************************************************** + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any later + * version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * +\******************************************************************************/ + +#if !defined(MIXERBOARD_H__FD6B49E1606C2AC__INCLUDED_) +#define MIXERBOARD_H__FD6B49E1606C2AC__INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include "global.h" +#include "util.h" + + +/* Definitions ****************************************************************/ +// audio mixer fader range +#define AUD_MIX_FADER_MAX 100 + + +/* Classes ********************************************************************/ +class CChannelFader +{ +public: + CChannelFader ( QWidget* pNW, QHBoxLayout* pNPtLy, QString sName ); + ~CChannelFader() + { + pLabel->close(); + pFader->close(); + + // TODO get rid of pMainGrid + } + + void SetText ( const std::string sText ); + void Show() { pLabel->show(); pFader->show(); } + void Hide() { pLabel->hide(); pFader->hide(); } + +protected: + QGridLayout* pMainGrid; + QSlider* pFader; + QLabel* pLabel; + + QHBoxLayout* pParentLayout; +}; + + +class CAudioMixerBoard : public QFrame +{ + Q_OBJECT + +public: + CAudioMixerBoard ( QWidget* parent = 0, const char* name = 0, WFlags f = 0 ); + + void Clear(); + void ApplyNewConClientList ( CVector& vecChanInfo ); + +protected: + CVector vecpChanFader; + QHBoxLayout* pMainLayout; + +signals: + void ChangeChanGain ( int iId, double dGain ); +}; + + +#endif // MIXERBOARD_H__FD6B49E1606C2AC__INCLUDED_ diff --git a/src/channel.cpp b/src/channel.cpp index d8aa8d50..33b9f19f 100755 --- a/src/channel.cpp +++ b/src/channel.cpp @@ -428,6 +428,9 @@ CChannel::CChannel() : sName ( "" ), QObject::connect ( &Protocol, SIGNAL ( ChangeNetwBlSiFact ( int ) ), this, SLOT ( OnNetwBlSiFactChange ( int ) ) ); + + QObject::connect( &Protocol, SIGNAL ( ChangeChanGain ( int, double ) ), + this, SLOT ( OnChangeChanGain ( int, double ) ) ); } void CChannel::SetEnable ( const bool bNEnStat ) diff --git a/src/channel.h b/src/channel.h index 8b30a671..3859993a 100755 --- a/src/channel.h +++ b/src/channel.h @@ -41,10 +41,6 @@ // correction is implemented) #define CON_TIME_OUT_SEC_MAX 5 // seconds -// maximum number of internet connections (channels) -// if you want to change this paramter, change the connections in this class, too! -#define MAX_NUM_CHANNELS 10 /* max number channels for server */ - // no valid channel number #define INVALID_CHANNEL_ID (MAX_NUM_CHANNELS + 1) @@ -96,6 +92,9 @@ public: void SetGain ( const int iNID, const double dNG ) { vecdGains[iNID] = dNG; } double GetGain( const int iNID ) { return vecdGains[iNID]; } + + void SetRemoteChanGain ( const int iId, const double dGain ) + { Protocol.CreateChanGainMes ( iId, dGain ); } void SetSockBufSize ( const int iNumBlocks ); int GetSockBufSize() { return iCurSockBufSize; } diff --git a/src/client.h b/src/client.h index aa51ebee..3306678c 100755 --- a/src/client.h +++ b/src/client.h @@ -46,9 +46,6 @@ // audio in fader range #define AUD_FADER_IN_MAX 100 -// audio mixer fader range -#define AUD_MIX_FADER_MAX 100 - // audio reverberation range #define AUD_REVERB_MAX 100 @@ -62,13 +59,13 @@ public: CClient(); virtual ~CClient() {} - void Init(); - bool Stop(); - bool IsRunning() { return bRun; } - bool SetServerAddr ( QString strNAddr ); + void Init(); + bool Stop(); + bool IsRunning() { return bRun; } + bool SetServerAddr ( QString strNAddr ); double MicLevelL() { return SignalLevelMeterL.MicLevel(); } double MicLevelR() { return SignalLevelMeterR.MicLevel(); } - bool IsConnected() { return Channel.IsConnected(); } + bool IsConnected() { return Channel.IsConnected(); } /* we want to return the standard deviation. For that we need to calculate the sqaure root */ @@ -113,9 +110,12 @@ public: } int GetNetwBufSizeFactOut() { return Channel.GetNetwBufSizeFactOut(); } + void SetRemoteChanGain ( const int iId, const double dGain ) + { Channel.SetRemoteChanGain ( iId, dGain ); } + - CSound* GetSndInterface() { return &Sound; } - CChannel* GetChannel() { return &Channel; } + CSound* GetSndInterface() { return &Sound; } + CChannel* GetChannel() { return &Channel; } // settings diff --git a/src/global.h b/src/global.h index f4a3c45e..64768e87 100755 --- a/src/global.h +++ b/src/global.h @@ -80,7 +80,11 @@ # define AUD_SLIDER_LENGTH 30 #else # define AUD_SLIDER_LENGTH 6 -#endif +#endif + +// maximum number of internet connections (channels) +// if you want to change this paramter, change the connections in channel class, too! +#define MAX_NUM_CHANNELS 10 /* max number channels for server */ /* sample rate offset estimation algorithm */ /* time interval for sample rate offset estimation */ diff --git a/src/llconclientdlg.cpp b/src/llconclientdlg.cpp index fa1a8d89..b5a1410f 100755 --- a/src/llconclientdlg.cpp +++ b/src/llconclientdlg.cpp @@ -29,8 +29,7 @@ CLlconClientDlg::CLlconClientDlg ( CClient* pNCliP, QWidget* parent, const char* name, bool modal, WFlags f) : pClient ( pNCliP ), CLlconClientDlgBase ( parent, name, modal, f ), - ClientSettingsDlg ( pNCliP, 0, 0, FALSE, Qt::WStyle_MinMax ), - vecpChanFader ( 0 ) + ClientSettingsDlg ( pNCliP, 0, 0, FALSE, Qt::WStyle_MinMax ) { /* add help text to controls */ QString strInpLevH = tr("Input level meter: Shows the level of the " @@ -76,7 +75,7 @@ CLlconClientDlg::CLlconClientDlg ( CClient* pNCliP, QWidget* parent, QWhatsThis::add ( RadioButtonRevSelL, strRevChanSel ); QWhatsThis::add ( RadioButtonRevSelR, strRevChanSel ); - QWhatsThis::add ( CLEDOverallStatus, tr ( "Overall Status: " + QWhatsThis::add ( LEDOverallStatus, tr ( "Overall Status: " "The overall status of the software is shown. If either the " "network or sound interface has bad status, this LED will show " "red color." ) ); @@ -113,13 +112,13 @@ CLlconClientDlg::CLlconClientDlg ( CClient* pNCliP, QWidget* parent, /* set radio buttons --- */ // reverb channel - if (pClient->IsReverbOnLeftChan()) + if ( pClient->IsReverbOnLeftChan() ) { - RadioButtonRevSelL->setChecked(true); + RadioButtonRevSelL->setChecked ( true ); } else { - RadioButtonRevSelR->setChecked(true); + RadioButtonRevSelR->setChecked ( true ); } @@ -141,21 +140,9 @@ CLlconClientDlg::CLlconClientDlg ( CClient* pNCliP, QWidget* parent, /* Now tell the layout about the menu */ CLlconClientDlgBaseLayout->setMenuBar ( pMenu ); - - - // mixer board ------------------------------------------------------------- - // create all mixer controls and make them invisible - vecpChanFader.Init ( MAX_NUM_CHANNELS ); - for ( int i = 0; i < MAX_NUM_CHANNELS; i++ ) - { - vecpChanFader[i] = new CLlconClientDlg::CChannelFader ( FrameAudioFaders, - FrameAudioFadersLayout, "test" ); - - vecpChanFader[i]->Hide(); - } - /* connections ---------------------------------------------------------- */ + // connections ------------------------------------------------------------- // push-buttons QObject::connect(PushButtonConnect, SIGNAL(clicked()), this, SLOT(OnConnectDisconBut())); @@ -179,30 +166,16 @@ CLlconClientDlg::CLlconClientDlg ( CClient* pNCliP, QWidget* parent, this, SLOT(OnRevSelR())); // other - QObject::connect(pClient, SIGNAL ( ConClientListMesReceived ( CVector ) ), + QObject::connect ( pClient, + SIGNAL ( ConClientListMesReceived ( CVector ) ), this, SLOT ( OnConClientListMesReceived ( CVector ) ) ); + QObject::connect ( MainMixerBoard, SIGNAL ( ChangeChanGain ( int, double ) ), + this, SLOT ( OnChangeChanGain ( int, double ) ) ); - /* timers --------------------------------------------------------------- */ + // timers ------------------------------------------------------------------ // start timer for status bar TimerStatus.start(STATUSBAR_UPDATE_TIME); - - - -// TEST -//vecpChanFader.Init(0); -//vecpChanFader.Add(new CLlconClientDlg::CChannelFader(FrameAudioFaders, FrameAudioFadersLayout, "test")); - -//FrameAudioFadersLayout->addWidget(new QLabel ( "test", FrameAudioFaders )); -/* -for ( int z = 0; z < 100; z++) -{ -CLlconClientDlg::CChannelFader* pTest = new CLlconClientDlg::CChannelFader(FrameAudioFaders, FrameAudioFadersLayout); -delete pTest; -} -*/ - - } CLlconClientDlg::~CLlconClientDlg() @@ -223,56 +196,47 @@ void CLlconClientDlg::closeEvent ( QCloseEvent * Event ) Event->accept(); } -void CLlconClientDlg::OnConnectDisconBut () +void CLlconClientDlg::OnConnectDisconBut() { - /* start/stop client, set button text */ - if ( pClient->IsRunning () ) + // start/stop client, set button text + if ( pClient->IsRunning() ) { - pClient->Stop (); + pClient->Stop(); PushButtonConnect->setText ( CON_BUT_CONNECTTEXT ); - /* stop timer for level meter bars and reset them */ - TimerSigMet.stop (); + // stop timer for level meter bars and reset them + TimerSigMet.stop(); ProgressBarInputLevelL->setProgress ( 0 ); ProgressBarInputLevelR->setProgress ( 0 ); - /* immediately update status bar */ - OnTimerStatus (); + // immediately update status bar + OnTimerStatus(); - - -// TEST -// make old controls invisible -for ( int i = 0; i < MAX_NUM_CHANNELS; i++ ) -{ - vecpChanFader[i]->Hide(); -} - - - + // clear mixer board (remove all faders) + MainMixerBoard->Clear(); } else { - /* set address and check if address is valid */ - if ( pClient->SetServerAddr ( LineEditServerAddr->text () ) ) + // set address and check if address is valid + if ( pClient->SetServerAddr ( LineEditServerAddr->text() ) ) { #if ( QT_VERSION > 300 ) pClient->start ( QThread::TimeCriticalPriority ); #else - pClient->start (); + pClient->start(); #endif PushButtonConnect->setText ( CON_BUT_DISCONNECTTEXT ); - /* start timer for level meter bar */ + // start timer for level meter bar TimerSigMet.start ( LEVELMETER_UPDATE_TIME ); } else { - /* Restart timer to ensure that the text is visible at - least the time for one complete interval */ + // Restart timer to ensure that the text is visible at + // least the time for one complete interval TimerStatus.changeInterval ( STATUSBAR_UPDATE_TIME ); - /* show the error in the status bar */ + // show the error in the status bar TextLabelStatus->setText ( tr ( "invalid address" ) ); } } @@ -284,11 +248,11 @@ void CLlconClientDlg::OnOpenGeneralSettings() ClientSettingsDlg.show(); } -void CLlconClientDlg::OnTimerSigMet () +void CLlconClientDlg::OnTimerSigMet() { /* get current input levels */ - double dCurSigLevelL = pClient->MicLevelL (); - double dCurSigLevelR = pClient->MicLevelR (); + double dCurSigLevelL = pClient->MicLevelL(); + double dCurSigLevelR = pClient->MicLevelR(); /* linear transformation of the input level range to the progress-bar range */ @@ -317,37 +281,6 @@ void CLlconClientDlg::OnTimerSigMet () ProgressBarInputLevelR->setProgress ( (int) ceil ( dCurSigLevelR ) ); } -void CLlconClientDlg::OnConClientListMesReceived ( CVector vecChanInfo ) -{ - int i; - - -// TODO - -// make old controls invisible -for ( i = 0; i < MAX_NUM_CHANNELS; i++ ) -{ - vecpChanFader[i]->Hide(); -} - - -// TEST add current faders -for ( i = 0; i < vecChanInfo.Size(); i++ ) -{ - QHostAddress addrTest ( vecChanInfo[i].veciIpAddr ); - - vecpChanFader[i]->SetText ( addrTest.toString().latin1() ); - vecpChanFader[i]->Show(); - - - -// vecpChanFader[i] = new CLlconClientDlg::CChannelFader ( FrameAudioFaders, -// FrameAudioFadersLayout, addrTest.toString() ); -} - - -} - void CLlconClientDlg::UpdateDisplay() { /* show connection status in status bar */ @@ -376,11 +309,11 @@ void CLlconClientDlg::customEvent ( QCustomEvent* Event ) case MS_JIT_BUF_GET: // show overall status -> if any LED goes red, this LED will go red - CLEDOverallStatus->SetLight ( iStatus ); + LEDOverallStatus->SetLight ( iStatus ); break; case MS_RESET_ALL: - CLEDOverallStatus->Reset(); + LEDOverallStatus->Reset(); break; } @@ -388,56 +321,3 @@ void CLlconClientDlg::customEvent ( QCustomEvent* Event ) ClientSettingsDlg.SetStatus ( iMessType, iStatus ); } } - - -// Help classes --------------------------------------------------------------- -CLlconClientDlg::CChannelFader::CChannelFader ( QWidget* pNW, - QHBoxLayout* pNPtLy, - QString sName ) : - pParentLayout ( pNPtLy ) -{ - // create new GUI control objects and store pointers to them - pMainGrid = new QGridLayout ( pNW, 2, 1 ); - pFader = new QSlider ( Qt::Vertical, pNW ); - pLabel = new QLabel ( "", pNW ); - - // setup slider - pFader->setPageStep ( 1 ); - pFader->setTickmarks ( QSlider::Both ); - pFader->setRange ( 0, AUD_MIX_FADER_MAX ); - pFader->setTickInterval ( AUD_MIX_FADER_MAX / 9 ); - -// TEST set value and make read only -pFader->setValue ( 0 ); -pFader->setEnabled ( FALSE ); - - // set label text - pLabel->setText ( sName ); - - // add slider to grid as position 0 / 0 - pMainGrid->addWidget( pFader, 0, 0, Qt::AlignHCenter ); - - // add label to grid as position 1 / 0 - pMainGrid->addWidget( pLabel, 1, 0, Qt::AlignHCenter ); - - pParentLayout->insertLayout ( 0, pMainGrid ); -} - -void CLlconClientDlg::CChannelFader::SetText ( const std::string sText ) -{ - const int iBreakPos = 6; - - // break text at predefined position - QString sModText = sText.c_str(); - - if ( sModText.length() > iBreakPos ) - { - sModText.insert ( iBreakPos, QString ( "
" ) ); - } - - // use bold text - sModText.prepend ( "" ); - sModText.append ( "" ); - - pLabel->setText ( sModText ); -} diff --git a/src/llconclientdlg.h b/src/llconclientdlg.h index 1a99a008..6c18af51 100755 --- a/src/llconclientdlg.h +++ b/src/llconclientdlg.h @@ -36,6 +36,7 @@ #include "global.h" #include "client.h" #include "multicolorled.h" +#include "audiomixerboard.h" #include "clientsettingsdlg.h" #ifdef _WIN32 # include "../windows/moc/llconclientdlgbase.h" @@ -73,30 +74,6 @@ public: virtual ~CLlconClientDlg (); protected: - class CChannelFader - { - public: - CChannelFader ( QWidget* pNW, QHBoxLayout* pNPtLy, QString sName ); - ~CChannelFader() - { - pLabel->close(); - pFader->close(); - - // TODO get rid of pMainGrid - } - - void SetText ( const std::string sText ); - void Show() { pLabel->show(); pFader->show(); } - void Hide() { pLabel->hide(); pFader->hide(); } - - protected: - QGridLayout* pMainGrid; - QSlider* pFader; - QLabel* pLabel; - - QHBoxLayout* pParentLayout; - }; - CClient* pClient; bool bConnected; QTimer TimerSigMet; @@ -110,8 +87,6 @@ protected: QMenuBar* pMenu; CClientSettingsDlg ClientSettingsDlg; - - CVector vecpChanFader; public slots: void OnConnectDisconBut(); @@ -123,5 +98,8 @@ public slots: { pClient->SetReverbLevel ( AUD_REVERB_MAX - value ); } void OnRevSelL() { pClient->SetReverbOnLeftChan(true); } void OnRevSelR() { pClient->SetReverbOnLeftChan(false); } - void OnConClientListMesReceived ( CVector vecChanInfo ); + void OnConClientListMesReceived ( CVector vecChanInfo ) + { MainMixerBoard->ApplyNewConClientList ( vecChanInfo ); } + void OnChangeChanGain ( int iId, double dGain ) + { pClient->SetRemoteChanGain ( iId, dGain ); } }; diff --git a/src/llconclientdlgbase.ui b/src/llconclientdlgbase.ui index 503b0a68..9b76c85c 100755 --- a/src/llconclientdlgbase.ui +++ b/src/llconclientdlgbase.ui @@ -11,7 +11,7 @@ 0 0 - 597 + 586 289 @@ -401,7 +401,7 @@ CMultiColorLED name - CLEDOverallStatus + LEDOverallStatus minimumSize @@ -612,50 +612,18 @@ Fader - QFrame + CAudioMixerBoard name - FrameAudioFaders + MainMixerBoard - frameShape - StyledPanel + sizePolicy + + 7 + 5 + - - frameShadow - Sunken - - - - margin - 11 - - - spacing - 6 - - - - name - Spacer2 - - - orientation - Horizontal - - - sizeType - Expanding - - - sizeHint - - 20 - 20 - - - - @@ -676,6 +644,20 @@ Fader image2 + + CAudioMixerBoard +
audiomixerboard.h
+ + -1 + -1 + + 0 + + 5 + 5 + + image2 +
diff --git a/src/multicolorled.cpp b/src/multicolorled.cpp index d9501ae8..58470d04 100755 --- a/src/multicolorled.cpp +++ b/src/multicolorled.cpp @@ -175,7 +175,7 @@ void CMultiColorLEDbase::SetUpdateTime(int iNUTi) CMultiColorLED::CMultiColorLED(QWidget* parent, const char* name, WFlags f) : QLabel(parent, name, f) { - /* Set modified style */ + // set modified style setFrameShape(QFrame::Panel); setFrameShadow(QFrame::Sunken); setIndent(0); diff --git a/windows/MocQT.bat b/windows/MocQT.bat index 7b7b97d7..193e3d50 100755 --- a/windows/MocQT.bat +++ b/windows/MocQT.bat @@ -28,6 +28,7 @@ rem\**************************************************************************** rem .h -------------- %qtdir%\bin\moc.exe ..\src\util.h -o moc\moc_util.cpp %qtdir%\bin\moc.exe ..\src\multicolorled.h -o moc\moc_multicolorled.cpp +%qtdir%\bin\moc.exe ..\src\audiomixerboard.h -o moc\moc_audiomixerboard.cpp %qtdir%\bin\moc.exe ..\src\llconclientdlg.h -o moc\moc_llconclientdlg.cpp %qtdir%\bin\moc.exe ..\src\clientsettingsdlg.h -o moc\moc_clientsettingsdlg.cpp %qtdir%\bin\moc.exe ..\src\llconserverdlg.h -o moc\moc_llconserverdlg.cpp diff --git a/windows/llcon.dsp b/windows/llcon.dsp index a260626a..4280f1e0 100755 --- a/windows/llcon.dsp +++ b/windows/llcon.dsp @@ -117,6 +117,10 @@ SOURCE=.\moc\moc_aboutdlgbase.cpp # End Source File # Begin Source File +SOURCE=.\moc\moc_audiomixerboard.cpp +# End Source File +# Begin Source File + SOURCE=.\moc\moc_channel.cpp # End Source File # Begin Source File @@ -174,6 +178,10 @@ SOURCE=..\src\audiocompr.cpp # End Source File # Begin Source File +SOURCE=..\src\audiomixerboard.cpp +# End Source File +# Begin Source File + SOURCE=..\src\buffer.cpp # End Source File # Begin Source File @@ -242,6 +250,10 @@ SOURCE=..\src\audiocompr.h # End Source File # Begin Source File +SOURCE=..\src\audiomixerboard.h +# End Source File +# Begin Source File + SOURCE=..\src\buffer.h # End Source File # Begin Source File