📄 khtml_settings.cc
字号:
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 = QStringList(); 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( QString( "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" ) ) { QString 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); QStringList accesskeys = config->readListEntry("FallbackAccessKeysAssignments"); d->m_fallbackAccessKeysAssignments.clear(); for( QStringList::ConstIterator it = accesskeys.begin(); it != accesskeys.end(); ++it ) if( (*it).length() > 2 && (*it)[ 1 ] == ':' ) d->m_fallbackAccessKeysAssignments.append( qMakePair( (*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 QMap<QString,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 QStringList dl = config->readListEntry( domain_keys[i] ); const QMap<QString,int>::Iterator notfound = domainList.end(); QStringList::ConstIterator it = dl.begin(); const QStringList::ConstIterator itEnd = dl.end(); for (; it != itEnd; ++it) { const QString domain = (*it).lower(); QMap<QString,int>::Iterator pos = domainList.find(domain); if (pos == notfound) domainList.insert(domain,0); }/*next it*/ } }/*next i*/ if (reset) d->domainPolicy.clear(); QString js_group_save = config->group(); { QMap<QString,int>::ConstIterator it = domainList.begin(); const QMap<QString,int>::ConstIterator itEnd = domainList.end(); for ( ; it != itEnd; ++it) { const QString 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 QStringList domainList = config->readListEntry( "JavaDomainSettings" ); QStringList::ConstIterator it = domainList.begin(); const QStringList::ConstIterator itEnd = domainList.end(); for ( ; it != itEnd; ++it) { QString 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 QStringList domainList = config->readListEntry( "ECMADomainSettings" ); QStringList::ConstIterator it = domainList.begin(); const QStringList::ConstIterator itEnd = domainList.end(); for ( ; it != itEnd; ++it) { QString 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 QStringList domainList = config->readListEntry( "JavaScriptDomainAdvice" ); QStringList::ConstIterator it = domainList.begin(); const QStringList::ConstIterator itEnd = domainList.end(); for ( ; it != itEnd; ++it) { QString 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 ) { QStringList domainConfig; PolicyMap::Iterator it; for( it = d->javaDomainPolicy.begin(); it != d->javaDomainPolicy.end(); ++it ) { QCString javaPolicy = adviceToStr( it.data() ); QCString javaScriptPolicy = adviceToStr( KJavaScriptDunno ); domainConfig.append(QString::fromLatin1("%1:%2:%3").arg(it.key()).arg(javaPolicy).arg(javaScriptPolicy)); } config->writeEntry( "JavaDomainSettings", domainConfig ); } if( check_old_ecma ) { QStringList domainConfig; PolicyMap::Iterator it; for( it = d->javaScriptDomainPolicy.begin(); it != d->javaScriptDomainPolicy.end(); ++it ) { QCString javaPolicy = adviceToStr( KJavaScriptDunno ); QCString javaScriptPolicy = adviceToStr( it.data() ); domainConfig.append(QString::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 QString& 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. QString host_part = hostname; int dot_idx = -1; while( (dot_idx = host_part.find(QChar('.'))) >= 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] == QChar('.')); 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;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -