You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdebase/kcontrol/privacy/privacy.cpp

320 lines
10 KiB

/**
* privacy.cpp
*
* Copyright (c) 2003 Ralf Hoelzer <ralf@well.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include <tqcheckbox.h>
#include <tqlayout.h>
#include <tqptrlist.h>
#include <tqpushbutton.h>
#include <tqtabwidget.h>
#include <tqtooltip.h>
#include <tqwhatsthis.h>
#include <kaboutdata.h>
#include <kconfig.h>
#include <kdialog.h>
#include <kglobal.h>
#include <klistview.h>
#include <klocale.h>
#include <kmessagebox.h>
#include <ktextedit.h>
#include "privacy.h"
Privacy::Privacy(TQWidget *parent, const char *name)
: KCModule(parent, name)
{
setQuickHelp( i18n("The privacy module allows a user to erase traces which TDE leaves on "
"the system, such as command histories or browser caches."));
setButtons( KCModule::Default|KCModule::Apply|KCModule::Help );
KAboutData *about =
new KAboutData(I18N_NOOP("kcm_privacy"), I18N_NOOP("TDE Privacy Control Module"),
0, 0, KAboutData::License_GPL,
I18N_NOOP("(c) 2003 Ralf Hoelzer"));
about->addAuthor("Ralf Hoelzer", 0, "ralf@well.com");
about->addAuthor("Benjamin Meyer", I18N_NOOP("Thumbnail Cache"), "ben+kdeprivacy@meyerhome.net");
setAboutData( about );
m_privacymanager = new KPrivacyManager();
TQBoxLayout *top = new TQVBoxLayout(this, 0, KDialog::spacingHint());
// add this once the P3P stuff is finished
//TQTabWidget *privacyTabs = new TQTabWidget(this, "privacytabs");
cleaningDialog = new KCMPrivacyDialog(this);
//p3pSettings = new KPrivacySettings(this);
top->addWidget(cleaningDialog);
//top->addWidget(privacyTabs);
//privacyTabs->addTab(cleaningDialog, i18n("Cleanup"));
//privacyTabs->addTab(p3pSettings, i18n("Privacy Settings"));
KListView *sw = cleaningDialog->privacyListView;
sw->addColumn(i18n("Privacy Settings"));
sw->addColumn(i18n("Description"));
sw->setRootIsDecorated(true);
sw->setTooltipColumn(1);
sw->setColumnWidthMode(0, TQListView::Maximum);
generalCLI = new KListViewItem(sw, i18n("General") );
webbrowsingCLI = new KListViewItem(sw, i18n("Web Browsing") );
generalCLI->setOpen(true);
webbrowsingCLI->setOpen(true);
clearThumbnails = new TQCheckListItem(generalCLI,
i18n("Thumbnail Cache"),TQCheckListItem::CheckBox);
clearRunCommandHistory = new TQCheckListItem(generalCLI,
i18n("Run Command History"),TQCheckListItem::CheckBox);
clearAllCookies = new TQCheckListItem(webbrowsingCLI,
i18n("Cookies"),TQCheckListItem::CheckBox);
clearSavedClipboardContents = new TQCheckListItem(generalCLI,
i18n("Saved Clipboard Contents"),TQCheckListItem::CheckBox);
clearWebHistory = new TQCheckListItem(webbrowsingCLI,
i18n("Web History"),TQCheckListItem::CheckBox);
clearWebCache = new TQCheckListItem(webbrowsingCLI,
i18n("Web Cache"),TQCheckListItem::CheckBox);
clearFormCompletion = new TQCheckListItem(webbrowsingCLI,
i18n("Form Completion Entries"),TQCheckListItem::CheckBox);
clearRecentDocuments = new TQCheckListItem(generalCLI,
i18n("Recent Documents"),TQCheckListItem::CheckBox);
clearQuickStartMenu = new TQCheckListItem(generalCLI,
i18n("Quick Start Menu"),TQCheckListItem::CheckBox);
clearFavIcons = new TQCheckListItem(webbrowsingCLI,
i18n("Favorite Icons"),TQCheckListItem::CheckBox);
TQWhatsThis::add(sw, i18n("Check all cleanup actions you would like to perform. These will be executed by pressing the button below"));
TQWhatsThis::add(cleaningDialog->cleanupButton, i18n("Immediately performs the cleanup actions selected above"));
clearThumbnails->setText(1, i18n("Clears all cached thumbnails"));
clearRunCommandHistory->setText(1, i18n("Clears the history of commands run through the Run Command tool on the desktop"));
clearAllCookies->setText(1, i18n("Clears all stored cookies set by websites"));
clearWebHistory->setText(1, i18n("Clears the history of visited websites"));
clearSavedClipboardContents->setText(1, i18n("Clears the clipboard contents stored by Klipper"));
clearWebCache->setText(1, i18n("Clears the temporary cache of websites visited"));
clearFormCompletion->setText(1, i18n("Clears values which were entered into forms on websites"));
clearRecentDocuments->setText(1, i18n("Clears the list of recently used documents from the TDE applications menu"));
clearQuickStartMenu->setText(1, i18n("Clears the entries from the list of recently started applications"));
clearFavIcons->setText(1, i18n("Clears the FavIcons cached from visited websites"));
connect(sw, TQT_SIGNAL(selectionChanged()), TQT_SLOT(changed()));
// store all entries in a list for easy access later on
checklist.append(clearThumbnails);
checklist.append(clearRunCommandHistory);
checklist.append(clearAllCookies);
checklist.append(clearSavedClipboardContents);
checklist.append(clearWebHistory);
checklist.append(clearWebCache);
checklist.append(clearFormCompletion);
checklist.append(clearRecentDocuments);
checklist.append(clearQuickStartMenu);
checklist.append(clearFavIcons);
connect(cleaningDialog->cleanupButton, TQT_SIGNAL(clicked()), TQT_SLOT(cleanup()));
connect(cleaningDialog->selectAllButton, TQT_SIGNAL(clicked()), TQT_SLOT(selectAll()));
connect(cleaningDialog->selectNoneButton, TQT_SIGNAL(clicked()), TQT_SLOT(selectNone()));
load();
}
Privacy::~Privacy()
{
delete m_privacymanager;
}
void Privacy::load()
{
load( false );
}
void Privacy::load(bool useDefaults)
{
KConfig *c = new KConfig("kprivacyrc", false, false);
c->setReadDefaults( useDefaults );
// get general privacy settings
{
KConfigGroupSaver saver(c, "Cleaning");
clearThumbnails->setOn(c->readBoolEntry("ClearThumbnails", true));
clearRunCommandHistory->setOn(c->readBoolEntry("ClearRunCommandHistory", true));
clearAllCookies->setOn(c->readBoolEntry("ClearAllCookies", true));
clearSavedClipboardContents->setOn(c->readBoolEntry("ClearSavedClipboardContents", true));
clearWebHistory->setOn(c->readBoolEntry("ClearWebHistory", true));
clearWebCache->setOn(c->readBoolEntry("ClearWebCache", true));
clearFormCompletion->setOn(c->readBoolEntry("ClearFormCompletion", true));
clearRecentDocuments->setOn(c->readBoolEntry("ClearRecentDocuments", true));
clearQuickStartMenu->setOn(c->readBoolEntry("ClearQuickStartMenu", true));
clearFavIcons->setOn(c->readBoolEntry("ClearFavIcons", true));
}
{
KConfigGroupSaver saver(c, "P3P");
// TODO: add P3P settings here
}
delete c;
emit changed( useDefaults );
}
void Privacy::defaults()
{
load( true );
}
void Privacy::save()
{
KConfig *c = new KConfig("kprivacyrc", false, false);
{
KConfigGroupSaver saver(c, "Cleaning");
c->writeEntry("ClearThumbnails", clearThumbnails->isOn());
c->writeEntry("ClearRunCommandHistory", clearRunCommandHistory->isOn());
c->writeEntry("ClearAllCookies", clearAllCookies->isOn());
c->writeEntry("ClearSavedClipboardContents", clearSavedClipboardContents->isOn());
c->writeEntry("ClearWebCache", clearWebCache->isOn());
c->writeEntry("ClearWebHistory", clearWebHistory->isOn());
c->writeEntry("ClearFormCompletion", clearFormCompletion->isOn());
c->writeEntry("ClearRecentDocuments", clearRecentDocuments->isOn());
c->writeEntry("ClearQuickStartMenu", clearQuickStartMenu->isOn());
c->writeEntry("ClearFavIcons", clearFavIcons->isOn());
}
{
KConfigGroupSaver saver(c, "P3P");
// TODO: add settings for P3P
}
c->sync();
delete c;
emit changed(false);
}
void Privacy::selectAll()
{
TQCheckListItem *item;
for ( item = checklist.first(); item; item = checklist.next() )
item->setOn(true);
emit changed(true);
}
void Privacy::selectNone()
{
TQCheckListItem *item;
for ( item = checklist.first(); item; item = checklist.next() )
item->setOn(false);
emit changed(true);
}
void Privacy::cleanup()
{
if (KMessageBox::warningContinueCancel(this, i18n("You are deleting data that is potentially valuable to you. Are you sure?")) != KMessageBox::Continue) return;
cleaningDialog->statusTextEdit->clear();
cleaningDialog->statusTextEdit->setText(i18n("Starting cleanup..."));
TQCheckListItem *item;
bool error = false;
for ( item = checklist.first(); item; item = checklist.next() )
{
if(item->isOn())
{
TQString statusText = i18n("Clearing %1...").arg(item->text());
cleaningDialog->statusTextEdit->append(statusText);
if(item == clearThumbnails)
error = m_privacymanager->clearThumbnails();
if(item == clearRunCommandHistory)
error = !m_privacymanager->clearRunCommandHistory();
if(item == clearSavedClipboardContents)
error = !m_privacymanager->clearSavedClipboardContents();
if(item == clearAllCookies)
error = !m_privacymanager->clearAllCookies();
if(item == clearFormCompletion)
error = !m_privacymanager->clearFormCompletion();
if(item == clearWebCache)
error = !m_privacymanager->clearWebCache();
if(item == clearWebHistory)
error = !m_privacymanager->clearWebHistory();
if(item == clearRecentDocuments)
error = !m_privacymanager->clearRecentDocuments();
if(item == clearQuickStartMenu)
error = !m_privacymanager->clearQuickStartMenu();
if(item == clearFavIcons)
error = m_privacymanager->clearFavIcons();
if(error)
{
TQString errorText = i18n("Clearing of %1 failed").arg(item->text());
cleaningDialog->statusTextEdit->append(errorText);
}
}
}
cleaningDialog->statusTextEdit->append(i18n("Clean up finished."));
}
extern "C"
{
KDE_EXPORT KCModule *create_privacy(TQWidget *parent, const char * /*name*/)
{
KGlobal::locale()->insertCatalogue("privacy");
return new Privacy(parent, "Privacy");
}
}
#include "privacy.moc"