1998-03-28 05:44:41 +03:00
|
|
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
|
|
*
|
1999-11-03 01:43:10 +03:00
|
|
|
* The contents of this file are subject to the Netscape Public
|
|
|
|
* License Version 1.1 (the "License"); you may not use this file
|
|
|
|
* except in compliance with the License. You may obtain a copy of
|
|
|
|
* the License at http://www.mozilla.org/NPL/
|
1998-03-28 05:44:41 +03:00
|
|
|
*
|
1999-11-03 01:43:10 +03:00
|
|
|
* Software distributed under the License is distributed on an "AS
|
|
|
|
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
|
|
* implied. See the License for the specific language governing
|
|
|
|
* rights and limitations under the License.
|
1998-03-28 05:44:41 +03:00
|
|
|
*
|
1999-11-03 01:43:10 +03:00
|
|
|
* The Original Code is mozilla.org code.
|
|
|
|
*
|
|
|
|
* The Initial Developer of the Original Code is Netscape
|
1998-03-28 05:44:41 +03:00
|
|
|
* Communications Corporation. Portions created by Netscape are
|
1999-11-03 01:43:10 +03:00
|
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All
|
|
|
|
* Rights Reserved.
|
|
|
|
*
|
|
|
|
* Contributor(s):
|
1998-03-28 05:44:41 +03:00
|
|
|
*/
|
|
|
|
|
|
|
|
#include "mozilla.h"
|
|
|
|
#include "xfe.h"
|
|
|
|
#include "fonts.h"
|
|
|
|
|
|
|
|
#include <Xm/LabelG.h>
|
|
|
|
#include <Xm/Label.h>
|
|
|
|
#include <XmL/Folder.h>
|
|
|
|
|
|
|
|
#include <Xfe/Xfe.h> /* for xfe widgets and utilities */
|
|
|
|
|
|
|
|
extern void*
|
|
|
|
fe_compose_getData(MWContext* context);
|
|
|
|
extern void*
|
|
|
|
fe_compose_setData(MWContext* context, void* data);
|
|
|
|
|
|
|
|
extern void
|
|
|
|
fe_mc_field_lostfocus(Widget widget, XtPointer closure, XtPointer call_data);
|
|
|
|
|
|
|
|
extern void
|
|
|
|
fe_mc_field_changed(Widget widget, XtPointer closure, XtPointer call_data);
|
|
|
|
|
|
|
|
extern WidgetList
|
|
|
|
fe_create_composition_widgets(MWContext* context, Widget pane, int *numkids);
|
|
|
|
|
|
|
|
|
|
|
|
typedef enum {
|
|
|
|
|
|
|
|
MailComposeLayoutAddress,
|
|
|
|
MailComposeLayoutAttach,
|
|
|
|
MailComposeLayoutCompose
|
|
|
|
|
|
|
|
} MailComposeLayoutType;
|
|
|
|
|
|
|
|
|
|
|
|
/* fe_MailComposeContextData *mailcomposer = 0;*/ /*Temporary*/
|
|
|
|
|
|
|
|
#define MAILCOMPOSE_CONTEXT_DATA(context) ((fe_MailComposeContextData*)(fe_compose_getData(context)))
|
|
|
|
|
|
|
|
#include <xpgetstr.h> /* for XP_GetString() */
|
|
|
|
extern int XFE_PRI_URGENT;
|
|
|
|
extern int XFE_PRI_IMPORTANT;
|
|
|
|
extern int XFE_PRI_NORMAL;
|
|
|
|
extern int XFE_PRI_FYI;
|
|
|
|
extern int XFE_PRI_JUNK;
|
|
|
|
extern int XFE_PRI_PRIORITY;
|
|
|
|
extern int XFE_COMPOSE_LABEL;
|
|
|
|
extern int XFE_COMPOSE_ADDRESSING;
|
|
|
|
extern int XFE_COMPOSE_ATTACHMENT;
|
|
|
|
extern int XFE_COMPOSE_COMPOSE;
|
|
|
|
|
|
|
|
static void createDummy(Widget parent, char *name)
|
|
|
|
{
|
|
|
|
XtVaCreateManagedWidget(name,
|
|
|
|
xmLabelWidgetClass, parent,
|
|
|
|
XmNtopAttachment, XmATTACH_FORM,
|
|
|
|
XmNbottomAttachment, XmATTACH_FORM,
|
|
|
|
XmNleftAttachment, XmATTACH_FORM,
|
|
|
|
XmNrightAttachment, XmATTACH_FORM,
|
|
|
|
XmNmarginWidth, 80,
|
|
|
|
XmNmarginHeight, 60,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
static Widget
|
|
|
|
createOptionMenu(MWContext *context,
|
|
|
|
Widget parent,
|
|
|
|
char* widgetName,
|
|
|
|
char* labelName,
|
|
|
|
Widget *popup)
|
|
|
|
{
|
|
|
|
Cardinal ac;
|
|
|
|
Arg av[10];
|
|
|
|
Visual *v = 0;
|
|
|
|
Colormap cmap = 0;
|
|
|
|
Cardinal depth =0;
|
|
|
|
Widget option_menu;
|
|
|
|
XmString xmStr = 0;
|
|
|
|
|
|
|
|
Widget shell = parent;
|
|
|
|
|
|
|
|
|
|
|
|
while (shell && !XtIsShell(shell)) shell = XtParent(shell);
|
|
|
|
XtVaGetValues(shell,
|
|
|
|
XtNvisual, &v, XtNcolormap, &cmap, XtNdepth, &depth, 0);
|
|
|
|
|
|
|
|
ac = 0;
|
|
|
|
XtSetArg(av[ac], XmNvisual, v); ac++;
|
|
|
|
XtSetArg(av[ac], XmNdepth, depth); ac++;
|
|
|
|
XtSetArg(av[ac], XmNcolormap, cmap); ac ++;
|
|
|
|
*popup= XmCreatePulldownMenu(parent, widgetName, av, ac);
|
|
|
|
|
|
|
|
ac = 0;
|
|
|
|
XtSetArg(av[ac], XmNsubMenuId, *popup); ac++;
|
|
|
|
XtSetArg(av[ac], XmNmarginWidth, 0); ac++;
|
|
|
|
if (labelName && *labelName)
|
|
|
|
{
|
|
|
|
xmStr = XmStringCreateSimple(labelName);
|
|
|
|
XtSetArg(av[ac], XmNlabelString, xmStr); ac++;
|
|
|
|
}
|
|
|
|
option_menu = XmCreateOptionMenu(parent, widgetName, av, ac);
|
|
|
|
if (xmStr) XmStringFree(xmStr);
|
|
|
|
|
|
|
|
return option_menu;
|
|
|
|
}
|
|
|
|
|
|
|
|
Widget
|
|
|
|
makeOptionMenu(MWContext *context, Widget parent)
|
|
|
|
{
|
|
|
|
int i;
|
|
|
|
int ac = 0;
|
|
|
|
Arg av[20];
|
|
|
|
Widget optionW = 0;
|
|
|
|
Widget popUpW = 0;
|
|
|
|
XmString xmStr;
|
|
|
|
Widget btn;
|
|
|
|
|
|
|
|
int priorityCnt= 5; /* May need to get from somewhere */
|
|
|
|
optionW = createOptionMenu(context, parent, "priorityOption",
|
|
|
|
XP_GetString(XFE_PRI_PRIORITY), &popUpW);
|
|
|
|
|
|
|
|
for ( i = 0; i < priorityCnt; i++ )
|
|
|
|
{
|
|
|
|
xmStr = XmStringCreateSimple(XP_GetString(XFE_PRI_URGENT+i));
|
|
|
|
ac = 0;
|
|
|
|
XtSetArg(av[ac], XmNuserData, i); ac++;
|
|
|
|
XtSetArg(av[ac], XmNlabelString, xmStr); ac++;
|
|
|
|
btn = XmCreatePushButtonGadget(popUpW, "attrBtn", av, ac);
|
|
|
|
XtManageChild(btn);
|
|
|
|
if ( i == 2 ) /* Normal */
|
|
|
|
XtVaSetValues(optionW, XmNmenuHistory, btn, 0);
|
|
|
|
XmStringFree(xmStr);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
XtManageChild(optionW);
|
|
|
|
|
|
|
|
return optionW;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static Widget
|
|
|
|
createManagedCompose(MWContext *context, Widget pane)
|
|
|
|
{
|
|
|
|
|
|
|
|
int ac = 0;
|
|
|
|
char name[30];
|
|
|
|
char buf[100];
|
|
|
|
fe_ContextData* data = CONTEXT_DATA(context);
|
|
|
|
Widget form;
|
|
|
|
Widget secureW;
|
|
|
|
Widget optionW;
|
|
|
|
Widget subjectTextW;
|
|
|
|
Widget subjectLabelW;
|
1998-09-21 08:43:33 +04:00
|
|
|
/* XmFontList fontList; */
|
1998-03-28 05:44:41 +03:00
|
|
|
Arg av[20];
|
|
|
|
Widget composeform;
|
|
|
|
|
|
|
|
ac = 0;
|
|
|
|
XtSetArg(av[ac], XmNresizePolicy, XmRESIZE_GROW); ac++;
|
|
|
|
composeform = XmCreateForm(pane, "mailto_field", av, ac);
|
|
|
|
|
|
|
|
ac = 0;
|
|
|
|
XtSetArg(av[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
|
|
|
|
XtSetArg(av[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
|
|
|
|
XtSetArg(av[ac], XmNtopAttachment, XmATTACH_FORM); ac++;
|
|
|
|
XtSetArg(av[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
|
|
|
|
form = XmCreateForm(composeform, "mailto_field", av, ac);
|
|
|
|
XtManageChild(form);
|
|
|
|
|
|
|
|
/* Create a secure button */
|
|
|
|
ac = 0;
|
|
|
|
XtSetArg(av[ac], XmNleftAttachment, XmATTACH_NONE); ac++;
|
|
|
|
XtSetArg(av[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
|
|
|
|
XtSetArg(av[ac], XmNtopAttachment, XmATTACH_FORM); ac++;
|
|
|
|
XtSetArg(av[ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
|
|
|
|
secureW = XmCreateToggleButtonGadget(form, "secureToggle", av, ac);
|
|
|
|
XtManageChild(secureW);
|
|
|
|
|
|
|
|
/* Create a priority option */
|
|
|
|
optionW = makeOptionMenu(context, form);
|
|
|
|
|
|
|
|
XtVaSetValues( optionW,
|
|
|
|
XmNleftAttachment, XmATTACH_NONE,
|
|
|
|
XmNrightAttachment, XmATTACH_WIDGET,
|
|
|
|
XmNrightWidget, secureW,
|
|
|
|
XmNrightOffset, 5,
|
|
|
|
XmNtopAttachment, XmATTACH_FORM,
|
|
|
|
XmNbottomAttachment, XmATTACH_FORM,
|
|
|
|
NULL);
|
|
|
|
|
|
|
|
/* Create the text field */
|
|
|
|
|
|
|
|
PR_snprintf(name, sizeof (name), "%s", "subject");
|
|
|
|
ac = 0;
|
|
|
|
XtSetArg(av[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
|
|
|
|
XtSetArg(av[ac], XmNtopAttachment, XmATTACH_FORM); ac++;
|
|
|
|
XtSetArg(av[ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
|
|
|
|
XtSetArg(av[ac], XmNrightAttachment, XmATTACH_WIDGET); ac++;
|
|
|
|
XtSetArg(av[ac], XmNrightOffset, 5); ac++;
|
|
|
|
XtSetArg(av[ac], XmNrightWidget, optionW); ac++;
|
|
|
|
subjectTextW = fe_CreateTextField(form, name, av, ac);
|
|
|
|
if (fe_globalData.nonterminal_text_translations) {
|
|
|
|
XtOverrideTranslations(subjectTextW,
|
|
|
|
fe_globalData.nonterminal_text_translations);
|
|
|
|
}
|
|
|
|
XtAddCallback(subjectTextW, XmNvalueChangedCallback, fe_mc_field_changed,
|
|
|
|
(XtPointer)MSG_SUBJECT_HEADER_MASK);
|
|
|
|
XtAddCallback(subjectTextW, XmNlosingFocusCallback, fe_mc_field_lostfocus,
|
|
|
|
(XtPointer)MSG_SUBJECT_HEADER_MASK );
|
|
|
|
|
|
|
|
ac = 0;
|
|
|
|
XtSetArg(av[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
|
|
|
|
XtSetArg(av[ac], XmNtopAttachment, XmATTACH_FORM); ac++;
|
|
|
|
XtSetArg(av[ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
|
|
|
|
XtSetArg(av[ac], XmNrightAttachment, XmATTACH_WIDGET); ac++;
|
|
|
|
XtSetArg(av[ac], XmNrightWidget, subjectTextW); ac++;
|
|
|
|
PR_snprintf(buf, sizeof (buf), XP_GetString(XFE_COMPOSE_LABEL), name);
|
|
|
|
subjectLabelW = XmCreateLabelGadget(form, buf, av, ac);
|
|
|
|
|
|
|
|
data->mcSubject = subjectTextW;
|
|
|
|
|
|
|
|
|
|
|
|
/* Subject is not a drop site */
|
|
|
|
|
|
|
|
XtVaSetValues(subjectTextW, XmNleftOffset, XfeWidth(subjectLabelW), 0);
|
|
|
|
|
|
|
|
/* Manage All children here */
|
|
|
|
|
|
|
|
XtManageChild(subjectTextW);
|
|
|
|
XtManageChild(subjectLabelW);
|
|
|
|
|
|
|
|
|
|
|
|
ac = 0;
|
|
|
|
XtSetArg (av[ac], XmNeditMode, XmMULTI_LINE_EDIT); ac++;
|
|
|
|
XtSetArg(av[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
|
|
|
|
XtSetArg(av[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
|
|
|
|
XtSetArg(av[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
|
|
|
|
XtSetArg(av[ac], XmNtopWidget, form); ac++;
|
|
|
|
XtSetArg(av[ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
|
|
|
|
XtSetArg(av[ac], XmNtopOffset, 5); ac++;
|
|
|
|
data->mcBodyText =
|
|
|
|
XmCreateScrolledText(composeform, "mailto_bodyText", av, ac);
|
|
|
|
XtManageChild(data->mcBodyText);
|
|
|
|
|
|
|
|
XtVaSetValues(XtParent(data->mcBodyText),
|
|
|
|
XmNtopAttachment, XmATTACH_WIDGET,
|
|
|
|
XmNtopWidget, form,
|
|
|
|
XmNleftAttachment, XmATTACH_FORM,
|
|
|
|
XmNbottomAttachment, XmATTACH_FORM,
|
|
|
|
XmNrightAttachment, XmATTACH_FORM, NULL);
|
|
|
|
|
|
|
|
XtManageChild(composeform);
|
|
|
|
return composeform;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
extern Widget
|
|
|
|
fe_MailComposeAddress_CreateManaged(MWContext* context, Widget parent)
|
|
|
|
{
|
|
|
|
Widget frame;
|
|
|
|
WidgetList formList;
|
|
|
|
int k = 0;
|
|
|
|
Arg av[10];
|
|
|
|
int ac = 0;
|
|
|
|
Widget pane;
|
|
|
|
|
|
|
|
pane = XmCreatePanedWindow(parent, "pane2", av, ac);
|
|
|
|
XtVaSetValues(pane, XmNseparatorOn, True, 0);
|
|
|
|
|
|
|
|
ac =0;
|
|
|
|
frame = XmCreateFrame(pane, "frame1", av, ac);
|
|
|
|
XtVaSetValues(frame, XmNtopAttachment, XmATTACH_FORM,
|
|
|
|
XmNbottomAttachment, XmATTACH_NONE,
|
|
|
|
XmNleftAttachment, XmATTACH_FORM,
|
|
|
|
XmNrightAttachment, XmATTACH_FORM,
|
|
|
|
0);
|
|
|
|
|
|
|
|
XtManageChild(frame);
|
|
|
|
|
|
|
|
formList = fe_create_composition_widgets(context, frame, &k);
|
|
|
|
XtManageChildren(formList, k);
|
|
|
|
XtManageChild(frame);
|
|
|
|
|
|
|
|
return pane;
|
|
|
|
}
|
|
|
|
|
|
|
|
extern Widget fe_make_managed_attach_form(MWContext* context, Widget parent);
|
|
|
|
extern Widget
|
|
|
|
fe_MailComposeAttach_CreateManaged(MWContext* context, Widget parent)
|
|
|
|
{
|
|
|
|
Widget messb;
|
|
|
|
|
|
|
|
messb = fe_make_managed_attach_form(context, parent);
|
|
|
|
|
|
|
|
return messb;
|
|
|
|
}
|
|
|
|
|
|
|
|
static Widget
|
|
|
|
fe_MailCompose_CreateManaged(MWContext* context, Widget parent)
|
|
|
|
{
|
|
|
|
Widget compose;
|
|
|
|
|
|
|
|
compose =
|
|
|
|
createManagedCompose(context, parent);
|
|
|
|
|
|
|
|
return compose;
|
|
|
|
}
|
|
|
|
|
|
|
|
static Widget
|
|
|
|
fe_MailComposeContainer_CreateManaged(MWContext* context)
|
|
|
|
{
|
|
|
|
fe_MailComposeContextData *data = MAILCOMPOSE_CONTEXT_DATA(context);
|
|
|
|
Widget container;
|
|
|
|
Widget address;
|
|
|
|
Widget attach;
|
1998-09-21 08:43:33 +04:00
|
|
|
/* Arg av[10]; */
|
|
|
|
/* int ac = 0; */
|
1998-03-28 05:44:41 +03:00
|
|
|
|
|
|
|
data->container = container =
|
|
|
|
XtVaCreateManagedWidget("mailcompose_container",
|
|
|
|
xmFormWidgetClass, data->parentFolder,
|
|
|
|
XmNtopAttachment, XmATTACH_FORM,
|
|
|
|
XmNbottomAttachment,XmATTACH_FORM,
|
|
|
|
XmNleftAttachment, XmATTACH_FORM,
|
|
|
|
XmNrightAttachment, XmATTACH_FORM,
|
|
|
|
XmNresizePolicy, XmRESIZE_GROW,
|
|
|
|
0);
|
|
|
|
|
|
|
|
data->address = fe_MailComposeAddress_CreateManaged(context, container);
|
|
|
|
data->attach = fe_MailComposeAttach_CreateManaged(context, container);
|
|
|
|
data->compose = fe_MailCompose_CreateManaged(context, container);
|
|
|
|
return container;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static Widget
|
|
|
|
fe_MailComposeWin_AddTab( MWContext* context, char *tabName)
|
|
|
|
{
|
|
|
|
fe_MailComposeContextData *data = MAILCOMPOSE_CONTEXT_DATA(context);
|
|
|
|
Widget parentFolder;
|
|
|
|
Widget tab;
|
|
|
|
XmString xmstr = 0;
|
|
|
|
|
|
|
|
if (!data) return NULL;
|
|
|
|
parentFolder = data->parentFolder;
|
|
|
|
|
|
|
|
xmstr = XmStringCreateSimple(tabName);
|
|
|
|
tab = XmLFolderAddTabForm(parentFolder, xmstr);
|
|
|
|
XtVaSetValues(tab, XmNtopAttachment, XmATTACH_FORM,
|
|
|
|
XmNbottomAttachment, XmATTACH_FORM,
|
|
|
|
XmNleftAttachment, XmATTACH_FORM,
|
|
|
|
XmNrightAttachment, XmATTACH_FORM,
|
|
|
|
XmNresizePolicy, XmRESIZE_GROW,
|
|
|
|
NULL);
|
|
|
|
|
|
|
|
|
|
|
|
XmStringFree(xmstr);
|
|
|
|
return tab;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static Widget
|
|
|
|
fe_MailComposeWin_CreateFolders(MWContext* context)
|
|
|
|
{
|
|
|
|
|
|
|
|
fe_MailComposeContextData *data = MAILCOMPOSE_CONTEXT_DATA(context);
|
|
|
|
|
|
|
|
Widget folder;
|
|
|
|
Widget parent;
|
|
|
|
|
|
|
|
|
|
|
|
if (!data) return NULL;
|
|
|
|
|
|
|
|
parent = data->parent;
|
|
|
|
|
|
|
|
folder = XtVaCreateManagedWidget("composeFolder",
|
|
|
|
xmlFolderWidgetClass, parent,
|
|
|
|
NULL);
|
|
|
|
|
|
|
|
return folder;
|
|
|
|
}
|
|
|
|
|
|
|
|
static fe_MailComposeContextData *
|
|
|
|
fe_MailComposeWin_CreateContext(MWContext *context)
|
|
|
|
{
|
|
|
|
fe_MailComposeContextData *data = MAILCOMPOSE_CONTEXT_DATA(context);
|
|
|
|
|
|
|
|
if ( !data )
|
|
|
|
data = (fe_MailComposeContextData*)
|
|
|
|
malloc(sizeof(fe_MailComposeContextData));
|
|
|
|
|
|
|
|
data->tab_number = 0;
|
|
|
|
|
|
|
|
data->parent = 0;
|
|
|
|
data->container = 0;
|
|
|
|
data->parentFolder = 0;
|
|
|
|
|
|
|
|
data->address = 0;
|
|
|
|
data->attach = 0;
|
|
|
|
data->compose = 0;
|
|
|
|
|
|
|
|
data->address_tab = 0;
|
|
|
|
data->attach_tab = 0;
|
|
|
|
data->compose_tab = 0;
|
|
|
|
|
|
|
|
return data;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
fe_MailComposeWin_DestroyContext(MWContext *context)
|
|
|
|
{
|
|
|
|
fe_MailComposeContextData *data = MAILCOMPOSE_CONTEXT_DATA(context);
|
|
|
|
|
|
|
|
if ( !data )
|
|
|
|
return;
|
|
|
|
|
|
|
|
XtDestroyWidget(data->parentFolder);
|
|
|
|
|
|
|
|
/* Remember to destroy mad from the context */
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
mailcompose_layout(fe_MailComposeContextData *data,
|
|
|
|
MailComposeLayoutType type)
|
|
|
|
{
|
|
|
|
Widget manage= 0, unmanage = 0;
|
|
|
|
|
|
|
|
switch (type)
|
|
|
|
{
|
|
|
|
case MailComposeLayoutAddress:
|
|
|
|
manage = data->address;
|
|
|
|
unmanage = data->attach;
|
|
|
|
break;
|
|
|
|
case MailComposeLayoutAttach:
|
|
|
|
manage = data->attach;
|
|
|
|
unmanage = data->address;
|
|
|
|
break;
|
|
|
|
case MailComposeLayoutCompose:
|
|
|
|
default:
|
|
|
|
/* Do nothing */
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( manage && unmanage )
|
|
|
|
{
|
|
|
|
XtUnmanageChild(unmanage);
|
|
|
|
|
|
|
|
XtVaSetValues(manage,
|
|
|
|
XmNtopAttachment, XmATTACH_FORM,
|
|
|
|
XmNbottomAttachment, XmATTACH_NONE,
|
|
|
|
XmNleftAttachment, XmATTACH_FORM,
|
|
|
|
XmNrightAttachment, XmATTACH_FORM,
|
|
|
|
0);
|
|
|
|
|
|
|
|
XtVaSetValues(data->compose,
|
|
|
|
XmNtopAttachment, XmATTACH_WIDGET,
|
|
|
|
XmNtopWidget, manage,
|
|
|
|
XmNtopOffset, 6,
|
|
|
|
XmNbottomAttachment, XmATTACH_FORM,
|
|
|
|
XmNleftAttachment, XmATTACH_FORM,
|
|
|
|
XmNrightAttachment, XmATTACH_FORM,
|
|
|
|
0);
|
|
|
|
XtManageChild(manage);
|
|
|
|
}
|
|
|
|
else if (type ==MailComposeLayoutCompose )
|
|
|
|
{
|
|
|
|
XtUnmanageChild(data->address);
|
|
|
|
XtUnmanageChild(data->attach);
|
|
|
|
XtVaSetValues(data->compose,
|
|
|
|
XmNtopAttachment, XmATTACH_FORM,
|
|
|
|
XmNbottomAttachment, XmATTACH_FORM,
|
|
|
|
XmNleftAttachment, XmATTACH_FORM,
|
|
|
|
XmNrightAttachment, XmATTACH_FORM,
|
|
|
|
0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
extern void
|
|
|
|
fe_make_new_attach_list(MWContext *context);
|
|
|
|
|
|
|
|
static void
|
|
|
|
activateTab(Widget w, XtPointer clientData, XtPointer callData)
|
|
|
|
{
|
|
|
|
XmLFolderCallbackStruct *cb = (XmLFolderCallbackStruct *)callData;
|
|
|
|
|
|
|
|
MWContext *context = (MWContext *)clientData;
|
|
|
|
fe_ContextData* data = CONTEXT_DATA(context);
|
|
|
|
String text;
|
|
|
|
XmTextPosition pos;
|
|
|
|
fe_MailComposeContextData *maildata = MAILCOMPOSE_CONTEXT_DATA(context);
|
|
|
|
|
|
|
|
XtVaSetValues(maildata->address_tab, XmNtabManagedWidget, NULL, 0);
|
|
|
|
XtVaSetValues(maildata->attach_tab, XmNtabManagedWidget, NULL, 0);
|
|
|
|
XtVaSetValues(maildata->compose_tab, XmNtabManagedWidget, NULL, 0);
|
|
|
|
XmProcessTraversal(w, XmTRAVERSE_DOWN);
|
|
|
|
|
|
|
|
if ( cb->pos == 0 )
|
|
|
|
{
|
|
|
|
mailcompose_layout(maildata, MailComposeLayoutAddress);
|
|
|
|
XtVaSetValues(maildata->address_tab, XmNtabManagedWidget, maildata->container,0);
|
|
|
|
XmProcessTraversal (data->mcSubject, XmTRAVERSE_CURRENT);
|
|
|
|
}
|
|
|
|
else if (cb->pos == 1 )
|
|
|
|
{
|
|
|
|
mailcompose_layout(maildata, MailComposeLayoutAttach);
|
|
|
|
fe_make_new_attach_list(context);
|
|
|
|
XtVaSetValues(maildata->attach_tab, XmNtabManagedWidget, maildata->container,0);
|
|
|
|
XmProcessTraversal (data->mcSubject, XmTRAVERSE_CURRENT);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
mailcompose_layout(maildata, MailComposeLayoutCompose);
|
|
|
|
XtVaSetValues(maildata->compose_tab, XmNtabManagedWidget, maildata->container,0);
|
|
|
|
XmProcessTraversal (data->mcSubject, XmTRAVERSE_CURRENT);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Widget
|
|
|
|
fe_MailComposeWin_Create(MWContext* context, Widget parent)
|
|
|
|
{
|
|
|
|
|
|
|
|
XmFontList fontList;
|
|
|
|
Widget mainForm = 0;
|
|
|
|
fe_MailComposeContextData *data = MAILCOMPOSE_CONTEXT_DATA(context);
|
|
|
|
WidgetList formList2;
|
|
|
|
int j;
|
|
|
|
|
|
|
|
|
|
|
|
if ( !data )
|
|
|
|
/* Create a new one */
|
|
|
|
data = fe_MailComposeWin_CreateContext(context);
|
|
|
|
fe_compose_setData(context, (void *)data);
|
|
|
|
data->parent = parent;
|
|
|
|
|
|
|
|
mainForm = fe_MailComposeWin_CreateFolders(context);
|
|
|
|
data->parentFolder = mainForm;
|
|
|
|
/* Create the Container */
|
|
|
|
{
|
|
|
|
data->container =
|
|
|
|
fe_MailComposeContainer_CreateManaged(context);
|
|
|
|
}
|
|
|
|
/* Create Addressing */
|
|
|
|
{
|
|
|
|
XmString xmStr;
|
|
|
|
|
|
|
|
xmStr = XmStringCreateSimple(XP_GetString(XFE_COMPOSE_ADDRESSING));
|
|
|
|
data->address_tab = XmLFolderAddTab(data->parentFolder, xmStr);
|
|
|
|
XmStringFree(xmStr);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Create Attachment */
|
|
|
|
{
|
|
|
|
XmString xmStr;
|
|
|
|
|
|
|
|
xmStr = XmStringCreateSimple(XP_GetString(XFE_COMPOSE_ATTACHMENT));
|
|
|
|
data->attach_tab = XmLFolderAddTab(data->parentFolder, xmStr);
|
|
|
|
XmStringFree(xmStr);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Create Compose */
|
|
|
|
{
|
|
|
|
XmString xmStr;
|
|
|
|
|
|
|
|
xmStr = XmStringCreateSimple(XP_GetString(XFE_COMPOSE_COMPOSE));
|
|
|
|
data->compose_tab = XmLFolderAddTab(data->parentFolder, xmStr);
|
|
|
|
XmStringFree(xmStr);
|
|
|
|
}
|
|
|
|
|
|
|
|
XtAddCallback(data->parentFolder, XmNactivateCallback,
|
|
|
|
activateTab, context);
|
|
|
|
|
|
|
|
return (mainForm);
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
fe_MailComposeWin_Activate(MWContext *context)
|
|
|
|
{
|
|
|
|
XmLFolderSetActiveTab(MAILCOMPOSE_CONTEXT_DATA(context)->parentFolder, 0, True);
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
fe_MailComposeWin_ActivateFolder(MWContext *context, int pos)
|
|
|
|
{
|
|
|
|
XmLFolderSetActiveTab(MAILCOMPOSE_CONTEXT_DATA(context)->parentFolder, pos, True);
|
|
|
|
}
|
|
|
|
|