changed order of list columns, fix for close dialog with cross button

This commit is contained in:
Volker Fischer 2011-04-23 21:34:08 +00:00
parent f5e8f6b68a
commit 7f924e1240

View File

@ -30,7 +30,7 @@ CConnectDlg::CConnectDlg ( QWidget* parent, Qt::WindowFlags f )
: QDialog ( parent, f ), : QDialog ( parent, f ),
strSelectedAddress ( "" ), strSelectedAddress ( "" ),
bServerListReceived ( false ), bServerListReceived ( false ),
bCancelPressed ( false ), bStateOK ( false ),
bServerListItemWasChosen ( false ) bServerListItemWasChosen ( false )
{ {
setupUi ( this ); setupUi ( this );
@ -57,10 +57,9 @@ CConnectDlg::CConnectDlg ( QWidget* parent, Qt::WindowFlags f )
// set up list view for connected clients // set up list view for connected clients
ListViewServers->setColumnWidth ( 0, 170 ); ListViewServers->setColumnWidth ( 0, 170 );
ListViewServers->setColumnWidth ( 1, 130 ); ListViewServers->setColumnWidth ( 1, 65 );
ListViewServers->setColumnWidth ( 2, 55 ); ListViewServers->setColumnWidth ( 2, 55 );
ListViewServers->setColumnWidth ( 3, 65 ); ListViewServers->setColumnWidth ( 3, 130 );
ListViewServers->setColumnWidth ( 4, 140 );
ListViewServers->clear(); ListViewServers->clear();
@ -72,10 +71,10 @@ CConnectDlg::CConnectDlg ( QWidget* parent, Qt::WindowFlags f )
// buttons // buttons
QObject::connect ( CancelButton, SIGNAL ( clicked() ), QObject::connect ( CancelButton, SIGNAL ( clicked() ),
this, SLOT ( OnCancelButtonClicked() ) ); this, SLOT ( close() ) );
QObject::connect ( ConnectButton, SIGNAL ( clicked() ), QObject::connect ( ConnectButton, SIGNAL ( clicked() ),
this, SLOT ( close() ) ); this, SLOT ( OnConnectButtonClicked() ) );
// timers // timers
QObject::connect ( &TimerPing, SIGNAL ( timeout() ), QObject::connect ( &TimerPing, SIGNAL ( timeout() ),
@ -103,7 +102,7 @@ void CConnectDlg::showEvent ( QShowEvent* )
// reset flags (on opening the connect dialg, we always want to request a // reset flags (on opening the connect dialg, we always want to request a
// new updated server list per definition) // new updated server list per definition)
bServerListReceived = false; bServerListReceived = false;
bCancelPressed = false; bStateOK = false;
bServerListItemWasChosen = false; bServerListItemWasChosen = false;
// clear current address // clear current address
@ -184,29 +183,6 @@ void CConnectDlg::SetServerList ( const CHostAddress& InetAddr,
for ( int iIdx = 0; iIdx < iServerInfoLen; iIdx++ ) for ( int iIdx = 0; iIdx < iServerInfoLen; iIdx++ )
{ {
QTreeWidgetItem* pNewListViewItem =
new QTreeWidgetItem ( ListViewServers );
// make the entry invisible (will be set to visible on successful ping
// result)
pNewListViewItem->setHidden ( true );
// 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 ) );
// the ping time shall be shown in bold font
QFont CurPingTimeFont = pNewListViewItem->font( 3 );
CurPingTimeFont.setBold ( true );
pNewListViewItem->setFont ( 3, CurPingTimeFont );
// get the host address, note that for the very first entry which is // get the host address, note that for the very first entry which is
// the central server, we have to use the receive host address // the central server, we have to use the receive host address
// instead // instead
@ -221,22 +197,51 @@ void CConnectDlg::SetServerList ( const CHostAddress& InetAddr,
CurHostAddress = InetAddr; CurHostAddress = InetAddr;
} }
// IP address and port (use IP number without last byte) // create new list view item
// Definition: If the port number is the default port number, we do not QTreeWidgetItem* pNewListViewItem =
// show it. new QTreeWidgetItem ( ListViewServers );
if ( vecServerInfo[iIdx].HostAddr.iPort == LLCON_DEFAULT_PORT_NUMBER )
// make the entry invisible (will be set to visible on successful ping
// result)
pNewListViewItem->setHidden ( true );
// server name (if empty, show host address instead)
if ( !vecServerInfo[iIdx].strName.isEmpty() )
{ {
// only show IP number, no port number pNewListViewItem->setText ( 0, vecServerInfo[iIdx].strName );
pNewListViewItem->setText ( 4, CurHostAddress.
toString ( CHostAddress::SM_IP_NO_LAST_BYTE ) );
} }
else else
{ {
// show IP number and port // IP address and port (use IP number without last byte)
pNewListViewItem->setText ( 4, CurHostAddress. // Definition: If the port number is the default port number, we do
toString ( CHostAddress::SM_IP_NO_LAST_BYTE_PORT ) ); // not show it.
if ( vecServerInfo[iIdx].HostAddr.iPort == LLCON_DEFAULT_PORT_NUMBER )
{
// only show IP number, no port number
pNewListViewItem->setText ( 0, CurHostAddress.
toString ( CHostAddress::SM_IP_NO_LAST_BYTE ) );
}
else
{
// show IP number and port
pNewListViewItem->setText ( 0, CurHostAddress.
toString ( CHostAddress::SM_IP_NO_LAST_BYTE_PORT ) );
}
} }
// the ping time shall be shown in bold font
QFont CurPingTimeFont = pNewListViewItem->font( 3 );
CurPingTimeFont.setBold ( true );
pNewListViewItem->setFont ( 1, CurPingTimeFont );
// number of clients
pNewListViewItem->setText ( 2,
QString().setNum ( vecServerInfo[iIdx].iNumClients ) );
// server country
pNewListViewItem->setText ( 3,
QLocale::countryToString ( vecServerInfo[iIdx].eCountry ) );
// store host address // store host address
pNewListViewItem->setData ( 0, Qt::UserRole, pNewListViewItem->setData ( 0, Qt::UserRole,
CurHostAddress.toString() ); CurHostAddress.toString() );
@ -258,10 +263,10 @@ void CConnectDlg::OnServerListItemDoubleClicked ( QTreeWidgetItem* Item,
} }
} }
void CConnectDlg::OnCancelButtonClicked() void CConnectDlg::OnConnectButtonClicked()
{ {
// set cancel flag // set state OK flag
bCancelPressed = true; bStateOK = true;
// close dialog // close dialog
close(); close();
@ -309,23 +314,23 @@ void CConnectDlg::SetPingTimeResult ( CHostAddress& InetAddr,
{ {
case MUL_COL_LED_GREEN: case MUL_COL_LED_GREEN:
ListViewServers-> ListViewServers->
topLevelItem ( iIdx )->setTextColor ( 3, Qt::darkGreen ); topLevelItem ( iIdx )->setTextColor ( 1, Qt::darkGreen );
break; break;
case MUL_COL_LED_YELLOW: case MUL_COL_LED_YELLOW:
ListViewServers-> ListViewServers->
topLevelItem ( iIdx )->setTextColor ( 3, Qt::darkYellow ); topLevelItem ( iIdx )->setTextColor ( 1, Qt::darkYellow );
break; break;
case MUL_COL_LED_RED: case MUL_COL_LED_RED:
ListViewServers-> ListViewServers->
topLevelItem ( iIdx )->setTextColor ( 3, Qt::red ); topLevelItem ( iIdx )->setTextColor ( 1, Qt::red );
break; break;
} }
// update ping text // update ping text
ListViewServers->topLevelItem ( iIdx )-> ListViewServers->topLevelItem ( iIdx )->
setText ( 3, QString().setNum ( iPingTime ) + " ms" ); setText ( 1, QString().setNum ( iPingTime ) + " ms" );
// a ping time was received, set item to visible // a ping time was received, set item to visible
ListViewServers->topLevelItem ( iIdx )->setHidden ( false ); ListViewServers->topLevelItem ( iIdx )->setHidden ( false );