support for the new GUI controls in the server, net yet finished (still buggy)

This commit is contained in:
Volker Fischer 2011-04-30 13:01:26 +00:00
parent ead06da44d
commit c08fe59a68
9 changed files with 166 additions and 33 deletions

View File

@ -49,7 +49,11 @@ CLlconServerDlg::CLlconServerDlg ( CServer* pNServP, QWidget* parent )
vecpListViewItems[i] = new CServerListViewItem ( ListViewClients );
vecpListViewItems[i]->setHidden ( true );
}
// update central server name line edit
LineEditCentralServerAddress->setText (
pServer->GetServerListCentralServerAddress() );
// update server name line edit
LineEditServerName->setText ( pServer->GetServerName() );
@ -81,6 +85,16 @@ CLlconServerDlg::CLlconServerDlg ( CServer* pNServP, QWidget* parent )
ComboBoxLocationCountry->findData (
static_cast<int> ( pServer->GetServerCountry() ) ) );
// update register server check box
if ( pServer->GetServerListEnabled() )
{
cbRegisterServer->setCheckState ( Qt::Checked );
}
else
{
cbRegisterServer->setCheckState ( Qt::Unchecked );
}
// Main menu bar -----------------------------------------------------------
pMenu = new QMenuBar ( this );
@ -91,6 +105,25 @@ CLlconServerDlg::CLlconServerDlg ( CServer* pNServP, QWidget* parent )
// Connections -------------------------------------------------------------
// check boxes
QObject::connect ( cbRegisterServer, SIGNAL ( stateChanged ( int ) ),
this, SLOT ( OnRegisterServerStateChanged ( int ) ) );
// line edits
QObject::connect ( LineEditCentralServerAddress,
SIGNAL ( textChanged ( const QString& ) ),
this, SLOT ( OnLineEditCentralServerAddressTextChanged ( const QString& ) ) );
QObject::connect ( LineEditServerName, SIGNAL ( textChanged ( const QString& ) ),
this, SLOT ( OnLineEditServerNameTextChanged ( const QString& ) ) );
QObject::connect ( LineEditLocationCity, SIGNAL ( textChanged ( const QString& ) ),
this, SLOT ( OnLineEditLocationCityTextChanged ( const QString& ) ) );
// combo boxes
QObject::connect ( ComboBoxLocationCountry, SIGNAL ( activated ( int ) ),
this, SLOT ( OnComboBoxLocationCountryActivated ( int ) ) );
// timers
QObject::connect ( &Timer, SIGNAL ( timeout() ), this, SLOT ( OnTimer() ) );
@ -100,6 +133,52 @@ CLlconServerDlg::CLlconServerDlg ( CServer* pNServP, QWidget* parent )
Timer.start ( GUI_CONTRL_UPDATE_TIME );
}
void CLlconServerDlg::OnRegisterServerStateChanged ( int value )
{
const bool bEnabled = ( value == Qt::Checked );
// if register server is not enabled, we disable all the configuration
// controls for the server list
LabelCentralServerAddress->setEnabled ( bEnabled );
cbDefaultCentralServer->setEnabled ( bEnabled );
LineEditCentralServerAddress->setEnabled ( bEnabled );
GroupBoxServerInfo->setEnabled ( bEnabled );
// apply new setting to the server and update it
pServer->SetServerListEnabled ( bEnabled );
pServer->UpdateServerList();
}
void CLlconServerDlg::OnLineEditCentralServerAddressTextChanged ( const QString& strNewAddr )
{
// apply new setting to the server and update it
pServer->SetServerListCentralServerAddress ( strNewAddr );
pServer->UpdateServerList();
}
void CLlconServerDlg::OnLineEditServerNameTextChanged ( const QString& strNewName )
{
// apply new setting to the server and update it
pServer->SetServerName ( strNewName );
pServer->UpdateServerList();
}
void CLlconServerDlg::OnLineEditLocationCityTextChanged ( const QString& strNewCity )
{
// apply new setting to the server and update it
pServer->SetServerCity ( strNewCity );
pServer->UpdateServerList();
}
void CLlconServerDlg::OnComboBoxLocationCountryActivated ( int iCntryListItem )
{
// apply new setting to the server and update it
pServer->SetServerCountry ( static_cast<QLocale::Country> (
ComboBoxLocationCountry->itemData ( iCntryListItem ).toInt() ) );
pServer->UpdateServerList();
}
void CLlconServerDlg::OnTimer()
{
CVector<CHostAddress> vecHostAddresses;

View File

@ -70,5 +70,10 @@ protected:
void UpdateSliderNetBuf();
public slots:
void OnRegisterServerStateChanged ( int value );
void OnLineEditCentralServerAddressTextChanged ( const QString& strNewAddr );
void OnLineEditServerNameTextChanged ( const QString& strNewName );
void OnLineEditLocationCityTextChanged ( const QString& strNewCity );
void OnComboBoxLocationCountryActivated ( int iCntryListItem );
void OnTimer();
};

View File

@ -52,7 +52,7 @@
</widget>
</item>
<item>
<widget class="QCheckBox" name="CheckBoxRegisterServer" >
<widget class="QCheckBox" name="cbRegisterServer" >
<property name="text" >
<string>Register Server</string>
</property>
@ -68,7 +68,7 @@
</widget>
</item>
<item>
<widget class="QCheckBox" name="CheckBoxDefaultCentralServer" >
<widget class="QCheckBox" name="cbDefaultCentralServer" >
<property name="text" >
<string>Default</string>
</property>
@ -80,7 +80,7 @@
</layout>
</item>
<item>
<widget class="QGroupBox" name="groupBox" >
<widget class="QGroupBox" name="GroupBoxServerInfo" >
<property name="title" >
<string>Server Info</string>
</property>

View File

@ -353,6 +353,10 @@ int main ( int argc, char** argv )
CSettings Settings ( &Server );
Settings.Load ( strIniFileName );
// update server list AFTER restoring the settings from the
// settings file
Server.UpdateServerList();
// GUI object for the server
CLlconServerDlg ServerDlg ( &Server, 0 );
@ -369,6 +373,9 @@ int main ( int argc, char** argv )
}
else
{
// update serverlist
Server.UpdateServerList();
// only start application without using the GUI
tsConsole << CAboutDlg::GetVersionAndNameStr ( false ) << endl;

View File

@ -383,11 +383,6 @@ CServer::CServer ( const QString& strLoggingFileName,
QObject::connect ( &vecChannels[9], SIGNAL ( PingReceived ( int ) ), this, SLOT ( OnPingReceivedCh9 ( int ) ) );
QObject::connect ( &vecChannels[10], SIGNAL ( PingReceived ( int ) ), this, SLOT ( OnPingReceivedCh10 ( int ) ) );
QObject::connect ( &vecChannels[11], SIGNAL ( PingReceived ( int ) ), this, SLOT ( OnPingReceivedCh11 ( int ) ) );
// set enable of the server list, must be done after the connections, we use
// the information about the enable status of the serverlist object itself
ServerListManager.SetEnabled ( ServerListManager.GetEnabled() );
}
void CServer::OnSendProtMessage ( int iChID, CVector<uint8_t> vecMessage )

View File

@ -126,6 +126,21 @@ public:
CVector<int>& veciJitBufNumFrames,
CVector<int>& veciNetwFrameSizeFact );
// Server list management --------------------------------------------------
void UpdateServerList() { ServerListManager.Update(); }
void SetServerListEnabled ( const bool bState )
{ ServerListManager.SetEnabled ( bState ); }
bool GetServerListEnabled() { return ServerListManager.GetEnabled(); }
void SetServerListCentralServerAddress ( const QString& sNCentServAddr )
{ ServerListManager.SetCentralServerAddress ( sNCentServAddr ); }
QString GetServerListCentralServerAddress()
{ return ServerListManager.GetCentralServerAddress(); }
void SetServerName ( const QString& strNewName )
{ ServerListManager.SetServerName ( strNewName ); }

