mirror of
https://invent.kde.org/network/falkon.git
synced 2024-09-23 02:32:10 +02:00
8cb30073c4
Finally added support to manage search engines. You can add search engines from sites that supports opensearch standard, but you can also add them manually. There is also possibility to specify shortcuts for quickly searching in location bar on your favourite engines.
704 lines
28 KiB
C++
704 lines
28 KiB
C++
/* ============================================================
|
|
* QupZilla - WebKit based browser
|
|
* Copyright (C) 2010-2011 David Rosca
|
|
*
|
|
* 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"
|
|
#include "navigationbar.h"
|
|
#include "thememanager.h"
|
|
#include "acceptlanguage.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->getActiveProfilPath()+"settings.ini", QSettings::IniFormat);
|
|
//GENERAL URLs
|
|
settings.beginGroup("Web-URL-Settings");
|
|
m_homepage = settings.value("homepage","qupzilla:start").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->checkUpdates->setChecked( settings.value("Web-Browser-Settings/CheckUpdates", true).toBool() );
|
|
|
|
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
|
|
QString homePath = QDir::homePath();
|
|
homePath += "/.qupzilla/";
|
|
QSettings profileSettings(homePath + "profiles/profiles.ini", QSettings::IniFormat);
|
|
m_actProfileName = profileSettings.value("Profiles/startProfile", "default").toString();
|
|
|
|
ui->startProfile->addItem(m_actProfileName);
|
|
QDir profilesDir(QDir::homePath() + "/.qupzilla/profiles/");
|
|
QStringList list_ = profilesDir.entryList(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)));
|
|
|
|
//APPEREANCE
|
|
m_themesManager = new ThemeManager(ui->themesWidget);
|
|
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->navigationBar()->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() );
|
|
ui->useTransparentBg->setChecked( settings.value("useTransparentBackground",false).toBool() );
|
|
settings.endGroup();
|
|
#ifdef Q_WS_WIN
|
|
ui->useTransparentBg->setEnabled(QtWin::isCompositionEnabled());
|
|
#endif
|
|
|
|
//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() );
|
|
ui->askWhenClosingMultipleTabs->setChecked( settings.value("AskOnClosing", 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->TRANSLATIONSDIR);
|
|
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->preferredLanguages, SIGNAL(clicked()), this, SLOT(showAcceptLanguage()));
|
|
|
|
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::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::chooseDownPath()
|
|
{
|
|
QString userFileName = QFileDialog::getExistingDirectory(p_QupZilla, tr("Choose download location..."), QDir::homePath());
|
|
if (userFileName.isEmpty())
|
|
return;
|
|
#ifdef Q_WS_WIN //QFileDialog::getExistingDirectory returns path with \ instead of / (??)
|
|
userFileName.replace("\\", "/");
|
|
#endif
|
|
userFileName += "/";
|
|
|
|
ui->downLoc->setText(userFileName);
|
|
}
|
|
|
|
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::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::showAcceptLanguage()
|
|
{
|
|
AcceptLanguage a(this);
|
|
a.exec();
|
|
}
|
|
|
|
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");
|
|
|
|
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);
|
|
|
|
if (m_actProfileName == index)
|
|
ui->cannotDeleteActiveProfileLabel->setText(tr("Note: You cannot delete active profile."));
|
|
else
|
|
ui->cannotDeleteActiveProfileLabel->setText(" ");
|
|
}
|
|
|
|
void Preferences::saveSettings()
|
|
{
|
|
QSettings settings(mApp->getActiveProfilPath()+"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.setValue("AskOnClosing", ui->askWhenClosingMultipleTabs->isChecked());
|
|
settings.endGroup();
|
|
|
|
//DOWNLOADS
|
|
settings.beginGroup("DownloadManager");
|
|
if (ui->askEverytime->isChecked())
|
|
settings.setValue("defaultDownloadPath","");
|
|
else
|
|
settings.setValue("defaultDownloadPath", ui->downLoc->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());
|
|
settings.setValue("CheckUpdates", ui->checkUpdates->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("Language");
|
|
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();
|
|
m_themesManager->save();
|
|
mApp->cookieJar()->loadSettings();
|
|
mApp->history()->loadSettings();
|
|
mApp->reloadSettings();
|
|
mApp->plugins()->c2f_saveSettings();
|
|
mApp->networkManager()->loadSettings();
|
|
mApp->desktopNotifications()->loadSettings();
|
|
}
|
|
|
|
Preferences::~Preferences()
|
|
{
|
|
delete ui;
|
|
delete m_autoFillManager;
|
|
delete m_pluginsList;
|
|
if (m_notification)
|
|
delete m_notification;
|
|
}
|