No code changes, only comments. Makes the xfe LXR pages better. Approved by don. Thanks do Dawn Endico <dawn@cannibal.mi.org> for providing the patch. git-svn-id: svn://10.0.0.236/trunk@5087 18797224-902f-48f8-a5cc-f745e15eee43
519 lines
14 KiB
C++
519 lines
14 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
*
|
|
* The contents of this file are subject to the Netscape Public License
|
|
* Version 1.0 (the "NPL"); you may not use this file except in
|
|
* compliance with the NPL. You may obtain a copy of the NPL at
|
|
* http://www.mozilla.org/NPL/
|
|
*
|
|
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
|
* for the specific language governing rights and limitations under the
|
|
* NPL.
|
|
*
|
|
* The Initial Developer of this code under the NPL is Netscape
|
|
* Communications Corporation. Portions created by Netscape are
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
|
* Reserved.
|
|
*/
|
|
/*
|
|
ABNameGenTab.cpp -- class definition for XFE_ABNameGenTabView
|
|
Created: Tao Cheng <tao@netscape.com>, 12-nov-96
|
|
*/
|
|
|
|
#include "PropertySheetView.h"
|
|
#include "ABNameFolderDlg.h"
|
|
#include "ABNameGenTab.h"
|
|
#include "AddrBookView.h"
|
|
|
|
#include <Xm/Form.h>
|
|
#include <Xm/TextF.h>
|
|
#include <Xm/Text.h>
|
|
#include <Xm/Separator.h>
|
|
|
|
#include <Xm/ToggleB.h>
|
|
#include <Xm/LabelG.h>
|
|
|
|
#include "felocale.h"
|
|
#include "xpgetstr.h"
|
|
|
|
extern int XFE_AB_NAME_CARD_FOR;
|
|
extern int XFE_AB_NAME_NEW_CARD;
|
|
|
|
extern int XFE_AB_NAME_GENERAL_TAB;
|
|
extern int XFE_AB_DISPLAYNAME;
|
|
extern int XFE_AB_FIRSTNAME;
|
|
extern int XFE_AB_LASTNAME;
|
|
extern int XFE_AB_COMPANY;
|
|
extern int XFE_AB_TITLE;
|
|
extern int XFE_AB_EMAIL;
|
|
extern int XFE_AB_NICKNAME;
|
|
extern int XFE_AB_NOTES;
|
|
extern int XFE_AB_PREFHTML;
|
|
|
|
XFE_ABNameGenTabView::XFE_ABNameGenTabView(XFE_Component *top,
|
|
XFE_View *view):
|
|
XFE_PropertyTabView(top, view, XFE_AB_NAME_GENERAL_TAB)
|
|
{
|
|
m_userDefined = False;
|
|
|
|
int ac, numForms = AB_LAST+2;
|
|
Arg av[20];
|
|
Widget topForm = getBaseWidget(),
|
|
label = NULL,
|
|
stripForm[AB_LAST+2];
|
|
char *genTabLabels[AB_LAST+1];
|
|
Dimension width;
|
|
|
|
genTabLabels[AB_FIRST_NAME] = XP_GetString(XFE_AB_FIRSTNAME);
|
|
genTabLabels[AB_LAST_NAME] = XP_GetString(XFE_AB_LASTNAME);
|
|
genTabLabels[AB_DISPLAY_NAME] = XP_GetString(XFE_AB_DISPLAYNAME);
|
|
|
|
genTabLabels[AB_EMAIL] = XP_GetString(XFE_AB_EMAIL);
|
|
genTabLabels[AB_NICKNAME] = XP_GetString(XFE_AB_NICKNAME);
|
|
|
|
genTabLabels[AB_TITLE] = XP_GetString(XFE_AB_TITLE);
|
|
genTabLabels[AB_COMPANY_NAME] = XP_GetString(XFE_AB_COMPANY);
|
|
genTabLabels[AB_LAST] = XP_GetString(XFE_AB_NOTES);
|
|
|
|
int i; // for use in multiple for loops...
|
|
// without breaking newer ANSI C++ rules
|
|
for (i=0; i < numForms; i++) {
|
|
ac = 0;
|
|
|
|
stripForm[i] = XmCreateForm(topForm, "strip", av, ac);
|
|
if (i < (AB_LAST+1)) {
|
|
/* Create labels
|
|
*/
|
|
label = XtVaCreateManagedWidget (genTabLabels[i],
|
|
xmLabelGadgetClass, stripForm[i],
|
|
XmNalignment, XmALIGNMENT_END,
|
|
NULL);
|
|
m_labels[i] = label;
|
|
XtVaSetValues(label,
|
|
XmNleftAttachment, XmATTACH_FORM,
|
|
XmNtopAttachment, XmATTACH_FORM,
|
|
XmNrightAttachment, XmATTACH_NONE,
|
|
XmNbottomAttachment, XmATTACH_FORM,
|
|
0);
|
|
XtVaGetValues(label,
|
|
XmNwidth, &width,
|
|
0);
|
|
|
|
m_labelWidth = (m_labelWidth < width)?width:m_labelWidth;
|
|
|
|
/* TextF / Text
|
|
*/
|
|
if (i < AB_LAST) {
|
|
/* TextF
|
|
*/
|
|
ac = 0;
|
|
XtSetArg(av[ac], XmNuserData, i); ac++;
|
|
m_textFs[i] = fe_CreateTextField(stripForm[i],
|
|
(char *) genTabLabels[i],
|
|
av, ac);
|
|
if (i <= AB_DISPLAY_NAME) {
|
|
XtAddCallback(m_textFs[i],
|
|
XmNvalueChangedCallback,
|
|
XFE_ABNameGenTabView::textFValChgCallback,
|
|
this);
|
|
|
|
}/* if */
|
|
|
|
XtVaSetValues(m_textFs[i],
|
|
XmNleftAttachment, XmATTACH_WIDGET,
|
|
XmNleftWidget, label,
|
|
XmNtopAttachment, XmATTACH_FORM,
|
|
XmNrightAttachment, XmATTACH_FORM,
|
|
XmNbottomAttachment, XmATTACH_FORM,
|
|
0);
|
|
XtManageChild(m_textFs[i]);
|
|
}/* if */
|
|
else {
|
|
/* Text
|
|
*/
|
|
ac = 0;
|
|
XtSetArg (av[ac], XmNheight, 100); ac++;
|
|
XtSetArg (av[ac], XmNeditMode, XmMULTI_LINE_EDIT); ac++;
|
|
m_notesTxt = fe_CreateText(stripForm[i], "notesText", av, ac);
|
|
XtVaSetValues(m_notesTxt,
|
|
XmNleftAttachment, XmATTACH_WIDGET,
|
|
XmNleftWidget, label,
|
|
XmNtopAttachment, XmATTACH_FORM,
|
|
XmNrightAttachment, XmATTACH_FORM,
|
|
XmNbottomAttachment, XmATTACH_FORM,
|
|
0);
|
|
XtManageChild(m_notesTxt);
|
|
|
|
}/* else */
|
|
}/* if */
|
|
else {
|
|
/* the toggle */
|
|
XmString xmstr;
|
|
xmstr = XmStringCreate(XP_GetString(XFE_AB_PREFHTML),
|
|
XmFONTLIST_DEFAULT_TAG);
|
|
ac = 0;
|
|
XtSetArg (av[ac], XmNlabelString, xmstr); ac++;
|
|
m_prefHTMLTog = XmCreateToggleButton(stripForm[i], "prefHTMLTog",
|
|
av, ac);
|
|
XtVaSetValues(m_prefHTMLTog,
|
|
XmNleftAttachment, XmATTACH_FORM,
|
|
XmNleftOffset, m_labelWidth,
|
|
XmNtopAttachment, XmATTACH_FORM,
|
|
XmNrightAttachment, XmATTACH_NONE,
|
|
XmNbottomAttachment, XmATTACH_FORM,
|
|
0);
|
|
XtManageChild(m_prefHTMLTog);
|
|
|
|
}/* else */
|
|
if (i == 0)
|
|
XtVaSetValues(stripForm[i],
|
|
XmNleftAttachment, XmATTACH_FORM,
|
|
XmNrightAttachment, XmATTACH_FORM,
|
|
XmNtopAttachment, XmATTACH_FORM,
|
|
XmNtopOffset, 10,
|
|
0);
|
|
else
|
|
XtVaSetValues(stripForm[i],
|
|
XmNleftAttachment, XmATTACH_FORM,
|
|
XmNrightAttachment, XmATTACH_FORM,
|
|
XmNtopAttachment, XmATTACH_WIDGET,
|
|
XmNtopWidget, stripForm[i-1],
|
|
XmNtopOffset, (i == AB_TITLE ||
|
|
i == AB_EMAIL ||
|
|
i == AB_LAST)?10:3,
|
|
0);
|
|
XtManageChild(stripForm[i]);
|
|
}/* for i */
|
|
for (i=0; i < (AB_LAST+1); i++) {
|
|
XtVaSetValues(m_labels[i],
|
|
XmNwidth, m_labelWidth,
|
|
0);
|
|
}/* for i */
|
|
|
|
}
|
|
|
|
XFE_ABNameGenTabView::~XFE_ABNameGenTabView()
|
|
{
|
|
}
|
|
|
|
void
|
|
XFE_ABNameGenTabView::textFValChgCallback(Widget w,
|
|
XtPointer clientData,
|
|
XtPointer callData)
|
|
{
|
|
XFE_ABNameGenTabView *obj = (XFE_ABNameGenTabView *) clientData;
|
|
obj->textFValChgCB(w, callData);
|
|
}
|
|
|
|
void
|
|
XFE_ABNameGenTabView::textFValChgCB(Widget w, XtPointer /* callData */)
|
|
{
|
|
if (m_userDefined)
|
|
// shall we remove CB ??
|
|
return;
|
|
|
|
int which = -1;
|
|
XtVaGetValues(w,
|
|
XmNuserData, &which,
|
|
0);
|
|
if (which == AB_DISPLAY_NAME) {
|
|
Widget focusW = XmGetFocusWidget(getBaseWidget());
|
|
if (w == focusW) {
|
|
char *tmp = fe_GetTextField(m_textFs[AB_DISPLAY_NAME]);
|
|
if (tmp && XP_STRLEN(tmp))
|
|
m_userDefined = True;
|
|
}/* if */
|
|
#if defined(DEBUG_tao_)
|
|
printf("\n--XFE_ABNameGenTabView::textFValChgCB--%d,%x,%x\n",
|
|
which, w, focusW);
|
|
#endif /* */
|
|
return;
|
|
}/* if */
|
|
|
|
char *firstName = fe_GetTextField(m_textFs[AB_FIRST_NAME]),
|
|
*lastName = fe_GetTextField(m_textFs[AB_LAST_NAME]),
|
|
*dplyName = NULL;
|
|
|
|
#if defined(USE_ABCOM)
|
|
int error = AB_GenerateDefaultDisplayName(firstName,
|
|
lastName,
|
|
&dplyName);
|
|
fe_SetTextField(m_textFs[AB_DISPLAY_NAME],
|
|
dplyName?dplyName:"");
|
|
XP_FREEIF(dplyName);
|
|
#endif /* USE_ABCOM */
|
|
XmUpdateDisplay(w);
|
|
|
|
}
|
|
|
|
void XFE_ABNameGenTabView::setDlgValues()
|
|
{
|
|
/* Get mode, entryid, and ab_view
|
|
*/
|
|
XFE_ABNameFolderDlg *dlg = (XFE_ABNameFolderDlg *)getToplevel();
|
|
#if defined(USE_ABCOM)
|
|
XFE_PropertySheetView *folderView = (XFE_PropertySheetView *) getParent();
|
|
MSG_Pane *pane = folderView->getPane();
|
|
|
|
uint16 numItems = AB_LAST+2;
|
|
AB_AttribID * attribs = (AB_AttribID *) XP_CALLOC(numItems,
|
|
sizeof(AB_AttribID));
|
|
attribs[AB_FIRST_NAME] = AB_attribGivenName;
|
|
attribs[AB_LAST_NAME] = AB_attribFamilyName;
|
|
attribs[AB_DISPLAY_NAME] = AB_attribDisplayName;
|
|
attribs[AB_EMAIL] = AB_attribEmailAddress;
|
|
attribs[AB_NICKNAME] = AB_attribNickName;
|
|
attribs[AB_TITLE] = AB_attribTitle;
|
|
attribs[AB_COMPANY_NAME] = AB_attribCompanyName;
|
|
attribs[AB_LAST] = AB_attribInfo;
|
|
attribs[AB_LAST+1] = AB_attribHTMLMail;
|
|
|
|
AB_AttributeValue *values = NULL;
|
|
int error = AB_GetPersonEntryAttributes(pane,
|
|
attribs,
|
|
&values,
|
|
&numItems);
|
|
char *tmp = NULL;
|
|
for (int i=0; i < numItems; i++) {
|
|
switch (values[i].attrib) {
|
|
case AB_attribGivenName:
|
|
tmp = values[i].u.string;
|
|
fe_SetTextField(m_textFs[AB_FIRST_NAME],
|
|
tmp?tmp:"");
|
|
break;
|
|
|
|
case AB_attribFamilyName:
|
|
tmp = values[i].u.string;
|
|
fe_SetTextField(m_textFs[AB_LAST_NAME],
|
|
tmp?tmp:"");
|
|
break;
|
|
|
|
case AB_attribDisplayName:
|
|
tmp = values[i].u.string;
|
|
fe_SetTextField(m_textFs[AB_DISPLAY_NAME],
|
|
tmp?tmp:"");
|
|
if (tmp && XP_STRLEN(tmp))
|
|
m_userDefined = True;
|
|
else
|
|
m_userDefined = False;
|
|
break;
|
|
|
|
case AB_attribEmailAddress:
|
|
tmp = values[i].u.string;
|
|
fe_SetTextField(m_textFs[AB_EMAIL],
|
|
tmp?tmp:"");
|
|
break;
|
|
|
|
case AB_attribNickName:
|
|
tmp = values[i].u.string;
|
|
fe_SetTextField(m_textFs[AB_NICKNAME],
|
|
tmp?tmp:"");
|
|
break;
|
|
|
|
case AB_attribTitle:
|
|
tmp = values[i].u.string;
|
|
fe_SetTextField(m_textFs[AB_TITLE],
|
|
tmp?tmp:"");
|
|
break;
|
|
|
|
case AB_attribCompanyName:
|
|
tmp = values[i].u.string;
|
|
fe_SetTextField(m_textFs[AB_COMPANY_NAME],
|
|
tmp?tmp:"");
|
|
break;
|
|
|
|
case AB_attribInfo:
|
|
// AB_attribInfo
|
|
tmp = values[i].u.string;
|
|
fe_SetTextField(m_notesTxt,
|
|
tmp?tmp:"");
|
|
break;
|
|
|
|
case AB_attribHTMLMail:
|
|
XmToggleButtonSetState(m_prefHTMLTog,
|
|
values[i].u.boolValue, FALSE);
|
|
break;
|
|
|
|
default:
|
|
XP_ASSERT(0);
|
|
break;
|
|
|
|
}/* switch */
|
|
}/* for i */
|
|
|
|
XP_FREEIF(attribs);
|
|
AB_FreeEntryAttributeValues(values, numItems);
|
|
|
|
#else
|
|
PersonEntry& entry = dlg->getPersonEntry();
|
|
fe_SetTextField(m_textFs[AB_FIRST_NAME],
|
|
entry.pGivenName?entry.pGivenName:"");
|
|
fe_SetTextField(m_textFs[AB_LAST_NAME],
|
|
entry.pFamilyName?entry.pFamilyName:"");
|
|
fe_SetTextField(m_textFs[AB_COMPANY_NAME],
|
|
entry.pCompanyName?entry.pCompanyName:"");
|
|
fe_SetTextField(m_textFs[AB_TITLE], entry.pTitle?entry.pTitle:"");
|
|
fe_SetTextField(m_textFs[AB_EMAIL],
|
|
entry.pEmailAddress?entry.pEmailAddress:"");
|
|
fe_SetTextField(m_textFs[AB_NICKNAME], entry.pNickName?entry.pNickName:"");
|
|
fe_SetTextField(m_notesTxt, entry.pInfo?entry.pInfo:"");
|
|
XmToggleButtonSetState(m_prefHTMLTog, entry.HTMLmail, FALSE);
|
|
#endif /* USE_ABCOM */
|
|
}
|
|
|
|
void XFE_ABNameGenTabView::getDlgValues()
|
|
{
|
|
#if defined(DEBUG_tao_)
|
|
printf("\n XFE_ABNameGenTabView::getDlgValues \n");
|
|
#endif
|
|
XFE_ABNameFolderDlg *dlg = (XFE_ABNameFolderDlg *)getToplevel();
|
|
#if defined(USE_ABCOM)
|
|
XFE_PropertySheetView *folderView = (XFE_PropertySheetView *) getParent();
|
|
MSG_Pane *pane = folderView->getPane();
|
|
|
|
uint16 numItems = AB_LAST+1;
|
|
AB_AttributeValue *values =
|
|
(AB_AttributeValue *) XP_CALLOC(numItems,
|
|
sizeof(AB_AttributeValue));
|
|
char *tmp = NULL;
|
|
|
|
//
|
|
tmp = fe_GetTextField(m_textFs[AB_FIRST_NAME]);
|
|
values[AB_FIRST_NAME].attrib = AB_attribGivenName;
|
|
if (tmp && strlen(tmp))
|
|
values[AB_FIRST_NAME].u.string = tmp;
|
|
else
|
|
values[AB_FIRST_NAME].u.string = XP_STRDUP("");
|
|
|
|
//
|
|
tmp = fe_GetTextField(m_textFs[AB_LAST_NAME]);
|
|
values[AB_LAST_NAME].attrib = AB_attribFamilyName;
|
|
if (tmp && strlen(tmp))
|
|
values[AB_LAST_NAME].u.string = tmp;
|
|
else
|
|
values[AB_LAST_NAME].u.string = XP_STRDUP("");
|
|
|
|
// AB_attribDisplayName;
|
|
|
|
tmp = fe_GetTextField(m_textFs[AB_DISPLAY_NAME]);
|
|
values[AB_DISPLAY_NAME].attrib = AB_attribDisplayName;
|
|
if (tmp && strlen(tmp))
|
|
values[AB_DISPLAY_NAME].u.string = tmp;
|
|
else
|
|
values[AB_DISPLAY_NAME].u.string = XP_STRDUP("");
|
|
|
|
//
|
|
tmp = fe_GetTextField(m_textFs[AB_EMAIL]);
|
|
values[AB_EMAIL].attrib = AB_attribEmailAddress;
|
|
if (tmp && strlen(tmp))
|
|
values[AB_EMAIL].u.string = tmp;
|
|
else
|
|
values[AB_EMAIL].u.string = XP_STRDUP("");
|
|
|
|
//
|
|
tmp = fe_GetTextField(m_textFs[AB_NICKNAME]);
|
|
values[AB_NICKNAME].attrib = AB_attribNickName;
|
|
if (tmp && strlen(tmp))
|
|
values[AB_NICKNAME].u.string = tmp;
|
|
else
|
|
values[AB_NICKNAME].u.string = XP_STRDUP("");
|
|
|
|
//
|
|
tmp = fe_GetTextField(m_textFs[AB_TITLE]);
|
|
values[AB_TITLE].attrib = AB_attribTitle;
|
|
if (tmp && strlen(tmp))
|
|
values[AB_TITLE].u.string = tmp;
|
|
else
|
|
values[AB_TITLE].u.string = XP_STRDUP("");
|
|
|
|
//
|
|
tmp = fe_GetTextField(m_textFs[AB_COMPANY_NAME]);
|
|
values[AB_COMPANY_NAME].attrib = AB_attribCompanyName;
|
|
if (tmp && strlen(tmp))
|
|
values[AB_COMPANY_NAME].u.string = tmp;
|
|
else
|
|
values[AB_COMPANY_NAME].u.string = XP_STRDUP("");
|
|
|
|
tmp = fe_GetTextField(m_notesTxt);
|
|
values[AB_LAST].attrib = AB_attribInfo;
|
|
if (tmp && strlen(tmp))
|
|
values[AB_LAST].u.string = tmp;
|
|
else
|
|
values[AB_LAST].u.string = XP_STRDUP("");
|
|
|
|
//
|
|
values[AB_LAST].u.boolValue = XmToggleButtonGetState(m_prefHTMLTog);
|
|
values[AB_LAST].attrib = AB_attribHTMLMail;
|
|
|
|
//set values
|
|
int error = AB_SetPersonEntryAttributes(pane,
|
|
values,
|
|
numItems);
|
|
AB_FreeEntryAttributeValues(values, numItems);
|
|
|
|
#else
|
|
PersonEntry& entry = dlg->getPersonEntry();
|
|
|
|
/* setting up the defaults
|
|
*/
|
|
char *tmp;
|
|
|
|
tmp = fe_GetTextField(m_textFs[AB_NICKNAME]);
|
|
if (tmp && strlen(tmp))
|
|
entry.pNickName = tmp;
|
|
else
|
|
entry.pNickName = XP_STRDUP("");
|
|
|
|
tmp = fe_GetTextField(m_textFs[AB_FIRST_NAME]);
|
|
if (tmp && strlen(tmp))
|
|
entry.pGivenName = tmp;
|
|
else
|
|
entry.pGivenName = XP_STRDUP("");
|
|
|
|
tmp = fe_GetTextField(m_textFs[AB_LAST_NAME]);
|
|
if (tmp && strlen(tmp))
|
|
entry.pFamilyName = tmp;
|
|
else
|
|
entry.pFamilyName = XP_STRDUP("");
|
|
|
|
tmp = fe_GetTextField(m_textFs[AB_COMPANY_NAME]);
|
|
if (tmp && strlen(tmp))
|
|
entry.pCompanyName = tmp;
|
|
else
|
|
entry.pCompanyName = XP_STRDUP("");
|
|
|
|
tmp = fe_GetTextField(m_textFs[AB_TITLE]);
|
|
if (tmp && strlen(tmp))
|
|
entry.pTitle = tmp;
|
|
else
|
|
entry.pTitle = XP_STRDUP("");
|
|
|
|
tmp = fe_GetTextField(m_textFs[AB_EMAIL]);
|
|
if (tmp && strlen(tmp))
|
|
entry.pEmailAddress =
|
|
fe_GetTextField(m_textFs[AB_EMAIL]);
|
|
else
|
|
entry.pEmailAddress = XP_STRDUP("");
|
|
|
|
tmp = fe_GetTextField(m_notesTxt);
|
|
if (tmp && strlen(tmp))
|
|
entry.pInfo = tmp;
|
|
else
|
|
entry.pInfo = XP_STRDUP("");
|
|
|
|
entry.HTMLmail = XmToggleButtonGetState(m_prefHTMLTog);
|
|
#endif /* USE_ABCOM */
|
|
|
|
// set title
|
|
if (tmp = dlg->getFullname()) {
|
|
char tmp2[AB_MAX_STRLEN];
|
|
XP_SAFE_SPRINTF(tmp2, sizeof(tmp2),
|
|
XP_GetString(XFE_AB_NAME_CARD_FOR),
|
|
tmp);
|
|
dlg->setCardName(tmp2);
|
|
XP_FREE((char *) tmp);
|
|
}/* if */
|
|
else
|
|
dlg->setCardName(XP_GetString(XFE_AB_NAME_NEW_CARD));
|
|
}
|