]> git.saurik.com Git - wxWidgets.git/blob - interface/wx/dialup.h
fix parsing of IP literals in URIs, added test for it
[wxWidgets.git] / interface / wx / dialup.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: dialup.h
3 // Purpose: interface of wxDialUpManager
4 // Author: wxWidgets team
5 // RCS-ID: $Id$
6 // Licence: wxWindows license
7 /////////////////////////////////////////////////////////////////////////////
8
9 /**
10 @class wxDialUpManager
11
12 This class encapsulates functions dealing with verifying the connection
13 status of the workstation (connected to the Internet via a direct
14 connection, connected through a modem or not connected at all) and to
15 establish this connection if possible/required (i.e. in the case of the
16 modem).
17
18 The program may also wish to be notified about the change in the connection
19 status (for example, to perform some action when the user connects to the
20 network the next time or, on the contrary, to stop receiving data from the
21 net when the user hangs up the modem). For this, you need to use one of the
22 event macros described below.
23
24 This class is different from other wxWidgets classes in that there is at
25 most one instance of this class in the program accessed via Create() and
26 you can't create the objects of this class directly.
27
28 @beginEventTable{wxDialUpEvent}
29 @event{EVT_DIALUP_CONNECTED(func)}
30 A connection with the network was established.
31 @event{EVT_DIALUP_DISCONNECTED(func)}
32 The connection with the network was lost.
33 @endEventTable
34
35 @library{wxcore}
36 @category{net}
37
38 @see @ref page_samples_dialup, wxDialUpEvent
39 */
40 class wxDialUpManager
41 {
42 public:
43 /**
44 Destructor.
45 */
46 ~wxDialUpManager();
47
48 /**
49 Cancel dialing the number initiated with Dial() with async parameter
50 equal to @true.
51
52 @note This won't result in a DISCONNECTED event being sent.
53
54 @see IsDialing()
55 */
56 bool CancelDialing();
57
58 /**
59 This function should create and return the object of the
60 platform-specific class derived from wxDialUpManager. You should delete
61 the pointer when you are done with it.
62 */
63 wxDialUpManager* Create();
64
65 /**
66 Dial the given ISP, use @a username and @a password to authenticate.
67
68 The parameters are only used under Windows currently, for Unix you
69 should use SetConnectCommand() to customize this functions behaviour.
70
71 If no @a nameOfISP is given, the function will select the default one
72 (proposing the user to choose among all connections defined on this
73 machine) and if no username and/or password are given, the function
74 will try to do without them, but will ask the user if really needed.
75
76 If @a async parameter is @false, the function waits until the end of
77 dialing and returns @true upon successful completion.
78
79 If @a async is @true, the function only initiates the connection and
80 returns immediately - the result is reported via events (an event is
81 sent anyhow, but if dialing failed it will be a DISCONNECTED one).
82 */
83 bool Dial(const wxString& nameOfISP = wxEmptyString,
84 const wxString& username = wxEmptyString,
85 const wxString& password = wxEmptyString,
86 bool async = true);
87
88 /**
89 Disable automatic check for connection status change - notice that the
90 @c wxEVT_DIALUP_XXX events won't be sent any more neither.
91 */
92 void DisableAutoCheckOnlineStatus();
93
94 /**
95 Enable automatic checks for the connection status and sending of
96 wxEVT_DIALUP_CONNECTED/wxEVT_DIALUP_DISCONNECTED events. The interval
97 parameter is only for Unix where we do the check manually and specifies
98 how often should we repeat the check (each minute by default). Under
99 Windows, the notification about the change of connection status is sent
100 by the system and so we don't do any polling and this parameter is
101 ignored.
102
103 @return @false if couldn't set up automatic check for online status.
104 */
105 bool EnableAutoCheckOnlineStatus(size_t nSeconds = 60);
106
107 /**
108 This function is only implemented under Windows.
109
110 Fills the array with the names of all possible values for the first
111 parameter to Dial() on this machine and returns their number (may be
112 0).
113 */
114 size_t GetISPNames(wxArrayString& names) const;
115
116 /**
117 Hang up the currently active dial up connection.
118 */
119 bool HangUp();
120
121 /**
122 Returns @true if the computer has a permanent network connection (i.e.
123 is on a LAN) and so there is no need to use Dial() function to go
124 online.
125
126 @note This function tries to guess the result and it is not always
127 guaranteed to be correct, so it is better to ask user for
128 confirmation or give him a possibility to override it.
129 */
130 bool IsAlwaysOnline() const;
131
132 /**
133 Returns @true if (async) dialing is in progress.
134
135 @see Dial()
136 */
137 bool IsDialing() const;
138
139 /**
140 Returns @true if the dialup manager was initialized correctly. If this
141 function returns @false, no other functions will work neither, so it is
142 a good idea to call this function and check its result before calling
143 any other wxDialUpManager methods.
144 */
145 bool IsOk() const;
146
147 /**
148 Returns @true if the computer is connected to the network: under
149 Windows, this just means that a RAS connection exists, under Unix we
150 check that the "well-known host" (as specified by SetWellKnownHost())
151 is reachable.
152 */
153 bool IsOnline() const;
154
155 /**
156 This method is for Unix only.
157
158 Sets the commands to start up the network and to hang up again.
159 */
160 void SetConnectCommand(const wxString& commandDial = "/usr/bin/pon",
161 const wxString& commandHangup = "/usr/bin/poff") const;
162
163 /**
164 Sometimes the built-in logic for determining the online status may
165 fail, so, in general, the user should be allowed to override it. This
166 function allows to forcefully set the online status - whatever our
167 internal algorithm may think about it.
168
169 @see IsOnline()
170 */
171 void SetOnlineStatus(bool isOnline = true);
172
173 /**
174 This method is for Unix only.
175
176 Under Unix, the value of well-known host is used to check whether we're
177 connected to the internet. It is unused under Windows, but this
178 function is always safe to call. The default value is
179 @c "www.yahoo.com:80".
180 */
181 void SetWellKnownHost(const wxString& hostname, int portno = 80);
182 };
183
184
185
186 /**
187 @class wxDialUpEvent
188
189 This is the event class for the dialup events sent by wxDialUpManager.
190
191 @library{wxcore}
192 @category{events}
193 */
194 class wxDialUpEvent : public wxEvent
195 {
196 public:
197 /**
198 Constructor is only used by wxDialUpManager.
199 */
200 wxDialUpEvent(bool isConnected, bool isOwnEvent);
201
202 /**
203 Is this a @c CONNECTED or @c DISCONNECTED event? In other words, does
204 it notify about transition from offline to online state or vice versa?
205 */
206 bool IsConnectedEvent() const;
207
208 /**
209 Does this event come from wxDialUpManager::Dial() or from some extrenal
210 process (i.e. does it result from our own attempt to establish the
211 connection)?
212 */
213 bool IsOwnEvent() const;
214 };
215