home *** CD-ROM | disk | FTP | other *** search
/ Tools / WinSN5.0Ver.iso / NETSCAP.50 / WIN1998.ZIP / ns / cmd / xfe / src / PrefsMsgMore.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1998-04-08  |  18.0 KB  |  612 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.    PrefsMsgMore.cpp -- The more dialog for Mail messages preference
  20.    Created: Linda Wei <lwei@netscape.com>, 04-Mar-97.
  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 "PrefsMsgMore.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.  
  44. extern int XFE_ERROR_SAVING_OPTIONS;
  45.  
  46. extern "C"
  47. {
  48.     char *XP_GetString(int i);
  49. }
  50.  
  51. // ==================== Public Member Functions ====================
  52.  
  53. // Member:       XFE_PrefsMsgMoreDialog
  54. // Description:  Constructor
  55. // Inputs:
  56. // Side effects: Creates the More dialog for Mail Messages Preferences
  57.  
  58. XFE_PrefsMsgMoreDialog::XFE_PrefsMsgMoreDialog(XFE_PrefsDialog *prefsDialog,
  59.                                                Widget     parent,      // dialog parent
  60.                                                char      *name,        // dialog name
  61.                                                Boolean    modal)       // modal dialog?
  62.     : XFE_Dialog(parent, 
  63.                  name,
  64.                  TRUE,     // ok
  65.                  TRUE,     // cancel
  66.                  FALSE,    // help
  67.                  FALSE,    // apply
  68.                  FALSE,    // separator
  69.                  modal     // modal
  70.                  ),
  71.       m_prefsDialog(prefsDialog),
  72.       m_prefsDataMsgMore(0)
  73. {
  74.     PrefsDataMsgMore *fep = NULL;
  75.  
  76.     fep = new PrefsDataMsgMore;
  77.     memset(fep, 0, sizeof(PrefsDataMsgMore));
  78.     m_prefsDataMsgMore = fep;
  79.     
  80.     Widget     form;
  81.     Widget     names_and_nicknames_toggle;
  82.     Widget     nicknames_only_toggle;
  83.     Widget     eight_bit_toggle;
  84.     Widget     quoted_printable_toggle;
  85.     Widget     kids[100];
  86.     Arg        av[50];
  87.     int        ac;
  88.     int        i;
  89.  
  90.     form = XtVaCreateWidget("form", xmFormWidgetClass, m_chrome,
  91.                             XmNmarginWidth, 8,
  92.                             XmNtopAttachment, XmATTACH_FORM,
  93.                             XmNleftAttachment, XmATTACH_FORM,
  94.                             XmNrightAttachment, XmATTACH_FORM,
  95.                             XmNbottomAttachment, XmATTACH_FORM,
  96.                             NULL);
  97.     XtManageChild (form);
  98.  
  99.     // Addressing messages
  100.  
  101.     Widget frame1;
  102.  
  103.     ac = 0;
  104.     XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  105.     XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
  106.     XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
  107.     XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
  108.     frame1 = XmCreateFrame (form, "addressFrame", av, ac);
  109.  
  110.     Widget form1;
  111.  
  112.     ac = 0;
  113.     XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  114.     XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
  115.     XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
  116.     XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
  117.     form1 = XmCreateForm (frame1, "addressBox", av, ac);
  118.  
  119.     Widget label1;
  120.  
  121.     ac = 0;
  122.     XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
  123.     label1 = XmCreateLabelGadget (frame1, "addressingLabel", av, ac);
  124.  
  125.     ac = 0;
  126.     i = 0;
  127.  
  128.     kids [i++] = names_and_nicknames_toggle = 
  129.         XmCreateToggleButtonGadget(form1, "nameAndNicknamesToggle", av, ac);
  130.  
  131.     kids [i++] = nicknames_only_toggle = 
  132.         XmCreateToggleButtonGadget(form1, "nicknamesOnlyToggle", av, ac);
  133.  
  134.     fep->names_and_nicknames_toggle = names_and_nicknames_toggle;
  135.     fep->nicknames_only_toggle = nicknames_only_toggle;
  136.  
  137.     XtVaSetValues(names_and_nicknames_toggle,
  138.                   XmNalignment, XmALIGNMENT_BEGINNING,
  139.                   XmNindicatorType, XmONE_OF_MANY,
  140.                   XmNtopAttachment, XmATTACH_FORM,
  141.                   XmNleftAttachment, XmATTACH_FORM,
  142.                   XmNleftOffset, 16,
  143.                   XmNrightAttachment, XmATTACH_NONE,
  144.                   XmNbottomAttachment, XmATTACH_NONE,
  145.                   NULL);
  146.  
  147.     XtVaSetValues(nicknames_only_toggle,
  148.                   XmNalignment, XmALIGNMENT_BEGINNING,
  149.                   XmNindicatorType, XmONE_OF_MANY,
  150.                   XmNtopAttachment, XmATTACH_WIDGET,
  151.                   XmNtopWidget, names_and_nicknames_toggle,
  152.                   XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
  153.                   XmNleftWidget, names_and_nicknames_toggle,
  154.                   XmNrightAttachment, XmATTACH_NONE,
  155.                   XmNbottomAttachment, XmATTACH_NONE,
  156.                   NULL);
  157.  
  158.     XtManageChildren(kids, i);
  159.     XtManageChild(label1);
  160.     XtManageChild(form1);
  161.     XtManageChild(frame1);
  162.  
  163.     // Send messages that use 8-bit characters
  164.  
  165.     Widget frame2;
  166.  
  167.     ac = 0;
  168.     XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  169.     XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
  170.     XtSetArg (av [ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
  171.     XtSetArg (av [ac], XmNtopWidget, frame1); ac++;
  172.     XtSetArg (av [ac], XmNtopOffset, 8); ac++;
  173.     XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
  174.     frame2 = XmCreateFrame (form, "frame2", av, ac);
  175.  
  176.     Widget form2;
  177.  
  178.     ac = 0;
  179.     XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  180.     XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
  181.     XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
  182.     XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
  183.     form2 = XmCreateForm (frame2, "frame2Box", av, ac);
  184.  
  185.     Widget label2;
  186.  
  187.     ac = 0;
  188.     XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
  189.     label2 = XmCreateLabelGadget (frame2, "composeLabel", av, ac);
  190.  
  191.     ac = 0;
  192.     i = 0;
  193.  
  194.     kids [i++] = eight_bit_toggle = 
  195.         XmCreateToggleButtonGadget(form2, "8bitToggle", av, ac);
  196.  
  197.     kids[i++] = quoted_printable_toggle = 
  198.         XmCreateToggleButtonGadget(form2, "qpToggle", av, ac);
  199.  
  200.     fep->eight_bit_toggle = eight_bit_toggle;
  201.     fep->quoted_printable_toggle = quoted_printable_toggle;
  202.  
  203.     XtVaSetValues(eight_bit_toggle,
  204.                   XmNalignment, XmALIGNMENT_BEGINNING,
  205.                   XmNindicatorType, XmONE_OF_MANY,
  206.                   XmNtopAttachment, XmATTACH_FORM,
  207.                   XmNleftAttachment, XmATTACH_FORM,
  208.                   XmNleftOffset, 16,
  209.                   XmNrightAttachment, XmATTACH_NONE,
  210.                   XmNbottomAttachment, XmATTACH_NONE,
  211.                   NULL);
  212.     
  213.     XtVaSetValues(quoted_printable_toggle,
  214.                   XmNalignment, XmALIGNMENT_BEGINNING,
  215.                   XmNindicatorType, XmONE_OF_MANY,
  216.                   XmNtopAttachment, XmATTACH_WIDGET,
  217.                   XmNtopWidget, eight_bit_toggle,
  218.                   XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
  219.                   XmNleftWidget, eight_bit_toggle,
  220.                   XmNrightAttachment, XmATTACH_NONE,
  221.                   XmNbottomAttachment, XmATTACH_NONE,
  222.                   NULL);
  223.  
  224.     fep->eight_bit_toggle = eight_bit_toggle;
  225.     fep->quoted_printable_toggle = quoted_printable_toggle;
  226.  
  227.     XtManageChildren(kids, i);
  228.     XtManageChild(label2);
  229.     XtManageChild(form2);
  230.     XtManageChild(frame2);
  231.  
  232.     // Sending messages
  233.  
  234.     Widget frame3;
  235.  
  236.     ac = 0;
  237.     XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  238.     XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
  239.     XtSetArg (av [ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
  240.     XtSetArg (av [ac], XmNtopWidget, frame2); ac++;
  241.     XtSetArg (av [ac], XmNtopOffset, 8); ac++;
  242.     XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
  243.     frame3 = XmCreateFrame (form, "frame3", av, ac);
  244.  
  245.     Widget form3;
  246.  
  247.     ac = 0;
  248.     XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
  249.     XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
  250.     XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
  251.     XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
  252.     form3 = XmCreateForm (frame3, "frame3Box", av, ac);
  253.  
  254.     Widget label3;
  255.  
  256.     ac = 0;
  257.     XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
  258.     XtSetArg (av [ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++;
  259.     label3 = XmCreateLabelGadget (frame3, "sendLabel", av, ac);
  260.  
  261.     Widget ask_toggle;
  262.     Widget send_text_toggle;
  263.     Widget send_html_toggle;
  264.     Widget send_both_toggle;
  265.  
  266.     ac = 0;
  267.     i = 0;
  268.  
  269.     kids [i++] = ask_toggle = 
  270.         XmCreateToggleButtonGadget(form3, "askToggle", av, ac);
  271.  
  272.     kids[i++] = send_text_toggle = 
  273.         XmCreateToggleButtonGadget(form3, "sendTextToggle", av, ac);
  274.  
  275.     kids[i++] = send_html_toggle = 
  276.         XmCreateToggleButtonGadget(form3, "sendHtmlToggle", av, ac);
  277.  
  278.     kids[i++] = send_both_toggle = 
  279.         XmCreateToggleButtonGadget(form3, "sendBothToggle", av, ac);
  280.  
  281.     fep->ask_toggle = ask_toggle;
  282.     fep->send_text_toggle = send_text_toggle;
  283.     fep->send_html_toggle = send_html_toggle;
  284.     fep->send_both_toggle = send_both_toggle;
  285.  
  286.     XtVaSetValues(ask_toggle,
  287.                   XmNalignment, XmALIGNMENT_BEGINNING,
  288.                   XmNindicatorType, XmONE_OF_MANY,
  289.                   XmNtopAttachment, XmATTACH_FORM,
  290.                   XmNleftAttachment, XmATTACH_FORM,
  291.                   XmNleftOffset, 16,
  292.                   XmNrightAttachment, XmATTACH_NONE,
  293.                   XmNbottomAttachment, XmATTACH_NONE,
  294.                   NULL);
  295.     
  296.     XtVaSetValues(send_text_toggle,
  297.                   XmNalignment, XmALIGNMENT_BEGINNING,
  298.                   XmNindicatorType, XmONE_OF_MANY,
  299.                   XmNtopAttachment, XmATTACH_WIDGET,
  300.                   XmNtopWidget, ask_toggle,
  301.                   XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
  302.                   XmNleftWidget, ask_toggle,
  303.                   XmNrightAttachment, XmATTACH_NONE,
  304.                   XmNbottomAttachment, XmATTACH_NONE,
  305.                   NULL);
  306.  
  307.     XtVaSetValues(send_html_toggle,
  308.                   XmNalignment, XmALIGNMENT_BEGINNING,
  309.                   XmNindicatorType, XmONE_OF_MANY,
  310.                   XmNtopAttachment, XmATTACH_WIDGET,
  311.                   XmNtopWidget, send_text_toggle,
  312.                   XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
  313.                   XmNleftWidget, ask_toggle,
  314.                   XmNrightAttachment, XmATTACH_NONE,
  315.                   XmNbottomAttachment, XmATTACH_NONE,
  316.                   NULL);
  317.  
  318.     XtVaSetValues(send_both_toggle,
  319.                   XmNalignment, XmALIGNMENT_BEGINNING,
  320.                   XmNindicatorType, XmONE_OF_MANY,
  321.                   XmNtopAttachment, XmATTACH_WIDGET,
  322.                   XmNtopWidget, send_html_toggle,
  323.                   XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
  324.                   XmNleftWidget, ask_toggle,
  325.                   XmNrightAttachment, XmATTACH_NONE,
  326.                   XmNbottomAttachment, XmATTACH_NONE,
  327.                   NULL);
  328.  
  329.     XtManageChildren(kids, i);
  330.     XtManageChild(label3);
  331.     XtManageChild(form3);
  332.     XtManageChild(frame3);
  333.  
  334.     // Add callbacks
  335.  
  336.     XtAddCallback(m_chrome, XmNokCallback, cb_ok, this);
  337.     XtAddCallback(m_chrome, XmNcancelCallback, cb_cancel, this);
  338.  
  339.     XtAddCallback(names_and_nicknames_toggle, XmNvalueChangedCallback, cb_toggleAddressing, fep);
  340.     XtAddCallback(nicknames_only_toggle, XmNvalueChangedCallback, cb_toggleAddressing, fep);
  341.  
  342.     XtAddCallback(eight_bit_toggle, XmNvalueChangedCallback, cb_toggleEncoding, fep);
  343.     XtAddCallback(quoted_printable_toggle, XmNvalueChangedCallback, cb_toggleEncoding, fep);
  344.  
  345.     XtAddCallback(ask_toggle, XmNvalueChangedCallback, cb_toggleSend, fep);
  346.     XtAddCallback(send_text_toggle, XmNvalueChangedCallback, cb_toggleSend, fep);
  347.     XtAddCallback(send_html_toggle, XmNvalueChangedCallback, cb_toggleSend, fep);
  348.     XtAddCallback(send_both_toggle, XmNvalueChangedCallback, cb_toggleSend, fep);
  349. }
  350.  
  351. // Member:       ~XFE_PrefsMsgMoreDialog
  352. // Description:  Destructor
  353. // Inputs:
  354. // Side effects: 
  355.  
  356. XFE_PrefsMsgMoreDialog::~XFE_PrefsMsgMoreDialog()
  357. {
  358.     // Clean up
  359.  
  360.     delete m_prefsDataMsgMore;
  361. }
  362.  
  363. // Member:       show
  364. // Description:  Pop up dialog
  365. // Inputs:
  366. // Side effects: 
  367.  
  368. void XFE_PrefsMsgMoreDialog::show()
  369. {
  370.     // Manage the top level
  371.  
  372.     XFE_Dialog::show();
  373.  
  374.     // Set focus to the OK button
  375.  
  376.     XmProcessTraversal(m_okButton, XmTRAVERSE_CURRENT);
  377. }
  378.  
  379. // Member:       initPage
  380. // Description:  Initializes page for MailNewsMsgMore
  381. // Inputs:
  382. // Side effects: 
  383.  
  384. void XFE_PrefsMsgMoreDialog::initPage()
  385. {
  386.     XP_ASSERT(m_prefsDataMsgMore);
  387.  
  388.     PrefsDataMsgMore  *fep = m_prefsDataMsgMore;
  389.     XFE_GlobalPrefs   *prefs = &fe_globalPrefs;
  390.     XP_Bool            b;
  391.     Boolean            sensitive;
  392.  
  393.     sensitive = !PREF_PrefIsLocked("mailnews.nicknames_only");
  394.     b = prefs->expand_addr_nicknames_only;
  395.     XtVaSetValues(fep->nicknames_only_toggle,
  396.                   XmNset, b, 
  397.                   XmNsensitive, sensitive,
  398.                   0);
  399.     XtVaSetValues(fep->names_and_nicknames_toggle,
  400.                   XmNset, !b, 
  401.                   XmNsensitive, sensitive,
  402.                   0);
  403.  
  404.     // 8-bit or quoted printable
  405.  
  406.     sensitive = !PREF_PrefIsLocked("mail.strictly_mime");
  407.     XtVaSetValues(fep->eight_bit_toggle,
  408.                   XmNset, !prefs->qp_p,
  409.                   XmNsensitive, sensitive,
  410.                   0);
  411.     XtVaSetValues(fep->quoted_printable_toggle,
  412.                   XmNset, prefs->qp_p, 
  413.                   XmNsensitive, sensitive,
  414.                   0);
  415.  
  416.     // Sending HTML messages
  417.  
  418.     sensitive = !PREF_PrefIsLocked("mail.default_html_action");
  419.     XtVaSetValues(fep->ask_toggle, 
  420.                   XmNset, (prefs->html_def_action == HTML_ACTION_ASK),
  421.                   XmNsensitive, sensitive,
  422.                   0);
  423.     XtVaSetValues(fep->send_text_toggle, 
  424.                   XmNset, (prefs->html_def_action == HTML_ACTION_TEXT),
  425.                   XmNsensitive, sensitive,
  426.                   0);
  427.     XtVaSetValues(fep->send_html_toggle, 
  428.                   XmNset, (prefs->html_def_action == HTML_ACTION_HTML),
  429.                   XmNsensitive, sensitive,
  430.                   0);
  431.     XtVaSetValues(fep->send_both_toggle, 
  432.                   XmNset, (prefs->html_def_action == HTML_ACTION_BOTH),
  433.                   XmNsensitive, sensitive,
  434.                   0);
  435. }
  436.  
  437. // Member:       verifyPage
  438. // Description:  verify page for MailNewsMsgMore
  439. // Inputs:
  440. // Side effects: 
  441.  
  442. Boolean XFE_PrefsMsgMoreDialog::verifyPage()
  443. {
  444.     return TRUE;
  445. }
  446.  
  447. // Member:       installChanges
  448. // Description:  install changes for MailNewsMsgMore
  449. // Inputs:
  450. // Side effects: 
  451.  
  452. void XFE_PrefsMsgMoreDialog::installChanges()
  453. {
  454. }
  455.  
  456. // Member:       getContext
  457. // Description:  returns context
  458. // Inputs:
  459. // Side effects: 
  460.  
  461. MWContext *XFE_PrefsMsgMoreDialog::getContext()
  462. {
  463.     return (m_prefsDialog->getContext());
  464. }
  465.  
  466. // Member:       prefsMsgMoreCb_ok
  467. // Description:  
  468. // Inputs:
  469. // Side effects: 
  470.  
  471. void XFE_PrefsMsgMoreDialog::cb_ok(Widget    w,
  472.                                        XtPointer closure,
  473.                                        XtPointer callData)
  474. {
  475.     XFE_PrefsMsgMoreDialog *theDialog = (XFE_PrefsMsgMoreDialog *)closure;
  476.     PrefsDataMsgMore       *fep = theDialog->m_prefsDataMsgMore;
  477.     Boolean                 b;
  478.  
  479.     XP_ASSERT(fep);
  480.     if (! theDialog->verifyPage()) return;
  481.  
  482.     // addressing messages
  483.  
  484.     XtVaGetValues(fep->nicknames_only_toggle, XmNset, &b, 0);
  485.     fe_globalPrefs.expand_addr_nicknames_only = b;
  486.  
  487.     // 8bit, quoted printable
  488.  
  489.     XtVaGetValues(fep->quoted_printable_toggle, XmNset, &b, 0);
  490.     fe_globalPrefs.qp_p = b;
  491.  
  492.     // Default html action
  493.  
  494.     XtVaGetValues(fep->ask_toggle, XmNset, &b, 0);
  495.     if (b) fe_globalPrefs.html_def_action = HTML_ACTION_ASK;
  496.  
  497.     XtVaGetValues(fep->send_text_toggle, XmNset, &b, 0);
  498.     if (b) fe_globalPrefs.html_def_action = HTML_ACTION_TEXT;
  499.  
  500.     XtVaGetValues(fep->send_html_toggle, XmNset, &b, 0);
  501.     if (b) fe_globalPrefs.html_def_action = HTML_ACTION_HTML;
  502.  
  503.     XtVaGetValues(fep->send_both_toggle, XmNset, &b, 0);
  504.     if (b) fe_globalPrefs.html_def_action = HTML_ACTION_BOTH;
  505.  
  506.     // Simulate a cancel
  507.  
  508.     theDialog->cb_cancel(w, closure, callData);
  509.  
  510.     // Install preferences
  511.  
  512.     theDialog->installChanges();
  513.  
  514.     // Save the preferences at the end, so that if we've found some setting that
  515.     // crashes, it won't get saved...
  516.  
  517.     if (! fe_CheckVersionAndSavePrefs((char *) fe_globalData.user_prefs_file, &fe_globalPrefs))
  518.         fe_perror (theDialog->getContext(), XP_GetString( XFE_ERROR_SAVING_OPTIONS));
  519. }
  520.  
  521. // Member:       prefsMsgMoreCb_cancel
  522. // Description:  
  523. // Inputs:
  524. // Side effects: 
  525.  
  526. void XFE_PrefsMsgMoreDialog::cb_cancel(Widget    /* w */,
  527.                                        XtPointer closure,
  528.                                        XtPointer /* callData */)
  529. {
  530.     XFE_PrefsMsgMoreDialog *theDialog = (XFE_PrefsMsgMoreDialog *)closure;
  531.  
  532.     // Delete the dialog
  533.  
  534.     delete theDialog;
  535. }
  536.  
  537. void XFE_PrefsMsgMoreDialog::cb_toggleEncoding(Widget    w,
  538.                                                XtPointer closure,
  539.                                                XtPointer callData)
  540. {
  541.     XmToggleButtonCallbackStruct *cb = (XmToggleButtonCallbackStruct *)callData;
  542.     PrefsDataMsgMore             *fep = (PrefsDataMsgMore *)closure;
  543.  
  544.     if (! cb->set) {
  545.         XtVaSetValues(w, XmNset, True, 0);
  546.     }
  547.     else if (w == fep->eight_bit_toggle) {
  548.         XtVaSetValues(fep->quoted_printable_toggle, XmNset, False, 0);
  549.     }
  550.     else if (w == fep->quoted_printable_toggle) {
  551.         XtVaSetValues(fep->eight_bit_toggle, XmNset, False, 0);
  552.     }
  553.     else
  554.         abort();    
  555. }
  556.  
  557. void XFE_PrefsMsgMoreDialog::cb_toggleAddressing(Widget    w,
  558.                                                  XtPointer closure,
  559.                                                  XtPointer callData)
  560. {
  561.     XmToggleButtonCallbackStruct *cb = (XmToggleButtonCallbackStruct *)callData;
  562.     PrefsDataMsgMore             *fep = (PrefsDataMsgMore *)closure;
  563.  
  564.     if (! cb->set) {
  565.         XtVaSetValues(w, XmNset, True, 0);
  566.     }
  567.     else if (w == fep->names_and_nicknames_toggle) {
  568.         XtVaSetValues(fep->nicknames_only_toggle, XmNset, False, 0);
  569.     }
  570.     else if (w == fep->nicknames_only_toggle) {
  571.         XtVaSetValues(fep->names_and_nicknames_toggle, XmNset, False, 0);
  572.     }
  573.     else
  574.         abort();    
  575. }
  576.  
  577. void XFE_PrefsMsgMoreDialog::cb_toggleSend(Widget    w,
  578.                                            XtPointer closure,
  579.                                            XtPointer callData)
  580. {
  581.     XmToggleButtonCallbackStruct *cb = (XmToggleButtonCallbackStruct *)callData;
  582.     PrefsDataMsgMore             *fep = (PrefsDataMsgMore *)closure;
  583.  
  584.     if (! cb->set) {
  585.         XtVaSetValues(w, XmNset, True, 0);
  586.     }
  587.     else if (w == fep->ask_toggle) {
  588.         XtVaSetValues(fep->send_text_toggle, XmNset, False, 0);
  589.         XtVaSetValues(fep->send_html_toggle, XmNset, False, 0);
  590.         XtVaSetValues(fep->send_both_toggle, XmNset, False, 0);
  591.     }
  592.     else if (w == fep->send_text_toggle) {
  593.         XtVaSetValues(fep->ask_toggle, XmNset, False, 0);
  594.         XtVaSetValues(fep->send_html_toggle, XmNset, False, 0);
  595.         XtVaSetValues(fep->send_both_toggle, XmNset, False, 0);
  596.     }
  597.     else if (w == fep->send_html_toggle) {
  598.         XtVaSetValues(fep->ask_toggle, XmNset, False, 0);
  599.         XtVaSetValues(fep->send_text_toggle, XmNset, False, 0);
  600.         XtVaSetValues(fep->send_both_toggle, XmNset, False, 0);
  601.     }
  602.     else if (w == fep->send_both_toggle) {
  603.         XtVaSetValues(fep->ask_toggle, XmNset, False, 0);
  604.         XtVaSetValues(fep->send_text_toggle, XmNset, False, 0);
  605.         XtVaSetValues(fep->send_html_toggle, XmNset, False, 0);
  606.     }
  607.     else
  608.         abort();    
  609. }
  610.  
  611.  
  612.