448
+ − 1 /*
+ − 2 * Copyright (c) 2000, Red Hat, Inc.
+ − 3 *
+ − 4 * This program is free software; you can redistribute it and/or modify
+ − 5 * it under the terms of the GNU General Public License as published by
+ − 6 * the Free Software Foundation; either version 2 of the License, or
+ − 7 * (at your option) any later version.
+ − 8 *
+ − 9 * A copy of the GNU General Public License can be found at
+ − 10 * http://www.gnu.org/
+ − 11 *
+ − 12 * Written by DJ Delorie <dj@cygnus.com>
+ − 13 *
+ − 14 */
+ − 15
+ − 16 /* This handles the "other URL" option from the mirror site
+ − 17 selection. */
+ − 18
+ − 19 #include "win32.h"
+ − 20 #include <shlobj.h>
+ − 21 #include <stdio.h>
+ − 22 #include <stdlib.h>
+ − 23 #include "dialog.h"
+ − 24 #include "resource.h"
+ − 25 #include "state.h"
+ − 26 #include "msg.h"
+ − 27 #include "log.h"
+ − 28
+ − 29 /* private shared function, from site.cc */
+ − 30 void save_site_url (void);
+ − 31
+ − 32 static void
+ − 33 check_if_enable_next (HWND h)
+ − 34 {
+ − 35 EnableWindow (GetDlgItem (h, IDOK), other_url ? 1 : 0);
+ − 36 }
+ − 37
+ − 38 static void
+ − 39 load_dialog (HWND h)
+ − 40 {
+ − 41 eset (h, IDC_OTHER_URL, other_url);
+ − 42 check_if_enable_next (h);
+ − 43 }
+ − 44
+ − 45 static void
+ − 46 save_dialog (HWND h)
+ − 47 {
+ − 48 other_url = eget (h, IDC_OTHER_URL, other_url);
+ − 49 }
+ − 50
+ − 51 static BOOL
+ − 52 dialog_cmd (HWND h, int id, HWND hwndctl, UINT code)
+ − 53 {
+ − 54 switch (id)
+ − 55 {
+ − 56
+ − 57 case IDC_OTHER_URL:
+ − 58 save_dialog (h);
+ − 59 check_if_enable_next (h);
+ − 60 break;
+ − 61
+ − 62 case IDOK:
+ − 63 save_dialog (h);
+ − 64 save_site_url ();
+ − 65 NEXT (IDD_S_LOAD_INI);
+ − 66 break;
+ − 67
+ − 68 case IDC_BACK:
+ − 69 save_dialog (h);
+ − 70 NEXT (IDD_SITE);
+ − 71 break;
+ − 72
+ − 73 case IDCANCEL:
+ − 74 NEXT (0);
+ − 75 break;
+ − 76 }
+ − 77 return FALSE;
+ − 78 }
+ − 79
+ − 80 static BOOL CALLBACK
+ − 81 dialog_proc (HWND h, UINT message, WPARAM wParam, LPARAM lParam)
+ − 82 {
+ − 83 switch (message)
+ − 84 {
+ − 85 case WM_INITDIALOG:
+ − 86 load_dialog (h);
+ − 87 return FALSE;
+ − 88 case WM_COMMAND:
+ − 89 return HANDLE_WM_COMMAND (h, wParam, lParam, dialog_cmd);
+ − 90 }
+ − 91 return FALSE;
+ − 92 }
+ − 93
+ − 94 void
+ − 95 do_other (HINSTANCE h)
+ − 96 {
+ − 97 int rv = 0;
+ − 98 rv = DialogBox (h, MAKEINTRESOURCE (IDD_OTHER_URL), 0, dialog_proc);
+ − 99 if (rv == -1)
+ − 100 fatal (IDS_DIALOG_FAILED);
+ − 101
+ − 102 log (0, "site: %s", other_url);
+ − 103 }
+ − 104