summaryrefslogtreecommitdiffstats
path: root/lskat/lskat/networkdlg.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lskat/lskat/networkdlg.cpp')
-rw-r--r--lskat/lskat/networkdlg.cpp105
1 files changed, 105 insertions, 0 deletions
diff --git a/lskat/lskat/networkdlg.cpp b/lskat/lskat/networkdlg.cpp
new file mode 100644
index 00000000..f43a1fd9
--- /dev/null
+++ b/lskat/lskat/networkdlg.cpp
@@ -0,0 +1,105 @@
+/***************************************************************************
+ networkdlg.cpp - description
+ -------------------
+ copyright : (C) 2004 by Jakub Stachowski
+ email : qbast@go2.pl
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+
+#include "networkdlg.h"
+#include <qspinbox.h>
+#include <qlineedit.h>
+#include <qcombobox.h>
+#include <qbuttongroup.h>
+#include <qwidgetstack.h>
+
+extern const char* LSKAT_SERVICE;
+
+// Create the dialog
+NetworkDlg::NetworkDlg( QWidget *parent, const char *name )
+ : NetworkDlgBase( parent, name, TRUE )
+{
+ browser = new DNSSD::ServiceBrowser(QString::fromLatin1(LSKAT_SERVICE));
+ connect(browser,SIGNAL(finished()),SLOT(gamesFound()));
+ browser->startBrowse();
+}
+
+NetworkDlg::~NetworkDlg()
+{
+ delete browser;
+}
+
+void NetworkDlg::SetHost(const QString& host)
+{
+ hostname->setText(host);
+}
+
+void NetworkDlg::SetName(const QString& name)
+{
+ serverName->setText(name);
+}
+QString NetworkDlg::QueryName() const
+{
+ return serverName->text();
+}
+
+void NetworkDlg::SetPort(unsigned short port)
+{
+ this->port->setValue(port);
+}
+
+void NetworkDlg::gamesFound()
+{
+ bool autoselect=false;
+ if (!clientName->count() && group->selectedId()==1) autoselect=true;
+ clientName->clear();
+ QStringList names;
+ QValueList<DNSSD::RemoteService::Ptr>::ConstIterator itEnd = browser->services().end();
+ for (QValueList<DNSSD::RemoteService::Ptr>::ConstIterator it = browser->services().begin();
+ it!=itEnd; ++it) names << (*it)->serviceName();
+ clientName->insertStringList(names);
+ if (autoselect && clientName->count()) gameSelected(0);
+}
+
+void NetworkDlg::gameSelected(int nr)
+{
+ if (nr>=browser->services().count() || nr<0) return;
+ DNSSD::RemoteService::Ptr srv = browser->services()[nr];
+ if (!srv->isResolved() && !srv->resolve()) return;
+ hostname->setText(srv->hostName());
+ port->setValue(srv->port());
+}
+
+unsigned short NetworkDlg::QueryPort() const
+{
+ return port->value();
+}
+
+QString NetworkDlg::QueryHost() const
+{
+ return hostname->text();
+}
+
+void NetworkDlg::toggleServerClient()
+{
+ stack->raiseWidget(group->selectedId());
+ if (group->selectedId()==1) {
+ gameSelected(clientName->currentItem());
+ hostname->setEnabled(true);
+ }
+ else {
+ hostname->setText(QString::null);
+ hostname->setEnabled(false);
+ }
+}
+
+#include "networkdlg.moc"