From a8b2bc4fb37d1649ac91f0b0ea2dfe05ca5e3a14 Mon Sep 17 00:00:00 2001 From: manuel Date: Thu, 5 May 2011 20:14:34 +0200 Subject: - the last fixes for new build setup - better connect dialog --- pacman-c++/client/client.cpp | 58 +++++++++++++++++++++++++++++++------------- pacman-c++/client/client.pro | 4 ++- 2 files changed, 44 insertions(+), 18 deletions(-) (limited to 'pacman-c++/client') diff --git a/pacman-c++/client/client.cpp b/pacman-c++/client/client.cpp index d064d9e..96ee59a 100644 --- a/pacman-c++/client/client.cpp +++ b/pacman-c++/client/client.cpp @@ -185,14 +185,14 @@ void Client::showConnectDialog() QGridLayout *layout = new QGridLayout(m_dialog); layout->setSizeConstraint(QLayout::SetFixedSize); - QLabel *srvLabel = new QLabel("Address:", m_dialog); - QLineEdit *srv = new QLineEdit(m_settings->value("address", "127.0.0.1").toString(), m_dialog); - QLabel *portLabel = new QLabel("Port:", m_dialog); - QDoubleSpinBox *port = new QDoubleSpinBox(m_dialog); - port->setDecimals(0); - port->setMinimum(1); - port->setMaximum(65535); - port->setValue(m_settings->value("port", Constants::Networking::port).toUInt()); + QLabel *srvLabel = new QLabel("Server address:", m_dialog); + + QComboBox *srv = new QComboBox(m_dialog); + srv->setEditable(true); + srv->setInsertPolicy(QComboBox::InsertAtTop); + QString defentry = QString("127.0.0.1:%1").arg(Constants::Networking::port); + QStringList srvlist = m_settings->value("srvlist", QStringList(defentry)).toStringList(); + srv->addItems(srvlist); QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, m_dialog); @@ -201,15 +201,12 @@ void Client::showConnectDialog() buttonBox->addButton(okButton, QDialogButtonBox::ButtonRole(QDialogButtonBox::AcceptRole)); buttonBox->addButton(cancelButton, QDialogButtonBox::ButtonRole(QDialogButtonBox::RejectRole)); connect(buttonBox, SIGNAL(rejected()), m_dialog, SLOT(reject())); - connect(buttonBox, SIGNAL(accepted()), m_dialog, SLOT(accept())); + connect(buttonBox, SIGNAL(accepted()), this, SLOT(onAcceptConnectDialog())); layout->addWidget(srvLabel, 0, 0); layout->addWidget(srv, 0, 1); - layout->addWidget(portLabel, 1, 0); - layout->addWidget(port, 1, 1); layout->addWidget(buttonBox, 4, 0, 1, 5); - connect(m_dialog, SIGNAL(accepted()), this, SLOT(onAcceptConnectDialog())); m_dialog->show(); } @@ -218,11 +215,38 @@ void Client::onAcceptConnectDialog() if (m_dialog == NULL) return; QGridLayout *layout = static_cast(m_dialog->layout()); - QLineEdit *srv = static_cast(layout->itemAtPosition(0, 1)->widget()); - QDoubleSpinBox *port = static_cast(layout->itemAtPosition(1, 1)->widget()); - m_settings->setValue("address", srv->text()); - m_settings->setValue("port", int(port->value())); - m_mainWidget->doConnect(srv->text(), int(port->value())); + QComboBox *srv = static_cast(layout->itemAtPosition(0, 1)->widget()); + QStringList selected = srv->currentText().split(':'); + QString errormsg; + if (errormsg.isNull() && selected.count() < 2) + errormsg = "Invalid Syntax.\nUse:
:"; + + /* port */ + QString portstr = selected.takeLast(); + bool ok; + unsigned int port = portstr.toUInt(&ok); + if (!ok || port < 1 || port > 65535) + errormsg = "Invalid port number. Must be between 1 and 65535"; + + /* address */ + QString address = selected.join(":"); + + if (!errormsg.isNull()) + { + QMessageBox::critical(this, "Error", errormsg); + return; + } + + emit m_dialog->accept(); + + QStringList srvlist = m_settings->value("srvlist").toStringList(); + srvlist.insert(0, srv->currentText()); + srvlist.removeDuplicates(); + while (srvlist.count() > 20) + srvlist.removeAt(20 - 1); + m_settings->setValue("srvlist", srvlist); + + m_mainWidget->doConnect(address, port); } bool Constants::server = false; diff --git a/pacman-c++/client/client.pro b/pacman-c++/client/client.pro index 849cca2..4b326fe 100644 --- a/pacman-c++/client/client.pro +++ b/pacman-c++/client/client.pro @@ -9,4 +9,6 @@ HEADERS += clicklabel.h \ mainwidget.h include(../common.pri) -PRE_TARGETDEPS += ../common/libcommon.a +PRE_TARGETDEPS += ../libcommon.a + +win32:RC_FILE = ../common/pacman.rc -- cgit v1.2.3