summaryrefslogtreecommitdiffstats
path: root/khtml/khtml_settings.cc
diff options
context:
space:
mode:
Diffstat (limited to 'khtml/khtml_settings.cc')
-rw-r--r--khtml/khtml_settings.cc1064
1 files changed, 0 insertions, 1064 deletions
diff --git a/khtml/khtml_settings.cc b/khtml/khtml_settings.cc
deleted file mode 100644
index 431aec0ca..000000000
--- a/khtml/khtml_settings.cc
+++ /dev/null
@@ -1,1064 +0,0 @@
-/* This file is part of the KDE project
- Copyright (C) 1999 David Faure <faure@kde.org>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-*/
-
-#include <tqfontdatabase.h>
-
-#include "khtml_settings.h"
-#include "khtmldefaults.h"
-#include <kglobalsettings.h>
-#include <kconfig.h>
-#include <kglobal.h>
-#include <klocale.h>
-#include <kdebug.h>
-#include <tqregexp.h>
-#include <tqvaluevector.h>
-#include <kmessagebox.h>
-
-/**
- * @internal
- * Contains all settings which are both available globally and per-domain
- */
-struct KPerDomainSettings {
- bool m_bEnableJava : 1;
- bool m_bEnableJavaScript : 1;
- bool m_bEnablePlugins : 1;
- // don't forget to maintain the bitfields as the enums grow
- KHTMLSettings::KJSWindowOpenPolicy m_windowOpenPolicy : 2;
- KHTMLSettings::KJSWindowStatusPolicy m_windowStatusPolicy : 1;
- KHTMLSettings::KJSWindowFocusPolicy m_windowFocusPolicy : 1;
- KHTMLSettings::KJSWindowMovePolicy m_windowMovePolicy : 1;
- KHTMLSettings::KJSWindowResizePolicy m_windowResizePolicy : 1;
-
-#ifdef DEBUG_SETTINGS
- void dump(const TQString &infix = TQString::null) const {
- kdDebug() << "KPerDomainSettings " << infix << " @" << this << ":" << endl;
- kdDebug() << " m_bEnableJava: " << m_bEnableJava << endl;
- kdDebug() << " m_bEnableJavaScript: " << m_bEnableJavaScript << endl;
- kdDebug() << " m_bEnablePlugins: " << m_bEnablePlugins << endl;
- kdDebug() << " m_windowOpenPolicy: " << m_windowOpenPolicy << endl;
- kdDebug() << " m_windowStatusPolicy: " << m_windowStatusPolicy << endl;
- kdDebug() << " m_windowFocusPolicy: " << m_windowFocusPolicy << endl;
- kdDebug() << " m_windowMovePolicy: " << m_windowMovePolicy << endl;
- kdDebug() << " m_windowResizePolicy: " << m_windowResizePolicy << endl;
- }
-#endif
-};
-
-typedef TQMap<TQString,KPerDomainSettings> PolicyMap;
-
-class KHTMLSettingsPrivate
-{
-public:
- bool m_bChangeCursor : 1;
- bool m_bOpenMiddleClick : 1;
- bool m_bBackRightClick : 1;
- bool m_underlineLink : 1;
- bool m_hoverLink : 1;
- bool m_bEnableJavaScriptDebug : 1;
- bool m_bEnableJavaScriptErrorReporting : 1;
- bool enforceCharset : 1;
- bool m_bAutoLoadImages : 1;
- bool m_bUnfinishedImageFrame : 1;
- bool m_formCompletionEnabled : 1;
- bool m_autoDelayedActionsEnabled : 1;
- bool m_jsErrorsEnabled : 1;
- bool m_follow_system_colors : 1;
- bool m_allowTabulation : 1;
- bool m_autoSpellCheck : 1;
- bool m_adFilterEnabled : 1;
- bool m_hideAdsEnabled : 1;
- bool m_jsPopupBlockerPassivePopup : 1;
- bool m_accessKeysEnabled : 1;
-
- // the virtual global "domain"
- KPerDomainSettings global;
-
- int m_fontSize;
- int m_minFontSize;
- int m_maxFormCompletionItems;
- KHTMLSettings::KAnimationAdvice m_showAnimations;
-
- TQString m_encoding;
- TQString m_userSheet;
-
- TQColor m_textColor;
- TQColor m_baseColor;
- TQColor m_linkColor;
- TQColor m_vLinkColor;
-
- PolicyMap domainPolicy;
- TQStringList fonts;
- TQStringList defaultFonts;
-
- TQValueVector<TQRegExp> adFilters;
- TQValueList< TQPair< TQString, TQChar > > m_fallbackAccessKeysAssignments;
-};
-
-
-/** Returns a writeable per-domains settings instance for the given domain
- * or a deep copy of the global settings if not existent.
- */
-static KPerDomainSettings &setup_per_domain_policy(
- KHTMLSettingsPrivate *d,
- const TQString &domain) {
- if (domain.isEmpty()) {
- kdWarning() << "setup_per_domain_policy: domain is empty" << endl;
- }
- const TQString ldomain = domain.lower();
- PolicyMap::iterator it = d->domainPolicy.find(ldomain);
- if (it == d->domainPolicy.end()) {
- // simply copy global domain settings (they should have been initialized
- // by this time)
- it = d->domainPolicy.insert(ldomain,d->global);
- }
- return *it;
-}
-
-
-KHTMLSettings::KJavaScriptAdvice KHTMLSettings::strToAdvice(const TQString& _str)
-{
- KJavaScriptAdvice ret = KJavaScriptDunno;
-
- if (!_str)
- ret = KJavaScriptDunno;
-
- if (_str.lower() == TQString::fromLatin1("accept"))
- ret = KJavaScriptAccept;
- else if (_str.lower() == TQString::fromLatin1("reject"))
- ret = KJavaScriptReject;
-
- return ret;
-}
-
-const char* KHTMLSettings::adviceToStr(KJavaScriptAdvice _advice)
-{
- switch( _advice ) {
- case KJavaScriptAccept: return I18N_NOOP("Accept");
- case KJavaScriptReject: return I18N_NOOP("Reject");
- default: return 0;
- }
- return 0;
-}
-
-
-void KHTMLSettings::splitDomainAdvice(const TQString& configStr, TQString &domain,
- KJavaScriptAdvice &javaAdvice, KJavaScriptAdvice& javaScriptAdvice)
-{
- TQString tmp(configStr);
- int splitIndex = tmp.find(':');
- if ( splitIndex == -1)
- {
- domain = configStr.lower();
- javaAdvice = KJavaScriptDunno;
- javaScriptAdvice = KJavaScriptDunno;
- }
- else
- {
- domain = tmp.left(splitIndex).lower();
- TQString adviceString = tmp.mid( splitIndex+1, tmp.length() );
- int splitIndex2 = adviceString.find( ':' );
- if( splitIndex2 == -1 ) {
- // Java advice only
- javaAdvice = strToAdvice( adviceString );
- javaScriptAdvice = KJavaScriptDunno;
- } else {
- // Java and JavaScript advice
- javaAdvice = strToAdvice( adviceString.left( splitIndex2 ) );
- javaScriptAdvice = strToAdvice( adviceString.mid( splitIndex2+1,
- adviceString.length() ) );
- }
- }
-}
-
-void KHTMLSettings::readDomainSettings(KConfig *config, bool reset,
- bool global, KPerDomainSettings &pd_settings) {
- TQString jsPrefix = global ? TQString::null
- : TQString::fromLatin1("javascript.");
- TQString javaPrefix = global ? TQString::null
- : TQString::fromLatin1("java.");
- TQString pluginsPrefix = global ? TQString::null
- : TQString::fromLatin1("plugins.");
-
- // The setting for Java
- TQString key = javaPrefix + TQString::fromLatin1("EnableJava");
- if ( (global && reset) || config->hasKey( key ) )
- pd_settings.m_bEnableJava = config->readBoolEntry( key, false );
- else if ( !global )
- pd_settings.m_bEnableJava = d->global.m_bEnableJava;
-
- // The setting for Plugins
- key = pluginsPrefix + TQString::fromLatin1("EnablePlugins");
- if ( (global && reset) || config->hasKey( key ) )
- pd_settings.m_bEnablePlugins = config->readBoolEntry( key, true );
- else if ( !global )
- pd_settings.m_bEnablePlugins = d->global.m_bEnablePlugins;
-
- // The setting for JavaScript
- key = jsPrefix + TQString::fromLatin1("EnableJavaScript");
- if ( (global && reset) || config->hasKey( key ) )
- pd_settings.m_bEnableJavaScript = config->readBoolEntry( key, true );
- else if ( !global )
- pd_settings.m_bEnableJavaScript = d->global.m_bEnableJavaScript;
-
- // window property policies
- key = jsPrefix + TQString::fromLatin1("WindowOpenPolicy");
- if ( (global && reset) || config->hasKey( key ) )
- pd_settings.m_windowOpenPolicy = (KJSWindowOpenPolicy)
- config->readUnsignedNumEntry( key, KJSWindowOpenSmart );
- else if ( !global )
- pd_settings.m_windowOpenPolicy = d->global.m_windowOpenPolicy;
-
- key = jsPrefix + TQString::fromLatin1("WindowMovePolicy");
- if ( (global && reset) || config->hasKey( key ) )
- pd_settings.m_windowMovePolicy = (KJSWindowMovePolicy)
- config->readUnsignedNumEntry( key, KJSWindowMoveAllow );
- else if ( !global )
- pd_settings.m_windowMovePolicy = d->global.m_windowMovePolicy;
-
- key = jsPrefix + TQString::fromLatin1("WindowResizePolicy");
- if ( (global && reset) || config->hasKey( key ) )
- pd_settings.m_windowResizePolicy = (KJSWindowResizePolicy)
- config->readUnsignedNumEntry( key, KJSWindowResizeAllow );
- else if ( !global )
- pd_settings.m_windowResizePolicy = d->global.m_windowResizePolicy;
-
- key = jsPrefix + TQString::fromLatin1("WindowStatusPolicy");
- if ( (global && reset) || config->hasKey( key ) )
- pd_settings.m_windowStatusPolicy = (KJSWindowStatusPolicy)
- config->readUnsignedNumEntry( key, KJSWindowStatusAllow );
- else if ( !global )
- pd_settings.m_windowStatusPolicy = d->global.m_windowStatusPolicy;
-
- key = jsPrefix + TQString::fromLatin1("WindowFocusPolicy");
- if ( (global && reset) || config->hasKey( key ) )
- pd_settings.m_windowFocusPolicy = (KJSWindowFocusPolicy)
- config->readUnsignedNumEntry( key, KJSWindowFocusAllow );
- else if ( !global )
- pd_settings.m_windowFocusPolicy = d->global.m_windowFocusPolicy;
-
-}
-
-
-KHTMLSettings::KHTMLSettings()
-{
- d = new KHTMLSettingsPrivate();
- init();
-}
-
-KHTMLSettings::KHTMLSettings(const KHTMLSettings &other)
-{
- d = new KHTMLSettingsPrivate();
- *d = *other.d;
-}
-
-KHTMLSettings::~KHTMLSettings()
-{
- delete d;
-}
-
-bool KHTMLSettings::changeCursor() const
-{
- return d->m_bChangeCursor;
-}
-
-bool KHTMLSettings::underlineLink() const
-{
- return d->m_underlineLink;
-}
-
-bool KHTMLSettings::hoverLink() const
-{
- return d->m_hoverLink;
-}
-
-void KHTMLSettings::init()
-{
- KConfig global( "khtmlrc", true, false );
- init( &global, true );
-
- KConfig *local = KGlobal::config();
- if ( !local )
- return;
-
- init( local, false );
-}
-
-void KHTMLSettings::init( KConfig * config, bool reset )
-{
- TQString group_save = config->group();
- if (reset || config->hasGroup("MainView Settings"))
- {
- config->setGroup( "MainView Settings" );
-
- if ( reset || config->hasKey( "OpenMiddleClick" ) )
- d->m_bOpenMiddleClick = config->readBoolEntry( "OpenMiddleClick", true );
-
- if ( reset || config->hasKey( "BackRightClick" ) )
- d->m_bBackRightClick = config->readBoolEntry( "BackRightClick", false );
- }
-
- if (reset || config->hasGroup("Access Keys")) {
- config->setGroup( "Access Keys" );
- d->m_accessKeysEnabled = config->readBoolEntry( "Enabled", true );
- }
-
- if (reset || config->hasGroup("Filter Settings"))
- {
- config->setGroup( "Filter Settings" );
- d->m_adFilterEnabled = config->readBoolEntry("Enabled", false);
- d->m_hideAdsEnabled = config->readBoolEntry("Shrink", false);
-
- d->adFilters.clear();
-
- TQMap<TQString,TQString> entryMap = config->entryMap("Filter Settings");
- TQMap<TQString,TQString>::ConstIterator it;
- d->adFilters.reserve(entryMap.count());
- for( it = entryMap.constBegin(); it != entryMap.constEnd(); ++it )
- {
- TQString name = it.key();
- TQString url = it.data();
-
- if (url.startsWith("!"))
- continue;
-
- if (name.startsWith("Filter"))
- {
- if (url.length()>2 && url[0]=='/' && url[url.length()-1] == '/')
- {
- TQString inside = url.mid(1, url.length()-2);
- TQRegExp rx(inside);
- d->adFilters.append(rx);
- }
- else
- {
- TQRegExp rx;
- int left,right;
-
- for (right=url.length(); right>0 && url[right-1]=='*' ; --right);
- for (left=0; left<right && url[left]=='*' ; ++left);
-
- rx.setWildcard(true);
- rx.setPattern(url.mid(left,right-left));
-
- d->adFilters.append(rx);
- }
- }
- }
- }
-
-
- if (reset || config->hasGroup("HTML Settings"))
- {
- config->setGroup( "HTML Settings" );
- // Fonts and colors
- if( reset ) {
- d->defaultFonts = TQStringList();
- d->defaultFonts.append( config->readEntry( "StandardFont", KGlobalSettings::generalFont().family() ) );
- d->defaultFonts.append( config->readEntry( "FixedFont", KGlobalSettings::fixedFont().family() ) );
- d->defaultFonts.append( config->readEntry( "SerifFont", HTML_DEFAULT_VIEW_SERIF_FONT ) );
- d->defaultFonts.append( config->readEntry( "SansSerifFont", HTML_DEFAULT_VIEW_SANSSERIF_FONT ) );
- d->defaultFonts.append( config->readEntry( "CursiveFont", HTML_DEFAULT_VIEW_CURSIVE_FONT ) );
- d->defaultFonts.append( config->readEntry( "FantasyFont", HTML_DEFAULT_VIEW_FANTASY_FONT ) );
- d->defaultFonts.append( TQString( "0" ) ); // font size adjustment
- }
-
- if ( reset || config->hasKey( "MinimumFontSize" ) )
- d->m_minFontSize = config->readNumEntry( "MinimumFontSize", HTML_DEFAULT_MIN_FONT_SIZE );
-
- if ( reset || config->hasKey( "MediumFontSize" ) )
- d->m_fontSize = config->readNumEntry( "MediumFontSize", 12 );
-
- d->fonts = config->readListEntry( "Fonts" );
-
- if ( reset || config->hasKey( "DefaultEncoding" ) )
- d->m_encoding = config->readEntry( "DefaultEncoding", "" );
-
- if ( reset || config->hasKey( "EnforceDefaultCharset" ) )
- d->enforceCharset = config->readBoolEntry( "EnforceDefaultCharset", false );
-
- // Behavior
- if ( reset || config->hasKey( "ChangeCursor" ) )
- d->m_bChangeCursor = config->readBoolEntry( "ChangeCursor", KDE_DEFAULT_CHANGECURSOR );
-
- if ( reset || config->hasKey("UnderlineLinks") )
- d->m_underlineLink = config->readBoolEntry( "UnderlineLinks", true );
-
- if ( reset || config->hasKey( "HoverLinks" ) )
- {
- if ( ( d->m_hoverLink = config->readBoolEntry( "HoverLinks", false ) ) )
- d->m_underlineLink = false;
- }
-
- if ( reset || config->hasKey( "AllowTabulation" ) )
- d->m_allowTabulation = config->readBoolEntry( "AllowTabulation", false );
-
- if ( reset || config->hasKey( "AutoSpellCheck" ) )
- d->m_autoSpellCheck = config->readBoolEntry( "AutoSpellCheck", true );
-
- // Other
- if ( reset || config->hasKey( "AutoLoadImages" ) )
- d->m_bAutoLoadImages = config->readBoolEntry( "AutoLoadImages", true );
-
- if ( reset || config->hasKey( "UnfinishedImageFrame" ) )
- d->m_bUnfinishedImageFrame = config->readBoolEntry( "UnfinishedImageFrame", true );
-
- if ( reset || config->hasKey( "ShowAnimations" ) )
- {
- TQString value = config->readEntry( "ShowAnimations").lower();
- if (value == "disabled")
- d->m_showAnimations = KAnimationDisabled;
- else if (value == "looponce")
- d->m_showAnimations = KAnimationLoopOnce;
- else
- d->m_showAnimations = KAnimationEnabled;
- }
-
- if ( config->readBoolEntry( "UserStyleSheetEnabled", false ) == true ) {
- if ( reset || config->hasKey( "UserStyleSheet" ) )
- d->m_userSheet = config->readEntry( "UserStyleSheet", "" );
- }
-
- d->m_formCompletionEnabled = config->readBoolEntry("FormCompletion", true);
- d->m_maxFormCompletionItems = config->readNumEntry("MaxFormCompletionItems", 10);
- d->m_autoDelayedActionsEnabled = config->readBoolEntry ("AutoDelayedActions", true);
- d->m_jsErrorsEnabled = config->readBoolEntry("ReportJSErrors", true);
- TQStringList accesskeys = config->readListEntry("FallbackAccessKeysAssignments");
- d->m_fallbackAccessKeysAssignments.clear();
- for( TQStringList::ConstIterator it = accesskeys.begin(); it != accesskeys.end(); ++it )
- if( (*it).length() > 2 && (*it)[ 1 ] == ':' )
- d->m_fallbackAccessKeysAssignments.append( tqMakePair( (*it).mid( 2 ), (*it)[ 0 ] ));
- }
-
- // Colors
-
- if ( reset || config->hasKey( "FollowSystemColors" ) )
- d->m_follow_system_colors = config->readBoolEntry( "FollowSystemColors", false );
-
- if ( reset || config->hasGroup( "General" ) )
- {
- config->setGroup( "General" ); // group will be restored by cgs anyway
- if ( reset || config->hasKey( "foreground" ) )
- d->m_textColor = config->readColorEntry( "foreground", &HTML_DEFAULT_TXT_COLOR );
-
- if ( reset || config->hasKey( "linkColor" ) )
- d->m_linkColor = config->readColorEntry( "linkColor", &HTML_DEFAULT_LNK_COLOR );
-
- if ( reset || config->hasKey( "visitedLinkColor" ) )
- d->m_vLinkColor = config->readColorEntry( "visitedLinkColor", &HTML_DEFAULT_VLNK_COLOR);
-
- if ( reset || config->hasKey( "background" ) )
- d->m_baseColor = config->readColorEntry( "background", &HTML_DEFAULT_BASE_COLOR);
- }
-
- if( reset || config->hasGroup( "Java/JavaScript Settings" ) )
- {
- config->setGroup( "Java/JavaScript Settings" );
-
- // The global setting for JavaScript debugging
- // This is currently always enabled by default
- if ( reset || config->hasKey( "EnableJavaScriptDebug" ) )
- d->m_bEnableJavaScriptDebug = config->readBoolEntry( "EnableJavaScriptDebug", false );
-
- // The global setting for JavaScript error reporting
- if ( reset || config->hasKey( "ReportJavaScriptErrors" ) )
- d->m_bEnableJavaScriptErrorReporting = config->readBoolEntry( "ReportJavaScriptErrors", false );
-
- // The global setting for popup block passive popup
- if ( reset || config->hasKey( "PopupBlockerPassivePopup" ) )
- d->m_jsPopupBlockerPassivePopup = config->readBoolEntry("PopupBlockerPassivePopup", true);
-
- // Read options from the global "domain"
- readDomainSettings(config,reset,true,d->global);
-#ifdef DEBUG_SETTINGS
- d->global.dump("init global");
-#endif
-
- // The domain-specific settings.
-
- static const char *const domain_keys[] = { // always keep order of keys
- "ECMADomains", "JavaDomains", "PluginDomains"
- };
- bool check_old_ecma_settings = true;
- bool check_old_java_settings = true;
- // merge all domains into one list
- TQMap<TQString,int> domainList; // why can't Qt have a QSet?
- for (unsigned i = 0; i < sizeof domain_keys/sizeof domain_keys[0]; ++i) {
- if ( reset || config->hasKey(domain_keys[i]) ) {
- if (i == 0) check_old_ecma_settings = false;
- else if (i == 1) check_old_java_settings = false;
- const TQStringList dl = config->readListEntry( domain_keys[i] );
- const TQMap<TQString,int>::Iterator notfound = domainList.end();
- TQStringList::ConstIterator it = dl.begin();
- const TQStringList::ConstIterator itEnd = dl.end();
- for (; it != itEnd; ++it) {
- const TQString domain = (*it).lower();
- TQMap<TQString,int>::Iterator pos = domainList.find(domain);
- if (pos == notfound) domainList.insert(domain,0);
- }/*next it*/
- }
- }/*next i*/
-
- if (reset)
- d->domainPolicy.clear();
-
- TQString js_group_save = config->group();
- {
- TQMap<TQString,int>::ConstIterator it = domainList.begin();
- const TQMap<TQString,int>::ConstIterator itEnd = domainList.end();
- for ( ; it != itEnd; ++it)
- {
- const TQString domain = it.key();
- config->setGroup(domain);
- readDomainSettings(config,reset,false,d->domainPolicy[domain]);
-#ifdef DEBUG_SETTINGS
- d->domainPolicy[domain].dump("init "+domain);
-#endif
- }
- }
- config->setGroup(js_group_save);
-
- bool check_old_java = true;
- if( ( reset || config->hasKey( "JavaDomainSettings" ) )
- && check_old_java_settings )
- {
- check_old_java = false;
- const TQStringList domainList = config->readListEntry( "JavaDomainSettings" );
- TQStringList::ConstIterator it = domainList.begin();
- const TQStringList::ConstIterator itEnd = domainList.end();
- for ( ; it != itEnd; ++it)
- {
- TQString domain;
- KJavaScriptAdvice javaAdvice;
- KJavaScriptAdvice javaScriptAdvice;
- splitDomainAdvice(*it, domain, javaAdvice, javaScriptAdvice);
- setup_per_domain_policy(d,domain).m_bEnableJava =
- javaAdvice == KJavaScriptAccept;
-#ifdef DEBUG_SETTINGS
- setup_per_domain_policy(d,domain).dump("JavaDomainSettings 4 "+domain);
-#endif
- }
- }
-
- bool check_old_ecma = true;
- if( ( reset || config->hasKey( "ECMADomainSettings" ) )
- && check_old_ecma_settings )
- {
- check_old_ecma = false;
- const TQStringList domainList = config->readListEntry( "ECMADomainSettings" );
- TQStringList::ConstIterator it = domainList.begin();
- const TQStringList::ConstIterator itEnd = domainList.end();
- for ( ; it != itEnd; ++it)
- {
- TQString domain;
- KJavaScriptAdvice javaAdvice;
- KJavaScriptAdvice javaScriptAdvice;
- splitDomainAdvice(*it, domain, javaAdvice, javaScriptAdvice);
- setup_per_domain_policy(d,domain).m_bEnableJavaScript =
- javaScriptAdvice == KJavaScriptAccept;
-#ifdef DEBUG_SETTINGS
- setup_per_domain_policy(d,domain).dump("ECMADomainSettings 4 "+domain);
-#endif
- }
- }
-
- if( ( reset || config->hasKey( "JavaScriptDomainAdvice" ) )
- && ( check_old_java || check_old_ecma )
- && ( check_old_ecma_settings || check_old_java_settings ) )
- {
- const TQStringList domainList = config->readListEntry( "JavaScriptDomainAdvice" );
- TQStringList::ConstIterator it = domainList.begin();
- const TQStringList::ConstIterator itEnd = domainList.end();
- for ( ; it != itEnd; ++it)
- {
- TQString domain;
- KJavaScriptAdvice javaAdvice;
- KJavaScriptAdvice javaScriptAdvice;
- splitDomainAdvice(*it, domain, javaAdvice, javaScriptAdvice);
- if( check_old_java )
- setup_per_domain_policy(d,domain).m_bEnableJava =
- javaAdvice == KJavaScriptAccept;
- if( check_old_ecma )
- setup_per_domain_policy(d,domain).m_bEnableJavaScript =
- javaScriptAdvice == KJavaScriptAccept;
-#ifdef DEBUG_SETTINGS
- setup_per_domain_policy(d,domain).dump("JavaScriptDomainAdvice 4 "+domain);
-#endif
- }
-
- //save all the settings into the new keywords if they don't exist
-#if 0
- if( check_old_java )
- {
- TQStringList domainConfig;
- PolicyMap::Iterator it;
- for( it = d->javaDomainPolicy.begin(); it != d->javaDomainPolicy.end(); ++it )
- {
- TQCString javaPolicy = adviceToStr( it.data() );
- TQCString javaScriptPolicy = adviceToStr( KJavaScriptDunno );
- domainConfig.append(TQString::fromLatin1("%1:%2:%3").arg(it.key()).arg(javaPolicy).arg(javaScriptPolicy));
- }
- config->writeEntry( "JavaDomainSettings", domainConfig );
- }
-
- if( check_old_ecma )
- {
- TQStringList domainConfig;
- PolicyMap::Iterator it;
- for( it = d->javaScriptDomainPolicy.begin(); it != d->javaScriptDomainPolicy.end(); ++it )
- {
- TQCString javaPolicy = adviceToStr( KJavaScriptDunno );
- TQCString javaScriptPolicy = adviceToStr( it.data() );
- domainConfig.append(TQString::fromLatin1("%1:%2:%3").arg(it.key()).arg(javaPolicy).arg(javaScriptPolicy));
- }
- config->writeEntry( "ECMADomainSettings", domainConfig );
- }
-#endif
- }
- }
- config->setGroup(group_save);
-}
-
-
-/** Local helper for retrieving per-domain settings.
- *
- * In case of doubt, the global domain is returned.
- */
-static const KPerDomainSettings &lookup_hostname_policy(
- const KHTMLSettingsPrivate *d,
- const TQString& hostname)
-{
-#ifdef DEBUG_SETTINGS
- kdDebug() << "lookup_hostname_policy(" << hostname << ")" << endl;
-#endif
- if (hostname.isEmpty()) {
-#ifdef DEBUG_SETTINGS
- d->global.dump("global");
-#endif
- return d->global;
- }
-
- const PolicyMap::const_iterator notfound = d->domainPolicy.end();
-
- // First check whether there is a perfect match.
- PolicyMap::const_iterator it = d->domainPolicy.find(hostname);
- if( it != notfound ) {
-#ifdef DEBUG_SETTINGS
- kdDebug() << "perfect match" << endl;
- (*it).dump(hostname);
-#endif
- // yes, use it (unless dunno)
- return *it;
- }
-
- // Now, check for partial match. Chop host from the left until
- // there's no dots left.
- TQString host_part = hostname;
- int dot_idx = -1;
- while( (dot_idx = host_part.find(TQChar('.'))) >= 0 ) {
- host_part.remove(0,dot_idx);
- it = d->domainPolicy.find(host_part);
- Q_ASSERT(notfound == d->domainPolicy.end());
- if( it != notfound ) {
-#ifdef DEBUG_SETTINGS
- kdDebug() << "partial match" << endl;
- (*it).dump(host_part);
-#endif
- return *it;
- }
- // assert(host_part[0] == TQChar('.'));
- host_part.remove(0,1); // Chop off the dot.
- }
-
- // No domain-specific entry: use global domain
-#ifdef DEBUG_SETTINGS
- kdDebug() << "no match" << endl;
- d->global.dump("global");
-#endif
- return d->global;
-}
-
-bool KHTMLSettings::isOpenMiddleClickEnabled()
-{
- return d->m_bOpenMiddleClick;
-}
-
-bool KHTMLSettings::isBackRightClickEnabled()
-{
- return d->m_bBackRightClick;
-}
-
-bool KHTMLSettings::accessKeysEnabled() const
-{
- return d->m_accessKeysEnabled;
-}
-
-bool KHTMLSettings::isAdFilterEnabled() const
-{
- return d->m_adFilterEnabled;
-}
-
-bool KHTMLSettings::isHideAdsEnabled() const
-{
- return d->m_hideAdsEnabled;
-}
-
-bool KHTMLSettings::isAdFiltered( const TQString &url ) const
-{
- if (d->m_adFilterEnabled)
- {
- if (!url.startsWith("data:"))
- {
- TQValueVector<TQRegExp>::const_iterator it(d->adFilters.constBegin());
- TQValueVector<TQRegExp>::const_iterator end(d->adFilters.constEnd());
- for (; it != end; ++it)
- {
- if ((*it).search(url) != -1)
- {
- kdDebug( 6080 ) << "Filtered: " << url << endl;
- return true;
- }
- }
- }
- }
- return false;
-}
-
-void KHTMLSettings::addAdFilter( const TQString &url )
-{
- KConfig config( "khtmlrc", false, false );
- config.setGroup( "Filter Settings" );
-
- TQRegExp rx;
- if (url.length()>2 && url[0]=='/' && url[url.length()-1] == '/')
- {
- TQString inside = url.mid(1, url.length()-2);
- rx.setWildcard(false);
- rx.setPattern(inside);
- }
- else
- {
- int left,right;
-
- rx.setWildcard(true);
- for (right=url.length(); right>0 && url[right-1]=='*' ; --right);
- for (left=0; left<right && url[left]=='*' ; ++left);
-
- rx.setPattern(url.mid(left,right-left));
- }
-
- if (rx.isValid())
- {
- int last=config.readNumEntry("Count",0);
- TQString key = "Filter-" + TQString::number(last);
- config.writeEntry(key, url);
- config.writeEntry("Count",last+1);
- config.sync();
-
- d->adFilters.append(rx);
- }
- else
- {
- KMessageBox::error(0,
- rx.errorString(),
- i18n("Filter error"));
- }
-}
-
-bool KHTMLSettings::isJavaEnabled( const TQString& hostname )
-{
- return lookup_hostname_policy(d,hostname.lower()).m_bEnableJava;
-}
-
-bool KHTMLSettings::isJavaScriptEnabled( const TQString& hostname )
-{
- return lookup_hostname_policy(d,hostname.lower()).m_bEnableJavaScript;
-}
-
-bool KHTMLSettings::isJavaScriptDebugEnabled( const TQString& /*hostname*/ )
-{
- // debug setting is global for now, but could change in the future
- return d->m_bEnableJavaScriptDebug;
-}
-
-bool KHTMLSettings::isJavaScriptErrorReportingEnabled( const TQString& /*hostname*/ ) const
-{
- // error reporting setting is global for now, but could change in the future
- return d->m_bEnableJavaScriptErrorReporting;
-}
-
-bool KHTMLSettings::isPluginsEnabled( const TQString& hostname )
-{
- return lookup_hostname_policy(d,hostname.lower()).m_bEnablePlugins;
-}
-
-KHTMLSettings::KJSWindowOpenPolicy KHTMLSettings::windowOpenPolicy(
- const TQString& hostname) const {
- return lookup_hostname_policy(d,hostname.lower()).m_windowOpenPolicy;
-}
-
-KHTMLSettings::KJSWindowMovePolicy KHTMLSettings::windowMovePolicy(
- const TQString& hostname) const {
- return lookup_hostname_policy(d,hostname.lower()).m_windowMovePolicy;
-}
-
-KHTMLSettings::KJSWindowResizePolicy KHTMLSettings::windowResizePolicy(
- const TQString& hostname) const {
- return lookup_hostname_policy(d,hostname.lower()).m_windowResizePolicy;
-}
-
-KHTMLSettings::KJSWindowStatusPolicy KHTMLSettings::windowStatusPolicy(
- const TQString& hostname) const {
- return lookup_hostname_policy(d,hostname.lower()).m_windowStatusPolicy;
-}
-
-KHTMLSettings::KJSWindowFocusPolicy KHTMLSettings::windowFocusPolicy(
- const TQString& hostname) const {
- return lookup_hostname_policy(d,hostname.lower()).m_windowFocusPolicy;
-}
-
-int KHTMLSettings::mediumFontSize() const
-{
- return d->m_fontSize;
-}
-
-int KHTMLSettings::minFontSize() const
-{
- return d->m_minFontSize;
-}
-
-TQString KHTMLSettings::settingsToCSS() const
-{
- // lets start with the link properties
- TQString str = "a:link {\ncolor: ";
- str += d->m_linkColor.name();
- str += ";";
- if(d->m_underlineLink)
- str += "\ntext-decoration: underline;";
-
- if( d->m_bChangeCursor )
- {
- str += "\ncursor: pointer;";
- str += "\n}\ninput[type=image] { cursor: pointer;";
- }
- str += "\n}\n";
- str += "a:visited {\ncolor: ";
- str += d->m_vLinkColor.name();
- str += ";";
- if(d->m_underlineLink)
- str += "\ntext-decoration: underline;";
-
- if( d->m_bChangeCursor )
- str += "\ncursor: pointer;";
- str += "\n}\n";
-
- if(d->m_hoverLink)
- str += "a:link:hover, a:visited:hover { text-decoration: underline; }\n";
-
- return str;
-}
-
-const TQString &KHTMLSettings::availableFamilies()
-{
- if ( !avFamilies ) {
- avFamilies = new TQString;
- TQFontDatabase db;
- TQStringList families = db.families();
- TQStringList s;
- TQRegExp foundryExp(" \\[.+\\]");
-
- //remove foundry info
- TQStringList::Iterator f = families.begin();
- const TQStringList::Iterator fEnd = families.end();
-
- for ( ; f != fEnd; ++f ) {
- (*f).replace( foundryExp, "");
- if (!s.contains(*f))
- s << *f;
- }
- s.sort();
-
- *avFamilies = ',' + s.join(",") + ',';
- }
-
- return *avFamilies;
-}
-
-TQString KHTMLSettings::lookupFont(int i) const
-{
- TQString font;
- if (d->fonts.count() > (uint) i)
- font = d->fonts[i];
- if (font.isEmpty())
- font = d->defaultFonts[i];
- return font;
-}
-
-TQString KHTMLSettings::stdFontName() const
-{
- return lookupFont(0);
-}
-
-TQString KHTMLSettings::fixedFontName() const
-{
- return lookupFont(1);
-}
-
-TQString KHTMLSettings::serifFontName() const
-{
- return lookupFont(2);
-}
-
-TQString KHTMLSettings::sansSerifFontName() const
-{
- return lookupFont(3);
-}
-
-TQString KHTMLSettings::cursiveFontName() const
-{
- return lookupFont(4);
-}
-
-TQString KHTMLSettings::fantasyFontName() const
-{
- return lookupFont(5);
-}
-
-void KHTMLSettings::setStdFontName(const TQString &n)
-{
- while(d->fonts.count() <= 0)
- d->fonts.append(TQString::null);
- d->fonts[0] = n;
-}
-
-void KHTMLSettings::setFixedFontName(const TQString &n)
-{
- while(d->fonts.count() <= 1)
- d->fonts.append(TQString::null);
- d->fonts[1] = n;
-}
-
-TQString KHTMLSettings::userStyleSheet() const
-{
- return d->m_userSheet;
-}
-
-bool KHTMLSettings::isFormCompletionEnabled() const
-{
- return d->m_formCompletionEnabled;
-}
-
-int KHTMLSettings::maxFormCompletionItems() const
-{
- return d->m_maxFormCompletionItems;
-}
-
-const TQString &KHTMLSettings::encoding() const
-{
- return d->m_encoding;
-}
-
-bool KHTMLSettings::followSystemColors() const
-{
- return d->m_follow_system_colors;
-}
-
-const TQColor& KHTMLSettings::textColor() const
-{
- return d->m_textColor;
-}
-
-const TQColor& KHTMLSettings::baseColor() const
-{
- return d->m_baseColor;
-}
-
-const TQColor& KHTMLSettings::linkColor() const
-{
- return d->m_linkColor;
-}
-
-const TQColor& KHTMLSettings::vLinkColor() const
-{
- return d->m_vLinkColor;
-}
-
-bool KHTMLSettings::autoLoadImages() const
-{
- return d->m_bAutoLoadImages;
-}
-
-bool KHTMLSettings::unfinishedImageFrame() const
-{
- return d->m_bUnfinishedImageFrame;
-}
-
-KHTMLSettings::KAnimationAdvice KHTMLSettings::showAnimations() const
-{
- return d->m_showAnimations;
-}
-
-bool KHTMLSettings::isAutoDelayedActionsEnabled() const
-{
- return d->m_autoDelayedActionsEnabled;
-}
-
-bool KHTMLSettings::jsErrorsEnabled() const
-{
- return d->m_jsErrorsEnabled;
-}
-
-void KHTMLSettings::setJSErrorsEnabled(bool enabled)
-{
- d->m_jsErrorsEnabled = enabled;
- // save it
- KConfig *config = KGlobal::config();
- config->setGroup("HTML Settings");
- config->writeEntry("ReportJSErrors", enabled);
- config->sync();
-}
-
-bool KHTMLSettings::allowTabulation() const
-{
- return d->m_allowTabulation;
-}
-
-bool KHTMLSettings::autoSpellCheck() const
-{
- return d->m_autoSpellCheck;
-}
-
-TQValueList< TQPair< TQString, TQChar > > KHTMLSettings::fallbackAccessKeysAssignments() const
-{
- return d->m_fallbackAccessKeysAssignments;
-}
-
-void KHTMLSettings::setJSPopupBlockerPassivePopup(bool enabled)
-{
- d->m_jsPopupBlockerPassivePopup = enabled;
- // save it
- KConfig *config = KGlobal::config();
- config->setGroup("Java/JavaScript Settings");
- config->writeEntry("PopupBlockerPassivePopup", enabled);
- config->sync();
-}
-
-bool KHTMLSettings::jsPopupBlockerPassivePopup() const
-{
- return d->m_jsPopupBlockerPassivePopup;
-}