home *** CD-ROM | disk | FTP | other *** search
/ Tools / WinSN5.0Ver.iso / NETSCAP.50 / WIN1998.ZIP / ns / cmd / xfe / src / PrefsMserverMore.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1998-04-08  |  23.2 KB  |  772 lines

  1. /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
  2.  *
  3.  * The contents of this file are subject to the Netscape Public License
  4.  * Version 1.0 (the "NPL"); you may not use this file except in
  5.  * compliance with the NPL.  You may obtain a copy of the NPL at
  6.  * http://www.mozilla.org/NPL/
  7.  *
  8.  * Software distributed under the NPL is distributed on an "AS IS" basis,
  9.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
  10.  * for the specific language governing rights and limitations under the
  11.  * NPL.
  12.  *
  13.  * The Initial Developer of this code under the NPL is Netscape
  14.  * Communications Corporation.  Portions created by Netscape are
  15.  * Copyright (C) 1998 Netscape Communications Corporation.  All Rights
  16.  * Reserved.
  17.  */
  18. /* 
  19.    PrefsMserverMore.cpp -- The more dialog for Mail server preference
  20.    Created: Linda Wei <lwei@netscape.com>, 23-Oct-96.
  21.  */
  22.  
  23.  
  24.  
  25. #include "felocale.h"
  26. #include "structs.h"
  27. #include "fonts.h"
  28. #include "xpassert.h"
  29. #include "xfe.h"
  30. #include "e_kit.h"
  31. #include "prefapi.h"
  32. #include "PrefsMserverMore.h"
  33.  
  34. #include <Xm/Label.h>
  35. #include <Xm/LabelG.h>
  36. #include <Xm/PushB.h>
  37. #include <Xm/PushBG.h>
  38. #include <Xm/ToggleB.h>
  39. #include <Xm/Form.h>
  40. #include <Xm/Frame.h>
  41. #include <Xm/TextF.h> 
  42. #include <Xm/ToggleBG.h> 
  43. #include <Xfe/Xfe.h>
  44.  
  45. extern int XFE_ERROR_SAVING_OPTIONS;
  46. extern int XFE_MAIL_DIR;
  47. extern int XFE_WARNING;
  48. extern int XFE_DIR_DOES_NOT_EXIST;
  49. extern int XFE_EMPTY_DIR;
  50.  
  51. extern "C"
  52. {
  53.     char *XP_GetString(int i);
  54.     void fe_installMserverMore();
  55.     void fe_browse_file_of_text(MWContext *context, Widget text_field, Boolean dirp);
  56. }
  57.  
  58. // ==================== Public Member Functions ====================
  59.  
  60. // Member:       XFE_PrefsMserverMoreDialog
  61. // Description:  Constructor
  62. // Inputs:
  63. // Side effects: Creates the More dialog for Mail Server Preferences
  64.  
  65. XFE_PrefsMserverMoreDialog::XFE_PrefsMserverMoreDialog(XFE_PrefsDialog *prefsDialog,
  66.                                                        Widget     parent,      // dialog parent
  67.                                                        char      *name,        // dialog name
  68.                                                        Boolean    modal)       // modal dialog?
  69.     : XFE_Dialog(parent, 
  70.                  name,
  71.                  TRUE,     // ok
  72.                  TRUE,     // cancel
  73.                  FALSE,    // help
  74.                  FALSE,    // apply
  75.                  FALSE,    // separator
  76.                  modal     // modal
  77.                  ),
  78.       m_prefsDialog(prefsDialog),
  79.       m_prefsDataMserverMore(0)
  80. {
  81.     PrefsDataMserverMore *fep = NULL;
  82.  
  83.     fep = new PrefsDataMserverMore;
  84.     memset(fep, 0, sizeof(PrefsDataMserverMore));
  85.     m_prefsDataMserverMore = fep;
  86.     
  87.     Widget     form;
  88.     Widget     frame1;
  89.     Widget     frame2;
  90.     Widget     form1;
  91.     Widget     form2;
  92.     Widget     mail_dir_label;
  93.     Widget     mail_dir_text;
  94.     Widget     mail_dir_browse_button;
  95.     Widget     imap_mail_dir_label;
  96.     Widget     imap_mail_dir_text;
  97.     Widget     imap_mail_local_dir_label;
  98.     Widget     imap_mail_local_dir_text;
  99.     Widget     imap_mail_local_dir_browse_button;
  100.     Widget     check_for_mail_toggle;
  101.     Widget     check_mail_interval_text;
  102.     Widget     minutes_label;
  103. #if 0
  104.     Widget     encrypted_passwd_toggle;
  105. #endif
  106.     Widget     remember_email_passwd_toggle;
  107. #if 0
  108.     Widget     enable_biff_toggle;
  109. #endif
  110.     Widget     kids[100];
  111.     Arg        av[50];
  112.     int        ac;
  113.     int        i;
  114.  
  115.     form = XtVaCreateWidget("form", xmFormWidgetClass, m_chrome,
  116.                             XmNmarginWidth, 8,
  117.                             XmNtopAttachment, XmATTACH_FORM,
  118.                             XmNleftAttachment, XmATTACH_FORM,
  119.                             XmNrightAttachment, XmATTACH_FORM,
  120.                             XmNbottomAttachment, XmATTACH_FORM,
  121.                             NULL);
  122.     XtManageChild (form);
  123.  
  124.     ac = 0;
  125.     XtSetArg (av [ac], XmNmarginWidth, 8); ac++;
  126.     XtSetArg (av [ac], XmNmarginHeight, 4); ac++;
  127.     XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  128.     XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
  129.     XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
  130.     XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
  131.     frame1 = XmCreateFrame (form, "dirFrame", av, ac);
  132.  
  133.     ac = 0;
  134.     XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  135.     XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
  136.     XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
  137.     XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
  138.     form1 = XmCreateForm (frame1, "dirBox", av, ac);
  139.     
  140.     // Mail directory
  141.  
  142.     ac = 0;
  143.     i = 0;
  144.  
  145.     kids[i++] = mail_dir_label =
  146.         XmCreateLabelGadget(form1, "mailDirLabel", av, ac);
  147.  
  148.     kids[i++] = mail_dir_text =
  149.         fe_CreateTextField(form1, "mailDirText", av, ac);
  150.  
  151.     kids[i++] = mail_dir_browse_button =
  152.         XmCreatePushButtonGadget(form1, "mailDirBrowse", av, ac);
  153.  
  154.     kids[i++] = imap_mail_dir_label =
  155.         XmCreateLabelGadget(form1, "imapMailDirLabel", av, ac);
  156.  
  157.     kids[i++] = imap_mail_dir_text =    
  158.         fe_CreateTextField(form1, "imapMailDirText", av, ac);
  159.  
  160.     kids[i++] = imap_mail_local_dir_label =
  161.         XmCreateLabelGadget(form1, "imapMailLocalDirLabel", av, ac);
  162.  
  163.     kids[i++] = imap_mail_local_dir_text =
  164.         fe_CreateTextField(form1, "imapMailLocalDirText", av, ac);
  165.  
  166.     kids[i++] = imap_mail_local_dir_browse_button =
  167.         XmCreatePushButtonGadget(form1, "imapMailLocalDirBrowse", av, ac);
  168.  
  169.     XtManageChildren(kids, i);
  170.     XtManageChild(form1);
  171.     XtManageChild(frame1);
  172.  
  173.     // bottom frame
  174.  
  175.     ac = 0;
  176.     XtSetArg (av [ac], XmNmarginWidth, 8); ac++;
  177.     XtSetArg (av [ac], XmNmarginHeight, 4); ac++;
  178.     XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  179.     XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
  180.     XtSetArg (av [ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
  181.     XtSetArg (av [ac], XmNtopWidget, frame1); ac++;
  182.     XtSetArg (av [ac], XmNtopOffset, 8); ac++;
  183.     XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
  184.     frame2 = XmCreateFrame (form, "bottomFrame", av, ac);
  185.  
  186.     ac = 0;
  187.     XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  188.     XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
  189.     XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
  190.     XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
  191.     form2 = XmCreateForm (frame2, "bottomBox", av, ac);
  192.     
  193.     ac = 0;
  194.     i = 0;
  195.  
  196.     kids[i++] = check_for_mail_toggle =
  197.         XmCreateToggleButtonGadget (form2, "checkMailToggle", av, ac);
  198.  
  199.     kids[i++] = remember_email_passwd_toggle = 
  200.         XmCreateToggleButtonGadget (form2, "rememberEmailPasswdToggle", av, ac);
  201.  
  202. #if 0
  203.     kids[i++] = encrypted_passwd_toggle = 
  204.     XmCreateToggleButtonGadget (form2, "encryptPasswdToggle", av, ac);
  205. #endif
  206.  
  207.     kids[i++] = minutes_label = 
  208.         XmCreateLabelGadget(form2, "minutesLabel", av, ac);
  209.  
  210.     kids[i++] = check_mail_interval_text =
  211.         fe_CreateTextField(form2, "checkMailIntText", av, ac);
  212.  
  213. #if 0
  214.     kids[i++] = enable_biff_toggle = 
  215.         XmCreateToggleButtonGadget(form2, "enableBiff", av, ac);
  216. #endif
  217.  
  218.     XtManageChildren(kids, i);
  219.     XtManageChild(form2);
  220.     XtManageChild(frame2);
  221.  
  222.     int labels_width;
  223.     labels_width = XfeVaGetWidestWidget(mail_dir_label,
  224.                                         imap_mail_dir_label,
  225.                                         imap_mail_local_dir_label,
  226.                                         NULL);
  227.     int labels_height2;
  228.     labels_height2 = XfeVaGetTallestWidget(mail_dir_label,
  229.                                            mail_dir_text,
  230.                                            mail_dir_browse_button,
  231.                                            NULL);
  232.  
  233.     XtVaSetValues(mail_dir_label,
  234.                   XmNheight, labels_height2,
  235.                   RIGHT_JUSTIFY_VA_ARGS(mail_dir_label, labels_width),
  236.                   XmNtopAttachment, XmATTACH_FORM,
  237.                   XmNbottomAttachment, XmATTACH_NONE,
  238.                   NULL);
  239.  
  240.     XtVaSetValues(mail_dir_text,
  241.                   XmNcolumns, 30,
  242.                   XmNheight, labels_height2,
  243.                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
  244.                   XmNtopWidget, mail_dir_label,
  245.                   XmNleftAttachment, XmATTACH_WIDGET,
  246.                   XmNleftWidget, mail_dir_label,
  247.                   XmNrightAttachment, XmATTACH_NONE,
  248.                   XmNbottomAttachment, XmATTACH_NONE,
  249.                   NULL);
  250.  
  251.     XtVaSetValues(mail_dir_browse_button,
  252.                   XmNuserData, mail_dir_text,
  253.                   XmNheight, labels_height2,
  254.                   XmNmarginWidth, 8,
  255.                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
  256.                   XmNtopWidget, mail_dir_text,
  257.                   XmNleftAttachment, XmATTACH_WIDGET,
  258.                   XmNleftWidget, mail_dir_text,
  259.                   XmNrightAttachment, XmATTACH_NONE,
  260.                   XmNbottomAttachment, XmATTACH_NONE,
  261.                   NULL);
  262.  
  263.     XtVaSetValues(imap_mail_dir_label,
  264.                   XmNheight, labels_height2,
  265.                   RIGHT_JUSTIFY_VA_ARGS(imap_mail_dir_label, labels_width),
  266.                   XmNtopAttachment, XmATTACH_WIDGET,
  267.                   XmNtopWidget, mail_dir_label,
  268.                   XmNbottomAttachment, XmATTACH_NONE,
  269.                   NULL);
  270.  
  271.     XtVaSetValues(imap_mail_dir_text,
  272.                   XmNcolumns, 30,
  273.                   XmNheight, labels_height2,
  274.                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
  275.                   XmNtopWidget, imap_mail_dir_label,
  276.                   XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
  277.                   XmNleftWidget, mail_dir_text,
  278.                   XmNrightAttachment, XmATTACH_NONE,
  279.                   XmNbottomAttachment, XmATTACH_NONE,
  280.                   NULL);
  281.  
  282.     XtVaSetValues(imap_mail_local_dir_label,
  283.                   XmNheight, labels_height2,
  284.                   RIGHT_JUSTIFY_VA_ARGS(imap_mail_local_dir_label, labels_width),
  285.                   XmNtopAttachment, XmATTACH_WIDGET,
  286.                   XmNtopWidget, imap_mail_dir_label,
  287.                   XmNbottomAttachment, XmATTACH_NONE,
  288.                   NULL);
  289.  
  290.     XtVaSetValues(imap_mail_local_dir_text,
  291.                   XmNcolumns, 30,
  292.                   XmNheight, labels_height2,
  293.                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
  294.                   XmNtopWidget, imap_mail_local_dir_label,
  295.                   XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
  296.                   XmNleftWidget, mail_dir_text,
  297.                   XmNrightAttachment, XmATTACH_NONE,
  298.                   XmNbottomAttachment, XmATTACH_NONE,
  299.                   NULL);
  300.  
  301.     XtVaSetValues(imap_mail_local_dir_browse_button,
  302.                   XmNuserData, imap_mail_local_dir_text,
  303.                   XmNheight, labels_height2,
  304.                   XmNmarginWidth, 8,
  305.                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
  306.                   XmNtopWidget, imap_mail_local_dir_text,
  307.                   XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
  308.                   XmNleftWidget, mail_dir_browse_button,
  309.                   XmNrightAttachment, XmATTACH_NONE,
  310.                   XmNbottomAttachment, XmATTACH_NONE,
  311.                   NULL);
  312.  
  313.     int labels_height;
  314.     labels_height = XfeVaGetTallestWidget(check_for_mail_toggle,
  315.                                           check_mail_interval_text,
  316.                                           minutes_label,
  317.                                           NULL);
  318.  
  319.     XtVaSetValues(check_for_mail_toggle,
  320.                   XmNindicatorType, XmN_OF_MANY,
  321.                   XmNheight, labels_height,
  322.                   XmNtopAttachment, XmATTACH_FORM,
  323.                   XmNleftAttachment, XmATTACH_FORM,
  324.                   XmNrightAttachment, XmATTACH_NONE,
  325.                   XmNbottomAttachment, XmATTACH_NONE,
  326.                   NULL);
  327.     
  328.     XtVaSetValues(check_mail_interval_text,
  329.                   XmNcolumns, 3,
  330.                   XmNheight, labels_height,
  331.                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
  332.                   XmNtopWidget, check_for_mail_toggle,
  333.                   XmNleftAttachment, XmATTACH_WIDGET,
  334.                   XmNleftWidget, check_for_mail_toggle,
  335.                   XmNrightAttachment, XmATTACH_NONE,
  336.                   XmNbottomAttachment, XmATTACH_NONE,
  337.                   NULL);
  338.     
  339.     XtVaSetValues(minutes_label,
  340.                   XmNheight, labels_height,
  341.                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
  342.                   XmNtopWidget, check_for_mail_toggle,
  343.                   XmNleftAttachment, XmATTACH_WIDGET,
  344.                   XmNleftWidget, check_mail_interval_text,
  345.                   XmNrightAttachment, XmATTACH_NONE,
  346.                   XmNbottomAttachment, XmATTACH_NONE,
  347.                   NULL);
  348.     
  349. #if 0
  350.     XtVaSetValues(enable_biff_toggle,
  351.                   XmNindicatorType, XmN_OF_MANY,
  352.                   XmNheight, labels_height,
  353.                   XmNtopAttachment, XmATTACH_WIDGET,
  354.                   XmNtopWidget, check_for_mail_toggle,
  355.                   XmNleftAttachment, XmATTACH_FORM,
  356.                   XmNrightAttachment, XmATTACH_NONE,
  357.                   XmNbottomAttachment, XmATTACH_NONE,
  358.                   NULL);
  359. #endif
  360.  
  361.     XtVaSetValues(remember_email_passwd_toggle,
  362.                   XmNindicatorType, XmN_OF_MANY,
  363.                   XmNheight, labels_height,
  364.                   XmNtopAttachment, XmATTACH_WIDGET,
  365.                   XmNtopWidget, check_for_mail_toggle,
  366.                   XmNleftAttachment, XmATTACH_FORM,
  367.                   XmNrightAttachment, XmATTACH_NONE,
  368.                   XmNbottomAttachment, XmATTACH_NONE,
  369.                   NULL);
  370.  
  371. #if 0
  372.     XtVaSetValues(encrypted_passwd_toggle,
  373.                   XmNindicatorType, XmN_OF_MANY,
  374.                   XmNheight, labels_height,
  375.                   XmNtopAttachment, XmATTACH_WIDGET,
  376.                   XmNtopWidget, remember_email_passwd_toggle,
  377.                   XmNleftAttachment, XmATTACH_FORM,
  378.                   XmNrightAttachment, XmATTACH_NONE,
  379.                   XmNbottomAttachment, XmATTACH_NONE,
  380.                   NULL);
  381.  
  382.     // mapi frame
  383.  
  384.     Widget frame3;
  385.     Widget form3;
  386.  
  387.     ac = 0;
  388.     XtSetArg (av [ac], XmNmarginWidth, 8); ac++;
  389.     XtSetArg (av [ac], XmNmarginHeight, 4); ac++;
  390.     XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  391.     XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
  392.     XtSetArg (av [ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
  393.     XtSetArg (av [ac], XmNtopWidget, frame2); ac++;
  394.     XtSetArg (av [ac], XmNtopOffset, 8); ac++;
  395.     XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
  396.     frame3 = XmCreateFrame (form, "mapiFrame", av, ac);
  397.  
  398.     ac = 0;
  399.     XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  400.     XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
  401.     XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
  402.     XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
  403.     form3 = XmCreateForm (frame3, "mapiBox", av, ac);
  404.     
  405.     Widget mapi_label;
  406.     Widget always_toggle;
  407.     Widget never_toggle;
  408.  
  409.     ac = 0;
  410.     i = 0;
  411.  
  412.     kids[i++] = mapi_label = 
  413.         XmCreateLabelGadget(form3, "mapiLabel", av, ac);
  414.  
  415.     kids[i++] = always_toggle =
  416.         XmCreateToggleButtonGadget(form3, "alwaysToggle", av, ac);
  417.  
  418.     kids[i++] = never_toggle = 
  419.         XmCreateToggleButtonGadget(form3, "neverToggle", av, ac);
  420.  
  421.     XtVaSetValues(mapi_label,
  422.                   XmNtopAttachment, XmATTACH_FORM,
  423.                   XmNleftAttachment, XmATTACH_FORM,
  424.                   XmNrightAttachment, XmATTACH_NONE,
  425.                   XmNbottomAttachment, XmATTACH_NONE,
  426.                   NULL);
  427.  
  428.     XtVaSetValues(always_toggle,
  429.                   XmNindicatorType, XmONE_OF_MANY,
  430.                   XmNtopAttachment, XmATTACH_WIDGET,
  431.                   XmNtopWidget, mapi_label,
  432.                   XmNleftAttachment, XmATTACH_FORM,
  433.                   XmNleftOffset, 16,
  434.                   XmNrightAttachment, XmATTACH_NONE,
  435.                   XmNbottomAttachment, XmATTACH_NONE,
  436.                   NULL);
  437.  
  438.     XtVaSetValues(never_toggle,
  439.                   XmNindicatorType, XmONE_OF_MANY,
  440.                   XmNtopAttachment, XmATTACH_WIDGET,
  441.                   XmNtopWidget, always_toggle,
  442.                   XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
  443.                   XmNleftWidget, always_toggle,
  444.                   XmNrightAttachment, XmATTACH_NONE,
  445.                   XmNbottomAttachment, XmATTACH_NONE,
  446.                   NULL);
  447.  
  448.     XtManageChildren(kids, i);
  449.     XtManageChild(form3);
  450.     XtManageChild(frame3);
  451. #endif
  452.  
  453.     fep->mail_dir_text = mail_dir_text;
  454.     fep->browse_button = mail_dir_browse_button;
  455.     fep->imap_mail_dir_text = imap_mail_dir_text;
  456.     fep->imap_mail_local_dir_text = imap_mail_local_dir_text;
  457.     fep->imap_mail_local_dir_browse_button = imap_mail_local_dir_browse_button;
  458.     fep->check_for_mail_toggle = check_for_mail_toggle;
  459.     fep->check_mail_interval_text = check_mail_interval_text;
  460.     //    fep->encrypted_passwd_toggle = encrypted_passwd_toggle;
  461.     fep->remember_email_passwd_toggle = remember_email_passwd_toggle;
  462.     //    fep->always_toggle = always_toggle;
  463.     //    fep->never_toggle = never_toggle;
  464. #if 0
  465.     fep->enable_biff_toggle = enable_biff_toggle;
  466. #endif
  467.  
  468.     // Add callbacks
  469.  
  470.     XtAddCallback(m_chrome, XmNokCallback, cb_ok, this);
  471.     XtAddCallback(m_chrome, XmNcancelCallback, cb_cancel, this);
  472.     XtAddCallback(mail_dir_browse_button, XmNactivateCallback, cb_browseMailDir, this);
  473.     XtAddCallback(imap_mail_local_dir_browse_button, XmNactivateCallback, cb_browseMailDir, this);
  474.     //    XtAddCallback(always_toggle, XmNvalueChangedCallback, cb_toggleMapiServer, fep);
  475.     //    XtAddCallback(never_toggle, XmNvalueChangedCallback, cb_toggleMapiServer, fep);
  476. }
  477.  
  478. // Member:       ~XFE_PrefsMserverMoreDialog
  479. // Description:  Destructor
  480. // Inputs:
  481. // Side effects: 
  482.  
  483. XFE_PrefsMserverMoreDialog::~XFE_PrefsMserverMoreDialog()
  484. {
  485.     // Clean up
  486.  
  487.     delete m_prefsDataMserverMore;
  488. }
  489.  
  490. // Member:       show
  491. // Description:  Pop up dialog
  492. // Inputs:
  493. // Side effects: 
  494.  
  495. void XFE_PrefsMserverMoreDialog::show()
  496. {
  497.     // TODO: Initialize the dialog
  498.  
  499.     // Manage the top level
  500.  
  501.     XFE_Dialog::show();
  502.  
  503.     // Set focus to the OK button
  504.  
  505.     XmProcessTraversal(m_okButton, XmTRAVERSE_CURRENT);
  506. }
  507.  
  508. // Member:       initPage
  509. // Description:  Initializes page for MailNewsMserverMore
  510. // Inputs:
  511. // Side effects: 
  512.  
  513. void XFE_PrefsMserverMoreDialog::initPage()
  514. {
  515.     XP_ASSERT(m_prefsDataMserverMore);
  516.  
  517.     PrefsDataMserverMore  *fep = m_prefsDataMserverMore;
  518.     XFE_GlobalPrefs       *prefs = &fe_globalPrefs;
  519.     XP_Bool                b;
  520.     char                   buf[1024];
  521.     
  522.     XtVaSetValues(fep->mail_dir_text, 
  523.                   XmNsensitive, !PREF_PrefIsLocked("mail.directory"),
  524.                   0);
  525.     fe_SetTextField(fep->mail_dir_text, prefs->mail_directory);
  526.     XtVaSetValues(fep->browse_button, 
  527.                   XmNsensitive, !PREF_PrefIsLocked("mail.directory"),
  528.                   0);
  529.     XtVaSetValues(fep->imap_mail_dir_text, 
  530.                   XmNsensitive, !PREF_PrefIsLocked("mail.imap.server_sub_directory"),
  531.                   0);
  532.     fe_SetTextField(fep->imap_mail_dir_text, prefs->imap_mail_directory);
  533.     XtVaSetValues(fep->imap_mail_local_dir_text, 
  534.                   XmNsensitive, !PREF_PrefIsLocked("mail.imap.root_dir"),
  535.                   0);
  536.     fe_SetTextField(fep->imap_mail_local_dir_text, prefs->imap_mail_local_directory);
  537.     XtVaSetValues(fep->imap_mail_local_dir_browse_button, 
  538.                   XmNsensitive, !PREF_PrefIsLocked("mail.imap.root_dir"),
  539.                   0);
  540.  
  541.     b = prefs->auto_check_mail;
  542.     XtVaSetValues(fep->check_for_mail_toggle, 
  543.                   XmNset, b, 
  544.                   XmNsensitive, !PREF_PrefIsLocked("mail.check_new_mail"),
  545.                   0);
  546.     PR_snprintf(buf, sizeof(buf), "%d", prefs->biff_interval);
  547.     XtVaSetValues(fep->check_mail_interval_text,
  548.                   XmNvalue, buf, 
  549.                   XmNsensitive, !PREF_PrefIsLocked("mail.check_time"),
  550.                   0);
  551.  
  552. #if 0
  553.     XtVaSetValues(fep->enable_biff_toggle, 
  554.                   XmNset, prefs->enable_biff, 
  555.                   XmNsensitive, !PREF_PrefIsLocked("mail.play_sound"),
  556.                   0);
  557. #endif
  558.  
  559.     XtVaSetValues(fep->remember_email_passwd_toggle, 
  560.                   XmNset, prefs->rememberPswd, 
  561.                   XmNsensitive, !PREF_PrefIsLocked("mail.remember_password"),
  562.                   0);
  563.  
  564. #if 0
  565.     XtVaSetValues(fep->encrypted_passwd_toggle,
  566.                   XmNset, prefs->support_skey, 
  567.                   XmNsensitive, !PREF_PrefIsLocked("mail.support_skey"),
  568.                   0);
  569.  
  570.     XtVaSetValues(fep->always_toggle, 
  571.                   XmNset, prefs->use_ns_mapi_server, 
  572.                   XmNsensitive, !PREF_PrefIsLocked("mail.use_mapi_server"),
  573.                   0);
  574.     XtVaSetValues(fep->never_toggle, 
  575.                   XmNset, !prefs->use_ns_mapi_server, 
  576.                   XmNsensitive, !PREF_PrefIsLocked("mail.use_mapi_server"),
  577.                   0);
  578. #endif
  579. }
  580.  
  581. // Member:       verifyPage
  582. // Description:  verify page for MailNewsMserverMore
  583. // Inputs:
  584. // Side effects: 
  585.  
  586. Boolean XFE_PrefsMserverMoreDialog::verifyPage()
  587. {
  588.     char         buf[10000];
  589.     char        *buf2;
  590.     char        *warning;
  591.     struct stat  st;
  592.     int          size;
  593.  
  594.     buf2 = buf;
  595.     strcpy (buf, XP_GetString(XFE_WARNING));
  596.     buf2 = buf + XP_STRLEN(buf);
  597.     warning = buf2;
  598.     size = buf + sizeof (buf) - warning;
  599.  
  600.     XP_ASSERT(m_prefsDataMserverMore);
  601.     PrefsDataMserverMore  *fep = m_prefsDataMserverMore;
  602.  
  603.     PREFS_CHECK_DIR (fep->mail_dir_text,
  604.                      XP_GetString(XFE_MAIL_DIR),
  605.                      warning, size);
  606.  
  607.     if (*buf2) {
  608.         FE_Alert(getContext(), fe_StringTrim (buf));
  609.         return FALSE;
  610.     }
  611.     else {
  612.         return TRUE;
  613.     }
  614. }
  615.  
  616. // Member:       installChanges
  617. // Description:  install changes for MailNewsMserverMore
  618. // Inputs:
  619. // Side effects: 
  620.  
  621. void XFE_PrefsMserverMoreDialog::installChanges()
  622. {
  623.     //fe_installMserverMore();
  624. }
  625.  
  626. // Member:       getContext
  627. // Description:  returns context
  628. // Inputs:
  629. // Side effects: 
  630.  
  631. MWContext *XFE_PrefsMserverMoreDialog::getContext()
  632. {
  633.     return (m_prefsDialog->getContext());
  634. }
  635.  
  636. // Member:       prefsMserverMoreCb_ok
  637. // Description:  
  638. // Inputs:
  639. // Side effects: 
  640.  
  641. void XFE_PrefsMserverMoreDialog::cb_ok(Widget    w,
  642.                                        XtPointer closure,
  643.                                        XtPointer callData)
  644. {
  645.     XFE_PrefsMserverMoreDialog *theDialog = (XFE_PrefsMserverMoreDialog *)closure;
  646.     PrefsDataMserverMore       *fep = theDialog->m_prefsDataMserverMore;
  647.     Boolean                     b;
  648.     char                        c;
  649.     char                       *s = 0;
  650.     int                         n;
  651.  
  652.     XP_ASSERT(fep);
  653.     if (! theDialog->verifyPage()) return;
  654.  
  655.     // Mail directory
  656.  
  657.     // Backend doesn't store mail_directory. So it doesn't know if this
  658.     // really changed or not when we install the prefs. We have to do this
  659.     // explicitly here.
  660.  
  661.     XP_FREEIF(fe_globalPrefs.mail_directory);
  662.     s = fe_GetTextField(fep->mail_dir_text);
  663.     fe_globalPrefs.mail_directory = s ? s : XP_STRDUP("");
  664.  
  665.     XP_FREEIF(fe_globalPrefs.imap_mail_directory);
  666.     s = fe_GetTextField(fep->imap_mail_dir_text);
  667.     fe_globalPrefs.imap_mail_directory = s ? s : XP_STRDUP("");
  668.  
  669.     XP_FREEIF(fe_globalPrefs.imap_mail_local_directory);
  670.     s = fe_GetTextField(fep->imap_mail_local_dir_text);
  671.     fe_globalPrefs.imap_mail_local_directory = s ? s : XP_STRDUP("");
  672.  
  673.     // Check for mail
  674.  
  675.     XtVaGetValues(fep->check_for_mail_toggle, XmNset, &b, 0);
  676.     fe_globalPrefs.auto_check_mail = b;
  677.     if (b) {
  678.         XtVaGetValues (fep->check_mail_interval_text, XmNvalue, &s, 0);
  679.         fe_globalPrefs.biff_interval = 0;
  680.         if (1 == sscanf (s, " %d %c", &n, &c))
  681.             fe_globalPrefs.biff_interval = n;
  682.         if (s) XtFree(s);
  683.     }
  684.  
  685.     XtVaGetValues(fep->remember_email_passwd_toggle, XmNset, &b, 0);
  686.     fe_globalPrefs.rememberPswd = b;
  687.  
  688. #if 0
  689.     XtVaGetValues(fep->encrypted_passwd_toggle, XmNset, &b, 0);
  690.     fe_globalPrefs.support_skey = b;
  691. #endif
  692.  
  693.     //    XtVaGetValues(fep->always_toggle, XmNset, &b, 0);
  694.     //    fe_globalPrefs.use_ns_mapi_server = b;
  695.  
  696.     // Simulate a cancel
  697.  
  698.     theDialog->cb_cancel(w, closure, callData);
  699.  
  700.     // Install preferences
  701.  
  702.     theDialog->installChanges();
  703.  
  704.     // Save the preferences at the end, so that if we've found some setting that
  705.     // crashes, it won't get saved...
  706.  
  707.     if (!fe_CheckVersionAndSavePrefs((char *) fe_globalData.user_prefs_file, &fe_globalPrefs))
  708.         fe_perror (theDialog->getContext(), XP_GetString( XFE_ERROR_SAVING_OPTIONS));
  709. }
  710.  
  711. // Member:       prefsMserverMoreCb_cancel
  712. // Description:  
  713. // Inputs:
  714. // Side effects: 
  715.  
  716. void XFE_PrefsMserverMoreDialog::cb_cancel(Widget    /* w */,
  717.                                            XtPointer closure,
  718.                                            XtPointer /* callData */)
  719. {
  720.     XFE_PrefsMserverMoreDialog *theDialog = (XFE_PrefsMserverMoreDialog *)closure;
  721.  
  722.     // Delete the dialog
  723.  
  724.     delete theDialog;
  725. }
  726.  
  727. // Member:       cb_browseMailDir
  728. // Description:  
  729. // Inputs:
  730. // Side effects: 
  731.  
  732. void XFE_PrefsMserverMoreDialog::cb_browseMailDir(Widget    w,
  733.                                                   XtPointer closure,
  734.                                                   XtPointer /* callData */)
  735. {
  736.     XFE_PrefsMserverMoreDialog   *theDialog = (XFE_PrefsMserverMoreDialog *)closure;
  737.     PrefsDataMserverMore         *fep = theDialog->m_prefsDataMserverMore;
  738.     XFE_PrefsDialog              *prefsDialog = theDialog->m_prefsDialog;
  739.     Widget                        text_widget;
  740.     
  741.     XtVaGetValues(w, XmNuserData, &text_widget, 0);
  742.     fe_browse_file_of_text(prefsDialog->getContext(), text_widget, True);
  743. }
  744.  
  745. #if 0
  746. // Member:       cb_toggleMapiServer
  747. // Description:  
  748. // Inputs:
  749. // Side effects: 
  750.  
  751. void XFE_PrefsMserverMoreDialog::cb_toggleMapiServer(Widget    w,
  752.                                                      XtPointer closure,
  753.                                                      XtPointer callData)
  754. {
  755.     XmToggleButtonCallbackStruct *cb = (XmToggleButtonCallbackStruct *)callData;
  756.     PrefsDataMserverMore         *fep = (PrefsDataMserverMore *)closure;
  757.  
  758.     if (! cb->set) {
  759.         XtVaSetValues(w, XmNset, True, 0);
  760.     }
  761.     else if (w == fep->always_toggle) {
  762.         XtVaSetValues(fep->never_toggle, XmNset, False, 0);
  763.     }
  764.     else if (w == fep->never_toggle) {
  765.         XtVaSetValues(fep->always_toggle, XmNset, False, 0);
  766.     }
  767.     else
  768.         abort();    
  769. }
  770.  
  771. #endif
  772.