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