2011-03-03 18:29:20 +01:00
|
|
|
/* ============================================================
|
|
|
|
* 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/>.
|
|
|
|
* ============================================================ */
|
2011-03-02 16:57:41 +01:00
|
|
|
#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"
|
2011-03-04 13:59:07 +01:00
|
|
|
#include "sslmanager.h"
|
2011-04-26 19:47:12 +02:00
|
|
|
#include "networkproxyfactory.h"
|
|
|
|
#include "networkmanager.h"
|
2011-04-27 09:49:41 +02:00
|
|
|
#include "desktopnotificationsfactory.h"
|
|
|
|
#include "desktopnotification.h"
|
2011-03-02 16:57:41 +01:00
|
|
|
|
2011-04-27 09:49:41 +02:00
|
|
|
bool removeFile(const QString &fullFileName)
|
2011-04-04 19:29:03 +02:00
|
|
|
{
|
|
|
|
QFile f(fullFileName);
|
|
|
|
if (f.exists())
|
|
|
|
return f.remove();
|
|
|
|
else return false;
|
|
|
|
}
|
|
|
|
|
2011-04-27 09:49:41 +02:00
|
|
|
void removeDir(const QString &d)
|
2011-04-04 19:29:03 +02:00
|
|
|
{
|
|
|
|
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);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-03-17 17:03:04 +01:00
|
|
|
Preferences::Preferences(QupZilla* mainClass, QWidget* parent) :
|
2011-03-02 16:57:41 +01:00
|
|
|
QDialog(parent)
|
|
|
|
,ui(new Ui::Preferences)
|
|
|
|
,p_QupZilla(mainClass)
|
|
|
|
,m_pluginsList(0)
|
|
|
|
{
|
2011-04-27 09:49:41 +02:00
|
|
|
setAttribute(Qt::WA_DeleteOnClose);
|
2011-03-02 16:57:41 +01:00
|
|
|
ui->setupUi(this);
|
|
|
|
m_bgLabelSize = this->sizeHint();
|
|
|
|
|
2011-03-04 13:59:07 +01:00
|
|
|
QSettings settings(mApp->getActiveProfil()+"settings.ini", QSettings::IniFormat);
|
2011-03-02 16:57:41 +01:00
|
|
|
//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();
|
2011-04-04 19:29:03 +02:00
|
|
|
settings.endGroup();
|
2011-03-02 16:57:41 +01:00
|
|
|
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
|
2011-04-04 19:29:03 +02:00
|
|
|
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)));
|
2011-03-02 16:57:41 +01:00
|
|
|
|
|
|
|
//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() );
|
2011-04-19 20:46:31 +02:00
|
|
|
ui->showAddTabButton->setChecked( settings.value("showAddTabButton", true).toBool() );
|
2011-03-02 16:57:41 +01:00
|
|
|
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() );
|
2011-04-05 20:56:55 +02:00
|
|
|
ui->doNotTrack->setChecked( settings.value("DoNotTrack", false).toBool() );
|
2011-03-02 16:57:41 +01:00
|
|
|
|
|
|
|
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() );
|
2011-03-04 13:59:07 +01:00
|
|
|
ui->saveHistory->setChecked( mApp->history()->isSaving() );
|
2011-03-02 16:57:41 +01:00
|
|
|
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() );
|
|
|
|
settings.endGroup();
|
|
|
|
|
|
|
|
//DOWNLOADS
|
|
|
|
settings.beginGroup("DownloadManager");
|
|
|
|
ui->downLoc->setText( settings.value("defaultDownloadPath","").toString() );
|
|
|
|
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();
|
|
|
|
|
2011-03-17 15:35:51 +01:00
|
|
|
//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();
|
|
|
|
|
2011-03-02 16:57:41 +01:00
|
|
|
//PLUGINS
|
|
|
|
m_pluginsList = new PluginsList(this);
|
|
|
|
ui->pluginsFrame->addWidget(m_pluginsList);
|
|
|
|
|
2011-04-27 09:49:41 +02:00
|
|
|
//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
|
2011-04-29 17:47:55 +02:00
|
|
|
notifyType = DesktopNotificationsFactory::PopupWidget;
|
2011-04-27 09:49:41 +02:00
|
|
|
#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();
|
|
|
|
|
2011-03-02 16:57:41 +01:00
|
|
|
//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)");
|
|
|
|
|
2011-03-04 13:59:07 +01:00
|
|
|
QDir lanDir(mApp->DATADIR+"locale");
|
2011-03-02 16:57:41 +01:00
|
|
|
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);
|
|
|
|
}
|
2011-04-26 19:47:12 +02:00
|
|
|
//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();
|
2011-03-02 16:57:41 +01:00
|
|
|
|
2011-04-26 19:47:12 +02:00
|
|
|
//CONNECTS
|
2011-03-02 16:57:41 +01:00
|
|
|
connect(ui->buttonBox, SIGNAL(clicked(QAbstractButton*)), this, SLOT(buttonClicked(QAbstractButton*)));
|
|
|
|
connect(ui->cookieManagerBut, SIGNAL(clicked()), this, SLOT(showCookieManager()));
|
2011-03-04 13:59:07 +01:00
|
|
|
connect(ui->sslManagerButton, SIGNAL(clicked()), this, SLOT(openSslManager()));
|
2011-03-02 16:57:41 +01:00
|
|
|
|
|
|
|
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);
|
|
|
|
}
|
|
|
|
|
2011-03-17 17:03:04 +01:00
|
|
|
void Preferences::showStackedPage(QListWidgetItem* item)
|
2011-03-02 16:57:41 +01:00
|
|
|
{
|
|
|
|
if (!item)
|
|
|
|
return;
|
|
|
|
ui->caption->setText("<b>"+item->text()+"</b>");
|
|
|
|
ui->stackedWidget->setCurrentIndex(item->whatsThis().toInt());
|
2011-04-27 09:49:41 +02:00
|
|
|
|
|
|
|
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;
|
|
|
|
}
|
2011-03-02 16:57:41 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
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");
|
2011-03-04 13:59:07 +01:00
|
|
|
QFile(mApp->DATADIR+"data/default/profiles/default/background.png").copy(p_QupZilla->activeProfil()+"background.png");
|
2011-03-02 16:57:41 +01:00
|
|
|
|
|
|
|
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::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);
|
|
|
|
}
|
|
|
|
|
2011-04-26 19:47:12 +02:00
|
|
|
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);
|
|
|
|
}
|
|
|
|
|
2011-03-02 16:57:41 +01:00
|
|
|
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();
|
|
|
|
}
|
|
|
|
|
2011-03-04 13:59:07 +01:00
|
|
|
void Preferences::openSslManager()
|
|
|
|
{
|
|
|
|
SSLManager* m = new SSLManager();
|
|
|
|
m->setWindowModality(Qt::WindowModal);
|
|
|
|
m->show();
|
|
|
|
}
|
|
|
|
|
2011-03-02 16:57:41 +01:00
|
|
|
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);
|
|
|
|
}
|
|
|
|
|
2011-03-17 17:03:04 +01:00
|
|
|
void Preferences::buttonClicked(QAbstractButton* button)
|
2011-03-02 16:57:41 +01:00
|
|
|
{
|
|
|
|
switch (ui->buttonBox->buttonRole(button)) {
|
|
|
|
case QDialogButtonBox::ApplyRole:
|
|
|
|
saveSettings();
|
|
|
|
break;
|
|
|
|
|
|
|
|
case QDialogButtonBox::RejectRole:
|
|
|
|
close();
|
|
|
|
break;
|
|
|
|
|
|
|
|
case QDialogButtonBox::AcceptRole:
|
|
|
|
saveSettings();
|
|
|
|
close();
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-04-04 19:29:03 +02:00
|
|
|
void Preferences::createProfile()
|
|
|
|
{
|
|
|
|
QString name = QInputDialog::getText(this, tr("New Profile"), tr("Enter the new profile's name:"));
|
2011-04-28 18:31:48 +02:00
|
|
|
if (name.isEmpty() || name.contains("/") || name.contains("\\"))
|
2011-04-04 19:29:03 +02:00
|
|
|
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);
|
2011-04-04 20:04:29 +02:00
|
|
|
ui->cannotDeleteActiveProfileLabel->setVisible(m_actProfileName == index);
|
2011-04-04 19:29:03 +02:00
|
|
|
}
|
|
|
|
|
2011-03-02 16:57:41 +01:00
|
|
|
void Preferences::saveSettings()
|
|
|
|
{
|
2011-03-04 13:59:07 +01:00
|
|
|
QSettings settings(mApp->getActiveProfil()+"settings.ini", QSettings::IniFormat);
|
2011-03-02 16:57:41 +01:00
|
|
|
//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);
|
2011-04-19 20:46:31 +02:00
|
|
|
settings.setValue("showAddTabButton", ui->showAddTabButton->isChecked());
|
2011-03-02 16:57:41 +01:00
|
|
|
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();
|
2011-03-17 15:35:51 +01:00
|
|
|
|
|
|
|
//DOWNLOADS
|
2011-03-02 16:57:41 +01:00
|
|
|
settings.beginGroup("DownloadManager");
|
|
|
|
if (ui->askEverytime->isChecked())
|
|
|
|
settings.setValue("defaultDownloadPath","");
|
|
|
|
else{
|
|
|
|
QString text = ui->downLoc->text();
|
2011-05-09 17:58:19 +02:00
|
|
|
#ifdef Q_WS_WIN
|
|
|
|
if (!text.endsWith("\\"))
|
|
|
|
text+="\\";
|
|
|
|
#else
|
2011-03-02 16:57:41 +01:00
|
|
|
if (!text.endsWith("/"))
|
|
|
|
text+="/";
|
2011-05-09 17:58:19 +02:00
|
|
|
#endif
|
2011-03-02 16:57:41 +01:00
|
|
|
settings.setValue("defaultDownloadPath",text);
|
|
|
|
}
|
|
|
|
settings.endGroup();
|
|
|
|
|
2011-03-17 15:35:51 +01:00
|
|
|
//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();
|
|
|
|
|
2011-03-02 16:57:41 +01:00
|
|
|
//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());
|
2011-04-05 20:56:55 +02:00
|
|
|
settings.setValue("DoNotTrack", ui->doNotTrack->isChecked());
|
2011-03-02 16:57:41 +01:00
|
|
|
//Cache
|
|
|
|
settings.setValue("AllowLocalCache", ui->allowCache->isChecked());
|
|
|
|
settings.setValue("LocalCacheSize", ui->cacheMB->value());
|
|
|
|
|
|
|
|
//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();
|
|
|
|
|
2011-04-27 09:49:41 +02:00
|
|
|
//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();
|
|
|
|
|
2011-03-02 16:57:41 +01:00
|
|
|
//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
|
2011-03-17 15:35:51 +01:00
|
|
|
settings.beginGroup("Browser-View-Settings");
|
2011-03-02 16:57:41 +01:00
|
|
|
settings.setValue("language",ui->languages->itemData(ui->languages->currentIndex()).toString());
|
|
|
|
settings.endGroup();
|
2011-04-26 19:47:12 +02:00
|
|
|
//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();
|
2011-03-02 16:57:41 +01:00
|
|
|
|
2011-04-04 19:29:03 +02:00
|
|
|
//Profiles
|
|
|
|
QString homePath = QDir::homePath();
|
|
|
|
homePath+="/.qupzilla/";
|
|
|
|
QSettings profileSettings(homePath+"profiles/profiles.ini", QSettings::IniFormat);
|
|
|
|
profileSettings.setValue("Profiles/startProfile",ui->startProfile->currentText());
|
|
|
|
|
2011-03-02 16:57:41 +01:00
|
|
|
m_pluginsList->save();
|
2011-03-04 13:59:07 +01:00
|
|
|
mApp->cookieJar()->loadSettings();
|
|
|
|
mApp->history()->loadSettings();
|
|
|
|
mApp->loadSettings();
|
|
|
|
mApp->plugins()->c2f_saveSettings();
|
2011-04-26 19:47:12 +02:00
|
|
|
mApp->networkManager()->loadSettings();
|
|
|
|
mApp->reloadSettings();
|
2011-04-27 09:49:41 +02:00
|
|
|
mApp->desktopNotifications()->loadSettings();
|
2011-03-02 16:57:41 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
Preferences::~Preferences()
|
|
|
|
{
|
|
|
|
delete ui;
|
|
|
|
delete m_autoFillManager;
|
|
|
|
delete m_pluginsList;
|
2011-04-27 09:49:41 +02:00
|
|
|
if (m_notification)
|
|
|
|
delete m_notification;
|
2011-03-02 16:57:41 +01:00
|
|
|
}
|