diff options
author | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2013-01-26 13:15:08 -0600 |
---|---|---|
committer | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2013-01-26 13:15:08 -0600 |
commit | 39177c1528006932b00136d34cf022434df73d72 (patch) | |
tree | a0791bebede3e7eb454ac2268a14c4e8a157de6d /konq-plugins/tdehtmlsettingsplugin/settingsplugin.cpp | |
parent | 2a74bca8c834c4d4f391c70de8fdfa12a7cc972c (diff) | |
download | tdeaddons-39177c1528006932b00136d34cf022434df73d72.tar.gz tdeaddons-39177c1528006932b00136d34cf022434df73d72.zip |
Rename a number of libraries and executables to avoid conflicts with KDE4
Diffstat (limited to 'konq-plugins/tdehtmlsettingsplugin/settingsplugin.cpp')
-rw-r--r-- | konq-plugins/tdehtmlsettingsplugin/settingsplugin.cpp | 328 |
1 files changed, 328 insertions, 0 deletions
diff --git a/konq-plugins/tdehtmlsettingsplugin/settingsplugin.cpp b/konq-plugins/tdehtmlsettingsplugin/settingsplugin.cpp new file mode 100644 index 0000000..05619ed --- /dev/null +++ b/konq-plugins/tdehtmlsettingsplugin/settingsplugin.cpp @@ -0,0 +1,328 @@ +/* This file is part of the KDE project + Copyright (C) 2001 Carsten Pfeiffer <pfeiffer@kde.org> + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This program 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 + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include <dcopclient.h> + +#include <kapplication.h> +#include <kaction.h> +#include <kconfig.h> +#include <kglobal.h> +#include <tdehtml_part.h> +#include <kinstance.h> +#include <klocale.h> +#include <kmessagebox.h> +#include <kpopupmenu.h> +#include <kprotocolmanager.h> +#include <kgenericfactory.h> +#include <kaboutdata.h> + +#include "settingsplugin.h" + +typedef KGenericFactory<SettingsPlugin> SettingsPluginFactory; +static const TDEAboutData aboutdata("tdehtmlsettingsplugin", I18N_NOOP("HTML Settings") , "1.0" ); +K_EXPORT_COMPONENT_FACTORY( libtdehtmlsettingsplugin, + SettingsPluginFactory( &aboutdata ) ) + +SettingsPlugin::SettingsPlugin( TQObject* parent, const char* name, + const TQStringList & ) + : KParts::Plugin( parent, name ), mConfig(0) +{ + + setInstance(SettingsPluginFactory::instance()); + + if ( !kapp->dcopClient()->isAttached() ) + kapp->dcopClient()->attach(); + + KActionMenu *menu = new KActionMenu( i18n("HTML Settings"), "configure", + actionCollection(), "action menu" ); + menu->setDelayed( false ); + + KToggleAction *action; + + + action = new KToggleAction( i18n("Java&Script"), 0, + this, TQT_SLOT(toggleJavascript()), + actionCollection(), "javascript" ); + menu->insert( action ); + + action = new KToggleAction( i18n("&Java"), 0, + this, TQT_SLOT(toggleJava()), + actionCollection(), "java" ); + menu->insert( action ); + + action = new KToggleAction( i18n("&Cookies"), 0, + this, TQT_SLOT(toggleCookies()), + actionCollection(), "cookies" ); + menu->insert( action ); + + action = new KToggleAction( i18n("&Plugins"), 0, + this, TQT_SLOT(togglePlugins()), + actionCollection(), "plugins" ); + menu->insert( action ); + + action = new KToggleAction( i18n("Autoload &Images"), 0, + this, TQT_SLOT(toggleImageLoading()), + actionCollection(), "imageloading" ); + menu->insert( action ); + + menu->insert( new KActionSeparator(actionCollection()) ); + + action = new KToggleAction( i18n("Enable Pro&xy"), 0, + this, TQT_SLOT(toggleProxy()), + actionCollection(), "useproxy" ); + action->setCheckedState(i18n("Disable Pro&xy")); + menu->insert( action ); + + action = new KToggleAction( i18n("Enable Cac&he"), 0, + this, TQT_SLOT(toggleCache()), + actionCollection(), "usecache" ); + action->setCheckedState(i18n("Disable Cac&he")); + menu->insert( action ); + + + KSelectAction *sAction = new KSelectAction( i18n("Cache Po&licy"), 0, + 0, 0, actionCollection(), + "cachepolicy" ); + TQStringList policies; + policies += i18n( "&Keep Cache in Sync" ); + policies += i18n( "&Use Cache if Possible" ); + policies += i18n( "&Offline Browsing Mode" ); + sAction->setItems( policies ); + connect( sAction, TQT_SIGNAL( activated( int ) ), TQT_SLOT( cachePolicyChanged(int) ) ); + + menu->insert( sAction ); + + connect( menu->popupMenu(), TQT_SIGNAL( aboutToShow() ), TQT_SLOT( showPopup() )); +} + +SettingsPlugin::~SettingsPlugin() +{ + delete mConfig; +} + +void SettingsPlugin::showPopup() +{ + if( !parent() || !parent()->inherits("KHTMLPart")) + return; + + if (!mConfig) + mConfig = new TDEConfig("settingspluginrc", false, false); + + KHTMLPart *part = static_cast<KHTMLPart *>( parent() ); + + KProtocolManager::reparseConfiguration(); + bool cookies = cookiesEnabled( part->url().url() ); + + ((KToggleAction*)actionCollection()->action("useproxy"))->setChecked(KProtocolManager::useProxy()); + ((KToggleAction*)actionCollection()->action("java"))->setChecked( part->javaEnabled() ); + ((KToggleAction*)actionCollection()->action("javascript"))->setChecked( part->jScriptEnabled() ); + ((KToggleAction*)actionCollection()->action("cookies"))->setChecked( cookies ); + ((KToggleAction*)actionCollection()->action("plugins"))->setChecked( part->pluginsEnabled() ); + ((KToggleAction*)actionCollection()->action("imageloading"))->setChecked( part->autoloadImages() ); + ((KToggleAction*)actionCollection()->action("usecache"))->setChecked(KProtocolManager::useCache()); + + TDEIO::CacheControl cc = KProtocolManager::cacheControl(); + switch ( cc ) + { + case TDEIO::CC_Verify: + ((KSelectAction*)actionCollection()->action("cachepolicy"))->setCurrentItem( 0 ); + break; + case TDEIO::CC_CacheOnly: + ((KSelectAction*)actionCollection()->action("cachepolicy"))->setCurrentItem( 2 ); + break; + case TDEIO::CC_Cache: + ((KSelectAction*)actionCollection()->action("cachepolicy"))->setCurrentItem( 1 ); + break; + case TDEIO::CC_Reload: // nothing for now + case TDEIO::CC_Refresh: + default: + break; + + } +} + +void SettingsPlugin::toggleJava() +{ + if( parent() && parent()->inherits("KHTMLPart")) + { + KHTMLPart *part = static_cast<KHTMLPart *>(parent()); + part->setJavaEnabled( ((KToggleAction*)actionCollection()->action("java"))->isChecked() ); + } +} + +void SettingsPlugin::toggleJavascript() +{ + if( parent() && parent()->inherits("KHTMLPart")) + { + KHTMLPart *part = static_cast<KHTMLPart *>(parent()); + part->setJScriptEnabled( ((KToggleAction*)actionCollection()->action("javascript"))->isChecked() ); + } +} + +void SettingsPlugin::toggleCookies() +{ + if( !parent() || !parent()->inherits("KHTMLPart")) + return; + + KHTMLPart *part = static_cast<KHTMLPart *>( parent() ); + + TQString advice; + bool enable = ((KToggleAction*)actionCollection()->action("cookies"))->isChecked(); + advice = enable ? "Accept" : "Reject"; + + TQCString replyType; + TQByteArray data, replyData; + TQDataStream stream( data, IO_WriteOnly ); + stream << part->url().url() << advice; + bool ok = kapp->dcopClient()->call( "kded", "kcookiejar", + "setDomainAdvice(TQString,TQString)", + data, replyType, replyData, true ); + + if ( !ok ) + KMessageBox::sorry( part->widget(), + i18n("I can't enable cookies, because the " + "cookie daemon could not be started."), + i18n("Cookies Disabled")); +} + +void SettingsPlugin::togglePlugins() +{ + if( parent() && parent()->inherits("KHTMLPart")) + { + KHTMLPart *part = static_cast<KHTMLPart *>(parent()); + part->setPluginsEnabled( ((KToggleAction*)actionCollection()->action("plugins"))->isChecked() ); + } +} + +void SettingsPlugin::toggleImageLoading() +{ + if( parent() && parent()->inherits("KHTMLPart")) + { + KHTMLPart *part = static_cast<KHTMLPart *>(parent()); + part->setAutoloadImages( ((KToggleAction*)actionCollection()->action("imageloading"))->isChecked() ); + } +} + +bool SettingsPlugin::cookiesEnabled( const TQString& url ) +{ + TQByteArray data, reply; + TQCString replyType; + TQDataStream stream( data, IO_WriteOnly ); + stream << url; + kapp->dcopClient()->call( "kcookiejar", "kcookiejar", "getDomainAdvice(TQString)", data, replyType, reply, true ); + + bool enabled = false; + + if ( replyType == TQSTRING_OBJECT_NAME_STRING ) + { + TQString advice; + TQDataStream s( reply, IO_ReadOnly ); + s >> advice; + enabled = ( advice == "Accept" ); + if ( !enabled && advice == "Dunno" ) { + // TODO, check the global setting via dcop + TDEConfig kc( "kcookiejarrc", true, false ); + kc.setGroup( "Cookie Policy" ); + enabled = + (kc.readEntry( "CookieGlobalAdvice", "Reject" ) == "Accept"); + } + } + + return enabled; +} + + +// +// sync with kcontrol/kio/ksaveioconfig.* ! +// + +void SettingsPlugin::toggleProxy() +{ + bool enable = ((KToggleAction*)actionCollection()->action("useproxy"))->isChecked(); + + int type; + + if( enable ) + type = mConfig->readNumEntry( "SavedProxyType", KProtocolManager::ManualProxy ); + else + { + mConfig->writeEntry( "SavedProxyType", KProtocolManager::proxyType() ); + type = KProtocolManager::NoProxy; + } + + TDEConfig config("kioslaverc", false, false); + config.setGroup( "Proxy Settings" ); + config.writeEntry( "ProxyType", type ); + + ((KToggleAction*)actionCollection()->action("useproxy"))->setChecked(enable); + updateIOSlaves(); +} + + +void SettingsPlugin::toggleCache() +{ + bool usesCache = KProtocolManager::useCache(); + TDEConfig config( "kio_httprc", false, false ); + config.writeEntry( "UseCache", !usesCache ); + + ((KToggleAction*)actionCollection()->action("usecache"))->setChecked( !usesCache ); + + updateIOSlaves(); +} + +void SettingsPlugin::cachePolicyChanged( int p ) +{ + TQString policy; + + switch ( p ) { + case 0: + policy = TDEIO::getCacheControlString( TDEIO::CC_Verify ); + break; + case 1: + policy = TDEIO::getCacheControlString( TDEIO::CC_Cache ); + break; + case 2: + policy = TDEIO::getCacheControlString( TDEIO::CC_CacheOnly ); + break; + }; + + if ( !policy.isEmpty() ) { + TDEConfig config("kio_httprc", false, false); + config.writeEntry("cache", policy); + + updateIOSlaves(); + } +} + +void SettingsPlugin::updateIOSlaves() +{ + TQByteArray data; + TQDataStream stream( data, IO_WriteOnly ); + + DCOPClient* client = kapp->dcopClient(); + if ( !client->isAttached() ) + client->attach(); + + TQString protocol; // null -> all of them + stream << protocol; + client->send( "*", "TDEIO::Scheduler", + "reparseSlaveConfiguration(TQString)", data ); +} + +#include "settingsplugin.moc" |