diff options
Diffstat (limited to 'kcontrol/kio/cache.cpp')
-rw-r--r-- | kcontrol/kio/cache.cpp | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/kcontrol/kio/cache.cpp b/kcontrol/kio/cache.cpp new file mode 100644 index 000000000..8b730ae77 --- /dev/null +++ b/kcontrol/kio/cache.cpp @@ -0,0 +1,127 @@ +/* + cache.cpp - Proxy configuration dialog + + Copyright (C) 2001,02,03 Dawit Alemayehu <[email protected]> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public + License (GPL) version 2 as published by the Free Software + Foundation. + + 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 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 <qlabel.h> +#include <qlayout.h> +#include <qcheckbox.h> +#include <qwhatsthis.h> +#include <qpushbutton.h> +#include <qbuttongroup.h> +#include <qradiobutton.h> + +#include <kdebug.h> +#include <klocale.h> +#include <kprocess.h> +#include <knuminput.h> + +#include "ksaveioconfig.h" +#include <kio/http_slave_defaults.h> + +#include "cache.h" +#include "cache_ui.h" + +KCacheConfigDialog::KCacheConfigDialog( QWidget* parent ) + :KCModule( parent, "kcmkio" ) +{ + QVBoxLayout* mainLayout = new QVBoxLayout(this, 0, 0); + m_dlg = new CacheDlgUI(this); + mainLayout->addWidget(m_dlg); + mainLayout->addStretch(); + + load(); +} + +void KCacheConfigDialog::load() +{ + m_dlg->cbUseCache->setChecked(KProtocolManager::useCache()); + m_dlg->sbMaxCacheSize->setValue( KProtocolManager::maxCacheSize() ); + + KIO::CacheControl cc = KProtocolManager::cacheControl(); + + if (cc==KIO::CC_Verify) + m_dlg->rbVerifyCache->setChecked( true ); + else if (cc==KIO::CC_Refresh) + m_dlg->rbVerifyCache->setChecked( true ); + else if (cc==KIO::CC_CacheOnly) + m_dlg->rbOfflineMode->setChecked( true ); + else if (cc==KIO::CC_Cache) + m_dlg->rbCacheIfPossible->setChecked( true ); + + // Config changed notifications... + connect ( m_dlg->cbUseCache, SIGNAL(toggled(bool)), SLOT(configChanged()) ); + connect ( m_dlg->bgCachePolicy, SIGNAL(clicked (int)), SLOT(configChanged()) ); + connect ( m_dlg->sbMaxCacheSize, SIGNAL(valueChanged(int)), SLOT(configChanged()) ); + connect ( m_dlg->pbClearCache, SIGNAL(clicked()), SLOT(slotClearCache()) ); + emit changed( false ); +} + +void KCacheConfigDialog::save() +{ + KSaveIOConfig::setUseCache( m_dlg->cbUseCache->isChecked() ); + KSaveIOConfig::setMaxCacheSize( m_dlg->sbMaxCacheSize->value() ); + + if ( !m_dlg->cbUseCache->isChecked() ) + KSaveIOConfig::setCacheControl(KIO::CC_Refresh); + else if ( m_dlg->rbVerifyCache->isChecked() ) + KSaveIOConfig::setCacheControl(KIO::CC_Refresh); + else if ( m_dlg->rbOfflineMode->isChecked() ) + KSaveIOConfig::setCacheControl(KIO::CC_CacheOnly); + else if ( m_dlg->rbCacheIfPossible->isChecked() ) + KSaveIOConfig::setCacheControl(KIO::CC_Cache); + + // Update running io-slaves... + KSaveIOConfig::updateRunningIOSlaves (this); + + emit changed( false ); +} + +void KCacheConfigDialog::defaults() +{ + m_dlg->cbUseCache->setChecked( true ); + m_dlg->rbVerifyCache->setChecked( true ); + m_dlg->sbMaxCacheSize->setValue( DEFAULT_MAX_CACHE_SIZE ); +} + +QString KCacheConfigDialog::quickHelp() const +{ + return i18n( "<h1>Cache</h1><p>This module lets you configure your cache settings.</p>" + "<p>The cache is an internal memory in Konqueror where recently " + "read web pages are stored. If you want to retrieve a web " + "page again that you have recently read, it will not be " + "downloaded from the Internet, but rather retrieved from the " + "cache, which is a lot faster.</p>" ); +} + +void KCacheConfigDialog::configChanged() +{ + emit changed( true ); +} + +void KCacheConfigDialog::slotClearCache() +{ + KProcess process; + process << "kio_http_cache_cleaner" << "--clear-all"; + process.start(KProcess::DontCare); + // Cleaning up might take a while. Better detach. + process.detach(); +} + +#include "cache.moc" |