diff options
26 files changed, 3061 insertions, 0 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e66691de..5ab4f8fc 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -28,6 +28,15 @@ set(rekonq_KDEINIT_SRCS #---------------------------------------- session/sessionmanager.cpp #---------------------------------------- + settings/settingsdialog.cpp + settings/appearancewidget.cpp + settings/advancedwidget.cpp + settings/generalwidget.cpp + settings/privacywidget.cpp + settings/tabswidget.cpp + settings/webkitwidget.cpp + settings/passexceptionswidget.cpp + #---------------------------------------- tabwindow/tabbar.cpp tabwindow/tabhighlighteffect.cpp tabwindow/tabpreviewpopup.cpp @@ -40,12 +49,25 @@ set(rekonq_KDEINIT_SRCS ) +KDE4_ADD_UI_FILES( rekonq_KDEINIT_SRCS + #---------------------------------------- + settings/settings_general.ui + settings/settings_tabs.ui + settings/settings_appearance.ui + settings/settings_webkit.ui + settings/settings_advanced.ui + settings/settings_privacy.ui + settings/password_exceptions.ui + ) + + ### ------------- INCLUDING DIRECTORIES... INCLUDE_DIRECTORIES ( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/adblock ${CMAKE_CURRENT_SOURCE_DIR}/history ${CMAKE_CURRENT_SOURCE_DIR}/session + ${CMAKE_CURRENT_SOURCE_DIR}/settings ${CMAKE_CURRENT_SOURCE_DIR}/tabwindow ${CMAKE_CURRENT_SOURCE_DIR}/webwindow ${CMAKE_CURRENT_BINARY_DIR} diff --git a/src/settings/advancedwidget.cpp b/src/settings/advancedwidget.cpp new file mode 100644 index 00000000..73c889dc --- /dev/null +++ b/src/settings/advancedwidget.cpp @@ -0,0 +1,70 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2012 by Andrea Diamantini <adjam7 at gmail dot com> +* +* +* 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/>. +* +* ============================================================ */ + + +// Local Includes +#include "advancedwidget.h" +#include "advancedwidget.moc" + +// Qt Includes +#include <QProcess> + + +AdvancedWidget::AdvancedWidget(QWidget *parent) + : QWidget(parent) + , _changed(false) +{ + setupUi(this); + + connect(proxyButton, SIGNAL(clicked()), this, SLOT(launchProxySettings())); +} + + +void AdvancedWidget::save() +{ +} + + +bool AdvancedWidget::changed() +{ + return _changed; +} + + +void AdvancedWidget::hasChanged() +{ + _changed = true; + emit changed(true); +} + + +void AdvancedWidget::launchProxySettings() +{ + QString program = QL1S("kcmshell4"); + QStringList arguments; + arguments << QL1S("proxy"); + QProcess *proc = new QProcess(this); + proc->start(program, arguments); +} diff --git a/src/settings/advancedwidget.h b/src/settings/advancedwidget.h new file mode 100644 index 00000000..c9509c9d --- /dev/null +++ b/src/settings/advancedwidget.h @@ -0,0 +1,62 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2012 by Andrea Diamantini <adjam7 at gmail dot com> +* +* +* 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/>. +* +* ============================================================ */ + + +#ifndef ADVANCED_WIDGET_H +#define ADVANCED_WIDGET_H + + +// Rekonq Includes +#include "rekonq_defines.h" + +// Ui Includes +#include "ui_settings_advanced.h" + +// Qt Includes +#include <QWidget> + + +class AdvancedWidget : public QWidget, private Ui::advanced +{ + Q_OBJECT + +public: + AdvancedWidget(QWidget *parent = 0); + + void save(); + bool changed(); + +Q_SIGNALS: + void changed(bool); + +private Q_SLOTS: + void hasChanged(); + void launchProxySettings(); + +private: + bool _changed; +}; + +#endif // ADVANCED_WIDGET_H diff --git a/src/settings/appearancewidget.cpp b/src/settings/appearancewidget.cpp new file mode 100644 index 00000000..42c9db14 --- /dev/null +++ b/src/settings/appearancewidget.cpp @@ -0,0 +1,119 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2010-2011 by Andrea Diamantini <adjam7 at gmail dot com> +* +* +* 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 "appearancewidget.h" +#include "appearancewidget.moc" + +// Auto Includes +#include "rekonq.h" + +// KDE Includes +#include <KGlobal> +#include <KCharsets> + +AppearanceWidget::AppearanceWidget(QWidget *parent) + : QWidget(parent) + , _changed(false) +{ + setupUi(this); + + fixedFontChooser->setOnlyFixed(true); + + standardFontChooser->setCurrentFont(QFont(ReKonfig::standardFontFamily())); + fixedFontChooser->setCurrentFont(QFont(ReKonfig::fixedFontFamily())); + serifFontChooser->setCurrentFont(QFont(ReKonfig::serifFontFamily())); + sansSerifFontChooser->setCurrentFont(QFont(ReKonfig::sansSerifFontFamily())); + cursiveFontChooser->setCurrentFont(QFont(ReKonfig::cursiveFontFamily())); + fantasyFontChooser->setCurrentFont(QFont(ReKonfig::fantasyFontFamily())); + + connect(standardFontChooser, SIGNAL(currentFontChanged(QFont)), this, SLOT(hasChanged())); + connect(fixedFontChooser, SIGNAL(currentFontChanged(QFont)), this, SLOT(hasChanged())); + connect(serifFontChooser, SIGNAL(currentFontChanged(QFont)), this, SLOT(hasChanged())); + connect(sansSerifFontChooser, SIGNAL(currentFontChanged(QFont)), this, SLOT(hasChanged())); + connect(cursiveFontChooser, SIGNAL(currentFontChanged(QFont)), this, SLOT(hasChanged())); + connect(fantasyFontChooser, SIGNAL(currentFontChanged(QFont)), this, SLOT(hasChanged())); + + populateEncodingMenu(); +} + + +void AppearanceWidget::save() +{ + ReKonfig::setStandardFontFamily(standardFontChooser->currentFont().family()); + ReKonfig::setFixedFontFamily(fixedFontChooser->currentFont().family()); + ReKonfig::setSerifFontFamily(serifFontChooser->currentFont().family()); + ReKonfig::setSansSerifFontFamily(sansSerifFontChooser->currentFont().family()); + ReKonfig::setCursiveFontFamily(cursiveFontChooser->currentFont().family()); + ReKonfig::setFantasyFontFamily(fantasyFontChooser->currentFont().family()); +} + + +bool AppearanceWidget::changed() +{ + return _changed; +} + + +void AppearanceWidget::hasChanged() +{ + _changed = true; + emit changed(true); +} + + +bool AppearanceWidget::isDefault() +{ + bool def = true; + + // TODO: implement me!! + + return def; +} + + +void AppearanceWidget::populateEncodingMenu() +{ + encodingCombo->setEditable(false); + QStringList encodings = KGlobal::charsets()->availableEncodingNames(); + encodingCombo->addItems(encodings); + + encodingCombo->setWhatsThis(i18n("Select the default encoding to be used; normally, you will be fine with 'Use language encoding' " + "and should not have to change this.")); + + connect(encodingCombo, SIGNAL(activated(QString)), this, SLOT(setEncoding(QString))); + connect(encodingCombo, SIGNAL(activated(QString)), this, SLOT(hasChanged())); + + QString enc = ReKonfig::defaultEncoding(); + int indexOfEnc = encodings.indexOf(enc); + encodingCombo->setCurrentIndex(indexOfEnc); +} + + +void AppearanceWidget::setEncoding(const QString &enc) +{ + ReKonfig::setDefaultEncoding(enc); +} diff --git a/src/settings/appearancewidget.h b/src/settings/appearancewidget.h new file mode 100644 index 00000000..86f6d66a --- /dev/null +++ b/src/settings/appearancewidget.h @@ -0,0 +1,65 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2010-2011 by Andrea Diamantini <adjam7 at gmail dot com> +* +* +* 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/>. +* +* ============================================================ */ + + +#ifndef APPEARANCE_WIDGET_H +#define APPEARANCE_WIDGET_H + + +// Rekonq Includes +#include "rekonq_defines.h" + +// Ui Includes +#include "ui_settings_appearance.h" + +// Qt Includes +#include <QtGui/QWidget> + + +class AppearanceWidget : public QWidget, private Ui::appearance +{ + Q_OBJECT + +public: + AppearanceWidget(QWidget *parent = 0); + + void save(); + bool changed(); + bool isDefault(); + +Q_SIGNALS: + void changed(bool); + +private Q_SLOTS: + void hasChanged(); + void setEncoding(const QString &); + +private: + void populateEncodingMenu(); + + bool _changed; +}; + +#endif // APPEARANCE_WIDGET_H diff --git a/src/settings/generalwidget.cpp b/src/settings/generalwidget.cpp new file mode 100644 index 00000000..34bea602 --- /dev/null +++ b/src/settings/generalwidget.cpp @@ -0,0 +1,130 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2010-2012 by Andrea Diamantini <adjam7 at gmail dot com> +* +* +* 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 "generalwidget.h" +#include "generalwidget.moc" + +// Auto Includes +#include "rekonq.h" + +// Local Includes +#include "application.h" +#include "tabwindow.h" +#include "webwindow.h" + +//KDE Includes +#include <kstandarddirs.h> +#include <KUrlRequester> + + +GeneralWidget::GeneralWidget(QWidget *parent) + : QWidget(parent) + , _changed(false) +{ + setupUi(this); + + connect(setHomeToCurrentPageButton, SIGNAL(clicked()), this, SLOT(setHomeToCurrentPage())); + + disableHomeSettings(ReKonfig::useNewTabPage()); + + connect(kcfg_useNewTabPage, SIGNAL(toggled(bool)), this, SLOT(disableHomeSettings(bool))); + + checkKGetPresence(); + + connect(kcfg_homePage, SIGNAL(editingFinished()), this, SLOT(fixHomePageURL())); + + kcfg_downloadPath->setMode(KFile::Directory); + + askDownloadYes->setChecked(ReKonfig::askDownloadPath()); + askDownloadNo->setChecked(!ReKonfig::askDownloadPath()); + + kcfg_downloadPath->setEnabled(!ReKonfig::askDownloadPath()); + connect(askDownloadNo, SIGNAL(toggled(bool)), kcfg_downloadPath, SLOT(setEnabled(bool))); + connect(askDownloadNo, SIGNAL(toggled(bool)), this, SLOT(hasChanged())); +} + + +void GeneralWidget::save() +{ + ReKonfig::setAskDownloadPath(askDownloadYes->isChecked()); + + _changed = false; +} + + +bool GeneralWidget::changed() +{ + return _changed; +} + + +void GeneralWidget::hasChanged() +{ + _changed = true; + emit changed(true); +} + + +void GeneralWidget::setHomeToCurrentPage() +{ + TabWindow *tw = rApp->tabWindow(); + WebWindow *tab = tw->currentWebWindow(); + if (tab) + { + kcfg_homePage->setText(tab->url().toString()); + } +} + + +void GeneralWidget::disableHomeSettings(bool b) +{ + kcfg_homePage->setEnabled(!b); + setHomeToCurrentPageButton->setEnabled(!b); +} + + +void GeneralWidget::checkKGetPresence() +{ + if (KStandardDirs::findExe("kget").isNull()) + { + kcfg_kgetDownload->setDisabled(true); + kcfg_kgetList->setDisabled(true); + kcfg_kgetDownload->setToolTip(i18n("Install KGet to enable rekonq to use it as download manager")); + } + else + { + kcfg_kgetDownload->setDisabled(false); + kcfg_kgetList->setDisabled(false); + } +} + + +void GeneralWidget::fixHomePageURL() +{ + QString fixedURL = QUrl::fromUserInput(kcfg_homePage->text()).toString(); + kcfg_homePage->setText(fixedURL); +} diff --git a/src/settings/generalwidget.h b/src/settings/generalwidget.h new file mode 100644 index 00000000..33dfe610 --- /dev/null +++ b/src/settings/generalwidget.h @@ -0,0 +1,62 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2010-2012 by Andrea Diamantini <adjam7 at gmail dot com> +* +* +* 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/>. +* +* ============================================================ */ + + +#ifndef GENERAL_WIDGET_H +#define GENERAL_WIDGET_H + + +// Ui Includes +#include "ui_settings_general.h" + +// Qt Includes +#include <QWidget> + + +class GeneralWidget : public QWidget, private Ui::general +{ + Q_OBJECT + +public: + GeneralWidget(QWidget *parent = 0); + + void save(); + bool changed(); + void checkKGetPresence(); + +Q_SIGNALS: + void changed(bool); + +private Q_SLOTS: + void hasChanged(); + void setHomeToCurrentPage(); + void disableHomeSettings(bool); + void fixHomePageURL(); + +private: + bool _changed; +}; + +#endif // GENERAL_WIDGET_H diff --git a/src/settings/networkwidget.cpp b/src/settings/networkwidget.cpp new file mode 100644 index 00000000..c2988eb1 --- /dev/null +++ b/src/settings/networkwidget.cpp @@ -0,0 +1,100 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2010-2011 by Andrea Diamantini <adjam7 at gmail dot com> +* +* +* 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 "networkwidget.h" +#include "networkwidget.moc" + +// KDE Includes +#include <KTabWidget> +#include <KCModuleInfo> + +// Qt Includes +#include <QVBoxLayout> + + +NetworkWidget::NetworkWidget(QWidget *parent) + : QWidget(parent) + , _cacheModule(0) + , _cookiesModule(0) + , _proxyModule(0) + , _changed(false) +{ + QVBoxLayout *l = new QVBoxLayout(this); + l->setMargin(0); + l->setSpacing(0); + + KTabWidget *tabWidget = new KTabWidget(this); + l->addWidget(tabWidget); + + KCModuleInfo cacheInfo("cache.desktop"); + _cacheModule = new KCModuleProxy(cacheInfo, parent); + tabWidget->addTab(_cacheModule, i18n(cacheInfo.moduleName().toUtf8())); + + KCModuleInfo cookiesInfo("cookies.desktop"); + _cookiesModule = new KCModuleProxy(cookiesInfo, parent); + tabWidget->addTab(_cookiesModule, i18n(cookiesInfo.moduleName().toUtf8())); + + KCModuleInfo proxyInfo("proxy.desktop"); + _proxyModule = new KCModuleProxy(proxyInfo, parent); + tabWidget->addTab(_proxyModule, i18n(proxyInfo.moduleName().toUtf8())); + + connect(_cacheModule, SIGNAL(changed(bool)), this, SLOT(hasChanged())); + connect(_cookiesModule, SIGNAL(changed(bool)), this, SLOT(hasChanged())); + connect(_proxyModule, SIGNAL(changed(bool)), this, SLOT(hasChanged())); +} + + +NetworkWidget::~NetworkWidget() +{ + delete _cacheModule; + delete _cookiesModule; + delete _proxyModule; +} + + +void NetworkWidget::save() +{ + _cookiesModule->save(); + _proxyModule->save(); + _cacheModule->save(); + + _changed = false; + emit changed(false); +} + + +void NetworkWidget::hasChanged() +{ + _changed = true; + emit changed(true); +} + + +bool NetworkWidget::changed() +{ + return _changed; +} diff --git a/src/settings/networkwidget.h b/src/settings/networkwidget.h new file mode 100644 index 00000000..74a0e312 --- /dev/null +++ b/src/settings/networkwidget.h @@ -0,0 +1,63 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2010-2011 by Andrea Diamantini <adjam7 at gmail dot com> +* +* +* 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/>. +* +* ============================================================ */ + + +#ifndef NETWORK_WIDGET_H +#define NETWORK_WIDGET_H + + +// KDE Includes +#include <KCModuleProxy> + +// Qt Includes +#include <QWidget> + + +class NetworkWidget : public QWidget +{ + Q_OBJECT + +public: + NetworkWidget(QWidget *parent = 0); + ~NetworkWidget(); + + void save(); + bool changed(); + +Q_SIGNALS: + void changed(bool); + +private Q_SLOTS: + void hasChanged(); + +private: + KCModuleProxy *_cacheModule; + KCModuleProxy *_cookiesModule; + KCModuleProxy *_proxyModule; + + bool _changed; +}; + +#endif // NETWORK_WIDGET_H diff --git a/src/settings/passexceptionswidget.cpp b/src/settings/passexceptionswidget.cpp new file mode 100644 index 00000000..fe20e711 --- /dev/null +++ b/src/settings/passexceptionswidget.cpp @@ -0,0 +1,73 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2012 by Andrea Diamantini <adjam7 at gmail dot com> +* +* +* 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 "passexceptionswidget.h" +#include "passexceptionswidget.moc" + +// Auto Includes +#include "rekonq.h" + + +PassExWidget::PassExWidget(QWidget *parent) + : QWidget(parent) +{ + setupUi(this); + + setAttribute(Qt::WA_DeleteOnClose, true); + + connect(removeOneButton, SIGNAL(clicked()), this, SLOT(removeOne())); + connect(removeAllButton, SIGNAL(clicked()), this, SLOT(removeAll())); + + QStringList exList = ReKonfig::walletBlackList(); + Q_FOREACH(const QString & str, exList) + { + QListWidgetItem *item = new QListWidgetItem(str, listWidget); + listWidget->addItem(item); + } +} + + +void PassExWidget::removeOne() +{ + const int currentRow(listWidget->currentRow()); + if (currentRow == -1) + return; + QString item = listWidget->takeItem(currentRow)->text(); + + QStringList exList = ReKonfig::walletBlackList(); + exList.removeOne(item); + ReKonfig::setWalletBlackList(exList); +} + + +void PassExWidget::removeAll() +{ + listWidget->clear(); + + QStringList clearList; + ReKonfig::setWalletBlackList(clearList); +} diff --git a/src/settings/passexceptionswidget.h b/src/settings/passexceptionswidget.h new file mode 100644 index 00000000..6b02c4e6 --- /dev/null +++ b/src/settings/passexceptionswidget.h @@ -0,0 +1,53 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2012 by Andrea Diamantini <adjam7 at gmail dot com> +* +* +* 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/>. +* +* ============================================================ */ + + +#ifndef PASS_EX_WIDGET_H +#define PASS_EX_WIDGET_H + + +// Rekonq Includes +#include "rekonq_defines.h" + +// Ui Includes +#include "ui_password_exceptions.h" + +// Qt Includes +#include <QWidget> + + +class PassExWidget : public QWidget, private Ui::PassExceptions +{ + Q_OBJECT + +public: + PassExWidget(QWidget *parent = 0); + +private Q_SLOTS: + void removeOne(); + void removeAll(); +}; + +#endif // PASS_EX_WIDGET_H diff --git a/src/settings/password_exceptions.ui b/src/settings/password_exceptions.ui new file mode 100644 index 00000000..97cf621b --- /dev/null +++ b/src/settings/password_exceptions.ui @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>PassExceptions</class> + <widget class="QWidget" name="PassExceptions"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>300</height> + </rect> + </property> + <property name="windowTitle"> + <string>Password Exceptions</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QListWidget" name="listWidget"/> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="removeOneButton"> + <property name="text"> + <string>Remove one</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="removeAllButton"> + <property name="text"> + <string>Remove all</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/src/settings/privacywidget.cpp b/src/settings/privacywidget.cpp new file mode 100644 index 00000000..46774a63 --- /dev/null +++ b/src/settings/privacywidget.cpp @@ -0,0 +1,135 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2012 by Andrea Diamantini <adjam7 at gmail dot com> +* +* +* 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 "privacywidget.h" +#include "privacywidget.moc" + +// Local Includes +#include "passexceptionswidget.h" + +// Auto Includes +#include "rekonq.h" + +// KDE Includes +#include <KDialog> +#include <KPushButton> + +// Qt Includes +#include <QProcess> + + +PrivacyWidget::PrivacyWidget(QWidget *parent) + : QWidget(parent) + , _changed(false) +{ + setupUi(this); + + reload(); + + // DO NOT TRACK + KConfigGroup cg = KConfigGroup(KSharedConfig::openConfig("kioslaverc", KConfig::NoGlobals), QString()); + doNotTrackCheckBox->setChecked(cg.readEntry("DoNotTrack", false)); + connect(doNotTrackCheckBox, SIGNAL(clicked()), this, SLOT(hasChanged())); + + // CACHE & COOKIES + connect(cacheButton, SIGNAL(clicked()), this, SLOT(launchCacheSettings())); + connect(cookiesButton, SIGNAL(clicked()), this, SLOT(launchCookieSettings())); + + // PASSWORDS + connect(managePassExceptionsButton, SIGNAL(clicked()), this, SLOT(showPassExceptions())); +} + + +void PrivacyWidget::save() +{ + KConfigGroup cg = KConfigGroup(KSharedConfig::openConfig("kioslaverc", KConfig::NoGlobals), QString()); + cg.writeEntry("DoNotTrack", doNotTrackCheckBox->isChecked()); + cg.sync(); + + reload(); +} + + +void PrivacyWidget::reload() +{ + bool b = ReKonfig::javascriptEnabled(); + + kcfg_javascriptCanAccessClipboard->setEnabled(b); + kcfg_javascriptCanOpenWindows->setEnabled(b); + + if (b) + { + kcfg_javascriptCanOpenWindows->setToolTip(i18n("If enabled, JavaScript programs are allowed to open new windows.")); + kcfg_javascriptCanAccessClipboard->setToolTip(i18n("If enabled, JavaScript programs are allowed to read from and to write to the clipboard.")); + } + else + { + QString str = i18n("Javascript is NOT enabled, cannot change these settings"); + kcfg_javascriptCanOpenWindows->setToolTip(str); + kcfg_javascriptCanAccessClipboard->setToolTip(str); + } +} + + +bool PrivacyWidget::changed() +{ + return _changed; +} + + +void PrivacyWidget::hasChanged() +{ + _changed = true; + emit changed(true); +} + + +void PrivacyWidget::launchCacheSettings() +{ + QString program = QL1S("kcmshell4"); + QStringList arguments; + arguments << QL1S("cache"); + QProcess *proc = new QProcess(this); + proc->start(program, arguments); +} + + +void PrivacyWidget::launchCookieSettings() +{ + QString program = QL1S("kcmshell4"); + QStringList arguments; + arguments << QL1S("cookies"); + QProcess *proc = new QProcess(this); + proc->start(program, arguments); +} + + +void PrivacyWidget::showPassExceptions() +{ + PassExWidget *widg = new PassExWidget; + widg->show(); +} diff --git a/src/settings/privacywidget.h b/src/settings/privacywidget.h new file mode 100644 index 00000000..229cb7df --- /dev/null +++ b/src/settings/privacywidget.h @@ -0,0 +1,67 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2012 by Andrea Diamantini <adjam7 at gmail dot com> +* +* +* 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/>. +* +* ============================================================ */ + + +#ifndef PRIVACY_WIDGET_H +#define PRIVACY_WIDGET_H + + +// Rekonq Includes +#include "rekonq_defines.h" + +// Ui Includes +#include "ui_settings_privacy.h" + +// Qt Includes +#include <QWidget> + + +class PrivacyWidget : public QWidget, private Ui::privacy +{ + Q_OBJECT + +public: + PrivacyWidget(QWidget *parent = 0); + + void save(); + void reload(); + + bool changed(); + +Q_SIGNALS: + void changed(bool); + +private Q_SLOTS: + void hasChanged(); + + void launchCacheSettings(); + void launchCookieSettings(); + void showPassExceptions(); + +private: + bool _changed; +}; + +#endif // PRIVACY_WIDGET_H diff --git a/src/settings/settings_advanced.ui b/src/settings/settings_advanced.ui new file mode 100644 index 00000000..9457ca22 --- /dev/null +++ b/src/settings/settings_advanced.ui @@ -0,0 +1,153 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>advanced</class> + <widget class="QWidget" name="advanced"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>480</width> + <height>440</height> + </rect> + </property> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <item> + <widget class="QGroupBox" name="groupBox_2"> + <property name="title"> + <string>Proxy</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Rekonq is using your system's proxy settings</string> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>60</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="proxyButton"> + <property name="text"> + <string>Change them!</string> + </property> + <property name="icon"> + <iconset theme="preferences-system-network"/> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox"> + <property name="title"> + <string>Misc</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QCheckBox" name="kcfg_hScrollWheelHistory"> + <property name="text"> + <string>Use horizontal scroll wheel to go through web history</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="kcfg_useFavicon"> + <property name="text"> + <string>Use favicon of the current website as window icon</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="kcfg_smoothScrolling"> + <property name="toolTip"> + <string>Scroll pages with an eye candy effect</string> + </property> + <property name="text"> + <string>Enable smooth scrolling</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="kcfg_enableViShortcuts"> + <property name="text"> + <string>Enable Vi-like navigation shortcuts</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="kcfg_accessKeysEnabled"> + <property name="text"> + <string>Enable keyboard navigation using the Ctrl key</string> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_3"> + <item> + <widget class="QLabel" name="label_11"> + <property name="text"> + <string>Middle click should:</string> + </property> + <property name="alignment"> + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="kcfg_middleClickAction"> + <item> + <property name="text"> + <string>Auto-scroll</string> + </property> + </item> + <item> + <property name="text"> + <string>Load Clipboard URL</string> + </property> + </item> + <item> + <property name="text"> + <string>Do Nothing</string> + </property> + </item> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>155</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/src/settings/settings_appearance.ui b/src/settings/settings_appearance.ui new file mode 100644 index 00000000..b0232089 --- /dev/null +++ b/src/settings/settings_appearance.ui @@ -0,0 +1,284 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>appearance</class> + <widget class="QWidget" name="appearance"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>570</width> + <height>562</height> + </rect> + </property> + <property name="windowTitle"> + <string>Appearance</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QGroupBox" name="groupBox"> + <property name="title"> + <string>Fonts</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QLabel" name="label"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Maximum" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>150</width> + <height>0</height> + </size> + </property> + <property name="text"> + <string>Standard font:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_2"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Maximum" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>150</width> + <height>0</height> + </size> + </property> + <property name="text"> + <string>Fixed font:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="label_3"> + <property name="text"> + <string>Serif font:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="KFontComboBox" name="standardFontChooser"/> + </item> + <item row="3" column="0"> + <widget class="QLabel" name="label_6"> + <property name="text"> + <string>Sans Serif font:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="KFontComboBox" name="fixedFontChooser"/> + </item> + <item row="2" column="1"> + <widget class="KFontComboBox" name="serifFontChooser"/> + </item> + <item row="3" column="1"> + <widget class="KFontComboBox" name="sansSerifFontChooser"/> + </item> + <item row="4" column="0"> + <widget class="QLabel" name="label_7"> + <property name="text"> + <string>Cursive font:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="4" column="1"> + <widget class="KFontComboBox" name="cursiveFontChooser"/> + </item> + <item row="5" column="0"> + <widget class="QLabel" name="label_8"> + <property name="text"> + <string>Fantasy font:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="5" column="1"> + <widget class="KFontComboBox" name="fantasyFontChooser"/> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_2"> + <property name="title"> + <string>Font size</string> + </property> + <layout class="QGridLayout" name="gridLayout_2"> + <item row="0" column="0"> + <widget class="QLabel" name="label_9"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>150</width> + <height>0</height> + </size> + </property> + <property name="text"> + <string>Default font size:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="KIntNumInput" name="kcfg_defaultFontSize"/> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_4"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>150</width> + <height>0</height> + </size> + </property> + <property name="text"> + <string>Minimal font size:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="KIntNumInput" name="kcfg_minFontSize"/> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_4"> + <property name="title"> + <string>Character Encoding</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <item> + <widget class="QLabel" name="label_10"> + <property name="text"> + <string>Default character encoding:</string> + </property> + </widget> + </item> + <item> + <widget class="KComboBox" name="encodingCombo"/> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_3"> + <property name="title"> + <string>Custom Style Sheet</string> + </property> + <layout class="QFormLayout" name="formLayout_3"> + <property name="fieldGrowthPolicy"> + <enum>QFormLayout::ExpandingFieldsGrow</enum> + </property> + <item row="0" column="0"> + <widget class="QLabel" name="label_5"> + <property name="minimumSize"> + <size> + <width>150</width> + <height>0</height> + </size> + </property> + <property name="text"> + <string>Path to custom CSS file:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="KUrlRequester" name="kcfg_userCSS"> + <property name="filter"> + <string>*.css</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <spacer name="verticalSpacer_3"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>149</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>KFontComboBox</class> + <extends>KComboBox</extends> + <header>kfontcombobox.h</header> + </customwidget> + <customwidget> + <class>KComboBox</class> + <extends>QComboBox</extends> + <header>kcombobox.h</header> + </customwidget> + <customwidget> + <class>KUrlRequester</class> + <extends>QFrame</extends> + <header>kurlrequester.h</header> + </customwidget> + <customwidget> + <class>KIntNumInput</class> + <extends>QWidget</extends> + <header>knuminput.h</header> + </customwidget> + </customwidgets> + <resources/> + <connections/> +</ui> diff --git a/src/settings/settings_general.ui b/src/settings/settings_general.ui new file mode 100644 index 00000000..7d4419b8 --- /dev/null +++ b/src/settings/settings_general.ui @@ -0,0 +1,267 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>general</class> + <widget class="QWidget" name="general"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>573</width> + <height>410</height> + </rect> + </property> + <property name="windowTitle"> + <string>General</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QGroupBox" name="groupBox_2"> + <property name="title"> + <string>Startup</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <item> + <widget class="QLabel" name="label"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>150</width> + <height>0</height> + </size> + </property> + <property name="layoutDirection"> + <enum>Qt::LeftToRight</enum> + </property> + <property name="text"> + <string>When starting rekonq:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item> + <widget class="KComboBox" name="kcfg_startupBehaviour"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <item> + <property name="text"> + <string>Open the Home Page</string> + </property> + </item> + <item> + <property name="text"> + <string>Open the New Tab Page</string> + </property> + </item> + <item> + <property name="text"> + <string>Restore the Last Opened Tabs</string> + </property> + </item> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox"> + <property name="title"> + <string>Home Page</string> + </property> + <layout class="QFormLayout" name="formLayout_2"> + <item row="1" column="0"> + <widget class="QLabel" name="label_2"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>150</width> + <height>0</height> + </size> + </property> + <property name="text"> + <string>Home page URL:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="KLineEdit" name="kcfg_homePage"> + <property name="enabled"> + <bool>true</bool> + </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item row="2" column="1"> + <layout class="QHBoxLayout" name="horizontalLayout_3"> + <item> + <widget class="QPushButton" name="setHomeToCurrentPageButton"> + <property name="text"> + <string>Set to Current Page</string> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item row="0" column="1"> + <widget class="QCheckBox" name="kcfg_useNewTabPage"> + <property name="text"> + <string>Use the New Tab Page as home page</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_4"> + <property name="title"> + <string>Download Manager</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QRadioButton" name="askDownloadNo"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>150</width> + <height>0</height> + </size> + </property> + <property name="text"> + <string>Save files to:</string> + </property> + </widget> + </item> + <item> + <widget class="KUrlRequester" name="kcfg_downloadPath"> + <property name="sizePolicy"> + <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QRadioButton" name="askDownloadYes"> + <property name="text"> + <string>Always ask me where to save files</string> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer_3"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>10</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QCheckBox" name="kcfg_kgetDownload"> + <property name="text"> + <string>Use KGet for downloading files</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="kcfg_kgetList"> + <property name="whatsThis"> + <string>If enabled, rekonq will display an additional context menu entry, which, when selected, lists all available links of the current website in KGet.</string> + </property> + <property name="text"> + <string>List links with KGet</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>179</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>KComboBox</class> + <extends>QComboBox</extends> + <header>kcombobox.h</header> + </customwidget> + <customwidget> + <class>KLineEdit</class> + <extends>QLineEdit</extends> + <header>klineedit.h</header> + </customwidget> + <customwidget> + <class>KUrlRequester</class> + <extends>QFrame</extends> + <header>kurlrequester.h</header> + </customwidget> + </customwidgets> + <resources/> + <connections/> +</ui> diff --git a/src/settings/settings_privacy.ui b/src/settings/settings_privacy.ui new file mode 100644 index 00000000..04f36bad --- /dev/null +++ b/src/settings/settings_privacy.ui @@ -0,0 +1,260 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>privacy</class> + <widget class="QWidget" name="privacy"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>535</width> + <height>520</height> + </rect> + </property> + <layout class="QVBoxLayout" name="verticalLayout_7"> + <item> + <widget class="QGroupBox" name="groupBox_4"> + <property name="title"> + <string>Javascript</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_5"> + <item> + <widget class="QCheckBox" name="kcfg_javascriptCanOpenWindows"> + <property name="text"> + <string>Let Javascript open new windows</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="kcfg_javascriptCanAccessClipboard"> + <property name="text"> + <string>Let Javascript access clipboard</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox"> + <property name="title"> + <string>Tracking</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <item> + <widget class="QCheckBox" name="doNotTrackCheckBox"> + <property name="text"> + <string>Tell websites you do not want to be tracked</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_2"> + <property name="title"> + <string>History</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Remove history items:</string> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="kcfg_expireHistory"> + <item> + <property name="text"> + <string>never</string> + </property> + </item> + <item> + <property name="text"> + <string>every 3 months</string> + </property> + </item> + <item> + <property name="text"> + <string>every month</string> + </property> + </item> + <item> + <property name="text"> + <string>every day</string> + </property> + </item> + <item> + <property name="text"> + <string>at application exit</string> + </property> + </item> + <item> + <property name="text"> + <string>don't even store them</string> + </property> + </item> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_5"> + <property name="title"> + <string>Passwords</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_4"> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <item> + <widget class="QCheckBox" name="kcfg_passwordSavingEnabled"> + <property name="text"> + <string>Remember passwords for sites</string> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_3"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="managePassExceptionsButton"> + <property name="text"> + <string>Manage Exceptions</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_3"> + <property name="title"> + <string>Cookies</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>Rekonq is sharing cookies settings with all other KDE applications</string> + </property> + <property name="wordWrap"> + <bool>false</bool> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_3"> + <item> + <widget class="QPushButton" name="cookiesButton"> + <property name="text"> + <string>Manage Cookies</string> + </property> + <property name="icon"> + <iconset theme="preferences-web-browser-cookies"> + <normaloff/> + </iconset> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_6"> + <property name="title"> + <string>Cache</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_6"> + <item> + <widget class="QLabel" name="label_4"> + <property name="text"> + <string>Rekonq is sharing cache settings with all other KDE applications</string> + </property> + <property name="wordWrap"> + <bool>false</bool> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_5"> + <item> + <widget class="QPushButton" name="cacheButton"> + <property name="text"> + <string>Manage Cache</string> + </property> + <property name="icon"> + <iconset theme="preferences-web-browser-cache"> + <normaloff/> + </iconset> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_4"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>135</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/src/settings/settings_tabs.ui b/src/settings/settings_tabs.ui new file mode 100644 index 00000000..4e19545f --- /dev/null +++ b/src/settings/settings_tabs.ui @@ -0,0 +1,290 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>tabs</class> + <widget class="QWidget" name="tabs"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>483</width> + <height>427</height> + </rect> + </property> + <property name="windowTitle"> + <string>Tabs</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QGroupBox" name="groupBox_3"> + <property name="title"> + <string>New Tab Behavior</string> + </property> + <layout class="QFormLayout" name="formLayout"> + <property name="fieldGrowthPolicy"> + <enum>QFormLayout::ExpandingFieldsGrow</enum> + </property> + <item row="0" column="0"> + <widget class="QLabel" name="label_4"> + <property name="minimumSize"> + <size> + <width>150</width> + <height>0</height> + </size> + </property> + <property name="text"> + <string>New tab opens:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="KComboBox" name="kcfg_newTabsBehaviour"> + <property name="enabled"> + <bool>true</bool> + </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <item> + <property name="text"> + <string>New Tab Page</string> + </property> + </item> + <item> + <property name="text"> + <string>Blank Page</string> + </property> + </item> + <item> + <property name="text"> + <string comment="@item:inlistbox">Home Page</string> + </property> + </item> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_5"> + <property name="minimumSize"> + <size> + <width>150</width> + <height>0</height> + </size> + </property> + <property name="text"> + <string>New Tab Page starts with:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="KComboBox" name="kcfg_newTabStartPage"> + <property name="enabled"> + <bool>true</bool> + </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <item> + <property name="text"> + <string>Favorites</string> + </property> + </item> + <item> + <property name="text"> + <string>Closed Tabs</string> + </property> + </item> + <item> + <property name="text"> + <string>Bookmarks</string> + </property> + </item> + <item> + <property name="text"> + <string>History</string> + </property> + </item> + <item> + <property name="text"> + <string>Downloads</string> + </property> + </item> + <item> + <property name="text"> + <string>Tabs</string> + </property> + </item> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_4"> + <property name="title"> + <string>Tabbed Browsing</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QLabel" name="label_6"> + <property name="minimumSize"> + <size> + <width>150</width> + <height>0</height> + </size> + </property> + <property name="text"> + <string>When hovering a tab show:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item> + <widget class="KComboBox" name="kcfg_hoveringTabOption"> + <property name="enabled"> + <bool>true</bool> + </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <item> + <property name="text"> + <string>Tab Preview</string> + </property> + </item> + <item> + <property name="text"> + <string>Tab's Title in a Tooltip</string> + </property> + </item> + <item> + <property name="text"> + <string>Tab's URL in a Tooltip</string> + </property> + </item> + <item> + <property name="text"> + <string comment="@item:inlistbox">Nothing</string> + </property> + </item> + </widget> + </item> + </layout> + </item> + <item> + <spacer name="verticalSpacer_2"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QCheckBox" name="kcfg_alwaysShowTabBar"> + <property name="text"> + <string>Always show tab bar</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="kcfg_openLinksInNewWindow"> + <property name="text"> + <string>Don't use tabs: open links in new windows</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="kcfg_openExternalLinksInNewWindow"> + <property name="text"> + <string>Open as new window when URL is called externally</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="kcfg_lastTabClosesWindow"> + <property name="text"> + <string>Closing last tab closes window</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="kcfg_openNewTabsInBackground"> + <property name="text"> + <string>Open new tabs in the background</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="kcfg_openNewTabsNearCurrent"> + <property name="text"> + <string>Open new tabs after currently active one</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="kcfg_closeTabSelectPrevious"> + <property name="text"> + <string>Activate previously used tab when closing the current one</string> + </property> + <property name="checked"> + <bool>false</bool> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="kcfg_animatedTabHighlighting"> + <property name="text"> + <string>Animated tab highlighting</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>120</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>KComboBox</class> + <extends>QComboBox</extends> + <header>kcombobox.h</header> + </customwidget> + </customwidgets> + <resources/> + <connections/> +</ui> diff --git a/src/settings/settings_webkit.ui b/src/settings/settings_webkit.ui new file mode 100644 index 00000000..62f3bafd --- /dev/null +++ b/src/settings/settings_webkit.ui @@ -0,0 +1,200 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>webkit</class> + <widget class="QWidget" name="webkit"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>503</width> + <height>514</height> + </rect> + </property> + <layout class="QVBoxLayout" name="verticalLayout_4"> + <item> + <widget class="QGroupBox" name="groupBox"> + <property name="title"> + <string>General</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QCheckBox" name="kcfg_javascriptEnabled"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Minimum" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Enable JavaScript</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="kcfg_javaEnabled"> + <property name="text"> + <string>Load java applets</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="kcfg_webGL"> + <property name="text"> + <string>WebGL</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="kcfg_spatialNavigation"> + <property name="text"> + <string>Spatial Navigation</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="kcfg_frameFlattening"> + <property name="text"> + <string>Frame Flattening</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="kcfg_dnsPrefetch"> + <property name="text"> + <string>Prefetch DNS entries</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="kcfg_printElementBackgrounds"> + <property name="text"> + <string>Print element backgrounds</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_3"> + <property name="enabled"> + <bool>true</bool> + </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="title"> + <string>Plugins</string> + </property> + <layout class="QFormLayout" name="formLayout"> + <item row="0" column="0"> + <widget class="QLabel" name="label_2"> + <property name="enabled"> + <bool>true</bool> + </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>150</width> + <height>0</height> + </size> + </property> + <property name="text"> + <string>When loading web pages:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="KComboBox" name="kcfg_pluginsEnabled"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <item> + <property name="text"> + <string>Autoload Plugins</string> + </property> + </item> + <item> + <property name="text"> + <string>Manually Load Plugins</string> + </property> + </item> + <item> + <property name="text"> + <string>Never Load Plugins</string> + </property> + </item> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_4"> + <property name="title"> + <string>HTML 5</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <item> + <widget class="QCheckBox" name="kcfg_offlineStorageDatabaseEnabled"> + <property name="text"> + <string>Offline storage database</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="kcfg_offlineWebApplicationCacheEnabled"> + <property name="text"> + <string>Offline web application cache</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="kcfg_localStorageEnabled"> + <property name="text"> + <string>Local Storage</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <spacer name="verticalSpacer_2"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>KComboBox</class> + <extends>QComboBox</extends> + <header>kcombobox.h</header> + </customwidget> + </customwidgets> + <resources/> + <connections/> +</ui> 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; +} diff --git a/src/settings/settingsdialog.h b/src/settings/settingsdialog.h new file mode 100644 index 00000000..ad03602b --- /dev/null +++ b/src/settings/settingsdialog.h @@ -0,0 +1,63 @@ +/* ============================================================ +* +* 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/>. +* +* ============================================================ */ + + +#ifndef SETTINGS_DIALOG_H +#define SETTINGS_DIALOG_H + + +// Rekonq Includes +#include "rekonq_defines.h" + +// KDE Includes +#include <KConfigDialog> + +// Forward Declarations +class QWidget; +class Private; + + +class REKONQ_TESTS_EXPORT SettingsDialog : public KConfigDialog +{ + Q_OBJECT + +public: + SettingsDialog(QWidget *parent = 0); + ~SettingsDialog(); + + virtual bool hasChanged(); + +protected: + virtual bool isDefault(); + +private: + Private* const d; + +private Q_SLOTS: + void saveSettings(); +}; + +#endif // SETTINGS_DIALOG_H diff --git a/src/settings/tabswidget.cpp b/src/settings/tabswidget.cpp new file mode 100644 index 00000000..67829f82 --- /dev/null +++ b/src/settings/tabswidget.cpp @@ -0,0 +1,52 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2010-2011 by Andrea Diamantini <adjam7 at gmail dot com> +* +* +* 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/>. +* +* ============================================================ */ + + +// Local Includes +#include "tabswidget.h" +#include "tabswidget.moc" + + +TabsWidget::TabsWidget(QWidget *parent) + : QWidget(parent) + , _changed(false) +{ + setupUi(this); +} + + +void TabsWidget::save() +{ +} + +bool TabsWidget::changed() +{ + return _changed; +} + + +void TabsWidget::hasChanged() +{ +} diff --git a/src/settings/tabswidget.h b/src/settings/tabswidget.h new file mode 100644 index 00000000..056f030c --- /dev/null +++ b/src/settings/tabswidget.h @@ -0,0 +1,58 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2010-2011 by Andrea Diamantini <adjam7 at gmail dot com> +* +* +* 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/>. +* +* ============================================================ */ + + +#ifndef TABS_WIDGET_H +#define TABS_WIDGET_H + + +// Ui Includes +#include "ui_settings_tabs.h" + +// Qt Includes +#include <QtGui/QWidget> + + +class TabsWidget : public QWidget, private Ui::tabs +{ + Q_OBJECT + +public: + TabsWidget(QWidget *parent = 0); + + void save(); + bool changed(); + +Q_SIGNALS: + void changed(bool); + +private Q_SLOTS: + void hasChanged(); + +private: + bool _changed; +}; + +#endif // TABS_WIDGET_H diff --git a/src/settings/webkitwidget.cpp b/src/settings/webkitwidget.cpp new file mode 100644 index 00000000..31224f05 --- /dev/null +++ b/src/settings/webkitwidget.cpp @@ -0,0 +1,71 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2010-2011 by Andrea Diamantini <adjam7 at gmail dot com> +* +* +* 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/>. +* +* ============================================================ */ + + +// Local Includes +#include "webkitwidget.h" +#include "webkitwidget.moc" + + +WebKitWidget::WebKitWidget(QWidget *parent) + : QWidget(parent) + , _changed(false) +{ + setupUi(this); + setWebSettingsToolTips(); +} + + +void WebKitWidget::save() +{ +} + + +bool WebKitWidget::changed() +{ + return _changed; +} + + +void WebKitWidget::hasChanged() +{ + _changed = true; + emit changed(true); +} + + +void WebKitWidget::setWebSettingsToolTips() +{ + kcfg_webGL->setToolTip(i18n("Enables WebGL technology")); + kcfg_spatialNavigation->setToolTip(i18n("Lets you navigating between focusable elements using arrow keys.")); + kcfg_frameFlattening->setToolTip(i18n("Flatten all the frames to become one scrollable page.")); + kcfg_dnsPrefetch->setToolTip(i18n("Specifies whether WebKit will try to prefetch DNS entries to speed up browsing.")); + kcfg_printElementBackgrounds->setToolTip(i18n("If enabled, background colors and images are also drawn when the page is printed.")); + kcfg_javascriptEnabled->setToolTip(i18n("Enables the execution of JavaScript programs.")); + kcfg_javaEnabled->setToolTip(i18n("Enables support for Java applets.")); + kcfg_offlineStorageDatabaseEnabled->setToolTip(i18n("Enables support for the HTML 5 offline storage feature.")); + kcfg_offlineWebApplicationCacheEnabled->setToolTip(i18n("Enables support for the HTML 5 web application cache feature.")); + kcfg_localStorageEnabled->setToolTip(i18n("Enables support for the HTML 5 local storage feature.")); +} diff --git a/src/settings/webkitwidget.h b/src/settings/webkitwidget.h new file mode 100644 index 00000000..1a41a6a1 --- /dev/null +++ b/src/settings/webkitwidget.h @@ -0,0 +1,60 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2010-2011 by Andrea Diamantini <adjam7 at gmail dot com> +* +* +* 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/>. +* +* ============================================================ */ + + +#ifndef WEBKIT_WIDGET_H +#define WEBKIT_WIDGET_H + + +// Ui Includes +#include "ui_settings_webkit.h" + +// Qt Includes +#include <QtGui/QWidget> + + +class WebKitWidget : public QWidget, private Ui::webkit +{ + Q_OBJECT + +public: + WebKitWidget(QWidget *parent = 0); + + void save(); + bool changed(); + +Q_SIGNALS: + void changed(bool); + +private Q_SLOTS: + void hasChanged(); + +private: + void setWebSettingsToolTips(); + + bool _changed; +}; + +#endif // WEBKIT_WIDGET_H |