Fixed another typo in 8-bit pixel handling (BYTE should have been UBYTE).
[AROS.git] / external / openurl / raPrefs / OpenURL.c
blobc37061013308dbe5cf793324a7cf5754ce96818a
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 <exec/exec.h>
22 #include <intuition/intuition.h>
23 #include <intuition/icclass.h>
24 #include <dos/dos.h>
25 #include <libraries/gadtools.h>
26 #include <images/label.h>
27 #include <images/glyph.h>
29 #include <classes/window.h>
31 #include <gadgets/layout.h>
32 #include <gadgets/space.h>
33 #include <gadgets/button.h>
34 #include <gadgets/clicktab.h>
35 #include <gadgets/texteditor.h>
36 #include <gadgets/scroller.h>
37 #include <gadgets/checkbox.h>
38 #include <gadgets/listbrowser.h>
39 #include <gadgets/string.h>
40 #include <gadgets/getfile.h>
41 #include <gadgets/chooser.h>
43 #include <proto/exec.h>
44 #include <proto/intuition.h>
45 #include <proto/utility.h>
46 #include <proto/icon.h>
48 #include <proto/window.h>
49 #include <proto/layout.h>
50 #include <proto/space.h>
51 #include <proto/button.h>
52 #include <proto/clicktab.h>
53 #include <proto/texteditor.h>
54 #include <proto/scroller.h>
55 #include <proto/checkbox.h>
56 #include <proto/listbrowser.h>
57 #include <proto/string.h>
58 #include <proto/getfile.h>
59 #include <proto/chooser.h>
60 #include <proto/label.h>
62 #include <reaction/reaction_macros.h>
64 #include <libraries/openurl.h>
65 #include <proto/openurl.h>
67 #include "gui_global.h"
68 #include "browsers.h"
69 #include "ftps.h"
70 #include "handlers.h"
71 #include "mailers.h"
72 #include "utility.h"
73 #include "macros.h"
75 #include "version.h"
77 static const char USED_VAR version[] = "$VER: OpenURL-Prefs " LIB_REV_STRING " [" SYSTEMSHORT "/" CPU "] (" LIB_DATE ") " LIB_COPYRIGHT;
79 Object *win;
80 struct MsgPort *AppPort;
81 struct Hook idcmphook;
83 struct Window *window;
85 struct List list_Brow;
86 struct List list_Mail;
87 struct List list_FTPs;
89 struct Library * OpenURLBase = NULL;
90 struct OpenURLIFace *IOpenURL = NULL;
92 Object *Objects[OBJ_NUM];
94 static STRPTR PageLabels[] =
96 (STRPTR)MSG_Win_Labels_Browsers,
97 (STRPTR)MSG_Win_Labels_Mailers,
98 (STRPTR)MSG_Win_Labels_FTPs,
99 (STRPTR)MSG_Win_Labels_Misc,
100 NULL
103 struct ColumnInfo BrowsColInfo[] =
105 { 20, (STRPTR)"Use", CIF_WEIGHTED },
106 { 20, (STRPTR)" Name", CIF_WEIGHTED },
107 { 20, (STRPTR)" Path", CIF_WEIGHTED },
108 { -1, NULL, -1 }
111 struct ColumnInfo MailColInfo[] =
113 { 20, (STRPTR)"Use", CIF_WEIGHTED },
114 { 20, (STRPTR)" Name", CIF_WEIGHTED },
115 { 20, (STRPTR)" Path", CIF_WEIGHTED },
116 { -1, NULL, -1 }
119 struct ColumnInfo FTPsColInfo[] =
121 { 20, (STRPTR)"Use", CIF_WEIGHTED },
122 { 20, (STRPTR)" Name", CIF_WEIGHTED },
123 { 20, (STRPTR)" Path", CIF_WEIGHTED },
124 { -1, NULL, -1 }
127 #define SPACE LAYOUT_AddChild, SpaceObject, End
129 uint16 pageData[13] =
131 // Plane 0
132 0x3FF8,0x2008,0x2008,0x3FF8,0x2008,0x2008,0x2008,0x2008,
133 0x2008,0x2008,0x2008,0x2008,0x3FF8
136 struct Image chooser_image =
138 0, 0, // LeftEdge, TopEdge
139 16, 13, 8, // Width, Height, Depth
140 pageData, // ImageData
141 0x0001, 0x0000, // PlanePick, PlaneOnOff
142 NULL // NextImage
145 #define MyItem(i) Item((STRPTR)i,0,i)
149 struct TagItem lst2btn[] = {
150 {LISTBROWSER_SelectedNode, GA_ReadOnly },
151 {TAG_END, 0 }
154 static struct NewMenu menu[] =
156 Title((STRPTR)MSG_Menu_Project),
157 MyItem(MSG_Menu_About),
158 ItemBar,
159 MyItem(MSG_Menu_Hide),
160 ItemBar,
161 MyItem(MSG_Menu_Quit),
162 Title((STRPTR)MSG_Menu_Prefs),
163 MyItem(MSG_Menu_Save),
164 MyItem(MSG_Menu_Use),
165 ItemBar,
166 MyItem(MSG_Menu_LastSaved),
167 MyItem(MSG_Menu_Restore),
168 MyItem(MSG_Menu_Defaults),
169 EndMenu
172 void IDCMPFunc(struct Hook *hook,Object *wobj,struct IntuiMessage *Msg);
173 ULONG loadPrefs(ULONG mode);
174 ULONG storePrefs(BOOL bStorePrefs);
175 void updateFTPWindow(struct URL_FTPNode * pFTP);
177 Object *make_window(void)
179 Object
180 *page1 = NULL,
181 *page2 = NULL,
182 *page3 = NULL,
183 *page4 = NULL;
185 OBJ(OBJ_HIDDEN_CHOOSER) = ChooserObject,
186 GA_ID, OBJ_HIDDEN_CHOOSER,
187 GA_RelVerify, TRUE,
188 // CHOOSER_Labels, &chooserlist,
189 CHOOSER_DropDown, TRUE,
190 CHOOSER_AutoFit, TRUE,
191 CHOOSER_Hidden, TRUE,
192 ICA_TARGET, ICTARGET_IDCMP,
193 End; // Chooser
195 page1 = VLayoutObject,
196 LAYOUT_AddChild, HLayoutObject,
198 LAYOUT_AddChild, VLayoutObject,
199 LAYOUT_SpaceOuter, TRUE,
200 LAYOUT_AddChild, OBJ(OBJ_LBROWSER_BROW) = ListBrowserObject,
201 GA_ID, OBJ_LBROWSER_BROW,
202 // GA_Immediate, TRUE,
203 GA_RelVerify, TRUE,
204 LISTBROWSER_AutoFit, TRUE,
205 LISTBROWSER_HorizontalProp, TRUE,
206 LISTBROWSER_ShowSelected, TRUE,
207 LISTBROWSER_Labels, &list_Brow,
208 LISTBROWSER_ColumnInfo, &BrowsColInfo,
209 LISTBROWSER_ColumnTitles, TRUE,
210 End, // ListBrowser
211 End, // VLayout
213 LAYOUT_AddChild, VLayoutObject,
214 LAYOUT_SpaceOuter, TRUE,
215 SPACE,
216 LAYOUT_AddChild, Button(getString(MSG_AppList_Add),OBJ_ADD_BROW),
217 CHILD_WeightedHeight, 0,
218 LAYOUT_AddChild, Button(getString(MSG_AppList_Edit),OBJ_EDIT_BROW),
219 CHILD_WeightedHeight, 0,
220 LAYOUT_AddChild, Button(getString(MSG_AppList_Clone),OBJ_CLONE_BROW),
221 CHILD_WeightedHeight, 0,
223 LAYOUT_AddChild, HLayoutObject,
224 LAYOUT_AddChild, OBJ(OBJ_UP_BROW) = ButtonObject,
225 GA_ID, OBJ_UP_BROW,
226 BUTTON_AutoButton, BAG_UPARROW,
227 End, // Button
228 CHILD_WeightedWidth, 0,
230 LAYOUT_AddChild, OBJ(OBJ_DOWN_BROW) = ButtonObject,
231 GA_ID, OBJ_DOWN_BROW,
232 BUTTON_AutoButton, BAG_DNARROW,
233 End, // Button
234 CHILD_WeightedWidth, 0,
235 End, // HLayout
236 CHILD_WeightedHeight, 0,
238 SPACE,
239 LAYOUT_AddChild, Button(getString(MSG_AppList_Delete),OBJ_DELETE_BROW),
240 CHILD_WeightedHeight, 0,
241 SPACE,
242 End, // VLayout
243 CHILD_WeightedWidth, 0,
245 End, // HLayout
246 End; // VLayout // *** end of page 1 ***
249 page2 = VLayoutObject,
250 LAYOUT_AddChild, HLayoutObject,
252 LAYOUT_AddChild, VLayoutObject,
253 LAYOUT_SpaceOuter, TRUE,
254 LAYOUT_AddChild, OBJ(OBJ_LBROWSER_MAIL) = ListBrowserObject,
255 GA_ID, OBJ_LBROWSER_MAIL,
256 // GA_Immediate, TRUE,
257 GA_RelVerify, TRUE,
258 LISTBROWSER_AutoFit, TRUE,
259 LISTBROWSER_HorizontalProp, TRUE,
260 LISTBROWSER_ShowSelected, TRUE,
261 LISTBROWSER_Labels, &list_Mail,
262 LISTBROWSER_ColumnInfo, &MailColInfo,
263 LISTBROWSER_ColumnTitles, TRUE,
264 End, // ListBrowser
265 End, // VLayout
267 LAYOUT_AddChild, VLayoutObject,
268 LAYOUT_SpaceOuter, TRUE,
269 SPACE,
270 LAYOUT_AddChild, Button(getString(MSG_AppList_Add),OBJ_ADD_MAIL),
271 CHILD_WeightedHeight, 0,
272 LAYOUT_AddChild, Button(getString(MSG_AppList_Edit),OBJ_EDIT_MAIL),
273 CHILD_WeightedHeight, 0,
274 LAYOUT_AddChild, Button(getString(MSG_AppList_Clone),OBJ_CLONE_MAIL),
275 CHILD_WeightedHeight, 0,
277 LAYOUT_AddChild, HLayoutObject,
278 LAYOUT_AddChild, OBJ(OBJ_UP_MAIL) = ButtonObject,
279 GA_ID, OBJ_UP_MAIL,
280 BUTTON_AutoButton, BAG_UPARROW,
281 End, // Button
282 CHILD_WeightedWidth, 0,
284 LAYOUT_AddChild, OBJ(OBJ_DOWN_MAIL) = ButtonObject,
285 GA_ID, OBJ_DOWN_MAIL,
286 BUTTON_AutoButton, BAG_DNARROW,
287 End, // Button
288 CHILD_WeightedWidth, 0,
289 End, // HLayout
290 CHILD_WeightedHeight, 0,
292 SPACE,
293 LAYOUT_AddChild, Button(getString(MSG_AppList_Delete),OBJ_DELETE_MAIL),
294 CHILD_WeightedHeight, 0,
295 SPACE,
296 End, // VLayout
297 CHILD_WeightedWidth, 0,
299 End, // HLayout
300 End; // VLayout // *** end of page 2 ***
302 page3 = VLayoutObject,
303 LAYOUT_AddChild, HLayoutObject,
305 LAYOUT_AddChild, VLayoutObject,
306 LAYOUT_SpaceOuter, TRUE,
307 LAYOUT_AddChild, OBJ(OBJ_LBROWSER_FTP) = ListBrowserObject,
308 GA_ID, OBJ_LBROWSER_FTP,
309 GA_RelVerify, TRUE,
310 LISTBROWSER_AutoFit, TRUE,
311 LISTBROWSER_ShowSelected, TRUE,
312 LISTBROWSER_Labels, &list_FTPs,
313 LISTBROWSER_ColumnInfo, &FTPsColInfo,
314 LISTBROWSER_ColumnTitles, TRUE,
315 End, // ListBrowser
316 End, // VLayout
318 LAYOUT_AddChild, VLayoutObject,
319 LAYOUT_SpaceOuter, TRUE,
320 SPACE,
321 LAYOUT_AddChild, Button(getString(MSG_AppList_Add),OBJ_ADD_FTP),
322 CHILD_WeightedHeight, 0,
323 LAYOUT_AddChild, Button(getString(MSG_AppList_Edit),OBJ_EDIT_FTP),
324 CHILD_WeightedHeight, 0,
325 LAYOUT_AddChild, Button(getString(MSG_AppList_Clone),OBJ_CLONE_FTP),
326 CHILD_WeightedHeight, 0,
328 LAYOUT_AddChild, HLayoutObject,
329 LAYOUT_AddChild, OBJ(OBJ_UP_FTP) = ButtonObject,
330 GA_ID, OBJ_UP_FTP,
331 BUTTON_AutoButton, BAG_UPARROW,
332 End, // Button
333 CHILD_WeightedWidth, 0,
335 LAYOUT_AddChild, OBJ(OBJ_DOWN_FTP) = ButtonObject,
336 GA_ID, OBJ_DOWN_FTP,
337 BUTTON_AutoButton, BAG_DNARROW,
338 End, // Button
339 CHILD_WeightedWidth, 0,
340 End, // HLayout
341 CHILD_WeightedHeight, 0,
343 SPACE,
344 LAYOUT_AddChild, Button(getString(MSG_AppList_Delete),OBJ_DELETE_FTP),
345 CHILD_WeightedHeight, 0,
346 SPACE,
347 End, // VLayout
348 CHILD_WeightedWidth, 0,
350 End, // HLayout
351 End; // VLayout // *** end of page 3 ***
354 page4 = VLayoutObject,
356 LAYOUT_AddChild, VLayoutObject,
357 LAYOUT_BevelStyle, BVS_GROUP,
358 LAYOUT_Label, getString(MSG_Misc_Defaults),
360 LAYOUT_AddChild, OBJ(OBJ_UNICONIFY) = CheckBoxObject,
361 GA_ID, OBJ_UNICONIFY,
362 GA_RelVerify, TRUE,
363 GA_Selected, TRUE,
364 GA_Text, getString(MSG_Misc_Show),
365 End, // CheckBox
367 LAYOUT_AddChild, OBJ(OBJ_BRING) = CheckBoxObject,
368 GA_ID, OBJ_BRING,
369 GA_RelVerify, TRUE,
370 GA_Selected, TRUE,
371 GA_Text, getString(MSG_Misc_Bring),
372 End, // CheckBox
374 LAYOUT_AddChild, OBJ(OBJ_OPEN) = CheckBoxObject,
375 GA_ID, OBJ_OPEN,
376 GA_RelVerify, TRUE,
377 GA_Selected, FALSE,
378 GA_Text, getString(MSG_Misc_Open),
379 End, // CheckBox
381 LAYOUT_AddChild, OBJ(OBJ_LAUNCH) = CheckBoxObject,
382 GA_ID, OBJ_LAUNCH,
383 GA_RelVerify, TRUE,
384 GA_Selected, TRUE,
385 GA_Text, getString(MSG_Misc_Launch),
386 End, // CheckBox
387 End, // VLayout
389 LAYOUT_AddChild, VLayoutObject,
390 LAYOUT_BevelStyle, BVS_GROUP,
391 LAYOUT_Label, getString(MSG_Misc_Options),
393 LAYOUT_AddChild, OBJ(OBJ_PREPEND) = CheckBoxObject,
394 GA_ID, OBJ_PREPEND,
395 GA_RelVerify, TRUE,
396 GA_Selected, TRUE,
397 GA_Text, getString(MSG_Misc_Prepend),
398 End, // CheckBox
400 LAYOUT_AddChild, OBJ(OBJ_SEND_MAILTO) = CheckBoxObject,
401 GA_ID, OBJ_SEND_MAILTO,
402 GA_RelVerify, TRUE,
403 GA_Selected, TRUE,
404 GA_Text, getString(MSG_Misc_UseMailer),
405 End, // CheckBox
407 LAYOUT_AddChild, OBJ(OBJ_SEND_FTP) = CheckBoxObject,
408 GA_ID, OBJ_SEND_FTP,
409 GA_RelVerify, TRUE,
410 GA_Selected, FALSE,
411 GA_Text, getString(MSG_Misc_UseFTP),
412 End, // CheckBox
414 End, // VLayout
415 End; // VLayout // *** end of page 4 ***
418 OBJ(OBJ_CLICKTAB) = ClickTabObject,
419 GA_Text, PageLabels,
420 CLICKTAB_Current, 0, // page to open with
421 CLICKTAB_PageGroup, PageObject,
422 PAGE_Add, page1,
423 PAGE_Add, page2,
424 PAGE_Add, page3,
425 PAGE_Add, page4,
426 PageEnd,
427 ClickTabEnd;
430 return WindowObject,
431 WA_ScreenTitle, getString(MSG_App_ScreenTitle),
432 WA_Title, getString(MSG_Win_WinTitle),
433 WA_DragBar, TRUE,
434 WA_CloseGadget, TRUE,
435 WA_SizeGadget, TRUE,
436 WA_DepthGadget, TRUE,
437 WA_Activate, TRUE,
438 WINDOW_IconifyGadget, TRUE,
439 WINDOW_Icon, IIcon->GetDiskObject("PROGDIR:OpenURL"),
440 WINDOW_IconTitle, getString(MSG_Win_WinTitle),
441 WINDOW_AppPort, AppPort,
442 WINDOW_SharedPort, AppPort,
443 WINDOW_Position, WPOS_CENTERSCREEN,
444 WINDOW_NewMenu, menu,
445 WINDOW_Layout, VLayoutObject,
447 LAYOUT_AddChild, OBJ(OBJ_CLICKTAB),
449 LAYOUT_AddChild, HLayoutObject,
450 LAYOUT_BevelStyle, BVS_SBAR_VERT,
451 End, // HLayout
452 CHILD_WeightedHeight, 0,
454 LAYOUT_AddChild, HLayoutObject,
455 LAYOUT_AddChild, SpaceObject,
456 SPACE_MinWidth, 2,
457 End, // Space
458 CHILD_WeightedWidth, 0,
460 LAYOUT_AddChild, HLayoutObject,
461 LAYOUT_EvenSize, TRUE,
462 LAYOUT_AddChild, Button(getString(MSG_Win_Save),OBJ_SAVE),
463 CHILD_WeightedWidth, 0,
465 LAYOUT_AddChild, Button(getString(MSG_Win_Use),OBJ_USE),
466 CHILD_WeightedWidth, 0,
468 LAYOUT_AddChild, Button(getString(MSG_Win_Apply),OBJ_APPLY),
469 CHILD_WeightedWidth, 0,
471 LAYOUT_AddChild, Button(getString(MSG_Win_Cancel),OBJ_CANCEL),
472 CHILD_WeightedWidth, 0,
473 End, // HLayout
474 CHILD_WeightedHeight, 0,
476 LAYOUT_AddChild, SpaceObject,
477 SPACE_MinWidth, 2,
478 End, // Space
479 CHILD_WeightedWidth, 0,
481 End, // HLayout
482 CHILD_MinWidth, 350, // sets a more attractive size for the whole Layout
483 CHILD_WeightedHeight, 0,
485 End, // VLayout
486 WindowEnd;
490 int main()
492 initStrings();
494 localizeStrings(PageLabels);
496 localizeNewMenu(menu);
498 if(!(OpenURLBase = IExec->OpenLibrary(OPENURLNAME, OPENURLVER)))
499 return -1;
500 if(!(IOpenURL = (struct OpenURLIFace*)IExec->GetInterface(OpenURLBase, "main", 1L, NULL)))
501 return -1;
503 RA_SetUpHook(idcmphook, IDCMPFunc, NULL);
505 if((AppPort = IExec->AllocSysObjectTags(ASOT_PORT, TAG_DONE)) != NULL)
507 IExec->NewList(&list_Brow);
508 IExec->NewList(&list_Mail);
509 IExec->NewList(&list_FTPs);
511 win = make_window();
512 edit_brow_win = make_edit_brow_win();
513 edit_mail_win = make_edit_mail_win();
514 edit_ftp_win = make_edit_ftp_win();
516 loadPrefs(URL_GetPrefs_Mode_InUse);
518 // Set up inter-group label alignment
520 iset(OBJ(OBJ_FTP_ALIGN1), LAYOUT_AlignLabels, OBJ(OBJ_FTP_ALIGN2));
521 iset(OBJ(OBJ_MAIL_ALIGN1), LAYOUT_AlignLabels, OBJ(OBJ_MAIL_ALIGN2));
522 iset(OBJ(OBJ_LBROWSER_BROW), ICA_TARGET, OBJ(OBJ_EDIT_BROW),
523 ICA_MAP, lst2btn);
525 if((window = RA_OpenWindow(win)) != NULL)
527 uint32 sigmask;
528 BOOL done = FALSE;
530 sigmask = iget(win, WINDOW_SigMask);
531 while (!done)
533 uint32 siggot;
535 siggot = IExec->Wait(sigmask);
536 if (siggot & sigmask)
538 done = HandleInput_Main_Win();
539 HandleInput_Edit_Brow_Win();
540 HandleInput_Edit_Mail_Win();
541 HandleInput_Edit_FTP_Win();
545 IIntuition->DisposeObject(edit_ftp_win);
546 IIntuition->DisposeObject(edit_mail_win);
547 IIntuition->DisposeObject(edit_brow_win);
548 IIntuition->DisposeObject(win);
550 // The hidden chooser isn't attached to anything,
551 // so we must dispose of it ourselves...
553 IIntuition->DisposeObject(OBJ(OBJ_HIDDEN_CHOOSER));
555 IListBrowser->FreeListBrowserList(&list_FTPs);
556 IListBrowser->FreeListBrowserList(&list_Mail);
557 IListBrowser->FreeListBrowserList(&list_Brow);
558 IExec->FreeSysObject(ASOT_PORT, AppPort);
561 IExec->DropInterface((struct Interface*)IOpenURL);
562 IExec->CloseLibrary(OpenURLBase);
564 uninitStrings();
566 return 0;
569 void IDCMPFunc(UNUSED struct Hook *hook, UNUSED Object *wobj, struct IntuiMessage *Msg)
571 //struct Window *window = Msg->IDCMPWindow;
572 uint32 active;
574 if (Msg->Class == IDCMP_IDCMPUPDATE)
576 if (IUtility->GetTagData(GA_ID, 0, Msg->IAddress) == OBJ_HIDDEN_CHOOSER)
578 active = IUtility->GetTagData(CHOOSER_Active, -1, Msg->IAddress);
579 // printf("chooser picked = %d\n",active);
581 // find out which button was clicked, to replace OBJ_STRING with the correct String gad
583 // gadset(GAD(OBJ_STRING), window, NULL,
584 // GA_Text, hidden_strings[active], TAG_END);
589 ULONG loadPrefs(ULONG mode)
591 struct URL_Prefs *p;
592 ULONG error = 0;
594 /* get the openurl.library prefs */
595 /* switch(mode)
597 case MUIV_Win_GetPrefs_InUse: mode = URL_GetPrefs_Mode_InUse; break;
598 case MUIV_Win_GetPrefs_LastSaveds: mode = URL_GetPrefs_Mode_Envarc; break;
599 case MUIV_Win_GetPrefs_Restore: mode = URL_GetPrefs_Mode_Env; break;
600 case MUIV_Win_GetPrefs_Defaults: mode = URL_GetPrefs_Mode_Default; break;
601 default: return FALSE;
604 p = IOpenURL->URL_GetPrefs(URL_GetPrefs_Mode,mode,TAG_DONE);
605 if (!p) error = MSG_Err_NoPrefs;
606 else if (p->up_Version!=PREFS_VERSION) error = MSG_Err_BadPrefs;
608 if (error)
610 RA_Request(NULL,0,getString(MSG_ErrReqTitle),
611 getString(MSG_ErrReqGadget),
612 getString(error),
613 p ? p->up_Version : 0);
615 if (p) IOpenURL->URL_FreePrefsA(p,NULL);
617 return FALSE;
620 /* Browsers */
621 gadset(GAD(OBJ_LBROWSER_BROW), window, LISTBROWSER_Labels, ~0);
622 updateBrowserList(&list_Brow, p->up_BrowserList);
623 gadset(GAD(OBJ_LBROWSER_BROW), window, LISTBROWSER_Labels, &list_Brow, LISTBROWSER_AutoFit, TRUE);
625 /* Mailers */
626 gadset(GAD(OBJ_LBROWSER_MAIL), window, LISTBROWSER_Labels, ~0, TAG_DONE);
627 updateMailerList(&list_Mail, p->up_MailerList);
628 gadset(GAD(OBJ_LBROWSER_MAIL), window, LISTBROWSER_Labels, &list_Mail, LISTBROWSER_AutoFit, TRUE);
630 /* FTPs */
631 gadset(GAD(OBJ_LBROWSER_FTP), window, LISTBROWSER_Labels, ~0, TAG_DONE);
632 updateFTPList(&list_FTPs, p->up_FTPList);
633 gadset(GAD(OBJ_LBROWSER_FTP), window, LISTBROWSER_Labels, &list_FTPs, LISTBROWSER_AutoFit, TRUE);
635 /* Miscellaneous */
636 gadset(GAD(OBJ_PREPEND), window, GA_Selected, isFlagSet(p->up_Flags, UPF_PREPENDHTTP));
637 gadset(GAD(OBJ_SEND_MAILTO), window, GA_Selected, isFlagSet(p->up_Flags, UPF_DOMAILTO));
638 gadset(GAD(OBJ_SEND_FTP), window, GA_Selected, isFlagSet(p->up_Flags, UPF_DOFTP));
640 gadset(GAD(OBJ_UNICONIFY), window, GA_Selected, p->up_DefShow);
641 gadset(GAD(OBJ_BRING), window, GA_Selected, p->up_DefBringToFront);
642 gadset(GAD(OBJ_OPEN), window, GA_Selected, p->up_DefNewWindow);
643 gadset(GAD(OBJ_LAUNCH), window, GA_Selected, p->up_DefLaunch);
645 /* free the preferences */
646 IOpenURL->URL_FreePrefsA(p,NULL);
648 return TRUE;
651 ULONG storePrefs(BOOL bStorePrefs)
653 struct URL_Prefs up;
655 /* Copy settings from gadgets into structure */
656 up.up_Version = PREFS_VERSION;
658 /* Browsers */
659 IExec->CopyMem(&list_Brow, &up.up_BrowserList, sizeof(struct MinList));
661 /* Mailers */
662 IExec->CopyMem(&list_Mail, &up.up_MailerList, sizeof(struct MinList));
664 /* FTPs */
665 IExec->CopyMem(&list_FTPs, &up.up_FTPList, sizeof(struct MinList));
667 /* Miscellaneous */
668 if(iget(OBJ(OBJ_PREPEND), GA_Selected))
669 SET_FLAG(up.up_Flags, UPF_PREPENDHTTP);
670 else
671 CLEAR_FLAG(up.up_Flags, UPF_PREPENDHTTP);
673 if(iget(OBJ(OBJ_SEND_MAILTO), GA_Selected))
674 SET_FLAG(up.up_Flags, UPF_DOMAILTO);
675 else
676 CLEAR_FLAG(up.up_Flags, UPF_DOMAILTO);
678 if(iget(OBJ(OBJ_SEND_FTP), GA_Selected))
679 SET_FLAG(up.up_Flags, UPF_DOFTP);
680 else
681 CLEAR_FLAG(up.up_Flags, UPF_DOFTP);
683 if(iget(OBJ(OBJ_SEND_MAILTO), GA_Selected))
684 SET_FLAG(up.up_Flags, UPF_DOMAILTO);
685 else
686 CLEAR_FLAG(up.up_Flags, UPF_DOMAILTO);
688 if(iget(OBJ(OBJ_SEND_FTP), GA_Selected))
689 SET_FLAG(up.up_Flags, UPF_DOFTP);
690 else
691 CLEAR_FLAG(up.up_Flags, UPF_DOFTP);
693 up.up_DefShow = iget(OBJ(OBJ_UNICONIFY), GA_Selected);
694 up.up_DefBringToFront = iget(OBJ(OBJ_BRING), GA_Selected);
695 up.up_DefNewWindow = iget(OBJ(OBJ_OPEN), GA_Selected);
696 up.up_DefLaunch = iget(OBJ(OBJ_LAUNCH), GA_Selected);
698 /* Save to disk */
699 if (!IOpenURL->URL_SetPrefs(&up,URL_SetPrefs_Save,bStorePrefs,TAG_DONE))
700 RA_Request((Object *)window,getString(MSG_ErrReqTitle),getString(MSG_ErrReqGadget),getString(MSG_Err_FailedSave),NULL);
702 return TRUE;