Mozilla/mozilla/cmd/xfe/src/NewsgroupPropDialog.cpp
ltabb 8ed5afe62c Free the lizard
git-svn-id: svn://10.0.0.236/trunk@10 18797224-902f-48f8-a5cc-f745e15eee43
1998-03-28 02:44:41 +00:00

393 lines
12 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.
*/
/*
NewsgroupPropDialog.cpp -- property dialogs for news groups.
Created: Chris Toshok <toshok@netscape.com>, 08-Apr-97
*/
#include "NewsgroupPropDialog.h"
#include "PropertySheetView.h"
#include "MNView.h"
#include <Xm/LabelG.h>
#include <Xm/SeparatoG.h>
#include <Xm/Form.h>
#include <Xm/ToggleBG.h>
#include <Xfe/Xfe.h>
#include "xfe.h"
#include "xpgetstr.h"
extern int XFE_GENERAL;
extern int XFE_HTML_NEWSGROUP_MSG;
static XFE_NewsgroupPropDialog *theDialog = NULL;
XFE_NewsgroupPropGeneralTab::XFE_NewsgroupPropGeneralTab(XFE_Component *top,
XFE_View *view,
MSG_FolderInfo *group)
: XFE_PropertyTabView(top, view, XFE_GENERAL)
{
int widest_width;
char buf[100];
char *name_buf;
Widget top_form, middle_form, bottom_form;
Widget sep1, sep2;
Widget name_label, name_value;
Widget location_label, location_value;
Widget unread_label, unread_value;
Widget total_label, total_value;
Widget space_label, space_value;
Widget html_desc;
XmString str;
MSG_FolderLine line;
MSG_NewsHost *host;
m_group = group;
MSG_GetFolderLineById(fe_getMNMaster(), m_group, &line);
int32 sizeOnDisk = MSG_GetFolderSizeOnDisk (line.id);
top_form = XtCreateManagedWidget("top_form",
xmFormWidgetClass,
getBaseWidget(),
NULL, 0);
middle_form = XtCreateManagedWidget("middle_form",
xmFormWidgetClass,
getBaseWidget(),
NULL, 0);
bottom_form = XtCreateManagedWidget("bottom_form",
xmFormWidgetClass,
getBaseWidget(),
NULL, 0);
sep1 = XtCreateManagedWidget("sep1",
xmSeparatorGadgetClass,
getBaseWidget(),
NULL, 0);
sep2 = XtCreateManagedWidget("sep2",
xmSeparatorGadgetClass,
getBaseWidget(),
NULL, 0);
name_label = XtCreateManagedWidget("name_label",
xmLabelGadgetClass,
top_form,
NULL, 0);
if (line.prettyName)
name_buf = PR_smprintf("%s\n(%s)", line.prettyName, line.name);
else
name_buf = strdup(line.name);
str = XmStringCreateLtoR(name_buf, XmFONTLIST_DEFAULT_TAG);
free(name_buf);
name_value = XtVaCreateManagedWidget("name_value",
xmLabelGadgetClass,
top_form,
XmNlabelString, str,
NULL);
XmStringFree(str);
location_label = XtCreateManagedWidget("location_label",
xmLabelGadgetClass,
top_form,
NULL, 0);
host = MSG_GetNewsHostForFolder(m_group);
str = XmStringCreate(host ? (char*)MSG_GetNewsHostName(host) : "", XmFONTLIST_DEFAULT_TAG);
location_value = XtVaCreateManagedWidget("location_value",
xmLabelGadgetClass,
top_form,
XmNlabelString, str,
NULL);
XmStringFree(str);
unread_label = XtCreateManagedWidget("unread_label",
xmLabelGadgetClass,
middle_form,
NULL, 0);
if (line.unseen >=0)
PR_snprintf(buf, sizeof(buf), "%d", line.unseen);
else
strcpy(buf, "???");
str = XmStringCreate(buf, XmFONTLIST_DEFAULT_TAG);
unread_value = XtVaCreateManagedWidget("unread_value",
xmLabelGadgetClass,
middle_form,
XmNlabelString, str,
NULL);
XmStringFree(str);
total_label = XtCreateManagedWidget("total_label",
xmLabelGadgetClass,
middle_form,
NULL, 0);
PR_snprintf(buf, sizeof(buf), "%d", line.total);
str = XmStringCreate(buf, XmFONTLIST_DEFAULT_TAG);
total_value = XtVaCreateManagedWidget("total_value",
xmLabelGadgetClass,
middle_form,
XmNlabelString, str,
NULL);
XmStringFree(str);
space_label = XtCreateManagedWidget("space_label",
xmLabelGadgetClass,
middle_form,
NULL, 0);
PR_snprintf(buf, sizeof(buf), "%d k", sizeOnDisk / 1024);
str = XmStringCreate(buf, XmFONTLIST_DEFAULT_TAG);
space_value = XtVaCreateManagedWidget("space_value",
xmLabelGadgetClass,
middle_form,
XmNlabelString, str,
NULL);
XmStringFree(str);
m_htmltoggle = XtVaCreateManagedWidget("html_toggle",
xmToggleButtonGadgetClass,
bottom_form,
XmNset, MSG_IsHTMLOK(fe_getMNMaster(),
m_group),
NULL);
XtAddCallback(m_htmltoggle, XmNvalueChangedCallback, html_toggled_cb, this);
str = XmStringCreateLtoR(XP_GetString(XFE_HTML_NEWSGROUP_MSG),
XmFONTLIST_DEFAULT_TAG);
html_desc = XtVaCreateManagedWidget("html_desc",
xmLabelGadgetClass,
bottom_form,
XmNlabelString, str,
NULL);
XmStringFree(str);
XtVaSetValues(m_htmltoggle,
XmNalignment, XmALIGNMENT_BEGINNING,
XmNleftAttachment, XmATTACH_FORM,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_FORM,
NULL);
XtVaSetValues(html_desc,
XmNalignment, XmALIGNMENT_BEGINNING,
XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, 15,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, m_htmltoggle,
XmNbottomAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
NULL);
widest_width = XfeVaGetWidestWidget(unread_label, total_label, space_label, NULL);
XtVaSetValues(unread_label,
XmNalignment, XmALIGNMENT_BEGINNING,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
NULL);
XtVaSetValues(unread_value,
XmNalignment, XmALIGNMENT_BEGINNING,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, unread_label,
XmNleftOffset, widest_width - XfeWidth(unread_label),
XmNrightAttachment, XmATTACH_FORM,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, unread_label,
XmNbottomAttachment, XmATTACH_NONE,
NULL);
XtVaSetValues(total_label,
XmNalignment, XmALIGNMENT_BEGINNING,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, unread_label,
XmNbottomAttachment, XmATTACH_NONE,
NULL);
XtVaSetValues(total_value,
XmNalignment, XmALIGNMENT_BEGINNING,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, total_label,
XmNleftOffset, widest_width - XfeWidth(total_label),
XmNrightAttachment, XmATTACH_FORM,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, total_label,
XmNbottomAttachment, XmATTACH_NONE,
NULL);
XtVaSetValues(space_label,
XmNalignment, XmALIGNMENT_BEGINNING,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, total_label,
XmNbottomAttachment, XmATTACH_NONE,
NULL);
XtVaSetValues(space_value,
XmNalignment, XmALIGNMENT_BEGINNING,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, space_label,
XmNleftOffset, widest_width - XfeWidth(space_label),
XmNrightAttachment, XmATTACH_FORM,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, space_label,
XmNbottomAttachment, XmATTACH_NONE,
NULL);
widest_width = XfeVaGetWidestWidget(name_label, location_label, NULL);
XtVaSetValues(name_label,
XmNalignment, XmALIGNMENT_BEGINNING,
XmNleftAttachment, XmATTACH_FORM,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_NONE,
NULL);
XtVaSetValues(location_label,
XmNalignment, XmALIGNMENT_BEGINNING,
XmNleftAttachment, XmATTACH_FORM,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, location_value,
XmNbottomAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_NONE,
NULL);
XtVaSetValues(name_value,
XmNalignment, XmALIGNMENT_BEGINNING,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, name_label,
XmNleftOffset, widest_width - XfeWidth(name_label),
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, name_label,
XmNbottomAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_FORM,
NULL);
XtVaSetValues(location_value,
XmNalignment, XmALIGNMENT_BEGINNING,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, name_value,
XmNleftOffset, widest_width - XfeWidth(location_label),
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, name_value,
XmNbottomAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_FORM,
NULL);
XtVaSetValues(top_form,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
NULL);
XtVaSetValues(sep1,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, top_form,
XmNbottomAttachment, XmATTACH_NONE,
NULL);
XtVaSetValues(middle_form,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, sep1,
XmNbottomAttachment, XmATTACH_NONE,
NULL);
XtVaSetValues(sep2,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, middle_form,
XmNbottomAttachment, XmATTACH_NONE,
NULL);
XtVaSetValues(bottom_form,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, sep2,
XmNbottomAttachment, XmATTACH_FORM,
NULL);
}
XFE_NewsgroupPropGeneralTab::~XFE_NewsgroupPropGeneralTab()
{
}
void
XFE_NewsgroupPropGeneralTab::html_toggled()
{
MSG_SetIsHTMLOK(fe_getMNMaster(), m_group,
m_contextData, XmToggleButtonGetState(m_htmltoggle));
}
void
XFE_NewsgroupPropGeneralTab::html_toggled_cb(Widget, XtPointer clientData, XtPointer)
{
XFE_NewsgroupPropGeneralTab *obj = (XFE_NewsgroupPropGeneralTab*)clientData;
obj->html_toggled();
}
XFE_NewsgroupPropDialog::XFE_NewsgroupPropDialog(Widget parent,
char *name,
MWContext *context,
MSG_FolderInfo *group)
: XFE_PropertySheetDialog((XFE_View*)0, parent, name,
context,
TRUE, /* ok */
TRUE, /* cancel */
TRUE, /* help */
FALSE, /* apply */
FALSE, /* separator */
True) /* modal */
{
XFE_PropertySheetView* folderView = (XFE_PropertySheetView *) m_view;
folderView->addTab(new XFE_NewsgroupPropGeneralTab(this,
folderView, group));
}
XFE_NewsgroupPropDialog::~XFE_NewsgroupPropDialog()
{
theDialog = NULL;
}
void
fe_showNewsgroupProperties(Widget parent,
MWContext *context,
MSG_FolderInfo *group)
{
if (theDialog)
delete theDialog;
theDialog = new XFE_NewsgroupPropDialog(parent, "NewsgroupProps", context, group);
theDialog->show();
}