/* ============================================================  *  * This file is a part of the rekonq project  * * Copyright (C) 2007-2008 Trolltech ASA. All rights reserved * Copyright (C) 2008 by Andrea Diamantini  * *  * 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, 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.  *  * ============================================================ */ // Self Includes #include "settings.h" #include "settings.moc" // Auto Includes #include "rekonq.h" // Local Includes #include "browserapplication.h" #include "mainwindow.h" #include "cookiejar.h" #include "history.h" #include "networkaccessmanager.h" #include "webview.h" //Ui Includes #include "ui_settings_general.h" #include "ui_settings_fonts.h" #include "ui_settings_privacy.h" #include "ui_settings_proxy.h" // KDE Includes #include #include #include #include #include // Qt Includes #include #include class Private { private: Ui::general generalUi; Ui::fonts fontsUi; Ui::privacy privacyUi; Ui::proxy proxyUi; Private(SettingsDialog *parent); friend class SettingsDialog; }; Private::Private(SettingsDialog *parent) { QWidget *widget; KPageWidgetItem *pageItem; widget = new QWidget; generalUi.setupUi( widget ); widget->layout()->setMargin(0); pageItem = parent->addPage( widget , i18n("General") ); pageItem->setIcon( KIcon("rekonq") ); widget = new QWidget; fontsUi.setupUi( widget ); widget->layout()->setMargin(0); pageItem = parent->addPage( widget , i18n("Fonts") ); pageItem->setIcon( KIcon("preferences-desktop-font") ); widget = new QWidget; privacyUi.setupUi( widget ); widget->layout()->setMargin(0); pageItem = parent->addPage( widget , i18n("Privacy") ); pageItem->setIcon( KIcon("preferences-desktop-personal") ); widget = new QWidget; proxyUi.setupUi( widget ); widget->layout()->setMargin(0); pageItem = parent->addPage( widget , i18n("Proxy") ); pageItem->setIcon( KIcon("preferences-system-network") ); } // ----------------------------------------------------------------------------------------------------- SettingsDialog::SettingsDialog(QWidget *parent) : KConfigDialog(parent, "settings", ReKonfig::self() ) , d(new Private(this) ) { setFaceType(KPageDialog::List); showButtonSeparator(true); setWindowTitle( i18n("rekonfig..") ); setModal(true); readConfig(); connect( d->generalUi.setHomeToCurrentPageButton, SIGNAL(clicked()), this, SLOT( setHomeToCurrentPage() ) ); connect( d->privacyUi.exceptionsButton, SIGNAL(clicked()), this, SLOT( showExceptions() ) ); connect( d->privacyUi.cookiesButton, SIGNAL(clicked()), this, SLOT( showCookies() ) ); } SettingsDialog::~SettingsDialog() { delete d; } // we need this function to UPDATE the config widget data.. void SettingsDialog::readConfig() { // ======= General d->generalUi.downloadDirUrlRequester->setMode(KFile::Directory | KFile::ExistingOnly | KFile::LocalOnly); d->generalUi.downloadDirUrlRequester->setUrl( ReKonfig::downloadDir() ); connect(d->generalUi.downloadDirUrlRequester, SIGNAL(textChanged(QString)),this, SLOT(saveSettings())); // ======= Fonts d->fontsUi.standardFontChooser->setFont(ReKonfig::standardFont(), false); connect(d->fontsUi.standardFontChooser, SIGNAL(fontSelected(QFont)),this, SLOT(saveSettings())); d->fontsUi.fixedFontChooser->setFont(ReKonfig::fixedFont(), true); connect(d->fontsUi.fixedFontChooser, SIGNAL(fontSelected(QFont)),this, SLOT(saveSettings())); } // we need this function to SAVE settings in rc file.. void SettingsDialog::saveSettings() { // General ReKonfig::setDownloadDir( d->generalUi.downloadDirUrlRequester->url().prettyUrl() ); // Fonts ReKonfig::setStandardFont( d->fontsUi.standardFontChooser->font() ); ReKonfig::setFixedFont( d->fontsUi.standardFontChooser->font() ); } // ---------------------------------------------------------------------------------------------- void SettingsDialog::showCookies() { CookiesDialog *dialog = new CookiesDialog(BrowserApplication::cookieJar(), this); dialog->exec(); } void SettingsDialog::showExceptions() { CookiesExceptionsDialog *dialog = new CookiesExceptionsDialog(BrowserApplication::cookieJar(), this); dialog->exec(); } void SettingsDialog::setHomeToCurrentPage() { MainWindow *mw = static_cast(parent()); WebView *webView = mw->currentTab(); if (webView) { d->generalUi.kcfg_homePage->setText( webView->url().prettyUrl() ); } }