jamulus/src/connectdlg.cpp

159 lines
4.8 KiB
C++
Raw Normal View History

2011-03-27 19:57:46 +02:00
/******************************************************************************\
* Copyright (c) 2004-2011
*
* Author(s):
* Volker Fischer
*
******************************************************************************
*
* 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 "connectdlg.h"
/* Implementation *************************************************************/
2011-04-11 21:09:01 +02:00
CConnectDlg::CConnectDlg ( QWidget* parent, Qt::WindowFlags f )
: QDialog ( parent, f ),
bServerListReceived ( false )
2011-03-29 09:21:00 +02:00
{
setupUi ( this );
// Add help text to controls -----------------------------------------------
2011-03-29 09:21:00 +02:00
// TODO
// set up list view for connected clients
ListViewServers->setColumnWidth ( 0, 170 );
ListViewServers->setColumnWidth ( 1, 130 );
ListViewServers->setColumnWidth ( 2, 55 );
ListViewServers->setColumnWidth ( 3, 80 );
ListViewServers->clear();
// Connections -------------------------------------------------------------
// timers
QObject::connect ( &TimerPing, SIGNAL ( timeout() ),
this, SLOT ( OnTimerPing() ) );
2011-04-11 21:09:01 +02:00
QObject::connect ( &TimerReRequestServList, SIGNAL ( timeout() ),
this, SLOT ( OnTimerReRequestServList() ) );
2011-03-29 09:21:00 +02:00
}
void CConnectDlg::showEvent ( QShowEvent* )
{
2011-04-11 21:09:01 +02:00
// reset flag (on opening the connect dialg, we always want to request a new
// updated server list per definition)
bServerListReceived = false;
// TEST
QString strNAddr = "llcon.dyndns.org:22122";
// get the IP address of the central server (using the ParseNetworAddress
// function) when the connect dialog is opened, this seems to be the correct
// time to do it
if ( LlconNetwUtil().ParseNetworkAddress ( strNAddr,
CentralServerAddress ) )
{
// send the request for the server list
emit ReqServerListQuery ( CentralServerAddress );
2011-04-04 21:00:54 +02:00
2011-04-11 21:09:01 +02:00
// start timer, if this message did not get any respond to retransmit
// the server list request message
TimerReRequestServList.start ( SERV_LIST_REQ_UPDATE_TIME_MS );
}
2011-04-04 21:00:54 +02:00
2011-04-11 21:09:01 +02:00
// TODO
// only activate ping timer if window is actually shown
//TimerPing.start ( PING_UPDATE_TIME_MS );
2011-03-29 09:21:00 +02:00
// UpdateDisplay();
}
void CConnectDlg::hideEvent ( QHideEvent* )
{
2011-04-11 21:09:01 +02:00
// if window is closed, stop timers
2011-03-29 09:21:00 +02:00
TimerPing.stop();
2011-04-11 21:09:01 +02:00
TimerReRequestServList.stop();
}
void CConnectDlg::OnTimerReRequestServList()
{
// if the server list is not yet received, retransmit the request for the
// server list
if ( !bServerListReceived )
{
emit ReqServerListQuery ( CentralServerAddress );
}
}
void CConnectDlg::SetServerList ( const CHostAddress& InetAddr,
const CVector<CServerInfo>& vecServerInfo )
2011-04-11 21:09:01 +02:00
{
// set flag
bServerListReceived = true;
// first clear list
ListViewServers->clear();
2011-04-11 21:09:01 +02:00
// add list item for each server in the server list
for ( int iIdx = 0; iIdx < vecServerInfo.Size(); iIdx++ )
{
QTreeWidgetItem* pNewListViewItem =
new QTreeWidgetItem ( ListViewServers );
2011-04-11 21:09:01 +02:00
// server name
pNewListViewItem->setText ( 0, vecServerInfo[iIdx].strName );
// server country
pNewListViewItem->setText ( 1,
QLocale::countryToString ( vecServerInfo[iIdx].eCountry ) );
// number of clients
pNewListViewItem->setText ( 2,
QString().setNum ( vecServerInfo[iIdx].iNumClients ) );
// store host address
pNewListViewItem->setData ( 0, Qt::UserRole,
vecServerInfo[iIdx].HostAddr.toString() );
}
2011-03-29 09:21:00 +02:00
}
void CConnectDlg::OnTimerPing()
{
// send ping message to server
// TEST
2011-03-30 19:58:45 +02:00
//QHostAddress test ( "127.0.0.1" );
2011-04-11 21:09:01 +02:00
//emit CreateCLPingMes ( CHostAddress ( test, 22124 ) );
2011-03-29 09:21:00 +02:00
}
void CConnectDlg::SetPingTimeResult ( CHostAddress& InetAddr,
const int iPingTime )
2011-03-29 09:21:00 +02:00
{
// ListViewServers->
//// TEST
//pListViewItem->setText ( 0, QString().setNum ( iPingTime ) );
}