diff options
Diffstat (limited to 'src/settings/settingsdialog.cpp')
-rw-r--r-- | src/settings/settingsdialog.cpp | 227 |
1 files changed, 227 insertions, 0 deletions
diff --git a/src/settings/settingsdialog.cpp b/src/settings/settingsdialog.cpp new file mode 100644 index 00000000..9f6b372a --- /dev/null +++ b/src/settings/settingsdialog.cpp @@ -0,0 +1,227 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2008-2012 by Andrea Diamantini <adjam7 at gmail dot com> +* Copyright (C) 2009-2011 by Lionel Chauvin <megabigbug@yahoo.fr> +* +* +* 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) version 3 or any later version +* accepted by the membership of KDE e.V. (or its successor approved +* by the membership of KDE e.V.), which shall act as a proxy +* defined in Section 14 of version 3 of the license. +* +* 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. If not, see <http://www.gnu.org/licenses/>. +* +* ============================================================ */ + + +// Self Includes +#include "settingsdialog.h" +#include "settingsdialog.moc" + +// Auto Includes +#include "rekonq.h" + +// Local Includes +#include "searchengine.h" + +// Widget Includes +#include "advancedwidget.h" +#include "appearancewidget.h" +#include "generalwidget.h" +#include "privacywidget.h" +#include "tabswidget.h" +#include "webkitwidget.h" + +// KDE Includes +#include <KConfig> +#include <KStandardDirs> +#include <KPageWidgetItem> +#include <KShortcutsEditor> +#include <KCModuleInfo> +#include <KCModuleProxy> + +// Qt Includes +#include <QtGui/QWidget> + + +class Private +{ +private: + Private(SettingsDialog *parent); + +private: + GeneralWidget *generalWidg; + TabsWidget *tabsWidg; + AppearanceWidget *appearanceWidg; + WebKitWidget *webkitWidg; + PrivacyWidget *privacyWidg; + AdvancedWidget *advancedWidg; + + KCModuleProxy *ebrowsingModule; + + KShortcutsEditor *shortcutsEditor; + + friend class SettingsDialog; +}; + + +Private::Private(SettingsDialog *parent) +{ + KPageWidgetItem *pageItem; + + // -- 1 + generalWidg = new GeneralWidget(parent); + generalWidg->layout()->setMargin(0); + pageItem = parent->addPage(generalWidg, i18n("General")); + pageItem->setIcon(KIcon("rekonq")); + + // -- 2 + tabsWidg = new TabsWidget(parent); + tabsWidg->layout()->setMargin(0); + pageItem = parent->addPage(tabsWidg, i18n("Tabs")); + pageItem->setIcon(KIcon("tab-duplicate")); + + // -- 3 + appearanceWidg = new AppearanceWidget(parent); + appearanceWidg->layout()->setMargin(0); + pageItem = parent->addPage(appearanceWidg, i18n("Appearance")); + pageItem->setIcon(KIcon("preferences-desktop-font")); + + // -- 4 + webkitWidg = new WebKitWidget(parent); + webkitWidg->layout()->setMargin(0); + pageItem = parent->addPage(webkitWidg, i18n("WebKit")); + QString webkitIconPath = KStandardDirs::locate("appdata", "pics/webkit-icon.png"); + KIcon webkitIcon = KIcon(QIcon(webkitIconPath)); + pageItem->setIcon(webkitIcon); + + // -- 5 + privacyWidg = new PrivacyWidget(parent); + privacyWidg->layout()->setMargin(0); + pageItem = parent->addPage(privacyWidg, i18n("Privacy")); + pageItem->setIcon(KIcon("view-media-artist")); + + // -- 6 + advancedWidg = new AdvancedWidget(parent); + advancedWidg->layout()->setMargin(0); + pageItem = parent->addPage(advancedWidg, i18n("Advanced")); + pageItem->setIcon(KIcon("applications-system")); + +// // -- 7 +// shortcutsEditor = new KShortcutsEditor(rApp->mainWindow()->actionCollection(), parent); +// pageItem = parent->addPage(shortcutsEditor , i18n("Shortcuts")); +// pageItem->setIcon(KIcon("configure-shortcuts")); + + // -- 8 + KCModuleInfo ebrowsingInfo("ebrowsing.desktop"); + ebrowsingModule = new KCModuleProxy(ebrowsingInfo, parent); + pageItem = parent->addPage(ebrowsingModule, i18n("Search Engines")); + KIcon wsIcon("edit-web-search"); + if (wsIcon.isNull()) + { + wsIcon = KIcon("preferences-web-browser-shortcuts"); + } + pageItem->setIcon(wsIcon); + + // WARNING + // remember wheh changing here that the smallest netbooks + // have a 1024x576 resolution. So DON'T bother that limits!! + parent->setMinimumSize(700, 525); +} + + +// ----------------------------------------------------------------------------------------------------- + + +SettingsDialog::SettingsDialog(QWidget *parent) + : KConfigDialog(parent, "rekonfig", ReKonfig::self()) + , d(new Private(this)) +{ + showButtonSeparator(false); + setWindowTitle(i18nc("Window title of the settings dialog", "Configure – rekonq")); + + // update buttons + connect(d->generalWidg, SIGNAL(changed(bool)), this, SLOT(updateButtons())); + connect(d->tabsWidg, SIGNAL(changed(bool)), this, SLOT(updateButtons())); + connect(d->appearanceWidg, SIGNAL(changed(bool)), this, SLOT(updateButtons())); + connect(d->webkitWidg, SIGNAL(changed(bool)), this, SLOT(updateButtons())); + connect(d->ebrowsingModule, SIGNAL(changed(bool)), this, SLOT(updateButtons())); + connect(d->advancedWidg, SIGNAL(changed(bool)), this, SLOT(updateButtons())); + connect(d->privacyWidg, SIGNAL(changed(bool)), this, SLOT(updateButtons())); + + connect(d->shortcutsEditor, SIGNAL(keyChange()), this, SLOT(updateButtons())); + + // save settings + connect(this, SIGNAL(applyClicked()), this, SLOT(saveSettings())); + connect(this, SIGNAL(okClicked()), this, SLOT(saveSettings())); + setHelp("Config-rekonq", "rekonq"); +} + + +SettingsDialog::~SettingsDialog() +{ + kDebug() << "bye bye settings..."; + delete d; +} + + +// we need this function to SAVE settings in rc file.. +void SettingsDialog::saveSettings() +{ + ReKonfig::self()->writeConfig(); + + d->generalWidg->save(); + d->tabsWidg->save(); + d->appearanceWidg->save(); + d->webkitWidg->save(); + d->advancedWidg->save(); + d->privacyWidg->save(); + d->shortcutsEditor->save(); + d->ebrowsingModule->save(); + + d->privacyWidg->reload(); + + SearchEngine::reload(); + + updateButtons(); + emit settingsChanged("ReKonfig"); +} + + +bool SettingsDialog::hasChanged() +{ + return KConfigDialog::hasChanged() + || d->generalWidg->changed() + || d->tabsWidg->changed() + || d->appearanceWidg->changed() + || d->webkitWidg->changed() + || d->advancedWidg->changed() + || d->privacyWidg->changed() + || d->ebrowsingModule->changed() + || d->shortcutsEditor->isModified(); + ; +} + + +bool SettingsDialog::isDefault() +{ + bool isDef = KConfigDialog::isDefault(); + + if (isDef) + { + // check our private widget values + isDef = d->appearanceWidg->isDefault(); + } + return isDef; +} |