summaryrefslogtreecommitdiffstats
path: root/libtdegames/kgame/dialogs/kgameconnectdialog.h
blob: c6c195bfa42280657bac882e8237868fa90ffbd1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
/*
    This file is part of the TDE games library
    Copyright (C) 2001 Martin Heni (martin@heni-online.de)
    Copyright (C) 2001 Andreas Beckermann (b_mann@gmx.de)

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
    License version 2 as published by the Free Software Foundation.

    This library 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
    Library General Public License for more details.

    You should have received a copy of the GNU Library General Public License
    along with this library; see the file COPYING.LIB.  If not, write to
    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
    Boston, MA 02110-1301, USA.
*/

#ifndef __KGAMECONNECTDIALOG_H__
#define __KGAMECONNECTDIALOG_H__

#include <kdialogbase.h>

class KGameConnectDialogPrivate;
class KGameConnectWidgetPrivate;

class KGameConnectWidget : public TQWidget
{
	Q_OBJECT
  
public:
	KGameConnectWidget(TQWidget* parent);
	virtual ~KGameConnectWidget();

	/**
	 * @param host The host to connect to by default
	 **/
	void setHost(const TQString& host);

	/**
	 * @return The host to connect to or TQString() if the user wants to
	 * be the MASTER
	 **/ 
	TQString host() const;

	/**
	 * @param port The port that will be shown by default
	 **/
	void setPort(unsigned short int port);

	/**
	 * @return The port to connect to / to listen
	 **/
	unsigned short int port() const;

	/**
	 * Specifies which state is the default (0 = server game; 1 = join game)
	 * @param state The default state. 0 For a server game, 1 to join a game
	 **/
	void setDefault(int state);
	
	/**
	 * Sets DNS-SD service type, both for publishing and browsing
	 * @param type Service type (something like _twin4._tcp). 
	 * It should be unique for application.
	 * @since 3.4
	 **/
	void setType(const TQString& type);
	
	/**
	 * @return service type
	 */
	TQString type() const;
	
	/** 
	 * Set game name for publishing. 
	 * @param name Game name. Important only for server mode. If not
	 * set hostname will be used. In case of name conflict -2, -3 and so on will be added to name.
	 */
	void setName(const TQString& name);
	
	/**
	 * @return game name. 
	 */
	TQString gameName() const;

protected slots:
	/**
	 * The type has changed, ie the user switched between creating or
	 * joining.
	 **/
	void slotTypeChanged(int);
	void slotGamesFound();
	void slotGameSelected(int);

signals:
	void signalNetworkSetup();
  void signalServerTypeChanged(int);

private:
	void showDnssdControls();
	KGameConnectWidgetPrivate* d;

};

/**
 * @short Dialog to ask for host and port
 *
 * This Dialog is used to create a game. You call initConnection(port,
 * TQString(), parent, true) to create a network game (as a server)
 * or initConnection(port, host, parent) to join a network game.
 *
 * @author Andreas Beckermann <b_mann@gmx.de>
 **/
class KGameConnectDialog : public KDialogBase
{
	Q_OBJECT
  
public:
	KGameConnectDialog(TQWidget* parent = 0,int buttonmask=Ok|Cancel);
	virtual ~KGameConnectDialog();
	
	/**
	 * Shows a dialog to either connect to an existing game or to create a
	 * server game, depending on user's choice.
	 * @param port The port the user wants to connect to.
	 * @param host The host the user wants to connect to. Will be
	 * TQString() if server game is chosen
	 * @param parent The parent of the dialog
	 * @param server True to create a network game per default, false to
	 * join a game by default
	 **/
	static int initConnection(unsigned short int& port, TQString& host, TQWidget* parent, bool server = false);

	/**
	 * @param host The host to connect to by default
	 **/
	void setHost(const TQString& host);

	/**
	 * @return The host to connect to or TQString() if the user wants to
	 * be the MASTER
	 **/ 
	TQString host() const;

	/**
	 * @param port The port that will be shown by default
	 **/
	void setPort(unsigned short int port);

	/**
	 * @return The port to connect to / to listen
	 **/
	unsigned short int port() const;

	/**
	 * Specifies which state is the default (0 = server game; 1 = join game)
	 * @param state The default state. 0 For a server game, 1 to join a game
	 **/
	void setDefault(int state);

signals:
	void signalNetworkSetup();

private:
	KGameConnectDialogPrivate* d;
};

#endif