1
mirror of https://invent.kde.org/network/falkon.git synced 2024-09-23 02:32:10 +02:00
falkonOfficial/src/preferences/preferences.cpp
nowrep a71c0e073c Added option to use native system dialog in downloads or not (using
native file dialog on windows sometimes cause problems with downloading
SSL content)
Fixed issue with width of file name at download manager
2011-05-25 14:26:36 +02:00

740 lines
30 KiB
C++

/* ============================================================
* QupZilla - WebKit based browser
* Copyright (C) 2010-2011 nowrep
*
* 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 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU 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/>.
* ============================================================ */
#include "preferences.h"
#include "ui_preferences.h"
#include "qupzilla.h"
#include "bookmarkstoolbar.h"
#include "historymodel.h"
#include "tabwidget.h"
#include "cookiejar.h"
#include "locationbar.h"
#include "autofillmanager.h"
#include "mainapplication.h"
#include "cookiemanager.h"
#include "pluginslist.h"
#include "qtwin.h"
#include "pluginproxy.h"
#include "sslmanager.h"
#include "networkproxyfactory.h"
#include "networkmanager.h"
#include "desktopnotificationsfactory.h"
#include "desktopnotification.h"
bool removeFile(const QString &fullFileName)
{
QFile f(fullFileName);
if (f.exists())
return f.remove();
else return false;
}
void removeDir(const QString &d)
{
QDir dir(d);
if (dir.exists())
{
const QFileInfoList list = dir.entryInfoList();
QFileInfo fi;
for (int l = 0; l < list.size(); l++)
{
fi = list.at(l);
if (fi.isDir() && fi.fileName() != "." && fi.fileName() != "..")
removeDir(fi.absoluteFilePath());
else if (fi.isFile())
removeFile(fi.absoluteFilePath());
}
dir.rmdir(d);
}
}
Preferences::Preferences(QupZilla* mainClass, QWidget* parent) :
QDialog(parent)
,ui(new Ui::Preferences)
,p_QupZilla(mainClass)
,m_pluginsList(0)
{
setAttribute(Qt::WA_DeleteOnClose);
ui->setupUi(this);
m_bgLabelSize = this->sizeHint();
QSettings settings(mApp->getActiveProfil()+"settings.ini", QSettings::IniFormat);
//GENERAL URLs
settings.beginGroup("Web-URL-Settings");
m_homepage = settings.value("homepage","http://qupzilla.ic.cz/search/").toString();
m_newTabUrl = settings.value("newTabUrl","").toString();
ui->homepage->setText(m_homepage);
ui->newTabUrl->setText(m_newTabUrl);
int afterLaunch = settings.value("afterLaunch",1).toInt();
settings.endGroup();
ui->afterLaunch->setCurrentIndex(afterLaunch);
ui->newTabFrame->setVisible(false);
if (m_newTabUrl.isEmpty())
ui->newTab->setCurrentIndex(0);
else if (m_newTabUrl == m_homepage)
ui->newTab->setCurrentIndex(1);
else{
ui->newTab->setCurrentIndex(2);
ui->newTabFrame->setVisible(true);
}
connect(ui->newTab, SIGNAL(currentIndexChanged(int)), this, SLOT(newTabChanged()));
connect(ui->useActualBut, SIGNAL(clicked()), this, SLOT(useActualHomepage()));
connect(ui->newTabUseActual, SIGNAL(clicked()), this, SLOT(useActualNewTab()));
//PROFILES
m_actProfileName = mApp->getActiveProfil();
m_actProfileName = m_actProfileName.left(m_actProfileName.length()-1);
m_actProfileName = m_actProfileName.mid(m_actProfileName.lastIndexOf("/"));
m_actProfileName.remove("/");
ui->startProfile->addItem(m_actProfileName);
QDir profilesDir(QDir::homePath()+"/.qupzilla/profiles/");
QStringList list_ = profilesDir.entryList(QStringList(), QDir::Dirs | QDir::NoDotAndDotDot);
foreach (QString name, list_) {
if (m_actProfileName == name)
continue;
ui->startProfile->addItem(name);
}
connect(ui->createProfile, SIGNAL(clicked()), this, SLOT(createProfile()));
connect(ui->deleteProfile, SIGNAL(clicked()), this, SLOT(deleteProfile()));
connect(ui->startProfile, SIGNAL(currentIndexChanged(QString)), this, SLOT(startProfileIndexChanged(QString)));
//WINDOW
settings.beginGroup("Browser-View-Settings");
ui->showStatusbar->setChecked( settings.value("showStatusBar",true).toBool() );
ui->showBookmarksToolbar->setChecked( p_QupZilla->bookmarksToolbar()->isVisible() );
ui->showNavigationToolbar->setChecked( p_QupZilla->navigationToolbar()->isVisible() );
ui->showHome->setChecked( settings.value("showHomeButton",true).toBool() );
ui->showBackForward->setChecked( settings.value("showBackForwardButtons",true).toBool() );
ui->showAddTabButton->setChecked( settings.value("showAddTabButton", true).toBool() );
if (settings.value("useTransparentBackground",false).toBool())
ui->useTransparentBg->setChecked(true);
else
ui->useBgImage->setChecked(true);
m_menuTextColor = settings.value("menuTextColor", QColor(Qt::black)).value<QColor>();
ui->textColor->setStyleSheet("color: "+m_menuTextColor.name()+";");
useBgImageChanged(ui->useBgImage->isChecked());
settings.endGroup();
#ifdef Q_WS_WIN
ui->useTransparentBg->setEnabled(QtWin::isCompositionEnabled());
#endif
connect(ui->useBgImage, SIGNAL(toggled(bool)), this, SLOT(useBgImageChanged(bool)));
connect(ui->backgroundButton, SIGNAL(clicked()), this, SLOT(chooseBackgroundPath()));
connect(ui->resetDefaultBgButton, SIGNAL(clicked()), this, SLOT(resetBackground()));
connect(ui->textColorChooser, SIGNAL(clicked()), this, SLOT(chooseColor()));
updateBgLabel();
//TABS
settings.beginGroup("Browser-Tabs-Settings");
ui->makeMovable->setChecked( settings.value("makeTabsMovable",true).toBool() );
ui->hideCloseOnTab->setChecked( settings.value("hideCloseButtonWithOneTab",false).toBool() );
ui->hideTabsOnTab->setChecked( settings.value("hideTabsWithOneTab",false).toBool() );
ui->activateLastTab->setChecked( settings.value("ActivateLastTabWhenClosingActual", false).toBool() );
settings.endGroup();
//AddressBar
settings.beginGroup("AddressBar");
ui->selectAllOnFocus->setChecked( settings.value("SelectAllTextOnDoubleClick",true).toBool() );
ui->addComWithCtrl->setChecked( settings.value("AddComDomainWithCtrlKey",false).toBool() );
ui->addCountryWithAlt->setChecked( settings.value("AddCountryDomainWithAltKey",true).toBool() );
settings.endGroup();
//BROWSING
settings.beginGroup("Web-Browser-Settings");
ui->allowPlugins->setChecked( settings.value("allowFlash",true).toBool() );
ui->allowJavaScript->setChecked( settings.value("allowJavaScript",true).toBool() );
ui->blockPopup->setChecked( !settings.value("allowJavaScriptOpenWindow", false).toBool() );
ui->allowJava->setChecked( settings.value("allowJava",true).toBool() );
ui->loadImages->setChecked( settings.value("autoLoadImages",true).toBool() );
ui->allowDNSPrefetch->setChecked( settings.value("DNS-Prefetch", false).toBool() );
ui->jscanAccessClipboard->setChecked( settings.value("JavaScriptCanAccessClipboard", true).toBool() );
ui->linksInFocusChain->setChecked( settings.value("IncludeLinkInFocusChain", false).toBool() );
ui->zoomTextOnly->setChecked( settings.value("zoomTextOnly", false).toBool() );
ui->printEBackground->setChecked( settings.value("PrintElementBackground", true).toBool() );
ui->wheelScroll->setValue( settings.value("wheelScrollLines", qApp->wheelScrollLines()).toInt() );
ui->doNotTrack->setChecked( settings.value("DoNotTrack", false).toBool() );
if (!ui->allowJavaScript->isChecked())
ui->blockPopup->setEnabled(false);
connect(ui->allowJavaScript, SIGNAL(toggled(bool)), this, SLOT(allowJavaScriptChanged(bool)));
//Cache
ui->pagesInCache->setValue( settings.value("maximumCachedPages",3).toInt() );
connect(ui->pagesInCache, SIGNAL(valueChanged(int)), this, SLOT(pageCacheValueChanged(int)));
ui->pageCacheLabel->setText(QString::number(ui->pagesInCache->value()));
ui->allowCache->setChecked( settings.value("AllowLocalCache",true).toBool() );
ui->cacheMB->setValue( settings.value("LocalCacheSize", 50).toInt() );
ui->MBlabel->setText( settings.value("LocalCacheSize", 50).toString() + " MB");
connect(ui->allowCache, SIGNAL(clicked(bool)), this, SLOT(allowCacheChanged(bool)));
connect(ui->cacheMB, SIGNAL(valueChanged(int)), this, SLOT(cacheValueChanged(int)) );
allowCacheChanged(ui->allowCache->isChecked());
//PASSWORD MANAGER
ui->allowPassManager->setChecked(settings.value("AutoFillForms",true).toBool());
connect(ui->allowPassManager, SIGNAL(toggled(bool)), this, SLOT(showPassManager(bool)));
m_autoFillManager = new AutoFillManager(this);
ui->autoFillFrame->addWidget(m_autoFillManager);
//PRIVACY
//Web storage
ui->storeIcons->setChecked( settings.value("allowPersistentStorage",true).toBool() );
ui->saveHistory->setChecked( mApp->history()->isSaving() );
ui->deleteHistoryOnClose->setChecked( settings.value("deleteHistoryOnClose",false).toBool() );
if (!ui->saveHistory->isChecked())
ui->deleteHistoryOnClose->setEnabled(false);
connect(ui->saveHistory, SIGNAL(toggled(bool)), this, SLOT(saveHistoryChanged(bool)));
//Cookies
ui->saveCookies->setChecked( settings.value("allowCookies",true).toBool() );
if (!ui->saveCookies->isChecked())
ui->deleteCookiesOnClose->setEnabled(false);
connect(ui->saveCookies, SIGNAL(toggled(bool)), this, SLOT(saveCookiesChanged(bool)));
ui->deleteCookiesOnClose->setChecked( settings.value("deleteCookiesOnClose", false).toBool() );
ui->matchExactly->setChecked( settings.value("allowCookiesFromVisitedDomainOnly",false).toBool() );
ui->filterTracking->setChecked( settings.value("filterTrackingCookie",false).toBool() );
//CSS Style
ui->userStyleSheet->setText( settings.value("userStyleSheet", "").toString() );
connect(ui->chooseUserStylesheet, SIGNAL(clicked()), this, SLOT(chooseUserStyleClicked()));
settings.endGroup();
//DOWNLOADS
settings.beginGroup("DownloadManager");
ui->downLoc->setText( settings.value("defaultDownloadPath","").toString() );
ui->downlaodNativeSystemDialog->setChecked( settings.value("useNativeDialog",
#ifdef Q_WS_WIN
false
#else
true
#endif
).toBool() );
if (ui->downLoc->text().isEmpty())
ui->askEverytime->setChecked(true);
else
ui->useDefined->setChecked(true);
connect(ui->useDefined, SIGNAL(toggled(bool)), this, SLOT(downLocChanged(bool)));
connect(ui->downButt, SIGNAL(clicked()), this, SLOT(chooseDownPath()));
downLocChanged(ui->useDefined->isChecked());
settings.endGroup();
//FONTS
settings.beginGroup("Browser-Fonts");
ui->fontStandard->setCurrentFont(QFont( settings.value("StandardFont", mApp->webSettings()->fontFamily(QWebSettings::StandardFont)).toString() ));
ui->fontCursive->setCurrentFont(QFont( settings.value("CursiveFont", mApp->webSettings()->fontFamily(QWebSettings::CursiveFont)).toString() ));
ui->fontFantasy->setCurrentFont(QFont( settings.value("FantasyFont", mApp->webSettings()->fontFamily(QWebSettings::FantasyFont)).toString() ));
ui->fontFixed->setCurrentFont(QFont( settings.value("FixedFont", mApp->webSettings()->fontFamily(QWebSettings::FixedFont)).toString() ));
ui->fontSansSerif->setCurrentFont(QFont( settings.value("SansSerifFont", mApp->webSettings()->fontFamily(QWebSettings::SansSerifFont)).toString() ));
ui->fontSerif->setCurrentFont(QFont( settings.value("SerifFont", mApp->webSettings()->fontFamily(QWebSettings::SerifFont)).toString() ));
ui->sizeDefault->setValue( settings.value("DefaultFontSize", mApp->webSettings()->fontSize(QWebSettings::DefaultFontSize)).toInt() );
ui->sizeFixed->setValue( settings.value("FixedFontSize", mApp->webSettings()->fontSize(QWebSettings::DefaultFixedFontSize)).toInt() );
settings.endGroup();
//PLUGINS
m_pluginsList = new PluginsList(this);
ui->pluginsFrame->addWidget(m_pluginsList);
//NOTIFICATIONS
#ifdef Q_WS_X11
ui->useNativeSystemNotifications->setEnabled(true);
#endif
DesktopNotificationsFactory::Type notifyType;
settings.beginGroup("Notifications");
ui->notificationTimeout->setValue(settings.value("Timeout", 6000).toInt() / 1000);
#ifdef Q_WS_X11
notifyType = settings.value("UseNativeDesktop", true).toBool() ? DesktopNotificationsFactory::DesktopNative : DesktopNotificationsFactory::PopupWidget;
#else
notifyType = DesktopNotificationsFactory::PopupWidget;
#endif
if (notifyType == DesktopNotificationsFactory::DesktopNative)
ui->useNativeSystemNotifications->setChecked(true);
else
ui->useOSDNotifications->setChecked(true);
ui->doNotUseNotifications->setChecked(!settings.value("Enabled", true).toBool());
m_notifPosition = settings.value("Position", QPoint(10,10)).toPoint();
settings.endGroup();
//OTHER
//Languages
QString activeLanguage="";
if (!p_QupZilla->activeLanguage().isEmpty()) {
activeLanguage = p_QupZilla->activeLanguage();
QString loc = activeLanguage;
loc.remove(".qm");
QLocale locale(loc);
QString country = QLocale::countryToString(locale.country());
QString language = QLocale::languageToString(locale.language());
ui->languages->addItem(language+", "+country+" ("+loc+")", activeLanguage);
}
ui->languages->addItem("English (en_US)");
QDir lanDir(mApp->DATADIR+"locale");
QStringList list = lanDir.entryList(QStringList("*.qm"));
foreach(QString name, list) {
if (name.startsWith("qt_") || name == activeLanguage)
continue;
QString loc = name;
loc.remove(".qm");
QLocale locale(loc);
QString country = QLocale::countryToString(locale.country());
QString language = QLocale::languageToString(locale.language());
ui->languages->addItem(language+", "+country+" ("+loc+")", name);
}
//Proxy Config
settings.beginGroup("Web-Proxy");
NetworkProxyFactory::ProxyPreference proxyPreference = NetworkProxyFactory::ProxyPreference(settings.value("UseProxy", NetworkProxyFactory::SystemProxy).toInt());
QNetworkProxy::ProxyType proxyType = QNetworkProxy::ProxyType(settings.value("ProxyType", QNetworkProxy::HttpProxy).toInt());
connect(ui->manualProxy, SIGNAL(toggled(bool)), this, SLOT(setManualProxyConfigurationEnabled(bool)));
ui->systemProxy->setChecked(proxyPreference == NetworkProxyFactory::SystemProxy);
ui->noProxy->setChecked(proxyPreference == NetworkProxyFactory::NoProxy);
ui->manualProxy->setChecked(proxyPreference == NetworkProxyFactory::DefinedProxy);
setManualProxyConfigurationEnabled(proxyPreference == NetworkProxyFactory::DefinedProxy);
if (proxyType == QNetworkProxy::HttpProxy)
ui->proxyType->setCurrentIndex(0);
else
ui->proxyType->setCurrentIndex(1);
ui->proxyServer->setText(settings.value("HostName", "").toString());
ui->proxyPort->setText(settings.value("Port", 8080).toString());
ui->proxyUsername->setText(settings.value("Username", "").toString());
ui->proxyPassword->setText(settings.value("Password", "").toString());
ui->proxyExceptions->setText(settings.value("ProxyExceptions", QStringList() << "localhost" << "127.0.0.1").toStringList().join(","));
settings.endGroup();
//CONNECTS
connect(ui->buttonBox, SIGNAL(clicked(QAbstractButton*)), this, SLOT(buttonClicked(QAbstractButton*)));
connect(ui->cookieManagerBut, SIGNAL(clicked()), this, SLOT(showCookieManager()));
connect(ui->sslManagerButton, SIGNAL(clicked()), this, SLOT(openSslManager()));
connect(ui->listWidget, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), this, SLOT(showStackedPage(QListWidgetItem*)));
ui->listWidget->setItemSelected(ui->listWidget->itemAt(5,5), true);
ui->version->setText(" QupZilla v"+QupZilla::VERSION);
}
void Preferences::showStackedPage(QListWidgetItem* item)
{
if (!item)
return;
ui->caption->setText("<b>"+item->text()+"</b>");
ui->stackedWidget->setCurrentIndex(item->whatsThis().toInt());
if (ui->stackedWidget->currentIndex() == 8) {
m_notification = new DesktopNotification(true);
m_notification->setPixmap(QPixmap(":icons/preferences/stock_dialog-question.png"));
m_notification->setHeading(tr("OSD Notification"));
m_notification->setText(tr("Drag it on the screen to place it where You want."));
m_notification->move(m_notifPosition);
m_notification->show();
} else if (m_notification) {
m_notifPosition = m_notification->pos();
delete m_notification;
}
}
void Preferences::chooseColor()
{
m_menuTextColor = QColorDialog::getColor(Qt::black, this);
ui->textColor->setStyleSheet("color: "+m_menuTextColor.name()+";");
}
void Preferences::allowCacheChanged(bool state)
{
ui->cacheFrame->setEnabled(state);
ui->cacheMB->setEnabled(state);
}
void Preferences::useActualHomepage()
{
ui->homepage->setText(p_QupZilla->weView()->url().toString());
}
void Preferences::useActualNewTab()
{
ui->newTabUrl->setText(p_QupZilla->weView()->url().toString());
}
void Preferences::resetBackground()
{
QFile::remove(p_QupZilla->activeProfil()+"background.png");
QFile(mApp->DATADIR+"data/default/profiles/default/background.png").copy(p_QupZilla->activeProfil()+"background.png");
m_menuTextColor = QColor(Qt::black);
ui->textColor->setStyleSheet("color: "+m_menuTextColor.name()+";");
updateBgLabel();
}
void Preferences::updateBgLabel()
{
ui->bgLabel->setStyleSheet("#bgLabel {background: url("+p_QupZilla->activeProfil()+"background.png) top right;}");
}
void Preferences::chooseDownPath()
{
QString userFileName = QFileDialog::getExistingDirectory(p_QupZilla, tr("Choose download location..."), QDir::homePath());
if (userFileName.isEmpty())
return;
ui->downLoc->setText(userFileName);
}
void Preferences::chooseBackgroundPath()
{
QString file = QFileDialog::getOpenFileName(p_QupZilla, tr("Choose background location..."), QDir::homePath(), "*.png");
if (file.isEmpty())
return;
QFile::remove(p_QupZilla->activeProfil()+"background.png");
QFile(file).copy(p_QupZilla->activeProfil()+"background.png");
updateBgLabel();
}
void Preferences::chooseUserStyleClicked()
{
QString file = QFileDialog::getOpenFileName(p_QupZilla, tr("Choose stylesheet location..."), QDir::homePath(), "*.css");
if (file.isEmpty())
return;
ui->userStyleSheet->setText(file);
}
void Preferences::newTabChanged()
{
if (ui->newTab->currentIndex() == 2)
ui->newTabFrame->setVisible(true);
else
ui->newTabFrame->setVisible(false);
}
void Preferences::useBgImageChanged(bool state)
{
ui->bgLabel->setEnabled(state);
}
void Preferences::downLocChanged(bool state)
{
ui->downButt->setEnabled(state);
ui->downLoc->setEnabled(state);
}
void Preferences::setManualProxyConfigurationEnabled(bool state)
{
ui->proxyType->setEnabled(state);
ui->proxyServer->setEnabled(state);
ui->proxyPort->setEnabled(state);
ui->proxyUsername->setEnabled(state);
ui->proxyPassword->setEnabled(state);
ui->proxyExceptions->setEnabled(state);
}
void Preferences::allowJavaScriptChanged(bool stat)
{
ui->blockPopup->setEnabled(stat);
}
void Preferences::saveHistoryChanged(bool stat)
{
ui->deleteHistoryOnClose->setEnabled(stat);
}
void Preferences::saveCookiesChanged(bool stat)
{
ui->deleteCookiesOnClose->setEnabled(stat);
}
void Preferences::showCookieManager()
{
CookieManager* m = new CookieManager();
m->refreshTable();
m->setAttribute(Qt::WA_DeleteOnClose);
m->setWindowModality(Qt::WindowModal);
m->show();
}
void Preferences::openSslManager()
{
SSLManager* m = new SSLManager();
m->setWindowModality(Qt::WindowModal);
m->show();
}
void Preferences::cacheValueChanged(int value)
{
ui->MBlabel->setText(QString::number(value) + " MB");
if (value == 0) {
ui->allowCache->setChecked(false);
allowCacheChanged(false);
}
else if (!ui->allowCache->isChecked()) {
ui->allowCache->setChecked(true);
allowCacheChanged(true);
}
}
void Preferences::pageCacheValueChanged(int value)
{
ui->pageCacheLabel->setText(QString::number(value));
}
void Preferences::showPassManager(bool state)
{
m_autoFillManager->setVisible(state);
}
void Preferences::buttonClicked(QAbstractButton* button)
{
switch (ui->buttonBox->buttonRole(button)) {
case QDialogButtonBox::ApplyRole:
saveSettings();
break;
case QDialogButtonBox::RejectRole:
close();
break;
case QDialogButtonBox::AcceptRole:
saveSettings();
close();
break;
default:
break;
}
}
void Preferences::createProfile()
{
QString name = QInputDialog::getText(this, tr("New Profile"), tr("Enter the new profile's name:"));
if (name.isEmpty() || name.contains("/") || name.contains("\\"))
return;
QDir dir(QDir::homePath()+"/.qupzilla/profiles/");
if (QDir(dir.absolutePath() + "/" + name).exists()) {
QMessageBox::warning(this, tr("Error!"), tr("This profile already exists!"));
return;
}
if (!dir.mkdir(name)) {
QMessageBox::warning(this, tr("Error!"), tr("Cannot create profile directory!"));
return;
}
dir.cd(name);
QFile(mApp->DATADIR+"data/default/profiles/default/browsedata.db").copy(dir.absolutePath()+"/browsedata.db");
QFile(mApp->DATADIR+"data/default/profiles/default/background.png").copy(dir.absolutePath()+"/background.png");
ui->startProfile->insertItem(0, name);
ui->startProfile->setCurrentIndex(0);
}
void Preferences::deleteProfile()
{
QString name = ui->startProfile->currentText();
QMessageBox::StandardButton button = QMessageBox::warning(this, tr("Confirmation"),
tr("Are you sure to permanently delete \"%1\" profile? This action cannot be undone!").arg(name), QMessageBox::Yes | QMessageBox::No);
if (button != QMessageBox::Yes)
return;
removeDir(QDir::homePath()+"/.qupzilla/profiles/"+name);
ui->startProfile->removeItem(ui->startProfile->currentIndex());
}
void Preferences::startProfileIndexChanged(QString index)
{
ui->deleteProfile->setEnabled(m_actProfileName != index);
ui->cannotDeleteActiveProfileLabel->setVisible(m_actProfileName == index);
}
void Preferences::saveSettings()
{
QSettings settings(mApp->getActiveProfil()+"settings.ini", QSettings::IniFormat);
//GENERAL URLs
settings.beginGroup("Web-URL-Settings");
settings.setValue("homepage",ui->homepage->text());
QString homepage = ui->homepage->text();
settings.setValue("afterLaunch",ui->afterLaunch->currentIndex() );
if (ui->newTab->currentIndex() == 0)
settings.setValue("newTabUrl","");
else if (ui->newTab->currentIndex() == 1)
settings.setValue("newTabUrl",homepage);
else
settings.setValue("newTabUrl",ui->newTabUrl->text());
settings.endGroup();
//PROFILES
/*
*
*
*
*/
//WINDOW
settings.beginGroup("Browser-View-Settings");
settings.setValue("showStatusbar",ui->showStatusbar->isChecked());
settings.setValue("showBookmarksToolbar", ui->showBookmarksToolbar->isChecked());
settings.setValue("showNavigationToolbar", ui->showNavigationToolbar->isChecked());
settings.setValue("showHomeButton", ui->showHome->isChecked());
settings.setValue("showBackForwardButtons",ui->showBackForward->isChecked());
settings.setValue("useTransparentBackground", ui->useTransparentBg->isChecked());
settings.setValue("menuTextColor", m_menuTextColor);
settings.setValue("showAddTabButton", ui->showAddTabButton->isChecked());
settings.endGroup();
//TABS
settings.beginGroup("Browser-Tabs-Settings");
settings.setValue("makeTabsMovable",ui->makeMovable->isChecked() );
settings.setValue("hideCloseButtonWithOneTab",ui->hideCloseOnTab->isChecked());
settings.setValue("hideTabsWithOneTab",ui->hideTabsOnTab->isChecked() );
settings.setValue("ActivateLastTabWhenClosingActual", ui->activateLastTab->isChecked());
settings.endGroup();
//DOWNLOADS
settings.beginGroup("DownloadManager");
if (ui->askEverytime->isChecked())
settings.setValue("defaultDownloadPath","");
else{
QString text = ui->downLoc->text();
#ifdef Q_WS_WIN
if (!text.endsWith("\\"))
text+="\\";
#else
if (!text.endsWith("/"))
text+="/";
#endif
settings.setValue("defaultDownloadPath",text);
}
settings.setValue("useNativeDialog", ui->downlaodNativeSystemDialog->isChecked());
settings.endGroup();
//FONTS
settings.beginGroup("Browser-Fonts");
settings.setValue("StandardFont", ui->fontStandard->currentFont().family());
settings.setValue("FantasyFont", ui->fontFantasy->currentFont().family());
settings.setValue("FixedFont", ui->fontFixed->currentFont().family());
settings.setValue("SansSerifFont", ui->fontSansSerif->currentFont().family());
settings.setValue("SerifFont", ui->fontSerif->currentFont().family());
settings.setValue("DefaultFontSize", ui->sizeDefault->value());
settings.setValue("FixedFontSize", ui->sizeFixed->value());
settings.endGroup();
//BROWSING
settings.beginGroup("Web-Browser-Settings");
settings.setValue("allowFlash",ui->allowPlugins->isChecked());
settings.setValue("allowJavaScript",ui->allowJavaScript->isChecked());
settings.setValue("allowJavaScriptOpenWindow", !ui->blockPopup->isChecked());
settings.setValue("allowJava",ui->allowJava->isChecked());
settings.setValue("autoLoadImages",ui->loadImages->isChecked());
settings.setValue("maximumCachedPages",ui->pagesInCache->value());
settings.setValue("DNS-Prefetch", ui->allowDNSPrefetch->isChecked());
settings.setValue("JavaScriptCanAccessClipboard", ui->jscanAccessClipboard->isChecked());
settings.setValue("IncludeLinkInFocusChain", ui->linksInFocusChain->isChecked());
settings.setValue("zoomTextOnly", ui->zoomTextOnly->isChecked());
settings.setValue("PrintElementBackground", ui->printEBackground->isChecked());
settings.setValue("wheelScrollLines", ui->wheelScroll->value());
settings.setValue("DoNotTrack", ui->doNotTrack->isChecked());
//Cache
settings.setValue("AllowLocalCache", ui->allowCache->isChecked());
settings.setValue("LocalCacheSize", ui->cacheMB->value());
//CSS Style
settings.setValue("userStyleSheet", ui->userStyleSheet->text());
//PRIVACY
//Web storage
settings.setValue("allowPersistentStorage", ui->storeIcons->isChecked());
//ui->saveHistory->setChecked( p_QupZilla->history->isSaving() );
settings.setValue("deleteHistoryOnClose",ui->deleteHistoryOnClose->isChecked());
//Cookies
settings.setValue("allowCookies",ui->saveCookies->isChecked());
settings.setValue("deleteCookiesOnClose", ui->deleteCookiesOnClose->isChecked());
settings.setValue("allowCookiesFromVisitedDomainOnly",ui->matchExactly->isChecked() );
settings.setValue("filterTrackingCookie",ui->filterTracking->isChecked() );
settings.endGroup();
//NOTIFICATIONS
settings.beginGroup("Notifications");
settings.setValue("Timeout", ui->notificationTimeout->value() * 1000);
settings.setValue("Enabled", !ui->doNotUseNotifications->isChecked());
settings.setValue("UseNativeDesktop", ui->useNativeSystemNotifications->isChecked());
settings.setValue("Position", m_notification ? m_notification->pos() : m_notifPosition);
settings.endGroup();
//OTHER
//AddressBar
settings.beginGroup("AddressBar");
settings.setValue("SelectAllTextOnDoubleClick",ui->selectAllOnFocus->isChecked() );
settings.setValue("AddComDomainWithCtrlKey",ui->addComWithCtrl->isChecked() );
settings.setValue("AddCountryDomainWithAltKey", ui->addCountryWithAlt->isChecked() );
settings.endGroup();
//Languages
settings.beginGroup("Browser-View-Settings");
settings.setValue("language",ui->languages->itemData(ui->languages->currentIndex()).toString());
settings.endGroup();
//Proxy Configuration
NetworkProxyFactory::ProxyPreference proxyPreference;
if (ui->systemProxy->isChecked())
proxyPreference = NetworkProxyFactory::SystemProxy;
else if (ui->noProxy->isChecked())
proxyPreference = NetworkProxyFactory::NoProxy;
else
proxyPreference = NetworkProxyFactory::DefinedProxy;
QNetworkProxy::ProxyType proxyType;
if (ui->proxyType->currentIndex() == 0)
proxyType = QNetworkProxy::HttpProxy;
else
proxyType = QNetworkProxy::Socks5Proxy;
settings.beginGroup("Web-Proxy");
settings.setValue("ProxyType", proxyType);
settings.setValue("UseProxy", proxyPreference);
settings.setValue("HostName", ui->proxyServer->text());
settings.setValue("Port", ui->proxyPort->text().toInt());
settings.setValue("Username", ui->proxyUsername->text());
settings.setValue("Password", ui->proxyPassword->text());
settings.setValue("ProxyExceptions", ui->proxyExceptions->text().split(","));
settings.endGroup();
//Profiles
QString homePath = QDir::homePath();
homePath+="/.qupzilla/";
QSettings profileSettings(homePath+"profiles/profiles.ini", QSettings::IniFormat);
profileSettings.setValue("Profiles/startProfile",ui->startProfile->currentText());
m_pluginsList->save();
mApp->cookieJar()->loadSettings();
mApp->history()->loadSettings();
mApp->loadSettings();
mApp->plugins()->c2f_saveSettings();
mApp->networkManager()->loadSettings();
mApp->reloadSettings();
mApp->desktopNotifications()->loadSettings();
}
Preferences::~Preferences()
{
delete ui;
delete m_autoFillManager;
delete m_pluginsList;
if (m_notification)
delete m_notification;
}