Merged difference between 7.12 and 7.15 into trunk.
[AROS.git] / external / openurl / raPrefs / handlers.c
blob2e52d690edee1fb0d61bb3eec86e434563a2996b
1 /***************************************************************************
3 openurl.library - universal URL display and browser launcher library
4 Copyright (C) 1998-2005 by Troels Walsted Hansen, et al.
5 Copyright (C) 2005-2013 by openurl.library Open Source Team
7 This library is free software; it has been placed in the public domain
8 and you can freely redistribute it and/or modify it. Please note, however,
9 that some components may be under the LGPL or GPL license.
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15 openurl.library project: http://sourceforge.net/projects/openurllib/
17 $Id$
19 ***************************************************************************/
21 #include "handlers.h"
22 #include "browsers.h"
23 #include "ftps.h"
24 #include "mailers.h"
25 #include "gui_global.h"
26 #include "OpenURL.h"
27 #include "macros.h"
28 #include "utility.h"
30 #include <libraries/openurl.h>
32 #include <classes/window.h>
34 #include <gadgets/chooser.h>
35 #include <gadgets/getfile.h>
36 #include <gadgets/listbrowser.h>
38 #include <reaction/reaction_macros.h>
40 #include <proto/dos.h>
41 #include <proto/intuition.h>
43 extern struct Window *window;
44 extern struct Window *edit_brow_window;
45 extern struct Window *edit_mail_window;
46 extern struct Window *edit_ftp_window;
48 extern Object *win;
49 extern Object *edit_brow_win;
50 extern Object *edit_mail_win;
51 extern Object *edit_ftp_win;
53 CONST_STRPTR hidden_strings[] =
55 "this popup",
56 "is not yet",
57 "functional",
58 "sorry :-/",
59 NULL
62 /// HandleInput_Main_Win
63 BOOL HandleInput_Main_Win(void)
65 uint32 result = 0;
66 uint16 code = 0;
67 BOOL done = FALSE;
69 while ((result = RA_HandleInput(win, &code)))
71 switch(result & WMHI_CLASSMASK)
73 case WMHI_CLOSEWINDOW:
74 done = TRUE;
75 break;
76 case WMHI_GADGETUP:
77 switch (result & WMHI_GADGETMASK)
79 case OBJ_LBROWSER_BROW:
81 uint32 retval = iget(OBJ(OBJ_LBROWSER_BROW), LISTBROWSER_RelEvent);
83 switch(retval)
85 case LBRE_CHECKED:
86 case LBRE_UNCHECKED:
88 struct URL_BrowserNode *bn;
90 bn = (struct URL_BrowserNode *)iget(OBJ(OBJ_LBROWSER_BROW), LISTBROWSER_SelectedNode);
91 if (retval == LBRE_UNCHECKED)
92 SET_FLAG(bn->ubn_Flags,UNF_DISABLED);
93 else
94 CLEAR_FLAG(bn->ubn_Flags,UNF_DISABLED);
97 if (retval != LBRE_DOUBLECLICK)break;
98 // we deliberately go on executing following case OBJ_EDIT_BROW
99 // because a double click mean the same as clicking edit button
101 case OBJ_EDIT_BROW:
103 struct URL_BrowserNode *bn;
105 bn = (struct URL_BrowserNode *)iget(OBJ(OBJ_LBROWSER_BROW), LISTBROWSER_SelectedNode);
106 updateBrowserWindow(bn);
107 edit_brow_window = RA_OpenWindow(edit_brow_win);
108 break;
110 case OBJ_LBROWSER_MAIL:
112 uint32 retval = iget(OBJ(OBJ_LBROWSER_MAIL), LISTBROWSER_RelEvent);
114 switch(retval)
116 case LBRE_CHECKED:
117 case LBRE_UNCHECKED:
119 struct URL_MailerNode *mn;
121 mn = (struct URL_MailerNode *)iget(OBJ(OBJ_LBROWSER_MAIL), LISTBROWSER_SelectedNode);
122 if (retval == LBRE_UNCHECKED)
123 SET_FLAG(mn->umn_Flags,UNF_DISABLED);
124 else
125 CLEAR_FLAG(mn->umn_Flags,UNF_DISABLED);
128 if (retval != LBRE_DOUBLECLICK) break;
129 // we deliberately go on executing following case OBJ_EDIT_MAIL
130 // because a double click mean the same as clicking edit button
132 case OBJ_EDIT_MAIL:
134 struct URL_MailerNode *mn;
136 mn = (struct URL_MailerNode *)iget(OBJ(OBJ_LBROWSER_MAIL), LISTBROWSER_SelectedNode);
137 updateMailerWindow(mn);
138 edit_mail_window = RA_OpenWindow(edit_mail_win);
139 break;
141 case OBJ_LBROWSER_FTP:
143 uint32 retval = iget(OBJ(OBJ_LBROWSER_FTP), LISTBROWSER_RelEvent);
145 switch(retval)
147 case LBRE_CHECKED:
148 case LBRE_UNCHECKED:
150 struct URL_FTPNode *fn;
152 fn = (struct URL_FTPNode *)iget(OBJ(OBJ_LBROWSER_FTP), LISTBROWSER_SelectedNode);
153 if (retval == LBRE_UNCHECKED)
154 SET_FLAG(fn->ufn_Flags,UNF_DISABLED);
155 else
156 CLEAR_FLAG(fn->ufn_Flags,UNF_DISABLED);
159 if (retval != LBRE_DOUBLECLICK) break;
160 // we deliberately go on executing following case OBJ_EDIT_FTP
161 // because a double click mean the same as clicking edit button
163 case OBJ_EDIT_FTP:
165 struct URL_FTPNode *fn;
167 fn = (struct URL_FTPNode *)iget(OBJ(OBJ_LBROWSER_FTP), LISTBROWSER_SelectedNode);
168 updateFTPWindow(fn);
169 edit_ftp_window = RA_OpenWindow(edit_ftp_win);
170 break;
172 case OBJ_USE:
173 case OBJ_SAVE:
174 case OBJ_APPLY:
175 storePrefs((result & WMHI_GADGETMASK)==OBJ_SAVE);
176 if((result & WMHI_GADGETMASK)!=OBJ_APPLY)
177 done=TRUE;
178 break;
179 case OBJ_CANCEL:
180 done=TRUE;
181 break;
183 break;
184 case WMHI_ICONIFY:
185 if (RA_Iconify(win))
187 window = NULL;
188 if (edit_brow_window)
190 RA_CloseWindow(edit_brow_win);
191 edit_brow_window = NULL;
193 if (edit_mail_window)
195 RA_CloseWindow(edit_mail_win);
196 edit_mail_window = NULL;
198 if (edit_ftp_window)
200 RA_CloseWindow(edit_ftp_win);
201 edit_ftp_window = NULL;
204 break;
205 case WMHI_UNICONIFY:
206 window = RA_OpenWindow(win);
207 break;
210 return (done);
214 /// HandleInput_Edit_Brow_Win
215 void HandleInput_Edit_Brow_Win()
217 uint32 result = 0;
218 uint16 code = 0;
220 while ((result = RA_HandleInput(edit_brow_win, &code)))
222 switch(result & WMHI_CLASSMASK)
224 case WMHI_CLOSEWINDOW:
225 RA_CloseWindow(edit_brow_win);
226 edit_brow_window = NULL;
227 break;
228 case WMHI_GADGETUP:
229 switch (result & WMHI_GADGETMASK)
231 case OBJ_BROW_USE:
232 gadset(GAD(OBJ_LBROWSER_BROW), window, LISTBROWSER_Labels, ~0);
233 updateBrowserNode();
234 gadset(GAD(OBJ_LBROWSER_BROW), window, LISTBROWSER_Labels, &list_Brow,
235 LISTBROWSER_AutoFit, TRUE);
236 case OBJ_BROW_CANCEL:
237 RA_CloseWindow(edit_brow_win);
238 edit_brow_window = NULL;
239 break;
240 case OBJ_BROW_PATH_GET:
241 if (gfRequestFile(OBJ(OBJ_BROW_PATH_GET), edit_brow_window))
244 break;
245 case OBJ_BROW_PATH_CHOOSE: // set Attrs according to the button clicked on.
246 case OBJ_BROW_OPEN_CHOOSE:
247 case OBJ_BROW_NEW_CHOOSE:
248 iset(OBJ(OBJ_HIDDEN_CHOOSER), CHOOSER_LabelArray, hidden_strings);
249 IIntuition->ActivateGadget(GAD(OBJ_HIDDEN_CHOOSER),
250 edit_brow_window, NULL);
251 break;
252 case OBJ_BROW_AREXX_CHOOSE:
253 iset(OBJ(OBJ_HIDDEN_CHOOSER), CHOOSER_LabelArray, hidden_strings);
254 IIntuition->ActivateGadget(GAD(OBJ_HIDDEN_CHOOSER),
255 edit_brow_window, NULL);
256 break;
263 /// HandleInput_Edit_Mail_Win
264 void HandleInput_Edit_Mail_Win()
266 uint32 result = 0;
267 uint16 code = 0;
269 while ((result = RA_HandleInput(edit_mail_win, &code)))
271 switch(result & WMHI_CLASSMASK)
273 case WMHI_CLOSEWINDOW:
274 RA_CloseWindow(edit_mail_win);
275 edit_mail_window = NULL;
276 break;
277 case WMHI_GADGETUP:
278 switch (result & WMHI_GADGETMASK)
280 case OBJ_MAIL_USE:
281 gadset(GAD(OBJ_LBROWSER_MAIL), window, LISTBROWSER_Labels, ~0);
282 updateMailerNode();
283 gadset(GAD(OBJ_LBROWSER_MAIL), window, LISTBROWSER_Labels, &list_Mail,
284 LISTBROWSER_AutoFit, TRUE);
285 case OBJ_MAIL_CANCEL:
286 RA_CloseWindow(edit_mail_win);
287 edit_mail_window = NULL;
288 break;
289 case OBJ_MAIL_PATH_GET:
290 if (gfRequestFile(OBJ(OBJ_MAIL_PATH_GET), edit_mail_window))
293 break;
294 case OBJ_MAIL_PATH_CHOOSE: // set Attrs according to the button clicked on.
295 case OBJ_MAIL_WRITE_CHOOSE:
296 iset(OBJ(OBJ_HIDDEN_CHOOSER), CHOOSER_LabelArray, hidden_strings);
297 IIntuition->ActivateGadget(GAD(OBJ_HIDDEN_CHOOSER),
298 edit_mail_window, NULL);
299 break;
300 case OBJ_MAIL_AREXX_CHOOSE:
301 iset(OBJ(OBJ_HIDDEN_CHOOSER), CHOOSER_LabelArray, hidden_strings);
302 IIntuition->ActivateGadget(GAD(OBJ_HIDDEN_CHOOSER),
303 edit_mail_window, NULL);
304 break;
311 /// HandleInput_Edit_FTP_Win
312 void HandleInput_Edit_FTP_Win()
314 uint32 result = 0;
315 uint16 code = 0;
317 while ((result = RA_HandleInput(edit_ftp_win, &code)))
319 switch(result & WMHI_CLASSMASK)
321 case WMHI_CLOSEWINDOW:
322 RA_CloseWindow(edit_ftp_win);
323 edit_ftp_window = NULL;
324 break;
325 case WMHI_GADGETUP:
326 switch (result & WMHI_GADGETMASK)
328 case OBJ_FTP_USE:
329 gadset(GAD(OBJ_LBROWSER_BROW), window, LISTBROWSER_Labels, ~0);
330 updateFTPNode();
331 gadset(GAD(OBJ_LBROWSER_BROW), window, LISTBROWSER_Labels, &list_FTPs,
332 LISTBROWSER_AutoFit, TRUE);
333 case OBJ_FTP_CANCEL:
334 RA_CloseWindow(edit_ftp_win);
335 edit_brow_window = NULL;
336 break;
337 case OBJ_FTP_PATH_GET:
338 if (gfRequestFile(OBJ(OBJ_FTP_PATH_GET), edit_ftp_window))
341 break;
342 case OBJ_FTP_PATH_CHOOSE: // set Attrs according to the button clicked on.
343 case OBJ_FTP_OPEN_CHOOSE:
344 case OBJ_FTP_NEW_CHOOSE:
345 iset( OBJ(OBJ_HIDDEN_CHOOSER), CHOOSER_LabelArray, hidden_strings);
346 IIntuition->ActivateGadget(GAD(OBJ_HIDDEN_CHOOSER),
347 edit_ftp_window, NULL);
348 break;
349 case OBJ_FTP_AREXX_CHOOSE:
350 iset( OBJ(OBJ_HIDDEN_CHOOSER), CHOOSER_LabelArray, hidden_strings);
351 IIntuition->ActivateGadget(GAD(OBJ_HIDDEN_CHOOSER),
352 edit_ftp_window, NULL);
353 break;