diff --git a/src/connectdlg.cpp b/src/connectdlg.cpp index 4fc0209a..34894099 100755 --- a/src/connectdlg.cpp +++ b/src/connectdlg.cpp @@ -34,10 +34,38 @@ CConnectDlg::CConnectDlg ( QWidget* parent, Qt::WindowFlags f ) // Add help text to controls ----------------------------------------------- + // server address + QString strServAddrH = tr ( "Server Address: The IP address or URL " + "of the server running the llcon server software must be set here. " + "A list of the most recent used server URLs is available for " + "selection. If an invalid address was chosen, an error message is " + "shown in the status bar." ); + + TextLabelServerAddr->setWhatsThis ( strServAddrH ); + LineEditServerAddr->setWhatsThis ( strServAddrH ); + + LineEditServerAddr->setAccessibleName ( tr ( "Server address edit box" ) ); + LineEditServerAddr->setAccessibleDescription ( tr ( "Holds the current server " + "URL. It also stores old URLs in the combo box list." ) ); + + + // init server address combo box (max MAX_NUM_SERVER_ADDR_ITEMS entries) + LineEditServerAddr->setMaxCount ( MAX_NUM_SERVER_ADDR_ITEMS ); + LineEditServerAddr->setInsertPolicy ( QComboBox::InsertAtTop ); + + // load data from ini file + for ( int iLEIdx = 0; iLEIdx < MAX_NUM_SERVER_ADDR_ITEMS; iLEIdx++ ) + { +// if ( !pClient->vstrIPAddress[iLEIdx].isEmpty() ) + { // TODO +// LineEditServerAddr->addItem ( pClient->vstrIPAddress[iLEIdx] ); + } + } + // set up list view for connected clients ListViewServers->setColumnWidth ( 0, 170 ); ListViewServers->setColumnWidth ( 1, 130 ); @@ -48,6 +76,13 @@ CConnectDlg::CConnectDlg ( QWidget* parent, Qt::WindowFlags f ) // Connections ------------------------------------------------------------- + // line edits + QObject::connect ( LineEditServerAddr, SIGNAL ( editTextChanged ( const QString ) ), + this, SLOT ( OnLineEditServerAddrTextChanged ( const QString ) ) ); + + QObject::connect ( LineEditServerAddr, SIGNAL ( activated ( int ) ), + this, SLOT ( OnLineEditServerAddrActivated ( int ) ) ); + // timers QObject::connect ( &TimerPing, SIGNAL ( timeout() ), this, SLOT ( OnTimerPing() ) ); @@ -177,6 +212,26 @@ void CConnectDlg::SetServerList ( const CHostAddress& InetAddr, TimerPing.start ( PING_UPDATE_TIME_SERVER_LIST_MS ); } +void CConnectDlg::OnLineEditServerAddrTextChanged ( const QString ) +{ + // if the maximum number of items in the combo box is reached, + // delete the last item so that the new item can be added (first + // in - first out) + if ( LineEditServerAddr->count() == MAX_NUM_SERVER_ADDR_ITEMS ) + { + LineEditServerAddr->removeItem ( MAX_NUM_SERVER_ADDR_ITEMS - 1 ); + } +} + +void CConnectDlg::OnLineEditServerAddrActivated ( int index ) +{ + // move activated list item to the top + const QString strCurIPAddress = LineEditServerAddr->itemText ( index ); + LineEditServerAddr->removeItem ( index ); + LineEditServerAddr->insertItem ( 0, strCurIPAddress ); + LineEditServerAddr->setCurrentIndex ( 0 ); +} + void CConnectDlg::OnTimerPing() { // send ping messages to the servers in the list diff --git a/src/connectdlg.h b/src/connectdlg.h index 3ed066f6..58d8c5f8 100755 --- a/src/connectdlg.h +++ b/src/connectdlg.h @@ -73,6 +73,8 @@ protected: bool bServerListReceived; public slots: + void OnLineEditServerAddrTextChanged ( const QString ); + void OnLineEditServerAddrActivated ( int index ); void OnTimerPing(); void OnTimerReRequestServList(); diff --git a/src/connectdlgbase.ui b/src/connectdlgbase.ui index 05dc0f30..a9710ac0 100755 --- a/src/connectdlgbase.ui +++ b/src/connectdlgbase.ui @@ -6,7 +6,7 @@ 0 0 584 - 355 + 256 @@ -55,18 +55,25 @@ - - - Server Address - - - - - - - true - - + + + + + Server Address + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + true + + + + @@ -77,16 +84,26 @@ - 40 - 20 + 351 + 25 - + - PushButton + C&ancel + + + + + + + &Connect + + + true diff --git a/src/llconclientdlg.h b/src/llconclientdlg.h index 2b943c7e..ee8d3c7b 100755 --- a/src/llconclientdlg.h +++ b/src/llconclientdlg.h @@ -74,9 +74,11 @@ class CLlconClientDlg : public QDialog, private Ui_CLlconClientDlgBase Q_OBJECT public: - CLlconClientDlg ( CClient* pNCliP, const bool bNewConnectOnStartup, - const bool bNewDisalbeLEDs, - QWidget* parent = 0, Qt::WindowFlags f = 0 ); + CLlconClientDlg ( CClient* pNCliP, + const bool bNewConnectOnStartup, + const bool bNewDisalbeLEDs, + QWidget* parent = 0, + Qt::WindowFlags f = 0 ); protected: void SetGUIDesign ( const EGUIDesign eNewDesign );