home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 2 BBS / 02-BBS.zip / lora299s.zip / LCFG.CPP < prev    next >
C/C++ Source or Header  |  1998-05-12  |  77KB  |  2,991 lines

  1.  
  2. // LoraBBS Version 2.99 Free Edition
  3. // Copyright (C) 1987-98 Marco Maccaferri
  4. //
  5. // This program is free software; you can redistribute it and/or modify
  6. // it under the terms of the GNU General Public License as published by
  7. // the Free Software Foundation; either version 2 of the License, or
  8. // (at your option) any later version.
  9. //
  10. // This program is distributed in the hope that it will be useful,
  11. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. // GNU General Public License for more details.
  14. //
  15. // You should have received a copy of the GNU General Public License
  16. // along with this program; if not, write to the Free Software
  17. // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18.  
  19. #include "_ldefs.h"
  20. #include "lorawin.h"
  21.  
  22. #if defined(__OS2__)
  23. #define IDOK            1
  24. #define IDCANCEL        2
  25. #endif
  26.  
  27. PSZ SpeedArray[] = { "300", "1200", "2400", "4800", "9600", "19200", "38400", "57600", "115200" };
  28.  
  29. typedef struct {
  30.    USHORT cbData;
  31.    class  TUser *Data;
  32. } USERCFG;
  33.  
  34. // ----------------------------------------------------------------------
  35. // File requests
  36. // ----------------------------------------------------------------------
  37.  
  38. BEGIN_MESSAGE_MAP (COkFileDlg, CDialog)
  39.    ON_COMMAND (106, Add)
  40.    ON_COMMAND (107, Remove)
  41.    ON_COMMAND (108, Change)
  42. #if defined(__OS2__)
  43.    ON_CONTROL (CN_EMPHASIS, 101, SelChanged)
  44. #elif defined(__NT__)
  45.    ON_NOTIFY (NM_CLICK, 101, SelChanged)
  46. #endif
  47. END_MESSAGE_MAP ()
  48.  
  49. COkFileDlg::COkFileDlg (HWND p_hWnd) : CDialog ("53", p_hWnd)
  50. {
  51. }
  52.  
  53. VOID COkFileDlg::OnHelp (VOID)
  54. {
  55.    WinHelp ("lora.hlp>h_ref", 6);
  56. }
  57.  
  58. USHORT COkFileDlg::OnInitDialog (VOID)
  59. {
  60.    CHAR Temp[16];
  61.    class TOkFile *Data;
  62.  
  63.    Center ();
  64.  
  65.    EM_SetTextLimit (103, sizeof (Data->Name) - 1);
  66.    EM_SetTextLimit (105, sizeof (Data->Path) - 1);
  67.    EM_SetTextLimit (114, sizeof (Data->Pwd) - 1);
  68.  
  69.    LVM_AllocateColumns (101, 4);
  70.    LVM_InsertColumn (101, "File", LVC_LEFT);
  71.    LVM_InsertColumn (101, "Flags", LVC_LEFT);
  72.    LVM_InsertColumn (101, "Path", LVC_LEFT);
  73.    LVM_InsertColumn (101, "Password", LVC_LEFT);
  74.  
  75.    if ((Data = new TOkFile (Cfg->SystemPath)) != NULL) {
  76.       if (Data->First () == TRUE)
  77.          do {
  78.             LVM_InsertItem (101);
  79.  
  80.             LVM_SetItemText (101, 0, Data->Name);
  81.             Temp[0] = '\0';
  82.             if (Data->Normal == TRUE)
  83.                strcat (Temp, "N");
  84.             if (Data->Known == TRUE)
  85.                strcat (Temp, "K");
  86.             if (Data->Protected == TRUE)
  87.                strcat (Temp, "P");
  88.             LVM_SetItemText (101, 1, Temp);
  89.             LVM_SetItemText (101, 2, Data->Path);
  90.             LVM_SetItemText (101, 3, Data->Pwd);
  91.          } while (Data->Next () == TRUE);
  92.       delete Data;
  93.    }
  94.  
  95.    LVM_InvalidateView (101);
  96.  
  97.    return (TRUE);
  98. }
  99.  
  100. VOID COkFileDlg::SelChanged (VOID)
  101. {
  102.    USHORT item;
  103.    CHAR Temp[128];
  104.  
  105.    if ((item = (USHORT)LVM_QuerySelectedItem (101)) != (USHORT)-1) {
  106.       LVM_QueryItemText (101, item, 0, Temp);
  107.       SetDlgItemText (103, Temp);
  108.       LVM_QueryItemText (101, item, 1, Temp);
  109.       if (strchr (Temp, 'N') != NULL)
  110.          BM_SetCheck (110, TRUE);
  111.       else
  112.          BM_SetCheck (110, FALSE);
  113.       if (strchr (Temp, 'K') != NULL)
  114.          BM_SetCheck (111, TRUE);
  115.       else
  116.          BM_SetCheck (111, FALSE);
  117.       if (strchr (Temp, 'P') != NULL)
  118.          BM_SetCheck (112, TRUE);
  119.       else
  120.          BM_SetCheck (112, FALSE);
  121.       LVM_QueryItemText (101, item, 2, Temp);
  122.       SetDlgItemText (105, Temp);
  123.       LVM_QueryItemText (101, item, 3, Temp);
  124.       SetDlgItemText (114, Temp);
  125.    }
  126.    else {
  127.       // Se non e' stato selezionato un elemento, pulisce i campi della dialog.
  128.       SetDlgItemText (103, "");
  129.       BM_SetCheck (110, FALSE);
  130.       BM_SetCheck (111, FALSE);
  131.       BM_SetCheck (112, FALSE);
  132.       SetDlgItemText (105, "");
  133.       SetDlgItemText (114, "");
  134.    }
  135. }
  136.  
  137. VOID COkFileDlg::OnOK (VOID)
  138. {
  139.    USHORT i, count;
  140.    CHAR Temp[128];
  141.    class TOkFile *Data;
  142.  
  143.    if ((Data = new TOkFile (Cfg->SystemPath)) != NULL) {
  144.       Data->DeleteAll ();
  145.       count = (USHORT)LVM_QueryItemCount (101);
  146.       for (i = 0; i < count; i++) {
  147.          LVM_QueryItemText (101, i, 0, Temp);
  148.          strcpy (Data->Name, Temp);
  149.          LVM_QueryItemText (101, i, 1, Temp);
  150.          if (strchr (Temp, 'N') != NULL)
  151.             Data->Normal = TRUE;
  152.          if (strchr (Temp, 'K') != NULL)
  153.             Data->Known = TRUE;
  154.          if (strchr (Temp, 'P') != NULL)
  155.             Data->Protected = TRUE;
  156.          LVM_QueryItemText (101, i, 2, Temp);
  157.          strcpy (Data->Path, Temp);
  158.          LVM_QueryItemText (101, i, 3, Temp);
  159.          strcpy (Data->Pwd, Temp);
  160.          Data->Add ();
  161.       }
  162.       delete Data;
  163.    }
  164.  
  165.    EndDialog (TRUE);
  166. }
  167.  
  168. VOID COkFileDlg::Add (VOID)
  169. {
  170.    CHAR Temp[128];
  171.  
  172.    LVM_InsertItem (101);
  173.  
  174.    GetDlgItemText (103, GetDlgItemTextLength (103), Temp);
  175.    LVM_SetItemText (101, 0, Temp);
  176.    Temp[0] = '\0';
  177.    if (BM_QueryCheck (110) == TRUE)
  178.       strcat (Temp, "N");
  179.    if (BM_QueryCheck (111) == TRUE)
  180.       strcat (Temp, "K");
  181.    if (BM_QueryCheck (112) == TRUE)
  182.       strcat (Temp, "P");
  183.    LVM_SetItemText (101, 1, Temp);
  184.    GetDlgItemText (105, GetDlgItemTextLength (105), Temp);
  185.    LVM_SetItemText (101, 2, Temp);
  186.    GetDlgItemText (114, GetDlgItemTextLength (114), Temp);
  187.    LVM_SetItemText (101, 3, Temp);
  188.  
  189.    LVM_InvalidateView (101);
  190. }
  191.  
  192. VOID COkFileDlg::Change (VOID)
  193. {
  194.    USHORT item;
  195.    CHAR Temp[128];
  196.  
  197.    if ((item = (USHORT)LVM_QuerySelectedItem (101)) != -1) {
  198.       GetDlgItemText (103, GetDlgItemTextLength (103), Temp);
  199.       LVM_SetItemText (101, item, 0, Temp);
  200.       Temp[0] = '\0';
  201.       if (BM_QueryCheck (110) == TRUE)
  202.          strcat (Temp, "N");
  203.       if (BM_QueryCheck (111) == TRUE)
  204.          strcat (Temp, "K");
  205.       if (BM_QueryCheck (112) == TRUE)
  206.          strcat (Temp, "P");
  207.       LVM_SetItemText (101, item, 1, Temp);
  208.       GetDlgItemText (105, GetDlgItemTextLength (105), Temp);
  209.       LVM_SetItemText (101, item, 2, Temp);
  210.       GetDlgItemText (114, GetDlgItemTextLength (114), Temp);
  211.       LVM_SetItemText (101, item, 3, Temp);
  212.  
  213.       LVM_InvalidateView (101);
  214.    }
  215. }
  216.  
  217. VOID COkFileDlg::Remove (VOID)
  218. {
  219.    LVM_DeleteItem (101, LVM_QuerySelectedItem (101));
  220. }
  221.  
  222. // ----------------------------------------------------------------------
  223. // Mailer addresses
  224. // ----------------------------------------------------------------------
  225.  
  226. BEGIN_MESSAGE_MAP (CAddressDlg, CDialog)
  227.    ON_COMMAND (102, Add)
  228.    ON_COMMAND (103, Remove)
  229.    ON_COMMAND (104, Change)
  230. #if defined(__OS2__)
  231.    ON_CONTROL (LN_SELECT, 101, SelChanged)
  232. #elif defined(__NT__)
  233.    ON_NOTIFY (LBN_SELCHANGE, 101, SelChanged)
  234. #endif
  235. END_MESSAGE_MAP ()
  236.  
  237. CAddressDlg::CAddressDlg (HWND p_hWnd) : CDialog ("6", p_hWnd)
  238. {
  239. }
  240.  
  241. VOID CAddressDlg::OnHelp (VOID)
  242. {
  243.    WinHelp ("lora.hlp>h_ref", 6);
  244. }
  245.  
  246. USHORT CAddressDlg::OnInitDialog (VOID)
  247. {
  248.    CHAR Temp[64];
  249.  
  250.    Center ();
  251.  
  252.    EM_SetTextLimit (108, sizeof (Cfg->MailAddress.String) - 1);
  253.    if (Cfg->MailAddress.First () == TRUE)
  254.       do {
  255.          if (Cfg->MailAddress.FakeNet != 0)
  256.             sprintf (Temp, "%s (%u)", Cfg->MailAddress.String, Cfg->MailAddress.FakeNet);
  257.          else
  258.             strcpy (Temp, Cfg->MailAddress.String);
  259.          LM_AddString (101, Temp);
  260.       } while (Cfg->MailAddress.Next () == TRUE);
  261.  
  262.    return (TRUE);
  263. }
  264.  
  265. VOID CAddressDlg::SelChanged (VOID)
  266. {
  267.    USHORT item;
  268.    CHAR Temp[64], Fake[32], *p;
  269.    class TAddress Addr;
  270.  
  271.    if ((item = LM_QuerySelection (101)) >= 0) {
  272.       LM_QueryItemText (101, item, sizeof (Temp) - 1, Temp);
  273.       Addr.Parse (Temp);
  274.       SetDlgItemText (108, Addr.String);
  275.       if ((p = strchr (Temp, '(')) != NULL) {
  276.          sprintf (Fake, "%u", atoi (++p));
  277.          SetDlgItemText (109, Fake);
  278.       }
  279.       else
  280.          SetDlgItemText (109, "0");
  281.    }
  282.    else {
  283.       SetDlgItemText (108, "");
  284.       SetDlgItemText (109, "");
  285.    }
  286. }
  287.  
  288. VOID CAddressDlg::OnOK (VOID)
  289. {
  290.    USHORT i, Max;
  291.    CHAR Temp[64], *p;
  292.  
  293.    Cfg->MailAddress.Clear ();
  294.    if ((Max = LM_QueryItemCount (101)) > 0) {
  295.       for (i = 0; i < Max; i++) {
  296.          LM_QueryItemText (101, i, sizeof (Temp) - 1, Temp);
  297.          Cfg->MailAddress.Add (Temp);
  298.          if ((p = strchr (Temp, '(')) != NULL) {
  299.             Cfg->MailAddress.FakeNet = (USHORT)atoi (++p);
  300.             Cfg->MailAddress.Update ();
  301.          }
  302.       }
  303.    }
  304.  
  305.    EndDialog (TRUE);
  306. }
  307.  
  308. VOID CAddressDlg::Add (VOID)
  309. {
  310.    CHAR Temp[64];
  311.    class TAddress Addr;
  312.  
  313.    GetDlgItemText (108, GetDlgItemTextLength (108), Temp);
  314.    if (Temp[0] != '\0') {
  315.       Addr.Parse (Temp);
  316.       GetDlgItemText (109, GetDlgItemTextLength (109), Temp);
  317.       Addr.FakeNet = (USHORT)atoi (Temp);
  318.       if (Addr.FakeNet != 0)
  319.          sprintf (Temp, "%s (%u)", Addr.String, Addr.FakeNet);
  320.       else
  321.          strcpy (Temp, Addr.String);
  322.       LM_AddString (101, Temp);
  323.    }
  324.  
  325.    SetFocus (108);
  326.    SelChanged ();
  327. }
  328.  
  329. VOID CAddressDlg::Change (VOID)
  330. {
  331.    USHORT item;
  332.    CHAR Temp[64];
  333.    class TAddress Addr;
  334.  
  335.    if ((item = LM_QuerySelection (101)) >= 0) {
  336.       GetDlgItemText (108, GetDlgItemTextLength (108), Temp);
  337.       if (Temp[0] != '\0') {
  338.          Addr.Parse (Temp);
  339.          GetDlgItemText (109, GetDlgItemTextLength (109), Temp);
  340.          Addr.FakeNet = (USHORT)atoi (Temp);
  341.          if (Addr.FakeNet != 0)
  342.             sprintf (Temp, "%s (%u)", Addr.String, Addr.FakeNet);
  343.          else
  344.             strcpy (Temp, Addr.String);
  345.          LM_SetItemText (101, item, Temp);
  346.       }
  347.  
  348.       SelChanged ();
  349.       SetFocus (108);
  350.    }
  351. }
  352.  
  353. VOID CAddressDlg::Remove (VOID)
  354. {
  355.    LM_DeleteItem (101, LM_QuerySelection (101));
  356.    SelChanged ();
  357. }
  358.  
  359. // ----------------------------------------------------------------------
  360. // Directories / Paths
  361. // ----------------------------------------------------------------------
  362.  
  363. CDirectoriesDlg::CDirectoriesDlg (HWND p_hWnd) : CDialog ("5", p_hWnd)
  364. {
  365. }
  366.  
  367. VOID CDirectoriesDlg::OnHelp (VOID)
  368. {
  369.    WinHelp ("lora.hlp>h_ref", 5);
  370. }
  371.  
  372. USHORT CDirectoriesDlg::OnInitDialog (VOID)
  373. {
  374.    Center ();
  375.  
  376.    EM_SetTextLimit (110, sizeof (Cfg->SystemPath) - 1);
  377.    EM_SetTextLimit (102, sizeof (Cfg->NormalInbound) - 1);
  378.    EM_SetTextLimit (118, sizeof (Cfg->KnownInbound) - 1);
  379.    EM_SetTextLimit (120, sizeof (Cfg->ProtectedInbound) - 1);
  380.    EM_SetTextLimit (114, sizeof (Cfg->Outbound) - 1);
  381.    EM_SetTextLimit (106, sizeof (Cfg->NodelistPath) - 1L);
  382.    EM_SetTextLimit (122, sizeof (Cfg->HudsonPath) - 1L);
  383.  
  384.    SetDlgItemText (110, Cfg->SystemPath);
  385.    SetDlgItemText (102, Cfg->NormalInbound);
  386.    SetDlgItemText (118, Cfg->KnownInbound);
  387.    SetDlgItemText (120, Cfg->ProtectedInbound);
  388.    SetDlgItemText (114, Cfg->Outbound);
  389.    SetDlgItemText (106, Cfg->NodelistPath);
  390.    SetDlgItemText (122, Cfg->HudsonPath);
  391.  
  392.    return (TRUE);
  393. }
  394.  
  395. VOID CDirectoriesDlg::OnOK (VOID)
  396. {
  397.    GetDlgItemText (110, GetDlgItemTextLength (110), Cfg->SystemPath);
  398.    GetDlgItemText (102, GetDlgItemTextLength (102), Cfg->NormalInbound);
  399.    GetDlgItemText (118, GetDlgItemTextLength (118), Cfg->KnownInbound);
  400.    GetDlgItemText (120, GetDlgItemTextLength (120), Cfg->ProtectedInbound);
  401.    GetDlgItemText (114, GetDlgItemTextLength (114), Cfg->Outbound);
  402.    GetDlgItemText (106, GetDlgItemTextLength (106), Cfg->NodelistPath);
  403.    GetDlgItemText (122, GetDlgItemTextLength (122), Cfg->HudsonPath);
  404.  
  405.    EndDialog (TRUE);
  406. }
  407.  
  408. // ----------------------------------------------------------------------
  409. // Modem commands
  410. // ----------------------------------------------------------------------
  411.  
  412. CCommandsDlg::CCommandsDlg (HWND p_hWnd) : CDialog ("2", p_hWnd)
  413. {
  414. }
  415.  
  416. VOID CCommandsDlg::OnHelp (VOID)
  417. {
  418.    WinHelp ("lora.hlp>h_ref", 2);
  419. }
  420.  
  421. USHORT CCommandsDlg::OnInitDialog (VOID)
  422. {
  423.    Center ();
  424.  
  425.    EM_SetTextLimit (102, sizeof (Cfg->Initialize[0]) - 1);
  426.    EM_SetTextLimit (103, sizeof (Cfg->Initialize[1]) - 1);
  427.    EM_SetTextLimit (104, sizeof (Cfg->Initialize[2]) - 1);
  428.    EM_SetTextLimit (105, sizeof (Cfg->Dial) - 1);
  429.    EM_SetTextLimit (106, sizeof (Cfg->Hangup) - 1);
  430.    EM_SetTextLimit (107, sizeof (Cfg->OffHook) - 1);
  431.  
  432.    SetDlgItemText (102, Cfg->Initialize[0]);
  433.    SetDlgItemText (103, Cfg->Initialize[1]);
  434.    SetDlgItemText (104, Cfg->Initialize[2]);
  435.    SetDlgItemText (105, Cfg->Dial);
  436.    SetDlgItemText (106, Cfg->Hangup);
  437.    SetDlgItemText (107, Cfg->OffHook);
  438.  
  439.    return (TRUE);
  440. }
  441.  
  442. VOID CCommandsDlg::OnOK (VOID)
  443. {
  444.    GetDlgItemText (102, GetDlgItemTextLength (102), Cfg->Initialize[0]);
  445.    GetDlgItemText (103, GetDlgItemTextLength (103), Cfg->Initialize[1]);
  446.    GetDlgItemText (104, GetDlgItemTextLength (104), Cfg->Initialize[2]);
  447.    GetDlgItemText (105, GetDlgItemTextLength (105), Cfg->Dial);
  448.    GetDlgItemText (106, GetDlgItemTextLength (106), Cfg->Hangup);
  449.    GetDlgItemText (107, GetDlgItemTextLength (107), Cfg->OffHook);
  450.  
  451.    EndDialog (TRUE);
  452. }
  453.  
  454. #if !defined(__POINT__)
  455. // ----------------------------------------------------------------------
  456. // Answer control
  457. // ----------------------------------------------------------------------
  458.  
  459. CAnswerDlg::CAnswerDlg (HWND p_hWnd) : CDialog ("43", p_hWnd)
  460. {
  461. }
  462.  
  463. VOID CAnswerDlg::OnHelp (VOID)
  464. {
  465.    WinHelp ("lora.hlp>h_ref", 43);
  466. }
  467.  
  468. USHORT CAnswerDlg::OnInitDialog (VOID)
  469. {
  470.    CHAR Temp[16];
  471.  
  472.    Center ();
  473.  
  474.    EM_SetTextLimit (103, sizeof (Cfg->Answer) - 1);
  475.    EM_SetTextLimit (106, 5);
  476.    EM_SetTextLimit (108, 5);
  477.  
  478.    BM_SetCheck (101, Cfg->ManualAnswer);
  479.    SetDlgItemText (103, Cfg->Answer);
  480.    BM_SetCheck (104, Cfg->LimitedHours);
  481.    sprintf (Temp, "%02d:%02d", Cfg->StartTime / 60, Cfg->StartTime % 60);
  482.    SetDlgItemText (106, Temp);
  483.    sprintf (Temp, "%02d:%02d", Cfg->EndTime / 60, Cfg->EndTime % 60);
  484.    SetDlgItemText (108, Temp);
  485.  
  486.    return (TRUE);
  487. }
  488.  
  489. VOID CAnswerDlg::OnOK (VOID)
  490. {
  491.    CHAR Temp[16], *p;
  492.  
  493.    Cfg->ManualAnswer = (UCHAR)BM_QueryCheck (101);
  494.    GetDlgItemText (103, GetDlgItemTextLength (103), Cfg->Answer);
  495.    Cfg->LimitedHours = (UCHAR)BM_QueryCheck (104);
  496.    GetDlgItemText (106, GetDlgItemTextLength (106), Temp);
  497.    if ((p = strtok (Temp, ":")) != NULL) {
  498.       Cfg->StartTime = (USHORT)(atoi (p) * 60);
  499.       if ((p = strtok (NULL, ":")) != NULL)
  500.          Cfg->StartTime += (USHORT)atoi (p);
  501.    }
  502.    GetDlgItemText (108, GetDlgItemTextLength (108), Temp);
  503.    if ((p = strtok (Temp, ":")) != NULL) {
  504.       Cfg->EndTime = (USHORT)(atoi (p) * 60);
  505.       if ((p = strtok (NULL, ":")) != NULL)
  506.          Cfg->EndTime += (USHORT)atoi (p);
  507.    }
  508.  
  509.    EndDialog (TRUE);
  510. }
  511.  
  512. // ----------------------------------------------------------------------
  513. // Events editor
  514. // ----------------------------------------------------------------------
  515.  
  516. class CEventsListDlg : public CDialog
  517. {
  518. public:
  519.    CEventsListDlg (HWND p_hWnd);
  520.  
  521.    int    Selected;
  522.    class  TEvents *Data;
  523.  
  524.    VOID   OnCancel (VOID);
  525.    USHORT OnInitDialog (VOID);
  526.    VOID   OnOK (VOID);
  527.  
  528. private:
  529.    DECLARE_MESSAGE_MAP ()
  530. };
  531.  
  532. class CAddEventDlg : public CDialog
  533. {
  534. public:
  535.    CAddEventDlg (HWND p_hWnd);
  536.  
  537.    CHAR   Label[32];
  538.    UCHAR  Hour, Minute;
  539.    UCHAR  Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday;
  540.    USHORT Length, LastDay;
  541.  
  542.    USHORT OnInitDialog (VOID);
  543.    VOID   OnOK (VOID);
  544. };
  545.  
  546. BEGIN_MESSAGE_MAP (CEventsDlg, CDialog)
  547.    ON_COMMAND (146, Add)
  548.    ON_COMMAND (147, Delete)
  549.    ON_COMMAND (149, Previous)
  550.    ON_COMMAND (148, List)
  551.    ON_COMMAND (150, Next)
  552. END_MESSAGE_MAP ()
  553.  
  554. CEventsDlg::CEventsDlg (HWND p_hWnd) : CDialog ("11", p_hWnd)
  555. {
  556.    Data = NULL;
  557. }
  558.  
  559. CEventsDlg::~CEventsDlg (void)
  560. {
  561.    if (Data != NULL) {
  562.       Data->Save ();
  563.       delete Data;
  564.    }
  565. }
  566.  
  567. VOID CEventsDlg::OnHelp (VOID)
  568. {
  569.    WinHelp ("lora.hlp>h_ref", 11);
  570. }
  571.  
  572. USHORT CEventsDlg::OnInitDialog (VOID)
  573. {
  574.    Center ();
  575.  
  576.    if ((Data = new TEvents (Cfg->SchedulerFile)) != NULL)
  577.       Data->Load ();
  578.  
  579.    EM_SetTextLimit (102, sizeof (Data->Label) - 1);
  580.    EM_SetTextLimit (130, sizeof (Data->Address) - 1);
  581.    EM_SetTextLimit (132, sizeof (Data->RouteCmd) - 1);
  582.    EM_SetTextLimit (152, sizeof (Data->Command) - 1);
  583.  
  584.    SPBM_SetLimits (112, 23, 0);
  585.    SPBM_SetLimits (114, 59, 0);
  586.    SPBM_SetLimits (116, 1440, 0);
  587.    SPBM_SetLimits (127, 60, 0);
  588.    SPBM_SetLimits (123, 100, 0);
  589.    SPBM_SetLimits (125, 100, 0);
  590.  
  591.    if (Data->First () == FALSE)
  592.       Data->New ();
  593.  
  594.    DisplayData ();
  595.  
  596.    return (TRUE);
  597. }
  598.  
  599. VOID CEventsDlg::OnOK (VOID)
  600. {
  601.    Data->Delete ();
  602.    Data->New ();
  603.    ReadData ();
  604.    Data->Add ();
  605.    SetFocus (102);
  606. }
  607.  
  608. VOID CEventsDlg::DisplayData (VOID)
  609. {
  610.    SetDlgItemText (102, Data->Label);
  611.    SPBM_SetCurrentValue (112, Data->Hour);
  612.    SPBM_SetCurrentValue (114, Data->Minute);
  613.    SPBM_SetCurrentValue (116, Data->Length);
  614.    BM_SetCheck (104, Data->Sunday);
  615.    BM_SetCheck (105, Data->Monday);
  616.    BM_SetCheck (106, Data->Tuesday);
  617.    BM_SetCheck (107, Data->Wednesday);
  618.    BM_SetCheck (108, Data->Thursday);
  619.    BM_SetCheck (109, Data->Friday);
  620.    BM_SetCheck (110, Data->Saturday);
  621.    BM_SetCheck (118, Data->Force);
  622.    BM_SetCheck (119, Data->MailOnly);
  623.    BM_SetCheck (117, Data->Dynamic);
  624.    BM_SetCheck (133, Data->AllowRequests);
  625.    BM_SetCheck (134, Data->MakeRequests);
  626.    BM_SetCheck (135, Data->SendNormal);
  627.    BM_SetCheck (137, Data->SendCrash);
  628.    BM_SetCheck (136, Data->SendDirect);
  629.    BM_SetCheck (138, Data->SendImmediate);
  630.    SPBM_SetCurrentValue (127, Data->CallDelay);
  631.    SPBM_SetCurrentValue (123, Data->MaxCalls);
  632.    SPBM_SetCurrentValue (125, Data->MaxConnects);
  633.    SetDlgItemText (130, Data->Address);
  634.    BM_SetCheck (128, Data->ForceCall);
  635.    BM_SetCheck (142, Data->ExportMail);
  636.    SetDlgItemText (132, Data->RouteCmd);
  637.    SetDlgItemText (152, Data->Command);
  638.    BM_SetCheck (139, Data->ImportNormal);
  639.    BM_SetCheck (140, Data->ImportProtected);
  640.    BM_SetCheck (141, Data->ImportKnown);
  641.    BM_SetCheck (143, Data->StartImport);
  642.    BM_SetCheck (144, Data->StartExport);
  643.    BM_SetCheck (145, Data->ProcessTIC);
  644.    BM_SetCheck (120, Data->ClockAdjustment);
  645. }
  646.  
  647. VOID CEventsDlg::ReadData (VOID)
  648. {
  649.    GetDlgItemText (102, GetDlgItemTextLength (102), Data->Label);
  650.    Data->Hour = (UCHAR)SPBM_QueryValue (112);
  651.    Data->Minute = (UCHAR)SPBM_QueryValue (114);
  652.    Data->Length = (USHORT)SPBM_QueryValue (116);
  653.    Data->Sunday = (UCHAR)BM_QueryCheck (104);
  654.    Data->Monday = (UCHAR)BM_QueryCheck (105);
  655.    Data->Tuesday = (UCHAR)BM_QueryCheck (106);
  656.    Data->Wednesday = (UCHAR)BM_QueryCheck (107);
  657.    Data->Thursday = (UCHAR)BM_QueryCheck (108);
  658.    Data->Friday = (UCHAR)BM_QueryCheck (109);
  659.    Data->Saturday = (UCHAR)BM_QueryCheck (110);
  660.    Data->Force = (UCHAR)BM_QueryCheck (118);
  661.    Data->MailOnly = (UCHAR)BM_QueryCheck (119);
  662.    Data->Dynamic = (UCHAR)BM_QueryCheck (117);
  663.    Data->AllowRequests = (UCHAR)BM_QueryCheck (133);
  664.    Data->MakeRequests = (UCHAR)BM_QueryCheck (134);
  665.    Data->SendNormal = (UCHAR)BM_QueryCheck (135);
  666.    Data->SendCrash = (UCHAR)BM_QueryCheck (137);
  667.    Data->SendDirect = (UCHAR)BM_QueryCheck (136);
  668.    Data->SendImmediate = (UCHAR)BM_QueryCheck (138);
  669.    Data->CallDelay = (UCHAR)SPBM_QueryValue (127);
  670.    Data->MaxCalls = (UCHAR)SPBM_QueryValue (123);
  671.    Data->MaxConnects = (UCHAR)SPBM_QueryValue (125);
  672.    GetDlgItemText (130, GetDlgItemTextLength (130), Data->Address);
  673.    Data->ForceCall = (UCHAR)BM_QueryCheck (128);
  674.    Data->ExportMail = (UCHAR)BM_QueryCheck (142);
  675.    GetDlgItemText (132, GetDlgItemTextLength (132), Data->RouteCmd);
  676.    GetDlgItemText (152, GetDlgItemTextLength (152), Data->Command);
  677.    Data->ImportNormal = (UCHAR)BM_QueryCheck (139);
  678.    Data->ImportProtected = (UCHAR)BM_QueryCheck (140);
  679.    Data->ImportKnown = (UCHAR)BM_QueryCheck (141);
  680.    Data->StartImport = (UCHAR)BM_QueryCheck (143);
  681.    Data->StartExport = (UCHAR)BM_QueryCheck (144);
  682.    Data->ProcessTIC = (UCHAR)BM_QueryCheck (145);
  683.    Data->ClockAdjustment = (UCHAR)BM_QueryCheck (120);
  684. }
  685.  
  686. VOID CEventsDlg::Add (VOID)
  687. {
  688.    class CAddEventDlg *Dlg;
  689.  
  690.    Data->Delete ();
  691.    Data->New ();
  692.    ReadData ();
  693.    Data->Add ();
  694.  
  695.    if ((Dlg = new CAddEventDlg (m_hWnd)) != NULL) {
  696.       if (Dlg->DoModal () == TRUE) {
  697.          Data->New ();
  698.          strcpy (Data->Label, Dlg->Label);
  699.          Data->Hour = Dlg->Hour;
  700.          Data->Minute = Dlg->Minute;
  701.          Data->Length = Dlg->Length;
  702.          Data->Sunday = Dlg->Sunday;
  703.          Data->Monday = Dlg->Monday;
  704.          Data->Tuesday = Dlg->Tuesday;
  705.          Data->Wednesday = Dlg->Wednesday;
  706.          Data->Thursday = Dlg->Thursday;
  707.          Data->Friday = Dlg->Friday;
  708.          Data->Saturday = Dlg->Saturday;
  709.          Data->Add ();
  710.          DisplayData ();
  711.       }
  712.       delete Dlg;
  713.    }
  714.    SetFocus (102);
  715. }
  716.  
  717. VOID CEventsDlg::Delete (VOID)
  718. {
  719.    if (MessageBox ("Are you sure ?", "Delete", MB_YESNO|MB_ICONQUESTION) == IDYES) {
  720.       Data->Delete ();
  721.       DisplayData ();
  722.    }
  723.    SetFocus (102);
  724. }
  725.  
  726. VOID CEventsDlg::Next (VOID)
  727. {
  728.    if (Data->Next () == TRUE)
  729.       DisplayData ();
  730.    SetFocus (102);
  731. }
  732.  
  733. VOID CEventsDlg::Previous (VOID)
  734. {
  735.    if (Data->Previous () == TRUE)
  736.       DisplayData ();
  737.    SetFocus (102);
  738. }
  739.  
  740. VOID CEventsDlg::List (VOID)
  741. {
  742.    class CEventsListDlg *Dlg;
  743.  
  744.    Data->Save ();
  745.    if ((Dlg = new CEventsListDlg (m_hWnd)) != NULL) {
  746.       Dlg->Data = Data;
  747.       if (Dlg->DoModal () == TRUE)
  748.          DisplayData ();
  749.       delete Dlg;
  750.    }
  751.    SetFocus (102);
  752. }
  753.  
  754. // ----------------------------------------------------------------------
  755.  
  756. CAddEventDlg::CAddEventDlg (HWND p_hWnd) : CDialog ("51", p_hWnd)
  757. {
  758. }
  759.  
  760. USHORT CAddEventDlg::OnInitDialog (VOID)
  761. {
  762.    Center ();
  763.  
  764.    EM_SetTextLimit (102, sizeof (Label) - 1);
  765.    SPBM_SetLimits (112, 23, 0);
  766.    SPBM_SetLimits (114, 59, 0);
  767.    SPBM_SetLimits (116, 1440, 0);
  768.  
  769.    return (TRUE);
  770. }
  771.  
  772. VOID CAddEventDlg::OnOK (VOID)
  773. {
  774.    GetDlgItemText (102, GetDlgItemTextLength (102), Label);
  775.    Hour = (UCHAR)SPBM_QueryValue (112);
  776.    Minute = (UCHAR)SPBM_QueryValue (114);
  777.    Length = (USHORT)SPBM_QueryValue (116);
  778.    Sunday = (UCHAR)BM_QueryCheck (104);
  779.    Monday = (UCHAR)BM_QueryCheck (105);
  780.    Tuesday = (UCHAR)BM_QueryCheck (106);
  781.    Wednesday = (UCHAR)BM_QueryCheck (107);
  782.    Thursday = (UCHAR)BM_QueryCheck (108);
  783.    Friday = (UCHAR)BM_QueryCheck (109);
  784.    Saturday = (UCHAR)BM_QueryCheck (110);
  785.  
  786.    EndDialog (TRUE);
  787. }
  788.  
  789. // ----------------------------------------------------------------------
  790.  
  791. BEGIN_MESSAGE_MAP (CEventsListDlg, CDialog)
  792.    ON_CONTROL (CN_ENTER, 101, OnOK)
  793. END_MESSAGE_MAP ()
  794.  
  795. CEventsListDlg::CEventsListDlg (HWND p_hWnd) : CDialog ("25", p_hWnd)
  796. {
  797.    Selected = -1;
  798. }
  799.  
  800. USHORT CEventsListDlg::OnInitDialog (VOID)
  801. {
  802.    int i = 1;
  803.    CHAR Temp[64];
  804.  
  805.    SetWindowTitle ("Events list");
  806.  
  807.    LVM_AllocateColumns (101, 6);
  808.    LVM_InsertColumn (101, "#", LVC_RIGHT);
  809.    LVM_InsertColumn (101, "Title", LVC_LEFT);
  810.    LVM_InsertColumn (101, "Days", LVC_LEFT);
  811.    LVM_InsertColumn (101, "Start", LVC_RIGHT);
  812.    LVM_InsertColumn (101, "Length", LVC_RIGHT);
  813.    LVM_InsertColumn (101, "Command", LVC_LEFT);
  814.  
  815.    if (Data != NULL) {
  816.       Selected = Data->Number;
  817.  
  818.       Data->Load ();
  819.       if (Data->First () == TRUE)
  820.          do {
  821.             LVM_InsertItem (101);
  822.  
  823.             sprintf (Temp, "%d", i++);
  824.             LVM_SetItemText (101, 0, Temp);
  825.             LVM_SetItemText (101, 1, Data->Label);
  826.             strcpy (Temp, "-------");
  827.             if (Data->Sunday == TRUE)
  828.                Temp[0] = 'S';
  829.             if (Data->Monday == TRUE)
  830.                Temp[1] = 'M';
  831.             if (Data->Tuesday == TRUE)
  832.                Temp[2] = 'T';
  833.             if (Data->Wednesday == TRUE)
  834.                Temp[3] = 'W';
  835.             if (Data->Thursday == TRUE)
  836.                Temp[4] = 'T';
  837.             if (Data->Friday == TRUE)
  838.                Temp[5] = 'F';
  839.             if (Data->Saturday == TRUE)
  840.                Temp[6] = 'S';
  841.             LVM_SetItemText (101, 2, Temp);
  842.             sprintf (Temp, "%d:%02d", Data->Hour, Data->Minute);
  843.             LVM_SetItemText (101, 3, Temp);
  844.             sprintf (Temp, "%d", Data->Length);
  845.             LVM_SetItemText (101, 4, Temp);
  846.             LVM_SetItemText (101, 5, Data->Command);
  847.          } while (Data->Next () == TRUE);
  848.    }
  849.  
  850.    LVM_InvalidateView (101);
  851.  
  852.    if (Selected > 0)
  853.       LVM_SelectItem (101, Selected - 1);
  854.  
  855.    return (TRUE);
  856. }
  857.  
  858. VOID CEventsListDlg::OnCancel (VOID)
  859. {
  860.    Data->Read ((USHORT)Selected);
  861.    EndDialog (FALSE);
  862. }
  863.  
  864. VOID CEventsListDlg::OnOK (VOID)
  865. {
  866.    int item;
  867.  
  868.    Data->Read ((USHORT)Selected);
  869.    if ((item = LVM_QuerySelectedItem (101)) != -1)
  870.       Data->Read ((USHORT)(item + 1));
  871.  
  872.    EndDialog (TRUE);
  873. }
  874. #endif
  875.  
  876. // ----------------------------------------------------------------------
  877. // General options
  878. // ----------------------------------------------------------------------
  879.  
  880. CGeneralDlg::CGeneralDlg (HWND p_hWnd) : CDialog ("7", p_hWnd)
  881. {
  882. }
  883.  
  884. VOID CGeneralDlg::OnHelp (VOID)
  885. {
  886.    WinHelp ("lora.hlp>h_ref", 7);
  887. }
  888.  
  889. USHORT CGeneralDlg::OnInitDialog (VOID)
  890. {
  891.    Center ();
  892.  
  893.    EM_SetTextLimit (102, sizeof (Cfg->LogFile) - 1);
  894.    EM_SetTextLimit (109, sizeof (Cfg->SchedulerFile) - 1);
  895.    SPBM_SetLimits (104, 255, 1);
  896.    EM_SetTextLimit (112, sizeof (Cfg->FaxCommand) - 1);
  897.    EM_SetTextLimit (106, sizeof (Cfg->AfterCallerCmd) - 1);
  898.    EM_SetTextLimit (110, sizeof (Cfg->AfterMailCmd) - 1);
  899.  
  900.    SetDlgItemText (102, Cfg->LogFile);
  901.    SPBM_SetCurrentValue (104, Cfg->TaskNumber);
  902.    SetDlgItemText (109, Cfg->SchedulerFile);
  903.    SetDlgItemText (112, Cfg->FaxCommand);
  904.    SetDlgItemText (106, Cfg->AfterCallerCmd);
  905.    SetDlgItemText (110, Cfg->AfterMailCmd);
  906.    BM_SetCheck (113, Cfg->ZModemTelnet);
  907.    BM_SetCheck (114, Cfg->ReloadLog);
  908.    BM_SetCheck (115, Cfg->MakeProcessLog);
  909.  
  910.    return (TRUE);
  911. }
  912.  
  913. VOID CGeneralDlg::OnOK (VOID)
  914. {
  915.    GetDlgItemText (102, GetDlgItemTextLength (102), Cfg->LogFile);
  916.    Cfg->TaskNumber = (USHORT)SPBM_QueryValue (104);
  917.    GetDlgItemText (109, GetDlgItemTextLength (109), Cfg->SchedulerFile);
  918.    GetDlgItemText (112, GetDlgItemTextLength (112), Cfg->FaxCommand);
  919.    GetDlgItemText (106, GetDlgItemTextLength (106), Cfg->AfterCallerCmd);
  920.    GetDlgItemText (110, GetDlgItemTextLength (110), Cfg->AfterMailCmd);
  921.    Cfg->ZModemTelnet = (UCHAR)BM_QueryCheck (113);
  922.    Cfg->ReloadLog = (UCHAR)BM_QueryCheck (114);
  923.    Cfg->MakeProcessLog = (UCHAR)BM_QueryCheck (115);
  924.  
  925.    EndDialog (TRUE);
  926. }
  927.  
  928. // ----------------------------------------------------------------------
  929. // Fax Options
  930. // ----------------------------------------------------------------------
  931.  
  932. CFaxOptDlg::CFaxOptDlg (HWND p_hWnd) : CDialog ("48", p_hWnd)
  933. {
  934. }
  935.  
  936. VOID CFaxOptDlg::OnHelp (VOID)
  937. {
  938.    WinHelp ("lora.hlp>h_ref", 48);
  939. }
  940.  
  941. USHORT CFaxOptDlg::OnInitDialog (VOID)
  942. {
  943.    Center ();
  944.  
  945.    EM_SetTextLimit (112, sizeof (Cfg->FaxCommand) - 1);
  946.    EM_SetTextLimit (103, sizeof (Cfg->FaxPath) - 1);
  947.    EM_SetTextLimit (105, sizeof (Cfg->AfterFaxCmd) - 1);
  948.  
  949.    BM_SetCheck (101, Cfg->ExternalFax);
  950.    SetDlgItemText (112, Cfg->FaxCommand);
  951.    SetDlgItemText (103, Cfg->FaxPath);
  952.    SetDlgItemText (105, Cfg->AfterFaxCmd);
  953.  
  954.    return (TRUE);
  955. }
  956.  
  957. VOID CFaxOptDlg::OnOK (VOID)
  958. {
  959.    Cfg->ExternalFax = (UCHAR)BM_QueryCheck (101);
  960.    GetDlgItemText (112, GetDlgItemTextLength (112), Cfg->FaxCommand);
  961.    GetDlgItemText (103, GetDlgItemTextLength (103), Cfg->FaxPath);
  962.    GetDlgItemText (105, GetDlgItemTextLength (105), Cfg->AfterFaxCmd);
  963.  
  964.    EndDialog (TRUE);
  965. }
  966.  
  967. // ----------------------------------------------------------------------
  968. // Modem hardware
  969. // ----------------------------------------------------------------------
  970.  
  971. CHardwareDlg::CHardwareDlg (HWND p_hWnd) : CDialog ("1", p_hWnd)
  972. {
  973. }
  974.  
  975. USHORT CHardwareDlg::OnInitDialog (VOID)
  976. {
  977.    Center ();
  978.  
  979.    EM_SetTextLimit (102, sizeof (Cfg->Device) - 1);
  980.    EM_SetTextLimit (108, sizeof (Cfg->FaxMessage) - 1);
  981.    EM_SetTextLimit (116, sizeof (Cfg->Ring) - 1);
  982.  
  983.    CB_AddString (104, "300");
  984.    CB_AddString (104, "1200");
  985.    CB_AddString (104, "2400");
  986.    CB_AddString (104, "4800");
  987.    CB_AddString (104, "9600");
  988.    CB_AddString (104, "19200");
  989.    CB_AddString (104, "38400");
  990.    CB_AddString (104, "57600");
  991.    CB_AddString (104, "115200");
  992.  
  993.    SPBM_SetLimits (112, 120, 1);
  994.    SPBM_SetLimits (114, 5, 1);
  995.  
  996.    SetDlgItemText (102, Cfg->Device);
  997.    switch (Cfg->Speed) {
  998.       case 300L:
  999.          CB_SelectItem (104, 0);
  1000.          break;
  1001.       case 1200L:
  1002.          CB_SelectItem (104, 1);
  1003.          break;
  1004.       case 2400L:
  1005.          CB_SelectItem (104, 2);
  1006.          break;
  1007.       case 4800L:
  1008.          CB_SelectItem (104, 3);
  1009.          break;
  1010.       case 9600L:
  1011.          CB_SelectItem (104, 4);
  1012.          break;
  1013.       case 19200L:
  1014.          CB_SelectItem (104, 5);
  1015.          break;
  1016.       case 38400L:
  1017.          CB_SelectItem (104, 6);
  1018.          break;
  1019.       case 57600L:
  1020.          CB_SelectItem (104, 7);
  1021.          break;
  1022.       case 115200L:
  1023.          CB_SelectItem (104, 8);
  1024.          break;
  1025.    }
  1026.    SetDlgItemText (108, Cfg->FaxMessage);
  1027.    SetDlgItemText (116, Cfg->Ring);
  1028.    SPBM_SetCurrentValue (112, Cfg->DialTimeout);
  1029.    SPBM_SetCurrentValue (114, Cfg->CarrierDropTimeout);
  1030.    BM_SetCheck (105, Cfg->LockSpeed);
  1031.    BM_SetCheck (110, Cfg->StripDashes);
  1032.  
  1033.    return (TRUE);
  1034. }
  1035.  
  1036. VOID CHardwareDlg::OnHelp (VOID)
  1037. {
  1038.    WinHelp ("lora.hlp>h_ref", 1);
  1039. }
  1040.  
  1041. VOID CHardwareDlg::OnOK (VOID)
  1042. {
  1043.    CHAR Temp[32];
  1044.  
  1045.    GetDlgItemText (102, GetDlgItemTextLength (102), Cfg->Device);
  1046.    GetDlgItemText (104, GetDlgItemTextLength (104), Temp);
  1047.    Cfg->Speed = atol (Temp);
  1048.    GetDlgItemText (108, GetDlgItemTextLength (108), Cfg->FaxMessage);
  1049.    GetDlgItemText (116, GetDlgItemTextLength (116), Cfg->Ring);
  1050.    Cfg->DialTimeout = (USHORT)SPBM_QueryValue (112);
  1051.    Cfg->CarrierDropTimeout = (USHORT)SPBM_QueryValue (114);
  1052.    Cfg->LockSpeed = BM_QueryCheck (105);
  1053.    Cfg->StripDashes = BM_QueryCheck (110);
  1054.  
  1055.    EndDialog (TRUE);
  1056. }
  1057.  
  1058. // ----------------------------------------------------------------------
  1059. // Nodes editor
  1060. // ----------------------------------------------------------------------
  1061.  
  1062. class CAddNodeDlg : public CDialog
  1063. {
  1064. public:
  1065.    CAddNodeDlg (HWND p_hWnd);
  1066.  
  1067.    CHAR   Address[64];
  1068.    CHAR   SystemName[64];
  1069.    CHAR   SysopName[48];
  1070.  
  1071.    USHORT OnInitDialog (VOID);
  1072.    VOID   OnOK (VOID);
  1073. };
  1074.  
  1075. class CNodesListDlg : public CDialog
  1076. {
  1077. public:
  1078.    CNodesListDlg (HWND p_hWnd);
  1079.  
  1080.    int    Selected;
  1081.    class  TNodes *Data;
  1082.  
  1083.    VOID   OnChanged (VOID);
  1084.    USHORT OnInitDialog (VOID);
  1085.    VOID   OnOK (VOID);
  1086.  
  1087. private:
  1088.    DECLARE_MESSAGE_MAP ()
  1089. };
  1090.  
  1091. class CNodeSecurityDlg : public CDialog
  1092. {
  1093. public:
  1094.    CNodeSecurityDlg (HWND p_hWnd);
  1095.  
  1096.    class  TNodes *Data;
  1097.  
  1098.    USHORT OnInitDialog (VOID);
  1099.    VOID   OnOK (VOID);
  1100. };
  1101.  
  1102. class CNodeOtherDlg : public CDialog
  1103. {
  1104. public:
  1105.    CNodeOtherDlg (HWND p_hWnd);
  1106.  
  1107.    class  TNodes *Data;
  1108.  
  1109.    USHORT OnInitDialog (VOID);
  1110.    VOID   OnOK (VOID);
  1111. };
  1112.  
  1113. class CNodeEchoDlg : public CDialog
  1114. {
  1115. public:
  1116.    CNodeEchoDlg (HWND p_hWnd);
  1117.  
  1118.    class  TNodes *Nodes;
  1119.  
  1120.    USHORT OnInitDialog (VOID);
  1121.    VOID   OnOK (VOID);
  1122. };
  1123.  
  1124. class CNodeTicDlg : public CDialog
  1125. {
  1126. public:
  1127.    CNodeTicDlg (HWND p_hWnd);
  1128.  
  1129.    class  TNodes *Nodes;
  1130.  
  1131.    USHORT OnInitDialog (VOID);
  1132.    VOID   OnOK (VOID);
  1133. };
  1134.  
  1135. BEGIN_MESSAGE_MAP (CNodesDlg, CDialog)
  1136.    ON_COMMAND (13,  Copy)
  1137.    ON_COMMAND (14,  NodeTic)
  1138.    ON_COMMAND (114, NodeEcho)
  1139.    ON_COMMAND (115, Add)
  1140.    ON_COMMAND (116, Delete)
  1141.    ON_COMMAND (117, List)
  1142.    ON_COMMAND (118, Previous)
  1143.    ON_COMMAND (119, Next)
  1144.    ON_COMMAND (123, Security)
  1145.    ON_COMMAND (114, Other)
  1146. END_MESSAGE_MAP ()
  1147.  
  1148. CNodesDlg::CNodesDlg (HWND p_hWnd) : CDialog ("12", p_hWnd)
  1149. {
  1150.    Data = NULL;
  1151. }
  1152.  
  1153. CNodesDlg::~CNodesDlg (void)
  1154. {
  1155.    if (Data != NULL)
  1156.       delete Data;
  1157. }
  1158.  
  1159. VOID CNodesDlg::OnHelp (VOID)
  1160. {
  1161.    WinHelp ("lora.hlp>h_ref", 12);
  1162. }
  1163.  
  1164. USHORT CNodesDlg::OnInitDialog (VOID)
  1165. {
  1166.    class TPacker *Packer;
  1167.  
  1168.    Center ();
  1169.  
  1170.    Data = new TNodes (Cfg->NodelistPath);
  1171.  
  1172.    EM_SetTextLimit (102, sizeof (Data->Address) - 1);
  1173.    EM_SetTextLimit (104, sizeof (Data->SystemName) - 1);
  1174.    EM_SetTextLimit (108, sizeof (Data->SysopName) - 1);
  1175.    EM_SetTextLimit (106, sizeof (Data->Location) - 1);
  1176.    EM_SetTextLimit (125, sizeof (Data->Phone) - 1);
  1177.    EM_SetTextLimit (127, sizeof (Data->Flags) - 1);
  1178.    EM_SetTextLimit (19,  sizeof (Data->SessionPwd) - 1);
  1179.    EM_SetTextLimit (21,  sizeof (Data->InPktPwd) - 1);
  1180.    EM_SetTextLimit (121, sizeof (Data->OutPktPwd) - 1);
  1181.    EM_SetTextLimit (23,  sizeof (Data->AreaMgrPwd) - 1);
  1182.    EM_SetTextLimit (25,  sizeof (Data->TicPwd) - 1);
  1183.  
  1184.    if ((Packer = new TPacker (Cfg->SystemPath)) != NULL) {
  1185.       if (Packer->First () == TRUE)
  1186.          do {
  1187.             CB_AddString (112, Packer->Display);
  1188.          } while (Packer->Next ());
  1189.       delete Packer;
  1190.    }
  1191.  
  1192.    if (Cfg->MailAddress.First () == TRUE)
  1193.       do {
  1194.          CB_AddString (17, Cfg->MailAddress.String);
  1195.       } while (Cfg->MailAddress.Next ());
  1196.  
  1197.    if (Data->First () == FALSE)
  1198.       Data->New ();
  1199.  
  1200.    DisplayData ();
  1201.  
  1202.    return (TRUE);
  1203. }
  1204.  
  1205. VOID CNodesDlg::OnOK (VOID)
  1206. {
  1207.    CHAR NewAddress[64];
  1208.    class TNodes *Back;
  1209.  
  1210.    GetDlgItemText (102, GetDlgItemTextLength (102), NewAddress);
  1211.    if (stricmp (NewAddress, Data->Address)) {
  1212.       if ((Back = new TNodes (Cfg->NodelistPath)) != NULL) {
  1213.          Back->Read (Data->Address);
  1214.          Back->Delete ();
  1215.          delete Back;
  1216.       }
  1217.       ReadData ();
  1218.       Data->Add ();
  1219.    }
  1220.    else {
  1221.       ReadData ();
  1222.       Data->Update ();
  1223.    }
  1224. }
  1225.  
  1226. VOID CNodesDlg::DisplayData (VOID)
  1227. {
  1228.    class TPacker *Packer;
  1229.  
  1230.    SetDlgItemText (102, Data->Address);
  1231.    SetDlgItemText (104, Data->SystemName);
  1232.    SetDlgItemText (108, Data->SysopName);
  1233.    BM_SetCheck (122, Data->RemapMail);
  1234.    SetDlgItemText (106, Data->Location);
  1235.    SetDlgItemText (125, Data->Phone);
  1236.    SetDlgItemText (127, Data->Flags);
  1237.    SetDlgItemText (17,  Data->MailerAka);
  1238.    SetDlgItemText (19,  Data->SessionPwd);
  1239.    SetDlgItemText (21,  Data->InPktPwd);
  1240.    SetDlgItemText (121, Data->OutPktPwd);
  1241.    SetDlgItemText (23,  Data->AreaMgrPwd);
  1242.    SetDlgItemText (25,  Data->TicPwd);
  1243.    SetDlgItemText (27,  Data->DialCmd);
  1244.  
  1245.    if ((Packer = new TPacker (Cfg->SystemPath)) != NULL) {
  1246.       if (Packer->Read (Data->Packer) == TRUE)
  1247.          SetDlgItemText (112, Packer->Display);
  1248.       delete Packer;
  1249.    }
  1250. }
  1251.  
  1252. VOID CNodesDlg::ReadData (VOID)
  1253. {
  1254.    CHAR Temp[128];
  1255.    class TPacker *Packer;
  1256.  
  1257.    GetDlgItemText (102, GetDlgItemTextLength (102), Data->Address);
  1258.    GetDlgItemText (104, GetDlgItemTextLength (104), Data->SystemName);
  1259.    GetDlgItemText (108, GetDlgItemTextLength (108), Data->SysopName);
  1260.    Data->RemapMail = (UCHAR)BM_QueryCheck (122);
  1261.    GetDlgItemText (106, GetDlgItemTextLength (106), Data->Location);
  1262.    GetDlgItemText (125, GetDlgItemTextLength (125), Data->Phone);
  1263.    GetDlgItemText (127, GetDlgItemTextLength (127), Data->Flags);
  1264.    GetDlgItemText (17,  GetDlgItemTextLength (17),  Data->MailerAka);
  1265.    GetDlgItemText (19,  GetDlgItemTextLength (19),  Data->SessionPwd);
  1266.    GetDlgItemText (21,  GetDlgItemTextLength (21),  Data->InPktPwd);
  1267.    GetDlgItemText (121, GetDlgItemTextLength (121), Data->OutPktPwd);
  1268.    GetDlgItemText (23,  GetDlgItemTextLength (23),  Data->AreaMgrPwd);
  1269.    GetDlgItemText (25,  GetDlgItemTextLength (25),  Data->TicPwd);
  1270.    GetDlgItemText (27,  GetDlgItemTextLength (27),  Data->DialCmd);
  1271.  
  1272.    GetDlgItemText (112, GetDlgItemTextLength (112), Temp);
  1273.    if ((Packer = new TPacker (Cfg->SystemPath)) != NULL) {
  1274.       if (Packer->First () == TRUE)
  1275.          do {
  1276.             if (!strcmp (Temp, Packer->Display)) {
  1277.                strcpy (Data->Packer, Packer->Key);
  1278.                break;
  1279.             }
  1280.          } while (Packer->Next ());
  1281.       delete Packer;
  1282.    }
  1283. }
  1284.  
  1285. VOID CNodesDlg::Add (VOID)
  1286. {
  1287.    class CAddNodeDlg *Dlg;
  1288.  
  1289.    if ((Dlg = new CAddNodeDlg (m_hWnd)) != NULL) {
  1290.       if (Dlg->DoModal () == TRUE) {
  1291.          Data->New ();
  1292.          strcpy (Data->Address, Dlg->Address);
  1293.          strcpy (Data->SystemName, Dlg->SystemName);
  1294.          strcpy (Data->SysopName, Dlg->SysopName);
  1295.          Data->Add ();
  1296.          DisplayData ();
  1297.       }
  1298.       delete Dlg;
  1299.    }
  1300. }
  1301.  
  1302. VOID CNodesDlg::Copy (VOID)
  1303. {
  1304.    class CAddNodeDlg *Dlg;
  1305.  
  1306.    if ((Dlg = new CAddNodeDlg (m_hWnd)) != NULL) {
  1307.       if (Dlg->DoModal () == TRUE) {
  1308.          strcpy (Data->Address, Dlg->Address);
  1309.          strcpy (Data->SystemName, Dlg->SystemName);
  1310.          strcpy (Data->SysopName, Dlg->SysopName);
  1311.          Data->Add ();
  1312.          DisplayData ();
  1313.       }
  1314.       delete Dlg;
  1315.    }
  1316. }
  1317.  
  1318. VOID CNodesDlg::Delete (VOID)
  1319. {
  1320.    if (MessageBox ("Are you sure ?", "Delete", MB_YESNO|MB_ICONQUESTION) == IDYES) {
  1321.       Data->Delete ();
  1322.       DisplayData ();
  1323.    }
  1324. }
  1325.  
  1326. VOID CNodesDlg::Other (VOID)
  1327. {
  1328.    class CNodeOtherDlg *Dlg;
  1329.  
  1330.    if ((Dlg = new CNodeOtherDlg (m_hWnd)) != NULL) {
  1331.       Dlg->Data = Data;
  1332.       Dlg->DoModal ();
  1333.       delete Dlg;
  1334.    }
  1335. }
  1336.  
  1337. VOID CNodesDlg::NodeEcho (VOID)
  1338. {
  1339.    class CNodeEchoDlg *Dlg;
  1340.  
  1341.    if ((Dlg = new CNodeEchoDlg (m_hWnd)) != NULL) {
  1342.       Dlg->Nodes = Data;
  1343.       Dlg->DoModal ();
  1344.       delete Dlg;
  1345.    }
  1346. }
  1347.  
  1348. VOID CNodesDlg::NodeTic (VOID)
  1349. {
  1350.    class CNodeTicDlg *Dlg;
  1351.  
  1352.    if ((Dlg = new CNodeTicDlg (m_hWnd)) != NULL) {
  1353.       Dlg->Nodes = Data;
  1354.       Dlg->DoModal ();
  1355.       delete Dlg;
  1356.    }
  1357. }
  1358.  
  1359. VOID CNodesDlg::List (VOID)
  1360. {
  1361.    class CNodesListDlg *Dlg;
  1362.  
  1363.    if ((Dlg = new CNodesListDlg (m_hWnd)) != NULL) {
  1364.       Dlg->Data = Data;
  1365.       if (Dlg->DoModal () == TRUE)
  1366.          DisplayData ();
  1367.       delete Dlg;
  1368.    }
  1369. }
  1370.  
  1371. VOID CNodesDlg::Next (VOID)
  1372. {
  1373.    if (Data->Next () == TRUE)
  1374.       DisplayData ();
  1375. }
  1376.  
  1377. VOID CNodesDlg::Previous (VOID)
  1378. {
  1379.    if (Data->Previous () == TRUE)
  1380.       DisplayData ();
  1381. }
  1382.  
  1383. VOID CNodesDlg::Security (VOID)
  1384. {
  1385.    class CNodeSecurityDlg *Dlg;
  1386.  
  1387.    if ((Dlg = new CNodeSecurityDlg (m_hWnd)) != NULL) {
  1388.       Dlg->Data = Data;
  1389.       Dlg->DoModal ();
  1390.       delete Dlg;
  1391.    }
  1392. }
  1393.  
  1394. // ----------------------------------------------------------------------
  1395.  
  1396. CAddNodeDlg::CAddNodeDlg (HWND p_hWnd) : CDialog ("46", p_hWnd)
  1397. {
  1398. }
  1399.  
  1400. USHORT CAddNodeDlg::OnInitDialog (VOID)
  1401. {
  1402.    Center ();
  1403.  
  1404.    EM_SetTextLimit (102, sizeof (Address) - 1);
  1405.    EM_SetTextLimit (104, sizeof (SystemName) - 1);
  1406.    EM_SetTextLimit (108, sizeof (SysopName) - 1);
  1407.  
  1408.    return (TRUE);
  1409. }
  1410.  
  1411. VOID CAddNodeDlg::OnOK (VOID)
  1412. {
  1413.    GetDlgItemText (102, GetDlgItemTextLength (102), Address);
  1414.    GetDlgItemText (104, GetDlgItemTextLength (104), SystemName);
  1415.    GetDlgItemText (108, GetDlgItemTextLength (108), SysopName);
  1416.  
  1417.    EndDialog (TRUE);
  1418. }
  1419.  
  1420. // ----------------------------------------------------------------------
  1421.  
  1422. BEGIN_MESSAGE_MAP (CNodesListDlg, CDialog)
  1423.    ON_CONTROL (CN_ENTER, 101, OnOK)
  1424. #if defined(__NT__)
  1425.    ON_NOTIFY (LVN_ITEMCHANGED, 101, OnChanged)
  1426. #endif
  1427. END_MESSAGE_MAP ()
  1428.  
  1429. CNodesListDlg::CNodesListDlg (HWND p_hWnd) : CDialog ("25", p_hWnd)
  1430. {
  1431.    Selected = -1;
  1432. }
  1433.  
  1434. USHORT CNodesListDlg::OnInitDialog (VOID)
  1435. {
  1436.    class TNodes *Nodes;
  1437.  
  1438.    SetWindowTitle ("Nodes List");
  1439.  
  1440.    LVM_AllocateColumns (101, 3);
  1441.    LVM_InsertColumn (101, "Address", LVC_LEFT);
  1442.    LVM_InsertColumn (101, "System Name", LVC_LEFT);
  1443.    LVM_InsertColumn (101, "Sysop Name", LVC_LEFT);
  1444.  
  1445.    if ((Nodes = new TNodes (Cfg->NodelistPath)) != NULL) {
  1446.       if (Nodes->First () == TRUE)
  1447.          do {
  1448.             LVM_InsertItem (101);
  1449.  
  1450.             LVM_SetItemText (101, 0, Nodes->Address);
  1451.             LVM_SetItemText (101, 1, Nodes->SystemName);
  1452.             LVM_SetItemText (101, 2, Nodes->SysopName);
  1453.          } while (Nodes->Next () == TRUE);
  1454.       delete Nodes;
  1455.    }
  1456.  
  1457.    LVM_InvalidateView (101);
  1458.  
  1459.    return (TRUE);
  1460. }
  1461.  
  1462. VOID CNodesListDlg::OnChanged (VOID)
  1463. {
  1464. #if defined(__NT__)
  1465.    NM_LISTVIEW *pnmv = (NM_LISTVIEW *)m_lParam;
  1466.  
  1467.    if (!(pnmv->uNewState & LVIS_SELECTED) && (pnmv->uOldState & LVIS_SELECTED))
  1468.       Selected = -1;
  1469.    if (pnmv->uNewState & LVIS_SELECTED)
  1470.       Selected = pnmv->iItem;
  1471. #endif
  1472. }
  1473.  
  1474. VOID CNodesListDlg::OnOK (VOID)
  1475. {
  1476. #if defined(__OS2__)
  1477.    LV_PLISTDATA pRecord;
  1478.  
  1479.    if ((pRecord = (LV_PLISTDATA)WinSendDlgItemMsg (m_hWnd, 101, CM_QUERYRECORDEMPHASIS, MPFROMSHORT (CMA_FIRST), MPFROMSHORT (CRA_SELECTED))) != NULL)
  1480.       Data->Read (pRecord->Column[0].Data);
  1481. #elif defined(__NT__)
  1482.    CHAR Temp[32];
  1483.  
  1484.    if (Selected != -1) {
  1485.       ListView_GetItemText (GetDlgItem (m_hWnd, 101), Selected, 0, Temp, sizeof (Temp));
  1486.       Data->Read (Temp);
  1487.    }
  1488. #endif
  1489.  
  1490.    EndDialog (TRUE);
  1491. }
  1492.  
  1493. // ----------------------------------------------------------------------
  1494.  
  1495. CNodeSecurityDlg::CNodeSecurityDlg (HWND p_hWnd) : CDialog ("27", p_hWnd)
  1496. {
  1497. }
  1498.  
  1499. USHORT CNodeSecurityDlg::OnInitDialog (VOID)
  1500. {
  1501.    Center ();
  1502.  
  1503.    EM_SetTextLimit (110, sizeof (Data->SessionPwd) - 1);
  1504.    EM_SetTextLimit (112, sizeof (Data->InPktPwd) - 1);
  1505.    EM_SetTextLimit (121, sizeof (Data->OutPktPwd) - 1);
  1506.    EM_SetTextLimit (114, sizeof (Data->AreaMgrPwd) - 1);
  1507.    EM_SetTextLimit (102, sizeof (Data->TicPwd) - 1);
  1508.  
  1509.    SetDlgItemText (110, Data->SessionPwd);
  1510.    SetDlgItemText (112, Data->InPktPwd);
  1511.    SetDlgItemText (121, Data->OutPktPwd);
  1512.    SetDlgItemText (114, Data->AreaMgrPwd);
  1513.    SetDlgItemText (102, Data->TicPwd);
  1514.  
  1515.    return (TRUE);
  1516. }
  1517.  
  1518. VOID CNodeSecurityDlg::OnOK (VOID)
  1519. {
  1520.    GetDlgItemText (110, GetDlgItemTextLength (110), Data->SessionPwd);
  1521.    GetDlgItemText (112, GetDlgItemTextLength (112), Data->InPktPwd);
  1522.    GetDlgItemText (121, GetDlgItemTextLength (121), Data->OutPktPwd);
  1523.    GetDlgItemText (114, GetDlgItemTextLength (114), Data->AreaMgrPwd);
  1524.    GetDlgItemText (102, GetDlgItemTextLength (102), Data->TicPwd);
  1525.  
  1526.    EndDialog (TRUE);
  1527. }
  1528.  
  1529. // ----------------------------------------------------------------------
  1530.  
  1531. CNodeOtherDlg::CNodeOtherDlg (HWND p_hWnd) : CDialog ("39", p_hWnd)
  1532. {
  1533. }
  1534.  
  1535. USHORT CNodeOtherDlg::OnInitDialog (VOID)
  1536. {
  1537.    Center ();
  1538.  
  1539.    EM_SetTextLimit (108, sizeof (Data->DialCmd) - 1);
  1540.    EM_SetTextLimit (102, sizeof (Data->InetAddress) - 1);
  1541.    EM_SetTextLimit (106, sizeof (Data->Pop3Pwd) - 1);
  1542.  
  1543.    SetDlgItemText (108, Data->DialCmd);
  1544.    SetDlgItemText (102, Data->InetAddress);
  1545.    BM_SetCheck (103, Data->ImportPOP3Mail);
  1546.    BM_SetCheck (104, Data->UseInetAddress);
  1547.    SetDlgItemText (106, Data->Pop3Pwd);
  1548.  
  1549.    return (TRUE);
  1550. }
  1551.  
  1552. VOID CNodeOtherDlg::OnOK (VOID)
  1553. {
  1554.    GetDlgItemText (108, GetDlgItemTextLength (108), Data->DialCmd);
  1555.    GetDlgItemText (102, GetDlgItemTextLength (102), Data->InetAddress);
  1556.    Data->ImportPOP3Mail = (UCHAR)BM_QueryCheck (103);
  1557.    Data->UseInetAddress = (UCHAR)BM_QueryCheck (104);
  1558.    GetDlgItemText (106, GetDlgItemTextLength (106), Data->Pop3Pwd);
  1559.  
  1560.    EndDialog (TRUE);
  1561. }
  1562.  
  1563. // ----------------------------------------------------------------------
  1564.  
  1565. CNodeEchoDlg::CNodeEchoDlg (HWND p_hWnd) : CDialog ("59", p_hWnd)
  1566. {
  1567. }
  1568.  
  1569. USHORT CNodeEchoDlg::OnInitDialog (VOID)
  1570. {
  1571.    USHORT i;
  1572.    ULONG Test;
  1573.  
  1574.    Center ();
  1575.  
  1576.    SPBM_SetLimits (103, 65535L, 0L);
  1577.    EM_SetTextLimit (175, sizeof (Nodes->NewAreasFilter) - 1);
  1578.  
  1579.    SPBM_SetCurrentValue (103, Nodes->Level);
  1580.  
  1581.    for (i = 104, Test = 0x80000000L; i <= 135; i++, Test >>= 1) {
  1582.       if (Nodes->AccessFlags & Test)
  1583.          BM_SetCheck (i, TRUE);
  1584.    }
  1585.    for (i = 137, Test = 0x80000000L; i <= 168; i++, Test >>= 1) {
  1586.       if (Nodes->DenyFlags & Test)
  1587.          BM_SetCheck (i, TRUE);
  1588.    }
  1589.  
  1590.    SetDlgItemText (175, Nodes->NewAreasFilter);
  1591.    BM_SetCheck (169, Nodes->CreateNewAreas);
  1592.    BM_SetCheck (170, Nodes->LinkNewEcho);
  1593.    BM_SetCheck (171, Nodes->EchoMaint);
  1594.    BM_SetCheck (172, Nodes->ChangeEchoTag);
  1595.  
  1596.    return (TRUE);
  1597. }
  1598.  
  1599. VOID CNodeEchoDlg::OnOK (VOID)
  1600. {
  1601.    USHORT i;
  1602.    ULONG Test;
  1603.  
  1604.    Nodes->Level = (USHORT)SPBM_QueryValue (103);
  1605.  
  1606.    Nodes->AccessFlags = 0L;
  1607.    for (i = 104, Test = 0x80000000L; i <= 135; i++, Test >>= 1) {
  1608.       if (BM_QueryCheck (i) == TRUE)
  1609.          Nodes->AccessFlags |= Test;
  1610.    }
  1611.    Nodes->DenyFlags = 0L;
  1612.    for (i = 137, Test = 0x80000000L; i <= 168; i++, Test >>= 1) {
  1613.       if (BM_QueryCheck (i) == TRUE)
  1614.          Nodes->DenyFlags |= Test;
  1615.    }
  1616.  
  1617.    GetDlgItemText (175, GetDlgItemTextLength (175), Nodes->NewAreasFilter);
  1618.    Nodes->CreateNewAreas = (UCHAR)BM_QueryCheck (169);
  1619.    Nodes->LinkNewEcho = (UCHAR)BM_QueryCheck (170);
  1620.    Nodes->EchoMaint = (UCHAR)BM_QueryCheck (171);
  1621.    Nodes->ChangeEchoTag = (UCHAR)BM_QueryCheck (172);
  1622.  
  1623.    EndDialog (TRUE);
  1624. }
  1625.  
  1626. // ----------------------------------------------------------------------
  1627.  
  1628. CNodeTicDlg::CNodeTicDlg (HWND p_hWnd) : CDialog ("60", p_hWnd)
  1629. {
  1630. }
  1631.  
  1632. USHORT CNodeTicDlg::OnInitDialog (VOID)
  1633. {
  1634.    USHORT i;
  1635.    ULONG Test;
  1636.  
  1637.    Center ();
  1638.  
  1639.    SPBM_SetLimits (103, 65535L, 0L);
  1640.    EM_SetTextLimit (175, sizeof (Nodes->NewTicFilter) - 1);
  1641.  
  1642.    SPBM_SetCurrentValue (103, Nodes->TicLevel);
  1643.  
  1644.    for (i = 104, Test = 0x80000000L; i <= 135; i++, Test >>= 1) {
  1645.       if (Nodes->TicAccessFlags & Test)
  1646.          BM_SetCheck (i, TRUE);
  1647.    }
  1648.    for (i = 137, Test = 0x80000000L; i <= 168; i++, Test >>= 1) {
  1649.       if (Nodes->TicDenyFlags & Test)
  1650.          BM_SetCheck (i, TRUE);
  1651.    }
  1652.  
  1653.    SetDlgItemText (175, Nodes->NewTicFilter);
  1654.    BM_SetCheck (169, Nodes->CreateNewTic);
  1655.    BM_SetCheck (170, Nodes->LinkNewTic);
  1656.    BM_SetCheck (171, Nodes->TicMaint);
  1657.    BM_SetCheck (172, Nodes->ChangeTicTag);
  1658.  
  1659.    return (TRUE);
  1660. }
  1661.  
  1662. VOID CNodeTicDlg::OnOK (VOID)
  1663. {
  1664.    USHORT i;
  1665.    ULONG Test;
  1666.  
  1667.    Nodes->TicLevel = (USHORT)SPBM_QueryValue (103);
  1668.  
  1669.    Nodes->TicAccessFlags = 0L;
  1670.    for (i = 104, Test = 0x80000000L; i <= 135; i++, Test >>= 1) {
  1671.       if (BM_QueryCheck (i) == TRUE)
  1672.          Nodes->TicAccessFlags |= Test;
  1673.    }
  1674.    Nodes->TicDenyFlags = 0L;
  1675.    for (i = 137, Test = 0x80000000L; i <= 168; i++, Test >>= 1) {
  1676.       if (BM_QueryCheck (i) == TRUE)
  1677.          Nodes->TicDenyFlags |= Test;
  1678.    }
  1679.  
  1680.    GetDlgItemText (175, GetDlgItemTextLength (175), Nodes->NewTicFilter);
  1681.    Nodes->CreateNewTic = (UCHAR)BM_QueryCheck (169);
  1682.    Nodes->LinkNewTic = (UCHAR)BM_QueryCheck (170);
  1683.    Nodes->TicMaint = (UCHAR)BM_QueryCheck (171);
  1684.    Nodes->ChangeTicTag = (UCHAR)BM_QueryCheck (172);
  1685.  
  1686.    EndDialog (TRUE);
  1687. }
  1688.  
  1689. // ----------------------------------------------------------------------
  1690.  
  1691. #if defined(__OS2__)
  1692. MRESULT EXPENTRY RegistrationDlgProc (HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
  1693. #elif defined(__NT__)
  1694. BOOL CALLBACK RegistrationDlgProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
  1695. #endif
  1696. {
  1697.    switch (msg) {
  1698. #if defined(__OS2__)
  1699.       case WM_INITDLG:
  1700.          break;
  1701. #elif defined(__NT__)
  1702.       case WM_INITDIALOG:
  1703.          return ((BOOL)TRUE);
  1704.  
  1705.       case WM_CTLCOLORBTN:
  1706.       case WM_CTLCOLORSTATIC:
  1707.       case WM_CTLCOLORDLG: {
  1708.          LOGBRUSH logBrush;
  1709.  
  1710.          lParam = lParam;
  1711.          SetBkColor ((HDC)wParam, GetSysColor (COLOR_MENU));
  1712.  
  1713.          logBrush.lbStyle = BS_SOLID;
  1714.          logBrush.lbColor = GetSysColor (COLOR_MENU);
  1715.          logBrush.lbHatch = 0;
  1716.  
  1717.          return ((BOOL)CreateBrushIndirect (&logBrush));
  1718.       }
  1719. #endif
  1720.  
  1721.       case WM_COMMAND:
  1722. #if defined(__OS2__)
  1723.          switch (SHORT1FROMMP (mp1)) {
  1724.             case IDOK:
  1725.                WinDismissDlg (hwnd, TRUE);
  1726.                break;
  1727.  
  1728.             case IDCANCEL:
  1729.                WinDismissDlg (hwnd, FALSE);
  1730.                break;
  1731.          }
  1732.          return ((MRESULT)FALSE);
  1733. #elif defined(__NT__)
  1734.          switch (wParam) {
  1735.             case IDOK:
  1736.                EndDialog (hwnd, TRUE);
  1737.                break;
  1738.  
  1739.             case IDCANCEL:
  1740.                EndDialog (hwnd, FALSE);
  1741.                break;
  1742.          }
  1743.          break;
  1744. #endif
  1745.  
  1746. #if defined(__NT__)
  1747.       case WM_CLOSE:
  1748.          EndDialog (hwnd, FALSE);
  1749.          break;
  1750. #endif
  1751.    }
  1752.  
  1753. #if defined(__OS2__)
  1754.    return (WinDefDlgProc (hwnd, msg, mp1, mp2));
  1755. #elif defined(__NT__)
  1756.    return ((BOOL)FALSE);
  1757. #endif
  1758. }
  1759.  
  1760. // ----------------------------------------------------------------------
  1761. // Site info
  1762. // ----------------------------------------------------------------------
  1763.  
  1764. CSiteInfoDlg::CSiteInfoDlg (HWND p_hWnd) : CDialog ("3", p_hWnd)
  1765. {
  1766. }
  1767.  
  1768. VOID CSiteInfoDlg::OnHelp (VOID)
  1769. {
  1770.    WinHelp ("lora.hlp>h_ref", 3);
  1771. }
  1772.  
  1773. USHORT CSiteInfoDlg::OnInitDialog (VOID)
  1774. {
  1775.    Center ();
  1776.  
  1777.    EM_SetTextLimit (102, sizeof (Cfg->SystemName) - 1);
  1778.    EM_SetTextLimit (104, sizeof (Cfg->SysopName) - 1);
  1779.    EM_SetTextLimit (106, sizeof (Cfg->Location) - 1);
  1780.    EM_SetTextLimit (108, sizeof (Cfg->Phone) - 1);
  1781.    EM_SetTextLimit (110, sizeof (Cfg->NodelistFlags) - 1);
  1782.  
  1783.    SetDlgItemText (102, Cfg->SystemName);
  1784.    SetDlgItemText (104, Cfg->SysopName);
  1785.    SetDlgItemText (106, Cfg->Location);
  1786.    SetDlgItemText (108, Cfg->Phone);
  1787.    SetDlgItemText (110, Cfg->NodelistFlags);
  1788.  
  1789.    return (TRUE);
  1790. }
  1791.  
  1792. VOID CSiteInfoDlg::OnOK (VOID)
  1793. {
  1794.    GetDlgItemText (102, GetDlgItemTextLength (102), Cfg->SystemName);
  1795.    GetDlgItemText (104, GetDlgItemTextLength (104), Cfg->SysopName);
  1796.    GetDlgItemText (106, GetDlgItemTextLength (106), Cfg->Location);
  1797.    GetDlgItemText (108, GetDlgItemTextLength (108), Cfg->Phone);
  1798.    GetDlgItemText (110, GetDlgItemTextLength (110), Cfg->NodelistFlags);
  1799.  
  1800.    EndDialog (TRUE);
  1801. }
  1802.  
  1803. // ----------------------------------------------------------------------
  1804. // Internet options
  1805. // ----------------------------------------------------------------------
  1806.  
  1807. CInternetDlg::CInternetDlg (HWND p_hWnd) : CDialog ("23", p_hWnd)
  1808. {
  1809. }
  1810.  
  1811. VOID CInternetDlg::OnHelp (VOID)
  1812. {
  1813.    WinHelp ("lora.hlp>h_ref", 23);
  1814. }
  1815.  
  1816. USHORT CInternetDlg::OnInitDialog (VOID)
  1817. {
  1818.    Center ();
  1819.  
  1820.    EM_SetTextLimit (102, sizeof (Cfg->HostName) - 1);
  1821.    EM_SetTextLimit (128, sizeof (Cfg->NewsServer) - 1);
  1822.    EM_SetTextLimit (104, sizeof (Cfg->MailServer) - 1);
  1823.    SPBM_SetLimits (107, 1440, 0);
  1824.    EM_SetTextLimit (109, sizeof (Cfg->PPPCmd) - 1);
  1825.    SPBM_SetLimits (111, 1000, 0);
  1826.  
  1827.    SetDlgItemText (102, Cfg->HostName);
  1828.    SetDlgItemText (128, Cfg->NewsServer);
  1829.    SetDlgItemText (104, Cfg->MailServer);
  1830.    BM_SetCheck (105, Cfg->EnablePPP);
  1831.    SPBM_SetCurrentValue (107, Cfg->PPPTimeLimit);
  1832.    SetDlgItemText (109, Cfg->PPPCmd);
  1833.    SPBM_SetCurrentValue (111, Cfg->RetriveMaxMessages);
  1834.  
  1835.    return (TRUE);
  1836. }
  1837.  
  1838. VOID CInternetDlg::OnOK (VOID)
  1839. {
  1840.    GetDlgItemText (102, GetDlgItemTextLength (102), Cfg->HostName);
  1841.    GetDlgItemText (128, GetDlgItemTextLength (128), Cfg->NewsServer);
  1842.    GetDlgItemText (104, GetDlgItemTextLength (104), Cfg->MailServer);
  1843.    Cfg->EnablePPP = (UCHAR)BM_QueryCheck (105);
  1844.    Cfg->PPPTimeLimit = (USHORT)SPBM_QueryValue (107);
  1845.    GetDlgItemText (109, GetDlgItemTextLength (109), Cfg->PPPCmd);
  1846.    Cfg->RetriveMaxMessages = (USHORT)SPBM_QueryValue (111);
  1847.  
  1848.    EndDialog (TRUE);
  1849. }
  1850.  
  1851. // ----------------------------------------------------------------------
  1852. // Compressors editor
  1853. // ----------------------------------------------------------------------
  1854.  
  1855. class CPackerListDlg : public CDialog
  1856. {
  1857. public:
  1858.    CPackerListDlg (HWND p_hWnd);
  1859.  
  1860.    int    Selected;
  1861.    class  TPacker *Data;
  1862.  
  1863.    VOID   OnChanged (VOID);
  1864.    USHORT OnInitDialog (VOID);
  1865.    VOID   OnOK (VOID);
  1866.  
  1867. private:
  1868.    DECLARE_MESSAGE_MAP ()
  1869. };
  1870.  
  1871. BEGIN_MESSAGE_MAP (CPackerDlg, CDialog)
  1872.    ON_COMMAND (117, Add)
  1873.    ON_COMMAND (118, Delete)
  1874.    ON_COMMAND (119, List)
  1875.    ON_COMMAND (120, Previous)
  1876.    ON_COMMAND (121, Next)
  1877. END_MESSAGE_MAP ()
  1878.  
  1879. CPackerDlg::CPackerDlg (HWND p_hWnd) : CDialog ("28", p_hWnd)
  1880. {
  1881.    Data = NULL;
  1882. }
  1883.  
  1884. CPackerDlg::~CPackerDlg (void)
  1885. {
  1886.    if (Data != NULL)
  1887.       delete Data;
  1888. }
  1889.  
  1890. VOID CPackerDlg::OnHelp (VOID)
  1891. {
  1892.    WinHelp ("lora.hlp>h_ref", 28);
  1893. }
  1894.  
  1895. USHORT CPackerDlg::OnInitDialog (VOID)
  1896. {
  1897.    Center ();
  1898.  
  1899.    EM_SetTextLimit (108, sizeof (Data->Key) - 1);
  1900.    EM_SetTextLimit (102, sizeof (Data->Display) - 1);
  1901.    EM_SetTextLimit (106, sizeof (Data->Id) - 1);
  1902.    EM_SetTextLimit (110, sizeof (Data->PackCmd) - 1);
  1903.    EM_SetTextLimit (112, sizeof (Data->UnpackCmd) - 1);
  1904.  
  1905.    if ((Data = new TPacker (Cfg->SystemPath)) != NULL) {
  1906.       if (Data->First (FALSE) == FALSE)
  1907.          Data->New ();
  1908.    }
  1909.  
  1910.    DisplayData ();
  1911.  
  1912.    return (TRUE);
  1913. }
  1914.  
  1915. VOID CPackerDlg::OnOK (VOID)
  1916. {
  1917.    ReadData ();
  1918.    Data->Update ();
  1919.    SetFocus (108);
  1920. }
  1921.  
  1922. VOID CPackerDlg::DisplayData (VOID)
  1923. {
  1924.    CHAR Temp[32];
  1925.  
  1926.    SetDlgItemText (108, Data->Key);
  1927.    SetDlgItemText (102, Data->Display);
  1928.    sprintf (Temp, "%ld", Data->Position);
  1929.    SetDlgItemText (104, Temp);
  1930.    SetDlgItemText (106, Data->Id);
  1931.    SetDlgItemText (110, Data->PackCmd);
  1932.    SetDlgItemText (112, Data->UnpackCmd);
  1933.    BM_SetCheck (113, Data->Dos);
  1934.    BM_SetCheck (114, Data->OS2);
  1935.    BM_SetCheck (115, Data->Windows);
  1936.    BM_SetCheck (116, Data->Linux);
  1937. }
  1938.  
  1939. VOID CPackerDlg::ReadData (VOID)
  1940. {
  1941.    CHAR Temp[32];
  1942.  
  1943.    GetDlgItemText (108, GetDlgItemTextLength (108), Data->Key);
  1944.    GetDlgItemText (102, GetDlgItemTextLength (102), Data->Display);
  1945.    GetDlgItemText (104, GetDlgItemTextLength (104), Temp);
  1946.    Data->Position = atol (Temp);
  1947.    GetDlgItemText (106, GetDlgItemTextLength (106), Data->Id);
  1948.    GetDlgItemText (110, GetDlgItemTextLength (110), Data->PackCmd);
  1949.    GetDlgItemText (112, GetDlgItemTextLength (112), Data->UnpackCmd);
  1950.    Data->Dos = (UCHAR)BM_QueryCheck (113);
  1951.    Data->OS2 = (UCHAR)BM_QueryCheck (114);
  1952.    Data->Windows = (UCHAR)BM_QueryCheck (115);
  1953.    Data->Linux = (UCHAR)BM_QueryCheck (116);
  1954. }
  1955.  
  1956. VOID CPackerDlg::Add (VOID)
  1957. {
  1958.    Data->New ();
  1959.    ReadData ();
  1960.    Data->Add ();
  1961.    SetFocus (108);
  1962. }
  1963.  
  1964. VOID CPackerDlg::Delete (VOID)
  1965. {
  1966.    if (MessageBox ("Are you sure ?", "Delete", MB_YESNO|MB_ICONQUESTION) == IDYES) {
  1967.       Data->Delete ();
  1968.       DisplayData ();
  1969.    }
  1970.    SetFocus (108);
  1971. }
  1972.  
  1973. VOID CPackerDlg::List (VOID)
  1974. {
  1975.    class CPackerListDlg *Dlg;
  1976.  
  1977.    if ((Dlg = new CPackerListDlg (m_hWnd)) != NULL) {
  1978.       Dlg->Data = Data;
  1979.       if (Dlg->DoModal () == TRUE)
  1980.          DisplayData ();
  1981.       delete Dlg;
  1982.    }
  1983.    SetFocus (108);
  1984. }
  1985.  
  1986. VOID CPackerDlg::Next (VOID)
  1987. {
  1988.    if (Data->Next (FALSE) == TRUE)
  1989.       DisplayData ();
  1990.    SetFocus (108);
  1991. }
  1992.  
  1993. VOID CPackerDlg::Previous (VOID)
  1994. {
  1995.    if (Data->Previous (FALSE) == TRUE)
  1996.       DisplayData ();
  1997.    SetFocus (108);
  1998. }
  1999.  
  2000. // ----------------------------------------------------------------------
  2001.  
  2002. BEGIN_MESSAGE_MAP (CPackerListDlg, CDialog)
  2003.    ON_CONTROL (CN_ENTER, 101, OnOK)
  2004. #if defined(__NT__)
  2005.    ON_NOTIFY (LVN_ITEMCHANGED, 101, OnChanged)
  2006. #endif
  2007. END_MESSAGE_MAP ()
  2008.  
  2009. CPackerListDlg::CPackerListDlg (HWND p_hWnd) : CDialog ("25", p_hWnd)
  2010. {
  2011.    Selected = -1;
  2012. }
  2013.  
  2014. USHORT CPackerListDlg::OnInitDialog (VOID)
  2015. {
  2016.    CHAR Temp[128];
  2017.    class TPacker *Packer;
  2018.  
  2019.    SetWindowTitle ("Compressors List");
  2020.  
  2021.    LVM_AllocateColumns (101, 3);
  2022.    LVM_InsertColumn (101, "Key", LVC_LEFT);
  2023.    LVM_InsertColumn (101, "Display", LVC_LEFT);
  2024.    LVM_InsertColumn (101, "Op.Systems", LVC_LEFT);
  2025.  
  2026.    if ((Packer = new TPacker (Cfg->SystemPath)) != NULL) {
  2027.       if (Packer->First (FALSE) == TRUE)
  2028.          do {
  2029.             LVM_InsertItem (101);
  2030.  
  2031.             LVM_SetItemText (101, 0, Packer->Key);
  2032.             LVM_SetItemText (101, 1, Packer->Display);
  2033.             Temp[0] = '\0';
  2034.             if (Packer->Dos == TRUE)
  2035.                strcat (Temp, "DOS ");
  2036.             if (Packer->OS2 == TRUE)
  2037.                strcat (Temp, "OS/2 ");
  2038.             if (Packer->Windows == TRUE)
  2039.                strcat (Temp, "Windows ");
  2040.             if (Packer->Linux == TRUE)
  2041.                strcat (Temp, "Linux ");
  2042.             LVM_SetItemText (101, 2, Temp);
  2043.          } while (Packer->Next (FALSE) == TRUE);
  2044.       delete Packer;
  2045.    }
  2046.  
  2047.    LVM_InvalidateView (101);
  2048.  
  2049.    return (TRUE);
  2050. }
  2051.  
  2052. VOID CPackerListDlg::OnChanged (VOID)
  2053. {
  2054. #if defined(__NT__)
  2055.    NM_LISTVIEW *pnmv = (NM_LISTVIEW *)m_lParam;
  2056.  
  2057.    if (!(pnmv->uNewState & LVIS_SELECTED) && (pnmv->uOldState & LVIS_SELECTED))
  2058.       Selected = -1;
  2059.    if (pnmv->uNewState & LVIS_SELECTED)
  2060.       Selected = pnmv->iItem;
  2061. #endif
  2062. }
  2063.  
  2064. VOID CPackerListDlg::OnOK (VOID)
  2065. {
  2066. #if defined(__OS2__)
  2067.    LV_PLISTDATA pRecord;
  2068.  
  2069.    if ((pRecord = (LV_PLISTDATA)WinSendDlgItemMsg (m_hWnd, 101, CM_QUERYRECORDEMPHASIS, MPFROMSHORT (CMA_FIRST), MPFROMSHORT (CRA_SELECTED))) != NULL)
  2070.       Data->Read (pRecord->Column[0].Data, FALSE);
  2071. #elif defined(__NT__)
  2072.    CHAR Temp[32];
  2073.  
  2074.    if (Selected != -1) {
  2075.       ListView_GetItemText (GetDlgItem (m_hWnd, 101), Selected, 0, Temp, sizeof (Temp));
  2076.       Data->Read (Temp, FALSE);
  2077.    }
  2078. #endif
  2079.  
  2080.    EndDialog (TRUE);
  2081. }
  2082.  
  2083. // ----------------------------------------------------------------------
  2084. // Mail processing
  2085. // ----------------------------------------------------------------------
  2086.  
  2087. CMailprocDlg::CMailprocDlg (HWND p_hWnd) : CDialog ("30", p_hWnd)
  2088. {
  2089. }
  2090.  
  2091. VOID CMailprocDlg::OnHelp (VOID)
  2092. {
  2093.    WinHelp ("lora.hlp>h_ref", 30);
  2094. }
  2095.  
  2096. USHORT CMailprocDlg::OnInitDialog (VOID)
  2097. {
  2098.    Center ();
  2099.  
  2100.    EM_SetTextLimit (106, sizeof (Cfg->NetMailPath) - 1);
  2101.    EM_SetTextLimit (104, sizeof (Cfg->DupePath) - 1);
  2102.    EM_SetTextLimit (112, sizeof (Cfg->BadPath) - 1);
  2103.    EM_SetTextLimit (117, sizeof (Cfg->TearLine) - 1);
  2104.    SPBM_SetLimits (131, 255L, 1L);
  2105.    SPBM_SetLimits (132, 255L, 1L);
  2106.    SPBM_SetLimits (135, 255L, 1L);
  2107.  
  2108.    CB_AddString (107, "Squish<tm>");
  2109.    CB_AddString (107, "JAM");
  2110.    CB_AddString (107, "Fido (*.msg)");
  2111.    CB_AddString (107, "AdeptXBBS");
  2112.    CB_AddString (107, "Hudson");
  2113.  
  2114.    CB_AddString (102, "Squish<tm>");
  2115.    CB_AddString (102, "JAM");
  2116.    CB_AddString (102, "Fido (*.msg)");
  2117.    CB_AddString (102, "AdeptXBBS");
  2118.    CB_AddString (102, "Hudson");
  2119.  
  2120.    CB_AddString (110, "Squish<tm>");
  2121.    CB_AddString (110, "JAM");
  2122.    CB_AddString (110, "Fido (*.msg)");
  2123.    CB_AddString (110, "AdeptXBBS");
  2124.    CB_AddString (110, "Hudson");
  2125.  
  2126.    SetDlgItemText (106, Cfg->NetMailPath);
  2127.    SetDlgItemText (104, Cfg->DupePath);
  2128.    SetDlgItemText (112, Cfg->BadPath);
  2129.  
  2130.    switch (Cfg->NetMailStorage) {
  2131.       case ST_SQUISH:
  2132.          CB_SelectItem (107, 0);
  2133.          break;
  2134.       case ST_JAM:
  2135.          CB_SelectItem (107, 1);
  2136.          break;
  2137.       case ST_FIDO:
  2138.          CB_SelectItem (107, 2);
  2139.          break;
  2140.       case ST_ADEPT:
  2141.          CB_SelectItem (107, 3);
  2142.          break;
  2143.       case ST_HUDSON:
  2144.          CB_SelectItem (107, 4);
  2145.          break;
  2146.    }
  2147.  
  2148.    switch (Cfg->DupeStorage) {
  2149.       case ST_SQUISH:
  2150.          CB_SelectItem (102, 0);
  2151.          break;
  2152.       case ST_JAM:
  2153.          CB_SelectItem (102, 1);
  2154.          break;
  2155.       case ST_FIDO:
  2156.          CB_SelectItem (102, 2);
  2157.          break;
  2158.       case ST_ADEPT:
  2159.          CB_SelectItem (102, 3);
  2160.          break;
  2161.       case ST_HUDSON:
  2162.          CB_SelectItem (102, 4);
  2163.          break;
  2164.    }
  2165.  
  2166.    switch (Cfg->BadStorage) {
  2167.       case ST_SQUISH:
  2168.          CB_SelectItem (110, 0);
  2169.          break;
  2170.       case ST_JAM:
  2171.          CB_SelectItem (110, 1);
  2172.          break;
  2173.       case ST_FIDO:
  2174.          CB_SelectItem (110, 2);
  2175.          break;
  2176.       case ST_ADEPT:
  2177.          CB_SelectItem (110, 3);
  2178.          break;
  2179.       case ST_HUDSON:
  2180.          CB_SelectItem (110, 4);
  2181.          break;
  2182.    }
  2183.  
  2184.    BM_SetCheck (113, Cfg->ImportEmpty);
  2185.    BM_SetCheck (114, Cfg->ForceIntl);
  2186.    BM_SetCheck (115, Cfg->ReplaceTear);
  2187.    SetDlgItemText (117, Cfg->TearLine);
  2188.  
  2189.    BM_SetCheck (118, Cfg->SeparateNetMail);
  2190.    BM_SetCheck (119, Cfg->UseSinglePass);
  2191.  
  2192.    SPBM_SetCurrentValue (131, Cfg->NetMailBoard);
  2193.    SPBM_SetCurrentValue (133, Cfg->DupeBoard);
  2194.    SPBM_SetCurrentValue (135, Cfg->BadBoard);
  2195.  
  2196.    return (TRUE);
  2197. }
  2198.  
  2199. VOID CMailprocDlg::OnOK (VOID)
  2200. {
  2201.    GetDlgItemText (106, GetDlgItemTextLength (106), Cfg->NetMailPath);
  2202.    GetDlgItemText (104, GetDlgItemTextLength (104), Cfg->DupePath);
  2203.    GetDlgItemText (112, GetDlgItemTextLength (112), Cfg->BadPath);
  2204.  
  2205.    switch (CB_QuerySelection (107)) {
  2206.       case 0:
  2207.          Cfg->NetMailStorage = ST_SQUISH;
  2208.          break;
  2209.       case 1:
  2210.          Cfg->NetMailStorage = ST_JAM;
  2211.          break;
  2212.       case 2:
  2213.          Cfg->NetMailStorage = ST_FIDO;
  2214.          break;
  2215.       case 3:
  2216.          Cfg->NetMailStorage = ST_ADEPT;
  2217.          break;
  2218.       case 4:
  2219.          Cfg->NetMailStorage = ST_HUDSON;
  2220.          break;
  2221.    }
  2222.  
  2223.    switch (CB_QuerySelection (102)) {
  2224.       case 0:
  2225.          Cfg->DupeStorage = ST_SQUISH;
  2226.          break;
  2227.       case 1:
  2228.          Cfg->DupeStorage = ST_JAM;
  2229.          break;
  2230.       case 2:
  2231.          Cfg->DupeStorage = ST_FIDO;
  2232.          break;
  2233.       case 3:
  2234.          Cfg->DupeStorage = ST_ADEPT;
  2235.          break;
  2236.       case 4:
  2237.          Cfg->DupeStorage = ST_HUDSON;
  2238.          break;
  2239.    }
  2240.  
  2241.    switch (CB_QuerySelection (110)) {
  2242.       case 0:
  2243.          Cfg->BadStorage = ST_SQUISH;
  2244.          break;
  2245.       case 1:
  2246.          Cfg->BadStorage = ST_JAM;
  2247.          break;
  2248.       case 2:
  2249.          Cfg->BadStorage = ST_FIDO;
  2250.          break;
  2251.       case 3:
  2252.          Cfg->BadStorage = ST_ADEPT;
  2253.          break;
  2254.       case 4:
  2255.          Cfg->BadStorage = ST_HUDSON;
  2256.          break;
  2257.    }
  2258.  
  2259.    Cfg->ImportEmpty = (UCHAR)BM_QueryCheck (113);
  2260.    Cfg->ForceIntl = (UCHAR)BM_QueryCheck (114);
  2261.    Cfg->ReplaceTear = (UCHAR)BM_QueryCheck (115);
  2262.    GetDlgItemText (117, GetDlgItemTextLength (117), Cfg->TearLine);
  2263.    Cfg->SeparateNetMail = (UCHAR)BM_QueryCheck (118);
  2264.    Cfg->UseSinglePass = (UCHAR)BM_QueryCheck (119);
  2265.  
  2266.    Cfg->NetMailBoard = (USHORT)SPBM_QueryValue (131);
  2267.    Cfg->DupeBoard = (USHORT)SPBM_QueryValue (133);
  2268.    Cfg->BadBoard = (USHORT)SPBM_QueryValue (135);
  2269.  
  2270.    EndDialog (TRUE);
  2271. }
  2272.  
  2273. // ----------------------------------------------------------------------
  2274. // Miscellaneous mailer
  2275. // ----------------------------------------------------------------------
  2276.  
  2277. CMiscDlg::CMiscDlg (HWND p_hWnd) : CDialog ("20", p_hWnd)
  2278. {
  2279. }
  2280.  
  2281. VOID CMiscDlg::OnHelp (VOID)
  2282. {
  2283.    WinHelp ("lora.hlp>h_ref", 20);
  2284. }
  2285.  
  2286. USHORT CMiscDlg::OnInitDialog (VOID)
  2287. {
  2288.    Center ();
  2289.  
  2290.    EM_SetTextLimit (109, sizeof (Cfg->MailOnly) - 1);
  2291.    EM_SetTextLimit (105, sizeof (Cfg->EnterBBS) - 1);
  2292.  
  2293.    SetDlgItemText (109, Cfg->MailOnly);
  2294.    SetDlgItemText (105, Cfg->EnterBBS);
  2295.  
  2296.    BM_SetCheck (102, Cfg->WaZoo);
  2297.    BM_SetCheck (103, Cfg->EMSI);
  2298.    BM_SetCheck (104, Cfg->Janus);
  2299.    BM_SetCheck (106, Cfg->Secure);
  2300.    BM_SetCheck (107, Cfg->KeepNetMail);
  2301.    BM_SetCheck (110, Cfg->TrackNetMail);
  2302.  
  2303.    return (TRUE);
  2304. }
  2305.  
  2306. VOID CMiscDlg::OnOK (VOID)
  2307. {
  2308.    GetDlgItemText (109, GetDlgItemTextLength (109), Cfg->MailOnly);
  2309.    GetDlgItemText (105, GetDlgItemTextLength (105), Cfg->EnterBBS);
  2310.  
  2311.    Cfg->WaZoo = (UCHAR)BM_QueryCheck (102);
  2312.    Cfg->EMSI = (UCHAR)BM_QueryCheck (103);
  2313.    Cfg->Janus = (UCHAR)BM_QueryCheck (104);
  2314.    Cfg->Secure = (UCHAR)BM_QueryCheck (106);
  2315.    Cfg->KeepNetMail = (UCHAR)BM_QueryCheck (107);
  2316.    Cfg->TrackNetMail = (UCHAR)BM_QueryCheck (110);
  2317.  
  2318.    EndDialog (TRUE);
  2319. }
  2320.  
  2321. // ----------------------------------------------------------------------
  2322. // External processing
  2323. // ----------------------------------------------------------------------
  2324.  
  2325. CExternalDlg::CExternalDlg (HWND p_hWnd) : CDialog ("31", p_hWnd)
  2326. {
  2327. }
  2328.  
  2329. VOID CExternalDlg::OnHelp (VOID)
  2330. {
  2331.    WinHelp ("lora.hlp>h_ref", 31);
  2332. }
  2333.  
  2334. USHORT CExternalDlg::OnInitDialog (VOID)
  2335. {
  2336.    Center ();
  2337.  
  2338.    EM_SetTextLimit (112, sizeof (Cfg->ImportCmd) - 1);
  2339.    EM_SetTextLimit (102, sizeof (Cfg->ExportCmd) - 1);
  2340.    EM_SetTextLimit (104, sizeof (Cfg->PackCmd) - 1);
  2341.    EM_SetTextLimit (106, sizeof (Cfg->SinglePassCmd) - 1);
  2342.    EM_SetTextLimit (108, sizeof (Cfg->NewsgroupCmd) - 1);
  2343.  
  2344.    SetDlgItemText (112, Cfg->ImportCmd);
  2345.    SetDlgItemText (102, Cfg->ExportCmd);
  2346.    SetDlgItemText (104, Cfg->PackCmd);
  2347.    SetDlgItemText (106, Cfg->SinglePassCmd);
  2348.    SetDlgItemText (108, Cfg->NewsgroupCmd);
  2349.  
  2350.    return (TRUE);
  2351. }
  2352.  
  2353. VOID CExternalDlg::OnOK (VOID)
  2354. {
  2355.    GetDlgItemText (112, GetDlgItemTextLength (112), Cfg->ImportCmd);
  2356.    GetDlgItemText (102, GetDlgItemTextLength (102), Cfg->ExportCmd);
  2357.    GetDlgItemText (104, GetDlgItemTextLength (104), Cfg->PackCmd);
  2358.    GetDlgItemText (106, GetDlgItemTextLength (106), Cfg->SinglePassCmd);
  2359.    GetDlgItemText (108, GetDlgItemTextLength (108), Cfg->NewsgroupCmd);
  2360.  
  2361.    EndDialog (TRUE);
  2362. }
  2363.  
  2364. // ----------------------------------------------------------------------
  2365. // Areafix
  2366. // ----------------------------------------------------------------------
  2367.  
  2368. CAreafixDlg::CAreafixDlg (HWND p_hWnd) : CDialog ("33", p_hWnd)
  2369. {
  2370. }
  2371.  
  2372. VOID CAreafixDlg::OnHelp (VOID)
  2373. {
  2374.    WinHelp ("lora.hlp>h_ref", 33);
  2375. }
  2376.  
  2377. USHORT CAreafixDlg::OnInitDialog (VOID)
  2378. {
  2379.    Center ();
  2380.  
  2381.    EM_SetTextLimit (104, sizeof (Cfg->AreasBBS) - 1);
  2382.    EM_SetTextLimit (112, sizeof (Cfg->NewAreasPath) - 1);
  2383.    EM_SetTextLimit (36, sizeof (Cfg->AreafixHelp) - 1);
  2384.    EM_SetTextLimit (39, sizeof (Cfg->AreafixNames) - 1);
  2385.    CB_AddString (110, "Squish<tm>");
  2386.    CB_AddString (110, "JAM");
  2387.    CB_AddString (110, "Fido (*.msg)");
  2388.    CB_AddString (110, "AdeptXBBS");
  2389.  
  2390.    SetDlgItemText (104, Cfg->AreasBBS);
  2391.    SetDlgItemText (36, Cfg->AreafixHelp);
  2392.    SetDlgItemText (39, Cfg->AreafixNames);
  2393.    BM_SetCheck (101, Cfg->UseAreasBBS);
  2394.    BM_SetCheck (102, Cfg->UpdateAreasBBS);
  2395.    BM_SetCheck (34, Cfg->AreafixActive);
  2396.    BM_SetCheck (37, Cfg->AllowRescan);
  2397.    BM_SetCheck (40, Cfg->CheckZones);
  2398.    switch (Cfg->NewAreasStorage) {
  2399.       case ST_SQUISH:
  2400.          CB_SelectItem (110, 0);
  2401.          break;
  2402.       case ST_JAM:
  2403.          CB_SelectItem (110, 1);
  2404.          break;
  2405.       case ST_FIDO:
  2406.          CB_SelectItem (110, 2);
  2407.          break;
  2408.       case ST_ADEPT:
  2409.          CB_SelectItem (110, 3);
  2410.          break;
  2411.    }
  2412.    SetDlgItemText (112, Cfg->NewAreasPath);
  2413.  
  2414.    return (TRUE);
  2415. }
  2416.  
  2417. VOID CAreafixDlg::OnOK (VOID)
  2418. {
  2419.    GetDlgItemText (104, GetDlgItemTextLength (104), Cfg->AreasBBS);
  2420.    GetDlgItemText (36, GetDlgItemTextLength (36), Cfg->AreafixHelp);
  2421.    GetDlgItemText (39, GetDlgItemTextLength (39), Cfg->AreafixNames);
  2422.    Cfg->UseAreasBBS = (UCHAR)BM_QueryCheck (101);
  2423.    Cfg->UpdateAreasBBS = (UCHAR)BM_QueryCheck (102);
  2424.    Cfg->AreafixActive = (UCHAR)BM_QueryCheck (34);
  2425.    Cfg->AllowRescan = (UCHAR)BM_QueryCheck (37);
  2426.    Cfg->CheckZones = (UCHAR)BM_QueryCheck (40);
  2427.    switch (CB_QuerySelection (110)) {
  2428.       case 0:
  2429.          Cfg->NewAreasStorage = ST_SQUISH;
  2430.          break;
  2431.       case 1:
  2432.          Cfg->NewAreasStorage = ST_JAM;
  2433.          break;
  2434.       case 2:
  2435.          Cfg->NewAreasStorage = ST_FIDO;
  2436.          break;
  2437.       case 3:
  2438.          Cfg->NewAreasStorage = ST_ADEPT;
  2439.          break;
  2440.    }
  2441.    GetDlgItemText (112, GetDlgItemTextLength (112), Cfg->NewAreasPath);
  2442.  
  2443.    EndDialog (TRUE);
  2444. }
  2445.  
  2446. // ----------------------------------------------------------------------
  2447. // TIC Manager (Raid)
  2448. // ----------------------------------------------------------------------
  2449.  
  2450. CRaidDlg::CRaidDlg (HWND p_hWnd) : CDialog ("58", p_hWnd)
  2451. {
  2452. }
  2453.  
  2454. VOID CRaidDlg::OnHelp (VOID)
  2455. {
  2456.    WinHelp ("lora.hlp>h_ref", 58);
  2457. }
  2458.  
  2459. USHORT CRaidDlg::OnInitDialog (VOID)
  2460. {
  2461.    Center ();
  2462.  
  2463.    EM_SetTextLimit (112, sizeof (Cfg->NewTicPath) - 1);
  2464.    EM_SetTextLimit (36, sizeof (Cfg->RaidHelp) - 1);
  2465.    EM_SetTextLimit (39, sizeof (Cfg->RaidNames) - 1);
  2466.  
  2467.    BM_SetCheck (34, Cfg->RaidActive);
  2468.    SetDlgItemText (36, Cfg->RaidHelp);
  2469.    SetDlgItemText (39, Cfg->RaidNames);
  2470.    SetDlgItemText (112, Cfg->NewTicPath);
  2471.  
  2472.    return (TRUE);
  2473. }
  2474.  
  2475. VOID CRaidDlg::OnOK (VOID)
  2476. {
  2477.    Cfg->RaidActive = (UCHAR)BM_QueryCheck (34);
  2478.    GetDlgItemText (36, GetDlgItemTextLength (36), Cfg->RaidHelp);
  2479.    GetDlgItemText (39, GetDlgItemTextLength (39), Cfg->RaidNames);
  2480.    GetDlgItemText (112, GetDlgItemTextLength (112), Cfg->NewTicPath);
  2481.  
  2482.    EndDialog (TRUE);
  2483. }
  2484.  
  2485. // ----------------------------------------------------------------------
  2486. // Nodelist configuration
  2487. // ----------------------------------------------------------------------
  2488.  
  2489. class CNodelistDataDlg : public CDialog
  2490. {
  2491. public:
  2492.    CNodelistDataDlg (HWND p_hWnd);
  2493.  
  2494.    USHORT Zone;
  2495.    CHAR   Name[64], Diff[64];
  2496.  
  2497.    USHORT OnInitDialog (VOID);
  2498.    VOID   OnOK (VOID);
  2499. };
  2500.  
  2501. BEGIN_MESSAGE_MAP (CNodelistDlg, CDialog)
  2502.    ON_COMMAND (102, Add)
  2503.    ON_COMMAND (103, Edit)
  2504.    ON_COMMAND (104, Remove)
  2505. END_MESSAGE_MAP ()
  2506.  
  2507. CNodelistDlg::CNodelistDlg (HWND p_hWnd) : CDialog ("40", p_hWnd)
  2508. {
  2509. }
  2510.  
  2511. VOID CNodelistDlg::OnHelp (VOID)
  2512. {
  2513.    WinHelp ("lora.hlp>h_ref", 40);
  2514. }
  2515.  
  2516. USHORT CNodelistDlg::OnInitDialog (VOID)
  2517. {
  2518.    CHAR Temp[32];
  2519.    class TNodes *Data;
  2520.  
  2521.    Center ();
  2522.  
  2523.    LVM_AllocateColumns (101, 3);
  2524.    LVM_InsertColumn (101, "Zone", LVC_RIGHT);
  2525.    LVM_InsertColumn (101, "Nodelist", LVC_LEFT);
  2526.    LVM_InsertColumn (101, "Nodediff", LVC_LEFT);
  2527.  
  2528.    if ((Data = new TNodes (Cfg->NodelistPath)) != NULL) {
  2529.       Data->LoadNodelist ();
  2530.       if (Data->FirstNodelist () == TRUE)
  2531.          do {
  2532.             LVM_InsertItem (101);
  2533.             sprintf (Temp, "%u", Data->DefaultZone);
  2534.             LVM_SetItemText (101, 0, Temp);
  2535.             LVM_SetItemText (101, 1, Data->Nodelist);
  2536.             LVM_SetItemText (101, 2, Data->Nodediff);
  2537.          } while (Data->NextNodelist () == TRUE);
  2538.       delete Data;
  2539.    }
  2540.  
  2541.    LVM_InvalidateView (101);
  2542.  
  2543.    return (TRUE);
  2544. }
  2545.  
  2546. VOID CNodelistDlg::OnOK (VOID)
  2547. {
  2548.    int i, count;
  2549.    CHAR Temp[16], Name[64], Diff[64];
  2550.    class TNodes *Data;
  2551.  
  2552.    if ((Data = new TNodes (Cfg->NodelistPath)) != NULL) {
  2553.       count = LVM_QueryItemCount (101);
  2554.       for (i = 0; i < count; i++) {
  2555.          Temp[0] = Name[0] = Diff[0] = '\0';
  2556.          LVM_QueryItemText (101, i, 0, Temp);
  2557.          LVM_QueryItemText (101, i, 1, Name);
  2558.          LVM_QueryItemText (101, i, 2, Diff);
  2559.          Data->AddNodelist (Name, Diff, (USHORT)atoi (Temp));
  2560.       }
  2561.       Data->SaveNodelist ();
  2562.       delete Data;
  2563.    }
  2564.  
  2565.    EndDialog (TRUE);
  2566. }
  2567.  
  2568. VOID CNodelistDlg::Add (VOID)
  2569. {
  2570.    CHAR Temp[16];
  2571.    class CNodelistDataDlg *Dlg;
  2572.  
  2573.    if ((Dlg = new CNodelistDataDlg (m_hWnd)) != NULL) {
  2574.       if (Dlg->DoModal () == TRUE) {
  2575.          LVM_InsertItem (101);
  2576.          sprintf (Temp, "%u", Dlg->Zone);
  2577.          LVM_SetItemText (101, 0, Temp);
  2578.          LVM_SetItemText (101, 1, Dlg->Name);
  2579.          LVM_SetItemText (101, 2, Dlg->Diff);
  2580.          LVM_InvalidateView (101);
  2581.       }
  2582.       delete Dlg;
  2583.    }
  2584. }
  2585.  
  2586. VOID CNodelistDlg::Edit (VOID)
  2587. {
  2588.    int item;
  2589.    CHAR Temp[16];
  2590.    class CNodelistDataDlg *Dlg;
  2591.  
  2592.    if ((item = LVM_QuerySelectedItem (101)) != -1) {
  2593.       if ((Dlg = new CNodelistDataDlg (m_hWnd)) != NULL) {
  2594.          LVM_QueryItemText (101, item, 0, Temp);
  2595.          Dlg->Zone = (USHORT)atoi (Temp);
  2596.          LVM_QueryItemText (101, item, 1, Dlg->Name);
  2597.          LVM_QueryItemText (101, item, 2, Dlg->Diff);
  2598.          if (Dlg->DoModal () == TRUE) {
  2599.             sprintf (Temp, "%u", Dlg->Zone);
  2600.             LVM_SetItemText (101, item, 0, Temp);
  2601.             LVM_SetItemText (101, item, 1, Dlg->Name);
  2602.             LVM_SetItemText (101, item, 2, Dlg->Diff);
  2603.             LVM_InvalidateView (101);
  2604.          }
  2605.          delete Dlg;
  2606.       }
  2607.    }
  2608. }
  2609.  
  2610. VOID CNodelistDlg::Remove (VOID)
  2611. {
  2612.    int item;
  2613.  
  2614.    if ((item = LVM_QuerySelectedItem (101)) != -1) {
  2615.       if (MessageBox ("Are you sure ?", "Delete", MB_YESNO|MB_ICONQUESTION) == IDYES)
  2616.          LVM_DeleteItem (101, item);
  2617.    }
  2618. }
  2619.  
  2620. // ----------------------------------------------------------------------
  2621.  
  2622. CNodelistDataDlg::CNodelistDataDlg (HWND p_hWnd) : CDialog ("41", p_hWnd)
  2623. {
  2624.    Zone = 0;
  2625.    if (Cfg->MailAddress.First () == TRUE)
  2626.       Zone = Cfg->MailAddress.Zone;
  2627.    Name[0] = Diff[0] = '\0';
  2628. }
  2629.  
  2630. USHORT CNodelistDataDlg::OnInitDialog (VOID)
  2631. {
  2632.    CHAR Temp[16];
  2633.  
  2634.    EM_SetTextLimit (104, sizeof (Name) - 1);
  2635.    EM_SetTextLimit (102, sizeof (Diff) - 1);
  2636.    EM_SetTextLimit (106, 5);
  2637.  
  2638.    SetDlgItemText (104, Name);
  2639.    SetDlgItemText (102, Diff);
  2640.    sprintf (Temp, "%u", Zone);
  2641.    SetDlgItemText (106, Temp);
  2642.  
  2643.    return (TRUE);
  2644. }
  2645.  
  2646. VOID CNodelistDataDlg::OnOK (VOID)
  2647. {
  2648.    CHAR Temp[16];
  2649.  
  2650.    GetDlgItemText (104, Name, GetDlgItemTextLength (104));
  2651.    GetDlgItemText (102, Diff, GetDlgItemTextLength (102));
  2652.    GetDlgItemText (106, Temp, GetDlgItemTextLength (106));
  2653.    Zone = (USHORT)atoi (Temp);
  2654.  
  2655.    EndDialog (TRUE);
  2656. }
  2657.  
  2658. // ----------------------------------------------------------------------
  2659. // Origin Lines
  2660. // ----------------------------------------------------------------------
  2661.  
  2662. BEGIN_MESSAGE_MAP (COriginDlg, CDialog)
  2663.    ON_COMMAND (103, Add)
  2664.    ON_COMMAND (104, Replace)
  2665.    ON_COMMAND (105, Remove)
  2666. #if defined(__OS2__)
  2667.    ON_CONTROL (LN_SELECT, 107, ItemSelected)
  2668. #elif defined(__NT__)
  2669.    ON_NOTIFY (LBN_SELCHANGE, 107, ItemSelected)
  2670. #endif
  2671. END_MESSAGE_MAP ()
  2672.  
  2673. COriginDlg::COriginDlg (HWND p_hWnd) : CDialog ("50", p_hWnd)
  2674. {
  2675. }
  2676.  
  2677. VOID COriginDlg::OnHelp (VOID)
  2678. {
  2679.    WinHelp ("lora.hlp>h_ref", 50);
  2680. }
  2681.  
  2682. USHORT COriginDlg::OnInitDialog (VOID)
  2683. {
  2684.    FILE *fp;
  2685.    CHAR Temp[128];
  2686.  
  2687.    Center ();
  2688.  
  2689.    sprintf (Temp, "%sorigin.txt", Cfg->SystemPath);
  2690.    if ((fp = fopen (Temp, "rt")) != NULL) {
  2691.       while (fgets (Temp, sizeof (Temp) - 1, fp) != NULL) {
  2692.          if (Temp[strlen (Temp) - 1] == '\n')
  2693.             Temp[strlen (Temp) - 1] = '\0';
  2694.          LM_AddString (107, Temp);
  2695.       }
  2696.       fclose (fp);
  2697.    }
  2698.  
  2699.    EM_SetTextLimit (102, sizeof (Temp) - 1);
  2700.  
  2701.    return (TRUE);
  2702. }
  2703.  
  2704. VOID COriginDlg::Add (VOID)
  2705. {
  2706.    CHAR Temp[128];
  2707.  
  2708.    GetDlgItemText (102, Temp, GetDlgItemTextLength (102));
  2709.    LM_AddString (107, Temp);
  2710.    SetDlgItemText (102, "");
  2711. }
  2712.  
  2713. VOID COriginDlg::Replace (VOID)
  2714. {
  2715.    CHAR Temp[128];
  2716.  
  2717.    GetDlgItemText (102, Temp, GetDlgItemTextLength (102));
  2718.    LM_SetItemText (107, LM_QuerySelection (107), Temp);
  2719. }
  2720.  
  2721. VOID COriginDlg::Remove (VOID)
  2722. {
  2723.    LM_DeleteItem (107, LM_QuerySelection (107));
  2724. }
  2725.  
  2726. VOID COriginDlg::ItemSelected (VOID)
  2727. {
  2728.    USHORT item;
  2729.    CHAR Temp[128];
  2730.  
  2731.    item = LM_QuerySelection (107);
  2732.    LM_QueryItemText (107, item, (USHORT)(sizeof (Temp) - 1), Temp);
  2733.    SetDlgItemText (102, Temp);
  2734. }
  2735.  
  2736. VOID COriginDlg::OnOK (VOID)
  2737. {
  2738.    FILE *fp;
  2739.    USHORT i, item;
  2740.    CHAR Temp[128];
  2741.  
  2742.    Center ();
  2743.  
  2744.    sprintf (Temp, "%sorigin.txt", Cfg->SystemPath);
  2745.    if ((fp = fopen (Temp, "wt")) != NULL) {
  2746.       item = LM_QueryItemCount (107);
  2747.       for (i = 0; i < item; i++) {
  2748.          LM_QueryItemText (107, i, (USHORT)(sizeof (Temp) - 1), Temp);
  2749.          fprintf (fp, "%s\n", Temp);
  2750.       }
  2751.       fclose (fp);
  2752.    }
  2753.  
  2754.    EndDialog (TRUE);
  2755. }
  2756.  
  2757. // ----------------------------------------------------------------------
  2758. // Nodelist flags
  2759. // ----------------------------------------------------------------------
  2760.  
  2761. class CModifyFlagsDlg : public CDialog
  2762. {
  2763. public:
  2764.    CModifyFlagsDlg (HWND p_hWnd);
  2765.  
  2766.    CHAR   Flags[64];
  2767.    CHAR   Cmd[64];
  2768.  
  2769.    USHORT OnInitDialog (VOID);
  2770.    VOID   OnOK (VOID);
  2771. };
  2772.  
  2773. BEGIN_MESSAGE_MAP (CNodeFlagsDlg, CDialog)
  2774.    ON_COMMAND (102, Add)
  2775.    ON_COMMAND (104, Remove)
  2776.    ON_COMMAND (103, Change)
  2777. END_MESSAGE_MAP ()
  2778.  
  2779. CNodeFlagsDlg::CNodeFlagsDlg (HWND p_hWnd) : CDialog ("55", p_hWnd)
  2780. {
  2781. }
  2782.  
  2783. VOID CNodeFlagsDlg::OnHelp (VOID)
  2784. {
  2785.    WinHelp ("lora.hlp>h_ref", 55);
  2786. }
  2787.  
  2788. USHORT CNodeFlagsDlg::OnInitDialog (VOID)
  2789. {
  2790.    Center ();
  2791.    class TNodeFlags *Data;
  2792.  
  2793.    EM_SetTextLimit (106, sizeof (Cfg->CallIf) - 1);
  2794.    EM_SetTextLimit (108, sizeof (Cfg->DontCallIf) - 1);
  2795.  
  2796.    LVM_AllocateColumns (101, 2);
  2797.    LVM_InsertColumn (101, "Flags", LVC_LEFT);
  2798.    LVM_InsertColumn (101, "Dial command", LVC_LEFT);
  2799.  
  2800.    if ((Data = new TNodeFlags (Cfg->SystemPath)) != NULL) {
  2801.       if (Data->First () == TRUE)
  2802.          do {
  2803.             LVM_InsertItem (101);
  2804.  
  2805.             LVM_SetItemText (101, 0, Data->Flags);
  2806.             LVM_SetItemText (101, 1, Data->Cmd);
  2807.          } while (Data->Next () == TRUE);
  2808.       delete Data;
  2809.    }
  2810.  
  2811.    LVM_InvalidateView (101);
  2812.  
  2813.    SetDlgItemText (106, Cfg->CallIf);
  2814.    SetDlgItemText (108, Cfg->DontCallIf);
  2815.  
  2816.    return (TRUE);
  2817. }
  2818.  
  2819. VOID CNodeFlagsDlg::OnOK (VOID)
  2820. {
  2821.    USHORT i, count;
  2822.    CHAR Temp[128];
  2823.    class TNodeFlags *Data;
  2824.  
  2825.    if ((Data = new TNodeFlags (Cfg->SystemPath)) != NULL) {
  2826.       Data->DeleteAll ();
  2827.       count = (USHORT)LVM_QueryItemCount (101);
  2828.       for (i = 0; i < count; i++) {
  2829.          LVM_QueryItemText (101, i, 0, Temp);
  2830.          strcpy (Data->Flags, Temp);
  2831.          LVM_QueryItemText (101, i, 1, Temp);
  2832.          strcpy (Data->Cmd, Temp);
  2833.          Data->Add ();
  2834.       }
  2835.       Data->Save ();
  2836.       delete Data;
  2837.    }
  2838.  
  2839.    GetDlgItemText (106, Cfg->CallIf, GetDlgItemTextLength (106));
  2840.    GetDlgItemText (108, Cfg->DontCallIf, GetDlgItemTextLength (108));
  2841.  
  2842.    EndDialog (TRUE);
  2843. }
  2844.  
  2845. VOID CNodeFlagsDlg::Add (VOID)
  2846. {
  2847.    class CModifyFlagsDlg *Dlg;
  2848.  
  2849.    if ((Dlg = new CModifyFlagsDlg (m_hWnd)) != NULL) {
  2850.       if (Dlg->DoModal () == TRUE) {
  2851.          LVM_InsertItem (101);
  2852.          LVM_SetItemText (101, 0, Dlg->Flags);
  2853.          LVM_SetItemText (101, 1, Dlg->Cmd);
  2854.          LVM_InvalidateView (101);
  2855.       }
  2856.       delete Dlg;
  2857.    }
  2858. }
  2859.  
  2860. VOID CNodeFlagsDlg::Change (VOID)
  2861. {
  2862.    USHORT item;
  2863.    CHAR Temp[64];
  2864.    class CModifyFlagsDlg *Dlg;
  2865.  
  2866.    if ((item = (USHORT)LVM_QuerySelectedItem (101)) != -1) {
  2867.       if ((Dlg = new CModifyFlagsDlg (m_hWnd)) != NULL) {
  2868.          LVM_QueryItemText (101, item, 0, Temp);
  2869.          strcpy (Dlg->Flags, Temp);
  2870.          LVM_QueryItemText (101, item, 1, Temp);
  2871.          strcpy (Dlg->Cmd, Temp);
  2872.  
  2873.          if (Dlg->DoModal () == TRUE) {
  2874.             LVM_SetItemText (101, item, 0, Dlg->Flags);
  2875.             LVM_SetItemText (101, item, 1, Dlg->Cmd);
  2876.             LVM_InvalidateView (101);
  2877.          }
  2878.          delete Dlg;
  2879.       }
  2880.    }
  2881. }
  2882.  
  2883. VOID CNodeFlagsDlg::Remove (VOID)
  2884. {
  2885.    LVM_DeleteItem (101, LVM_QuerySelectedItem (101));
  2886. }
  2887.  
  2888. // ----------------------------------------------------------------------
  2889.  
  2890. CModifyFlagsDlg::CModifyFlagsDlg (HWND p_hWnd) : CDialog ("56", p_hWnd)
  2891. {
  2892.    Flags[0] = '\0';
  2893.    Cmd[0] = '\0';
  2894. }
  2895.  
  2896. USHORT CModifyFlagsDlg::OnInitDialog (VOID)
  2897. {
  2898.    Center ();
  2899.  
  2900.    EM_SetTextLimit (106, sizeof (Flags) - 1);
  2901.    EM_SetTextLimit (102, sizeof (Cmd) - 1);
  2902.  
  2903.    SetDlgItemText (106, Flags);
  2904.    SetDlgItemText (102, Cmd);
  2905.  
  2906.    return (TRUE);
  2907. }
  2908.  
  2909. VOID CModifyFlagsDlg::OnOK (VOID)
  2910. {
  2911.    GetDlgItemText (106, GetDlgItemTextLength (106), Flags);
  2912.    GetDlgItemText (102, GetDlgItemTextLength (102), Cmd);
  2913.  
  2914.    EndDialog (TRUE);
  2915. }
  2916.  
  2917. // ----------------------------------------------------------------------
  2918. // Translation table
  2919. // ----------------------------------------------------------------------
  2920.  
  2921. BEGIN_MESSAGE_MAP (CTranslationDlg, CDialog)
  2922.    ON_COMMAND (187, Add)
  2923.    ON_COMMAND (188, Delete)
  2924.    ON_COMMAND (189, List)
  2925.    ON_COMMAND (190, Previous)
  2926.    ON_COMMAND (191, Next)
  2927. END_MESSAGE_MAP ()
  2928.  
  2929. CTranslationDlg::CTranslationDlg (HWND p_hWnd) : CDialog ("61", p_hWnd)
  2930. {
  2931.    Data = NULL;
  2932. }
  2933.  
  2934. CTranslationDlg::~CTranslationDlg (void)
  2935. {
  2936.    if (Data != NULL)
  2937.       delete Data;
  2938. }
  2939.  
  2940. VOID CTranslationDlg::OnHelp (VOID)
  2941. {
  2942.    WinHelp ("lora.hlp>h_ref", 61);
  2943. }
  2944.  
  2945. USHORT CTranslationDlg::OnInitDialog (VOID)
  2946. {
  2947.    Center ();
  2948.  
  2949.    return (TRUE);
  2950. }
  2951.  
  2952. VOID CTranslationDlg::OnOK (VOID)
  2953. {
  2954. }
  2955.  
  2956. VOID CTranslationDlg::DisplayData (VOID)
  2957. {
  2958. }
  2959.  
  2960. VOID CTranslationDlg::ReadData (VOID)
  2961. {
  2962. }
  2963.  
  2964. VOID CTranslationDlg::Add (VOID)
  2965. {
  2966. }
  2967.  
  2968. VOID CTranslationDlg::Copy (VOID)
  2969. {
  2970. }
  2971.  
  2972. VOID CTranslationDlg::Delete (VOID)
  2973. {
  2974.    if (MessageBox ("Are you sure ?", "Delete", MB_YESNO|MB_ICONQUESTION) == IDYES) {
  2975.       DisplayData ();
  2976.    }
  2977. }
  2978.  
  2979. VOID CTranslationDlg::List (VOID)
  2980. {
  2981. }
  2982.  
  2983. VOID CTranslationDlg::Next (VOID)
  2984. {
  2985. }
  2986.  
  2987. VOID CTranslationDlg::Previous (VOID)
  2988. {
  2989. }
  2990.  
  2991.