NORMANDY_DDAY merge...

git-svn-id: svn://10.0.0.236/trunk@4478 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
spider
1998-06-25 05:50:45 +00:00
parent 9039d5a21d
commit d56dcfe52f
286 changed files with 97121 additions and 1604 deletions

View File

@@ -0,0 +1,526 @@
/* -*- 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 "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/
*
* 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.
*
* The Original Code is Mozilla Communicator client code.
*
* The Initial Developer of the Original Code is Netscape Communications
* Corporation. Portions created by Netscape are Copyright (C) 1998
* Netscape Communications Corporation. All Rights Reserved.
*/
/* -*- Mode: C++; tab-width: 4 -*-
PrefsDialogSmart.cpp -- the Smart Browsing preferences pane
Created: Ramiro Estrugo <ramiro@netscape.com>, 20-May-98.
*/
#include "xpassert.h"
#include "MozillaApp.h"
#include "xfe.h"
#include "prefapi.h"
#include "PrefsDialog.h"
#include "prefapi.h"
#include <Xm/LabelG.h>
#include <Xm/ToggleBG.h>
#include <Xm/Text.h>
#include <Xfe/Xfe.h>
//
// Smart Browsing preferences
//
//////////////////////////////////////////////////////////////////////////
XFE_PrefsPageBrowserSmart::XFE_PrefsPageBrowserSmart(XFE_PrefsDialog *dialog)
: XFE_PrefsPage(dialog),
m_prefsDataBrowserSmart(0)
{
m_rl_need_chrome_update = FALSE;
}
//////////////////////////////////////////////////////////////////////////
XFE_PrefsPageBrowserSmart::~XFE_PrefsPageBrowserSmart()
{
delete m_prefsDataBrowserSmart;
}
//////////////////////////////////////////////////////////////////////////
void
XFE_PrefsPageBrowserSmart::create()
{
Widget kids[100];
Arg av[50];
int ac;
int i;
PrefsDataBrowserSmart *fep = NULL;
fep = new PrefsDataBrowserSmart;
memset(fep, 0, sizeof(PrefsDataBrowserSmart));
m_prefsDataBrowserSmart = fep;
fep->context = getContext();
fep->prompt_dialog = getPrefsDialog()->getDialogChrome();
// Smart browsing page form
Widget form;
ac = 0;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
form = XmCreateForm (m_wPageForm, "smart", av, ac);
XtManageChild (form);
m_wPage = fep->page = form;
Widget frame1;
// Related links frame
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++;
frame1 = XmCreateFrame (form, "relatedFrame", av, ac);
// Related links box
Widget form1;
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_FORM); ac++;
form1 = XmCreateForm (frame1, "relatedBox", av, ac);
// The "Related Links" frame title
Widget label1;
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label1 = XmCreateLabelGadget (frame1, "relatedBoxLabel", av, ac);
XtManageChild (label1);
// top portion
ac = 0;
i = 0;
// Related links enabled
kids[i++] = fep->rl_enabled_toggle =
XmCreateToggleButtonGadget(form1, "enableRelated", av, ac);
// Related links autoload label
kids[i++] = fep->rl_autoload_label =
XmCreateLabelGadget(form1, "autoloadLabel", av, ac);
// Related links autoload always
kids[i++] = fep->rl_autoload_radio_always =
XmCreateToggleButtonGadget(form1, "autoloadAlways", av, ac);
// Related links autoload adaptive
kids[i++] = fep->rl_autoload_radio_adaptive =
XmCreateToggleButtonGadget(form1, "autoloadAdaptive", av, ac);
// Related links autoload never
kids[i++] = fep->rl_autoload_radio_never =
XmCreateToggleButtonGadget(form1, "autoloadNever", av, ac);
// Related links excluded domains label
kids[i++] = fep->rl_excluded_label =
XmCreateLabelGadget(form1, "excludedLabel", av, ac);
// Related links excluded domains text
kids[i++] = fep->rl_excluded_text =
fe_CreateText(form1, "excludedText", av, ac);
// Related links enabled
XtVaSetValues(fep->rl_enabled_toggle,
XmNindicatorType, XmN_OF_MANY,
XmNalignment, XmALIGNMENT_BEGINNING,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
0);
// Related links autoload label
XtVaSetValues(fep->rl_autoload_label,
XmNalignment, XmALIGNMENT_BEGINNING,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, fep->rl_enabled_toggle,
XmNtopOffset, 10,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, fep->rl_enabled_toggle,
XmNrightAttachment, XmATTACH_NONE,
0);
// Related links autoload always
XtVaSetValues(fep->rl_autoload_radio_always,
XmNindicatorType, XmONE_OF_MANY,
XmNalignment, XmALIGNMENT_BEGINNING,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, fep->rl_autoload_label,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, fep->rl_enabled_toggle,
XmNrightAttachment, XmATTACH_NONE,
XmNleftOffset, 16,
0);
// Related links autoload adaptive
XtVaSetValues(fep->rl_autoload_radio_adaptive,
XmNindicatorType, XmONE_OF_MANY,
XmNalignment, XmALIGNMENT_BEGINNING,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, fep->rl_autoload_radio_always,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, fep->rl_enabled_toggle,
XmNrightAttachment, XmATTACH_NONE,
XmNleftOffset, 16,
0);
// Related links autoload never
XtVaSetValues(fep->rl_autoload_radio_never,
XmNindicatorType, XmONE_OF_MANY,
XmNalignment, XmALIGNMENT_BEGINNING,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, fep->rl_autoload_radio_adaptive,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, fep->rl_enabled_toggle,
XmNrightAttachment, XmATTACH_NONE,
XmNleftOffset, 16,
0);
// Related links excluded domains label
XtVaSetValues(fep->rl_excluded_label,
XmNalignment, XmALIGNMENT_BEGINNING,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, fep->rl_autoload_radio_never,
XmNtopOffset, 10,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, fep->rl_enabled_toggle,
XmNrightAttachment, XmATTACH_NONE,
0);
// Related links excluded domains text
XtVaSetValues(fep->rl_excluded_text,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, fep->rl_excluded_label,
XmNbottomAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, fep->rl_enabled_toggle,
XmNrightAttachment, XmATTACH_FORM,
XmNeditable, True,
XmNeditMode, XmMULTI_LINE_EDIT,
XmNrows, 5,
XmNwordWrap, True,
0);
XtManageChildren (kids, i);
XtManageChild (form1);
XtManageChild (frame1);
// Keywords
Widget frame2;
Widget label2;
Widget form2;
ac = 0;
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, frame1); ac++;
XtSetArg (av[ac], XmNtopOffset, 8); ac++;
XtSetArg (av[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
frame2 = XmCreateFrame (form, "keywordFrame", 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_FORM); ac++;
form2 = XmCreateForm (frame2, "keywordBox", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label2 = XmCreateLabelGadget (frame2, "keywordBoxLabel", av, ac);
ac = 0;
i = 0;
kids[i++] = fep->enable_internet_keywords =
XmCreateToggleButtonGadget(form2, "enableKeywords", av, ac);
XtVaSetValues(fep->enable_internet_keywords,
XmNindicatorType, XmN_OF_MANY,
XmNalignment, XmALIGNMENT_BEGINNING,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
NULL);
XtManageChildren (kids, i);
XtManageChild (label2);
XtManageChild (form2);
XtManageChild (frame2);
// Add callbacks to automatic related links toggle button
XtAddCallback(fep->rl_enabled_toggle,
XmNvalueChangedCallback,
cb_toggleRelatedEnabled,
(XtPointer) this);
// Add callbacks to automatic related links toggle button
XtAddCallback(fep->rl_autoload_radio_always,
XmNvalueChangedCallback,
cb_toggleRelatedAutoload,
(XtPointer) fep);
XtAddCallback(fep->rl_autoload_radio_adaptive,
XmNvalueChangedCallback,
cb_toggleRelatedAutoload,
(XtPointer) fep);
XtAddCallback(fep->rl_autoload_radio_never,
XmNvalueChangedCallback,
cb_toggleRelatedAutoload,
(XtPointer) fep);
// Add callbacks to internet keyword toggle button
// XtAddCallback(fep->enable_internet_keywords, XmNvalueChangedCallback,
// cb_toggleInternetKeywords, fep);
setCreated(TRUE);
}
//////////////////////////////////////////////////////////////////////////
void
XFE_PrefsPageBrowserSmart::init()
{
XP_ASSERT( m_prefsDataBrowserSmart != NULL );
PrefsDataBrowserSmart * fep = m_prefsDataBrowserSmart;
// Related links enabled
XtVaSetValues(fep->rl_enabled_toggle,
XmNset, fe_globalPrefs.related_links_enabled,
XmNsensitive, !PREF_PrefIsLocked("browser.related.enabled"),
NULL);
// Excluded domaings
XmTextSetString(fep->rl_excluded_text,
fe_globalPrefs.related_disabled_domains);
updateRelatedAutoloadSensitive();
updateInternetKeywordsSensitive();
setInitialized(TRUE);
}
//////////////////////////////////////////////////////////////////////////
void
XFE_PrefsPageBrowserSmart::install()
{
if (m_rl_need_chrome_update)
{
// Notify whoever is interested in updating the related links
XFE_MozillaApp::theApp()->notifyInterested(XFE_MozillaApp::updateRelatedLinksShowing);
m_rl_need_chrome_update = FALSE;
}
}
//////////////////////////////////////////////////////////////////////////
void
XFE_PrefsPageBrowserSmart::save()
{
PrefsDataBrowserSmart * fep = m_prefsDataBrowserSmart;
XP_ASSERT(fep);
// Related links
XP_Bool old_related_links_enabled = fe_globalPrefs.related_links_enabled;
// Related links enabled
fe_globalPrefs.related_links_enabled =
XfeToggleButtonIsSet(fep->rl_enabled_toggle);
// Related links autoload
if (old_related_links_enabled != fe_globalPrefs.related_links_enabled)
{
m_rl_need_chrome_update = TRUE;
}
// Related links autoload
if (XfeToggleButtonIsSet(fep->rl_autoload_radio_always))
{
fe_globalPrefs.related_links_autoload = RELATED_LINKS_AUTOLOAD_ALWAYS;
}
if (XfeToggleButtonIsSet(fep->rl_autoload_radio_adaptive))
{
fe_globalPrefs.related_links_autoload = RELATED_LINKS_AUTOLOAD_ADAPTIVE;
}
if (XfeToggleButtonIsSet(fep->rl_autoload_radio_never))
{
fe_globalPrefs.related_links_autoload = RELATED_LINKS_AUTOLOAD_NEVER;
}
// Excluded domains
fe_globalPrefs.related_disabled_domains =
XmTextGetString(fep->rl_excluded_text);
// Internet Keywords
fe_globalPrefs.internet_keywords_enabled =
XfeToggleButtonIsSet(fep->enable_internet_keywords);
// Install preferences
install();
}
//////////////////////////////////////////////////////////////////////////
PrefsDataBrowserSmart *
XFE_PrefsPageBrowserSmart::getData()
{
return m_prefsDataBrowserSmart;
}
//////////////////////////////////////////////////////////////////////////
void
XFE_PrefsPageBrowserSmart::updateRelatedAutoloadSensitive()
{
XP_ASSERT( m_prefsDataBrowserSmart != NULL );
PrefsDataBrowserSmart * fep = m_prefsDataBrowserSmart;
Boolean sensitive =
!PREF_PrefIsLocked("browser.related.enabled") &&
fe_globalPrefs.related_links_enabled;
// autoload label
XtVaSetValues(fep->rl_autoload_label,
XmNsensitive, sensitive,
NULL);
// autoload always
XtVaSetValues(fep->rl_autoload_radio_always,
XmNset, (fe_globalPrefs.related_links_autoload == RELATED_LINKS_AUTOLOAD_ALWAYS),
XmNsensitive, sensitive,
NULL);
// autoload adaptive
XtVaSetValues(fep->rl_autoload_radio_adaptive,
XmNset, (fe_globalPrefs.related_links_autoload == RELATED_LINKS_AUTOLOAD_ADAPTIVE),
XmNsensitive, sensitive,
NULL);
// autoload never
XtVaSetValues(fep->rl_autoload_radio_never,
XmNset, (fe_globalPrefs.related_links_autoload == RELATED_LINKS_AUTOLOAD_NEVER),
XmNsensitive, sensitive,
NULL);
// excluded domains label
XtVaSetValues(fep->rl_excluded_label,
XmNsensitive, sensitive,
NULL);
// excluded domains text
XtVaSetValues(fep->rl_excluded_text,
XmNsensitive, sensitive,
NULL);
}
//////////////////////////////////////////////////////////////////////////
void
XFE_PrefsPageBrowserSmart::updateInternetKeywordsSensitive()
{
XP_ASSERT( m_prefsDataBrowserSmart != NULL );
PrefsDataBrowserSmart * fep = m_prefsDataBrowserSmart;
Boolean keywords_sensitive =
!PREF_PrefIsLocked("browser.goBrowsing.enabled");
// enable keywords
XtVaSetValues(fep->enable_internet_keywords,
XmNset, fe_globalPrefs.internet_keywords_enabled,
XmNsensitive, keywords_sensitive,
NULL);
}
//////////////////////////////////////////////////////////////////////////
void
XFE_PrefsPageBrowserSmart::cb_toggleRelatedEnabled(Widget w,
XtPointer clientData,
XtPointer callData)
{
XFE_PrefsPageBrowserSmart * obj =
(XFE_PrefsPageBrowserSmart *) clientData;
XmToggleButtonCallbackStruct * cb =
(XmToggleButtonCallbackStruct *) callData;
PrefsDataBrowserSmart * fep = obj->m_prefsDataBrowserSmart;
XP_ASSERT( obj != NULL );
XP_ASSERT( fep != NULL );
XP_ASSERT( cb != NULL );
XP_ASSERT( w == fep->rl_enabled_toggle );
fe_globalPrefs.related_links_enabled = (XP_Bool) cb->set;
obj->m_rl_need_chrome_update = True;
obj->updateRelatedAutoloadSensitive();
}
//////////////////////////////////////////////////////////////////////////
void
XFE_PrefsPageBrowserSmart::cb_toggleRelatedAutoload(Widget w,
XtPointer closure,
XtPointer callData)
{
XmToggleButtonCallbackStruct * cb =
(XmToggleButtonCallbackStruct *) callData;
PrefsDataBrowserSmart * fep = (PrefsDataBrowserSmart *) closure;
if (! cb->set)
{
XtVaSetValues(w, XmNset, True, 0);
}
else if (w == fep->rl_autoload_radio_always)
{
XtVaSetValues(fep->rl_autoload_radio_adaptive, XmNset, False, 0);
XtVaSetValues(fep->rl_autoload_radio_never, XmNset, False, 0);
}
else if (w == fep->rl_autoload_radio_adaptive)
{
XtVaSetValues(fep->rl_autoload_radio_always, XmNset, False, 0);
XtVaSetValues(fep->rl_autoload_radio_never, XmNset, False, 0);
}
else if (w == fep->rl_autoload_radio_never)
{
XtVaSetValues(fep->rl_autoload_radio_always, XmNset, False, 0);
XtVaSetValues(fep->rl_autoload_radio_adaptive, XmNset, False, 0);
}
else
{
abort();
}
}
//////////////////////////////////////////////////////////////////////////