home *** CD-ROM | disk | FTP | other *** search
- /* -*- 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.
- */
- /*
- NewsServerDialog.cpp -- dialog for letting the user add a new news server.
- Created: Chris Toshok <toshok@netscape.com>, 24-Oct-96.
- */
-
-
-
- #include "NewsServerDialog.h"
-
- #include <Xm/Form.h>
- #include <Xm/LabelG.h>
- #include <Xm/TextF.h>
- #include <Xm/ToggleBG.h>
-
- #include "felocale.h"
- #include "xpgetstr.h"
- extern int XFE_MAKE_SURE_SERVER_AND_PORT_ARE_VALID;
-
- #define SECURE_PORT_STRING "563"
- #define INSECURE_PORT_STRING "119"
-
- // we need this in the post() method.
- extern "C" void fe_EventLoop();
-
- XFE_NewsServerDialog::XFE_NewsServerDialog(Widget parent, char *name,
- XFE_Frame *frame)
- : XFE_Dialog(parent,
- name,
- TRUE, // ok
- TRUE, // cancel
- FALSE, // help
- FALSE, // apply
- TRUE, // separator
- TRUE // modal
- )
- {
- Widget server_label, port_label, secure_label;
- Widget form, serverForm, portForm, secureForm;
-
- m_frame = frame;
-
- form = XtCreateManagedWidget("serverDialogForm",
- xmFormWidgetClass,
- m_chrome,
- NULL, 0);
-
- serverForm = XtCreateManagedWidget("serverForm",
- xmFormWidgetClass,
- form,
- NULL, 0);
-
- portForm = XtCreateManagedWidget("portForm",
- xmFormWidgetClass,
- form,
- NULL, 0);
-
- secureForm = XtCreateManagedWidget("secureForm",
- xmFormWidgetClass,
- form,
- NULL, 0);
-
- server_label = XtCreateManagedWidget("serverLabel",
- xmLabelGadgetClass,
- serverForm,
- NULL, 0);
-
- m_serverText = fe_CreateTextField(serverForm,
- "serverText",
- NULL, 0);
- XtManageChild(m_serverText);
-
- port_label = XtCreateManagedWidget("portLabel",
- xmLabelGadgetClass,
- portForm,
- NULL, 0);
-
- m_portText = fe_CreateTextField(portForm,
- "portText",
- NULL, 0);
- XtManageChild(m_portText);
-
- secure_label = XtCreateManagedWidget("secureLabel",
- xmLabelGadgetClass,
- secureForm,
- NULL, 0);
-
- m_secureToggle = XtCreateManagedWidget("secureToggle",
- xmToggleButtonGadgetClass,
- secureForm,
- NULL, 0);
-
- // now we dance the body attachment
- XtVaSetValues(secure_label,
- XmNleftAttachment, XmATTACH_FORM,
- XmNrightAttachment, XmATTACH_NONE,
- XmNtopAttachment, XmATTACH_FORM,
- XmNbottomAttachment, XmATTACH_FORM,
- NULL);
-
- XtVaSetValues(m_secureToggle,
- XmNleftAttachment, XmATTACH_WIDGET,
- XmNleftWidget, secure_label,
- XmNrightAttachment, XmATTACH_FORM,
- XmNtopAttachment, XmATTACH_FORM,
- XmNbottomAttachment, XmATTACH_FORM,
- NULL);
-
- XtVaSetValues(port_label,
- XmNleftAttachment, XmATTACH_FORM,
- XmNrightAttachment, XmATTACH_NONE,
- XmNtopAttachment, XmATTACH_FORM,
- XmNbottomAttachment, XmATTACH_FORM,
- NULL);
-
- XtVaSetValues(m_portText,
- XmNleftAttachment, XmATTACH_WIDGET,
- XmNleftWidget, port_label,
- XmNrightAttachment, XmATTACH_FORM,
- XmNtopAttachment, XmATTACH_FORM,
- XmNbottomAttachment, XmATTACH_FORM,
- NULL);
-
- XtVaSetValues(server_label,
- XmNleftAttachment, XmATTACH_FORM,
- XmNrightAttachment, XmATTACH_NONE,
- XmNtopAttachment, XmATTACH_FORM,
- XmNbottomAttachment, XmATTACH_FORM,
- NULL);
-
- XtVaSetValues(m_serverText,
- XmNleftAttachment, XmATTACH_WIDGET,
- XmNleftWidget, server_label,
- XmNrightAttachment, XmATTACH_FORM,
- XmNtopAttachment, XmATTACH_FORM,
- XmNbottomAttachment, XmATTACH_FORM,
- NULL);
-
- XtVaSetValues(serverForm,
- XmNleftAttachment, XmATTACH_FORM,
- XmNrightAttachment, XmATTACH_FORM,
- XmNtopAttachment, XmATTACH_FORM,
- XmNbottomAttachment, XmATTACH_NONE,
- NULL);
-
- XtVaSetValues(portForm,
- XmNleftAttachment, XmATTACH_FORM,
- XmNrightAttachment, XmATTACH_FORM,
- XmNtopAttachment, XmATTACH_WIDGET,
- XmNtopWidget, serverForm,
- XmNbottomAttachment, XmATTACH_NONE,
- NULL);
-
- XtVaSetValues(secureForm,
- XmNleftAttachment, XmATTACH_FORM,
- XmNrightAttachment, XmATTACH_FORM,
- XmNtopAttachment, XmATTACH_WIDGET,
- XmNtopWidget, portForm,
- XmNbottomAttachment, XmATTACH_NONE,
- NULL);
-
- XtAddCallback(m_chrome, XmNokCallback, ok_cb, this);
- XtAddCallback(m_chrome, XmNcancelCallback, cancel_cb, this);
-
- fe_SetTextFieldAndCallBack(m_portText, INSECURE_PORT_STRING);
- m_portTextEdited = False;
-
- XtAddCallback(m_secureToggle, XmNvalueChangedCallback, toggle_cb, this);
- XtAddCallback(m_portText, XmNvalueChangedCallback, port_edit_cb, this);
- }
-
- XFE_NewsServerDialog::~XFE_NewsServerDialog()
- {
- // nothing needed (that I'm aware of) yet.
- }
-
- XP_Bool
- XFE_NewsServerDialog::post()
- {
- m_doneWithLoop = False;
-
- XtVaSetValues(m_chrome,
- XmNdeleteResponse, XmUNMAP,
- NULL);
-
- show();
-
- while(!m_doneWithLoop)
- {
- fe_EventLoop();
- }
-
- return m_retVal;
- }
-
- const char *
- XFE_NewsServerDialog::getServer()
- {
- char *foo = fe_GetTextField(m_serverText);
-
- if (strlen(foo) == 0)
- return NULL;
- else
- return foo;
- }
-
- int
- XFE_NewsServerDialog::getPort()
- {
- char *foo = fe_GetTextField(m_portText);
-
- if (strlen(foo) == 0)
- return -1;
- else
- return atoi(foo);
- }
-
- XP_Bool
- XFE_NewsServerDialog::isSecure()
- {
- return XmToggleButtonGadgetGetState(m_secureToggle);
- }
-
- XP_Bool
- XFE_NewsServerDialog::verify()
- {
- if (getServer() == NULL || getPort() <= 0)
- {
- XFE_Alert(m_frame->getContext(), XP_GetString(XFE_MAKE_SURE_SERVER_AND_PORT_ARE_VALID));
- return False;
- }
- else
- {
- return True;
- }
- }
-
- void
- XFE_NewsServerDialog::ok()
- {
- if (verify())
- {
- m_doneWithLoop = True;
- m_retVal = True;
-
- hide();
- }
- }
-
- void
- XFE_NewsServerDialog::cancel()
- {
- m_doneWithLoop = True;
- m_retVal = False;
-
- hide();
- }
-
- void
- XFE_NewsServerDialog::toggle()
- {
- char *text = fe_GetTextField(m_portText);
-
- if (!m_portTextEdited || !strcmp(text, ""))
- {
- XtRemoveCallback(m_portText, XmNvalueChangedCallback, port_edit_cb, this);
- if (XmToggleButtonGadgetGetState(m_secureToggle))
- {
- fe_SetTextFieldAndCallBack(m_portText, SECURE_PORT_STRING);
- }
- else
- {
- fe_SetTextFieldAndCallBack(m_portText, INSECURE_PORT_STRING);
- }
- XtAddCallback(m_portText, XmNvalueChangedCallback, port_edit_cb, this);
- m_portTextEdited = False;
- }
-
- XtFree(text);
- }
-
- void
- XFE_NewsServerDialog::port_edit()
- {
- m_portTextEdited = True;
- }
-
- void
- XFE_NewsServerDialog::port_edit_cb(Widget, XtPointer clientData, XtPointer)
- {
- XFE_NewsServerDialog *obj = (XFE_NewsServerDialog*)clientData;
-
- obj->port_edit();
- }
-
- void
- XFE_NewsServerDialog::toggle_cb(Widget, XtPointer clientData, XtPointer)
- {
- XFE_NewsServerDialog *obj = (XFE_NewsServerDialog*)clientData;
-
- obj->toggle();
- }
-
- void
- XFE_NewsServerDialog::ok_cb(Widget, XtPointer clientData, XtPointer)
- {
- XFE_NewsServerDialog *obj = (XFE_NewsServerDialog*)clientData;
-
- obj->ok();
- }
-
- void
- XFE_NewsServerDialog::cancel_cb(Widget, XtPointer clientData, XtPointer)
- {
- XFE_NewsServerDialog *obj = (XFE_NewsServerDialog*)clientData;
-
- obj->cancel();
- }
-
-