View File

@ -29,27 +29,10 @@
CServerListManager::CServerListManager ( const QString& sNCentServAddr,
const QString& strServerInfo,
CProtocol* pNConLProt )
: strCentralServerAddress ( sNCentServAddr ),
pConnLessProtocol ( pNConLProt )
: pConnLessProtocol ( pNConLProt )
{
// per definition: If the central server address is empty, the server list
// is disabled.
// per definition: If we are in server mode and the central server address
// is the localhost address, we are in central server mode. For the central
// server, the server list is always enabled.
if ( !strCentralServerAddress.isEmpty() )
{
bIsCentralServer =
( !strCentralServerAddress.toLower().compare ( "localhost" ) ||
!strCentralServerAddress.compare ( "127.0.0.1" ) );
bEnabled = true;
}
else
{
bIsCentralServer = false;
bEnabled = true;
}
// set the central server address
SetCentralServerAddress ( sNCentServAddr );
// per definition, the very first entry is this server and this entry will
// never be deleted
@ -105,11 +88,35 @@ CServerListManager::CServerListManager ( const QString& sNCentServAddr,
this, SLOT ( OnTimerRegistering() ) );
}
void CServerListManager::SetEnabled ( const bool bState )
void CServerListManager::SetCentralServerAddress ( const QString sNCentServAddr )
{
QMutexLocker locker ( &Mutex );
bEnabled = bState;
strCentralServerAddress = sNCentServAddr;
// per definition: If the central server address is empty, the server list
// is disabled.
// per definition: If we are in server mode and the central server address
// is the localhost address, we are in central server mode. For the central
// server, the server list is always enabled.
if ( !strCentralServerAddress.isEmpty() )
{
bIsCentralServer =
( !strCentralServerAddress.toLower().compare ( "localhost" ) ||
!strCentralServerAddress.compare ( "127.0.0.1" ) );
bEnabled = true;
}
else
{
bIsCentralServer = false;
bEnabled = true;
}
}
void CServerListManager::Update()
{
QMutexLocker locker ( &Mutex );
if ( bEnabled )
{

View File

@ -125,9 +125,16 @@ public:
const QString& strServerInfo,
CProtocol* pNConLProt );
void SetEnabled ( const bool bState );
// the update has to be called if any change to the server list
// properties was done
void Update();
void SetEnabled ( const bool bState ) { bEnabled = bState; }
bool GetEnabled() const { return bEnabled; }
void SetCentralServerAddress ( const QString sNCentServAddr );
QString GetCentralServerAddress() { return strCentralServerAddress; }
bool GetIsCentralServer() const { return bIsCentralServer; }
void RegisterServer ( const CHostAddress& InetAddr,

View File

@ -193,11 +193,21 @@ void CSettings::ReadIniFile ( const QString& sFileName )
{
// server:
// central server address
pServer->SetServerListCentralServerAddress (
GetIniSetting ( IniXMLDocument, "server", "centralservaddr" ) );
// server list enabled flag
if ( GetFlagIniSet ( IniXMLDocument, "server", "servlistenabled", bValue ) )
{
pServer->SetServerListEnabled ( bValue );
}
// name
pServer->SetServerName ( GetIniSetting ( IniXMLDocument, "server", "name" ) );
// city
pServer->SetServerCity ( GetIniSetting ( IniXMLDocument, "server", "name" ) );
pServer->SetServerCity ( GetIniSetting ( IniXMLDocument, "server", "city" ) );
// country
if ( GetNumericIniSet ( IniXMLDocument, "server", "country",
@ -295,6 +305,14 @@ void CSettings::WriteIniFile ( const QString& sFileName )
{
// server:
// central server address
PutIniSetting ( IniXMLDocument, "server", "centralservaddr",
pServer->GetServerListCentralServerAddress() );
// server list enabled flag
SetFlagIniSet ( IniXMLDocument, "server", "servlistenabled",
pServer->GetServerListEnabled() );
// name
PutIniSetting ( IniXMLDocument, "server", "name",
pServer->GetServerName() );