1
mirror of https://invent.kde.org/network/falkon.git synced 2024-11-11 09:32:12 +01:00

Merge remote-tracking branch 'upstream/master'

This commit is contained in:
vasitsiv 2011-12-28 16:28:27 +02:00
commit 290f52f477
63 changed files with 7656 additions and 3117 deletions

View File

@ -23,6 +23,8 @@ Michał Szymanowski <tylkobuba@gmail.com> (Polish)
Jérôme Giry <baikalink@hotmail.fr> (French)
Nicolas Ourceau <lamessen@hotmail.fr> (French)
Vasilis Tsivikis <vasitsiv.dev@gmail.com> (Greek)
Alexander Maslov <it@delta-z.ru> (Russian)
Oleg Brezhnev <oleg-423@yandex.ru> (Russian)
Special thanks:

View File

@ -22,9 +22,9 @@ Microsoft Windows
You need Microsoft Visual C++ Compiler 2008 or higher and Qt Libraries 4.7.0
or higher in order to build QupZilla.
Building with Microsoft Visual C++ Compiler 2010 is also possible, but as this
version is not yet suported by Qt, created binary can be executed, but is very
likely to unreasonable crash randomly.
Building with Microsoft Visual C++ Compiler 2010 is possible only with Qt 4.8.0
and higher. If you try to compile with Qt 4.7, you will get random crashes when
running QupZilla.
Building with MingW is perhaps possible too, but MingW QtWebKit crashes with
every Flash, so MingW is not officially supported.
If you don't meet this, please use precompiled version, which is also in smart
@ -40,11 +40,13 @@ OS/2
I cannot provide support for QupZilla on OS/2 as I don't have access to
machine with OS/2, but it is possible to get QupZilla working there.
There may be some more things to do, but as far as I know, you need to
add Q_WS_WIN define to qmake.
You will do this by adding one line to src/src.pro:
DEFINES += Q_WS_WIN
FreeBSD
----------------------------------------------------------------------------------
You may need to set few sysctls to get QupZilla running with raster graphics system.
For more informations, please see FAQ.
Available Defines
@ -56,12 +58,13 @@ Available Defines
$ export NAME="value"
General:
UNRELEASED_BUILD QupZilla won't check profile version,
thus, it won't reset your profile is lower version
PORTABLE_BUILD QupZilla won't write any data outside of path of exection.
It will also disable plugins by default.
(disabled by default)
example:
$ export UNRELEASED_BUILD="true"
$ export PORTABLE_BUILD="true"
USE_WEBGL Enable WebGL. You need to build QupZilla with WebKit built
with WebGL support, otherwise you won't be able to compile
@ -69,7 +72,7 @@ Available Defines
(disabled by default)
example:
$ export USE_WEBGL="true"
$ export USE_WEBGL="true"
Windows specific defines:

50
FAQ
View File

@ -1,6 +1,17 @@
FAQ
Q: I have been told to look for a file in my profile directory. So where is
Q: Profile data storage location
Q: Cannot find page bookmarked with clicking on star icon.
Q: Errors when visiting secured (https) sites.
Q: Cannot save bookmarks and history.
Q: Using a lot of % CPU.
Q: Search engines are not saved through restarts.
Q: Cannot find Import bookmarks feature.
Q: How to change User Agent.
Q: Browser is using ugly theme and cannot find any translations.
Q: Empty window when trying to run on FreeBSD
Q: I have been told to look for a file in my profile directory. So where are
all my profile data stored?
----------------------------------------------------------------------------------
A: Please select the menu entry Help -> Informations about application and then
@ -12,7 +23,7 @@ Q: I have bookmarked a page, the star icon is shining, but I cannot see
----------------------------------------------------------------------------------
A: When you add a bookmark from the star icon, it is automatically added
to unsorted bookmarks folder. You will find it only in the library (Ctrl+Shift+O).
You can move the bookmark to other folder in the star icon or in the library.
You can move the bookmark to other folder with the star icon or in the library.
Q: I am getting a lot of SSL errors when visiting secured (https) pages.
@ -55,6 +66,7 @@ Q: QupZilla is using a lot % of my CPU. What can I do to cool it down?
A: Well, the problem with using excessive amount of processor time is very likely
caused by some flash content running in the browser (most likely bad coded
adverts). You have 3 options to solve this:
1) Completely disable Flash in preferences (Browsing -> Web Configuration ->
Enable Plugins (Flash plugin)
2) Use the Click2Flash plugin (Preferences -> Plugins -> WebKit plugins ->
@ -100,3 +112,37 @@ A: You can change User Agent in QupZilla, but it is not possible from Preference
UserAgent=YourUserAgent version 0.1.2.3 /Linux
allowFlash=true
...
Q: I have started QupZilla, but it looks very different from screenshots (very ugly!).
I cannot find option to change themes nor language in preferences.
----------------------------------------------------------------------------------
A: You have probably downloaded tarball for other Linux distributions and executed
QupZilla from it.
You need to move files from /usr/share/qupzilla directory in tarball to (probably)
/usr/share/qupzilla directory in your system. The exact path can be found directly
from QupZilla: Menu Help -> Informations about application -> Paths -> Data
After restart, it should be ok now.
If you are not using tarball for other Linux distributions, didn't you forget to run
make install?
Q: I have successfully compiled QupZilla on FreeBSD, but when I tried to run it, only
blank window appeared. Is QupZilla incompatible with FreeBSD?
----------------------------------------------------------------------------------
A: There is problem with raster graphics system on FreeBSD with (probably) NVIDIA drivers.
You can workaround it by running QupZilla with native graphics system:
qupzilla -graphicssystem native
but running with native graphics system is very slow.
To fix this issue, you have to set 3 sysctls:
kern.ipc.shmmax=67108864
kern.ipc.shmall=32768
kern.ipc.shm_allow_removed=1
You can do it by
a) put them in /etc/sysctl.conf and run '/etc/rc.d/sysctl restart'
b) set them manually with
'sysctl kern.ipc.shmmax=67108864'
'sysctl kern.ipc.shmall=32768'
'sysctl kern.ipc.shm_allow_removed=1'
commands (without ' of course)

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
bin/locale/ru_RU.qm Normal file

Binary file not shown.

View File

@ -5,25 +5,74 @@ Type=Application
Icon=qupzilla
Categories=Network;WebBrowser;
Comment=A fast and secure web browser
Comment[es]=Un navegador web rápido y seguro
Comment[cs]=Rychlý a bezpečný webový prohlížeč
Comment[sk]=Rýchly a bezpečný webový prehliadač
Comment[de]=Ein schneller und sicherer Web Browser
Comment[nl]=Een snelle en veilige webbrowser
Comment[it]=Un browser web veloce e sicuro
Comment[pl]=Szybka i bezpieczna przeglądarka internetowa
Comment[fr]=Un navigateur Internet rapide et sûr
Comment[el]=Ένας γρήγορος και ασφαλής περιηγητής ιστού
Comment[es]=Un navegador web rápido y seguro
Comment[fr]=Un navigateur Internet rapide et sûr
Comment[it]=Un browser web veloce e sicuro
Comment[nl]=Een snelle en veilige webbrowser
Comment[pl]=Szybka i bezpieczna przeglądarka internetowa
Comment[ru]=Быстрый и безопасный веб-браузер
Comment[sk]=Rýchly a bezpečný webový prehliadač
GenericName=Web Browser
GenericName[es]=Navegador Web
GenericName[cs]=Webový prohlížeč
GenericName[sk]=Webový prehliadač
GenericName[de]=Web Browser
GenericName[nl]=Webbrowser
GenericName[it]=Browser Web
GenericName[pl]=Przeglądarka Internetowa
GenericName[fr]=Navigateur Internet
GenericName[el]=Περιηγητής ιστού
GenericName[es]=Navegador Web
GenericName[fr]=Navigateur Internet
GenericName[it]=Browser Web
GenericName[nl]=Webbrowser
GenericName[pl]=Przeglądarka Internetowa
GenericName[ru]=Веб-Браузер
GenericName[sk]=Webový prehliadač
Exec=qupzilla %u
MimeType=text/html;application/xhtml+xml;
Terminal=false
X-Ayatana-Desktop-Shortcuts=NewTab;NewWindow;PrivateBrowsing;
[NewTab Shortcut Group]
Name=Open new tab
Name[cs]=Otevřít nový panel
Name[de]=Neuen Tab öffnen
Name[el]=Άνοιγμα νέας καρτέλας
Name[es]=Abrir nueva pestaña
Name[fr]=Ouvrir un nouvel onglet
Name[it]=Apri nuova scheda
Name[nl]=Open nieuw tabblad
Name[pl]=Otwórz nowe okno
Name[ru]=Открыть новую вкладку
Name[sk]=Otvoriť novú kartu
Exec=qupzilla --new-tab
TargetEnvironment=Unity
[NewWindow Shortcut Group]
Name=Open new window
Name[cs]=Otevřít nové okno
Name[de]=Neues Fenster öffnen
Name[el]=Άνοιγμα νέου παράθυρου
Name[es]=Abrir una ventana nueva
Name[fr]=Ouvrir une nouvelle fenêtre
Name[it]=Apri una nuova finestra
Name[nl]=Nieuw venster openen
Name[pl]=Otwórz nowe okno
Name[ru]=Открыть в новом окне
Name[sk]=Otvoriť nové okno
Exec=qupzilla --new-window
TargetEnvironment=Unity
[PrivateBrowsing Shortcut Group]
Name=Start private browsing
Name[cs]=Spustit soukromé prohlížení
Name[de]=Privaten Modus starten
Name[el]=Έναρξη ιδιωτικής περιήγησης
Name[es]=Iniciar navegación privada
Name[fr]=Commencer la navigation privée
Name[it]=Avvia Navigazione Anonima
Name[nl]=Start incognito browsen
Name[pl]=Początek prywatną oglądania
Name[ru]=Запустить в режиме приватного просмотра
Name[sk]=Spustiť súkromné prehliadanie
Exec=qupzilla --private-browsing
TargetEnvironment=Unity

View File

@ -1,32 +1,4 @@
-----BEGIN CERTIFICATE-----
MIIEuDCCA6CgAwIBAgIBBDANBgkqhkiG9w0BAQUFADCBtDELMAkGA1UEBhMCQlIx
EzARBgNVBAoTCklDUC1CcmFzaWwxPTA7BgNVBAsTNEluc3RpdHV0byBOYWNpb25h
bCBkZSBUZWNub2xvZ2lhIGRhIEluZm9ybWFjYW8gLSBJVEkxETAPBgNVBAcTCEJy
YXNpbGlhMQswCQYDVQQIEwJERjExMC8GA1UEAxMoQXV0b3JpZGFkZSBDZXJ0aWZp
Y2Fkb3JhIFJhaXogQnJhc2lsZWlyYTAeFw0wMTExMzAxMjU4MDBaFw0xMTExMzAy
MzU5MDBaMIG0MQswCQYDVQQGEwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDE9MDsG
A1UECxM0SW5zdGl0dXRvIE5hY2lvbmFsIGRlIFRlY25vbG9naWEgZGEgSW5mb3Jt
YWNhbyAtIElUSTERMA8GA1UEBxMIQnJhc2lsaWExCzAJBgNVBAgTAkRGMTEwLwYD
VQQDEyhBdXRvcmlkYWRlIENlcnRpZmljYWRvcmEgUmFpeiBCcmFzaWxlaXJhMIIB
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwPMudwX/hvm+Uh2b/lQAcHVA
isamaLkWdkwP9/S/tOKIgRrL6Oy+ZIGlOUdd6uYtk9Ma/3pUpgcfNAj0vYm5gsyj
Qo9emsc+x6m4VWwk9iqMZSCK5EQkAq/Ut4n7KuLE1+gdftwdIgxfUsPt4CyNrY50
QV57KM2UT8x5rrmzEjr7TICGpSUAl2gVqe6xaii+bmYR1QrmWaBSAG59LrkrjrYt
bRhFboUDe1DK+6T8s5L6k8c8okpbHpa9veMztDVC9sPJ60MWXh6anVKo1UcLcbUR
yEeNvZneVRKAAU6ouwdjDvwlsaKydFKwed0ToQ47bmUKgcm+wV3eTRk36UOnTwID
AQABo4HSMIHPME4GA1UdIARHMEUwQwYFYEwBAQAwOjA4BggrBgEFBQcCARYsaHR0
cDovL2FjcmFpei5pY3BicmFzaWwuZ292LmJyL0RQQ2FjcmFpei5wZGYwPQYDVR0f
BDYwNDAyoDCgLoYsaHR0cDovL2FjcmFpei5pY3BicmFzaWwuZ292LmJyL0xDUmFj
cmFpei5jcmwwHQYDVR0OBBYEFIr68VeEERM1kEL6V0lUaQ2kxPA3MA8GA1UdEwEB
/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAZA5c1
U/hgIh6OcgLAfiJgFWpvmDZWqlV30/bHFpj8iBobJSm5uDpt7TirYh1Uxe3fQaGl
YjJe+9zd+izPRbBqXPVQA34EXcwk4qpWuf1hHriWfdrx8AcqSqr6CuQFwSr75Fos
SzlwDADa70mT7wZjAmQhnZx2xJ6wfWlT9VQfS//JYeIc7Fue2JNLd00UOSMMaiK/
t79enKNHEA2fupH3vEigf5Eh4bVAN5VohrTm6MY53x7XQZZr1ME7a55lFEnSeT0u
mlOAjR2mAbvSM5X5oSZNrmetdzyTj2flCM8CC7MLab0kkdngRIlUBGHF1/S5nmPb
K+9A46sd33oqK8n8
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290
IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB
IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA
@ -135,53 +107,6 @@ TBA+9zBb6xD1KM2DdY7r4GiyYItN0BKLfuWbh9LXGbl1C+f4P11g+m2MPiavIeCe
1iazG5pcS3KoTLACsYlEX24TINtg4kcuS81XdllcnsV3Kdts0nIqPj6uhTTZD0k=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDvjCCA3ygAwIBAgIFJQaThoEwCwYHKoZIzjgEAwUAMIGFMQswCQYDVQQGEwJG
UjEPMA0GA1UECBMGRnJhbmNlMQ4wDAYDVQQHEwVQYXJpczEQMA4GA1UEChMHUE0v
U0dETjEOMAwGA1UECxMFRENTU0kxDjAMBgNVBAMTBUlHQy9BMSMwIQYJKoZIhvcN
AQkBFhRpZ2NhQHNnZG4ucG0uZ291di5mcjAeFw0wMjEyMTMxNDM5MTVaFw0yMDEw
MTcxNDM5MTRaMIGFMQswCQYDVQQGEwJGUjEPMA0GA1UECBMGRnJhbmNlMQ4wDAYD
VQQHEwVQYXJpczEQMA4GA1UEChMHUE0vU0dETjEOMAwGA1UECxMFRENTU0kxDjAM
BgNVBAMTBUlHQy9BMSMwIQYJKoZIhvcNAQkBFhRpZ2NhQHNnZG4ucG0uZ291di5m
cjCCAbYwggErBgcqhkjOOAQBMIIBHgKBgQCFkMImdk9zDzJfTO4XPdAAmLbAdWws
ZiEMZh19RyTo3CyhFqO77OIXrwY6vc1pcc3MgWJ0dgQpAgrDMtmFFxpUu4gmjVsx
8GpxQC+4VOgLY8Cvmcd/UDzYg07EIRto8BwCpPJ/JfUxwzV2V3N713aAX+cEoKZ/
s+kgxC6nZCA7oQIVALME/JYjkdW2uKIGngsEPbXAjdhDAoGADh/uqWJx94UBm31c
9d8ZTBfRGRnmSSRVFDgPWgA69JD4BR5da8tKz+1HjfMhDXljbMH86ixpD5Ka1Z0V
pRYUPbyAoB37tsmXMJY7kjyD19d5VdaZboUjVvhH6UJy5lpNNNGSvFl4fqkxyvw+
pq1QV0N5RcvK120hlXdfHUX+YKYDgYQAAoGAQGr7IuKJcYIvJRMjxwl43KxXY2xC
aoCiM/bv117MfI94aNf1UusGhp7CbYAY9CXuL60P0oPMAajbaTE5Z34AuITeHq3Y
CNMHwxalip8BHqSSGmGiQsXeK7T+r1rPXsccZ1c5ikGDZ4xn5gUaCyy2rCmb+fOJ
6VAfCbAbAjmNKwejdzB1MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgFGMBUG
A1UdIAQOMAwwCgYIKoF6AXkBAQEwHQYDVR0OBBYEFPkeNRcUf8idzpKblYbLNxs0
MQhSMB8GA1UdIwQYMBaAFPkeNRcUf8idzpKblYbLNxs0MQhSMAsGByqGSM44BAMF
AAMvADAsAhRVh+CJA5eVyEYU5AO9Tm7GxX0rmQIUBCqsU5u1WxoZ5lEXicDX5/Ob
sRQ=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYT
AkZSMQ8wDQYDVQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQ
TS9TR0ROMQ4wDAYDVQQLEwVEQ1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG
9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMB4XDTAyMTIxMzE0MjkyM1oXDTIw
MTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQIEwZGcmFuY2UxDjAM
BgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NTSTEO
MAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2
LmZyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaI
s9z4iPf930Pfeo2aSVz2TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2
xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCWSo7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4
u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYyHF2fYPepraX/z9E0+X1b
F8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNdfrGoRpAx
Vs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGd
PDPQtQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNV
HSAEDjAMMAoGCCqBegF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAx
NjAfBgNVHSMEGDAWgBSjBS8YYFDCiQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUF
AAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RKq89toB9RlPhJy3Q2FLwV3duJ
L92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3QMZsyK10XZZOY
YLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg
Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2a
NjSaTFR+FwNIlQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R
0982gaEbeC9xs/FZTEYYKKuF0mBWWg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UE
AwwNQUNFRElDT00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00x
CzAJBgNVBAYTAkVTMB4XDTA4MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEW
@ -3832,221 +3757,6 @@ i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ
O+7ETPTsJ3xCwnR8gooJybQDJbw=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIETzCCAzegAwIBAgIEO63vKTANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJQTDEfMB0GA1UE
ChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2Fjamkg
U2lnbmV0MRswGQYDVQQDExJDQyBTaWduZXQgLSBSb290Q0EwHhcNMDEwOTIzMTQxODE3WhcNMTEw
OTIzMTMxODE3WjB1MQswCQYDVQQGEwJQTDEfMB0GA1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5v
LjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2FjamkgU2lnbmV0MR8wHQYDVQQDExZDQyBTaWdu
ZXQgLSBDQSBLbGFzYSAxMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4SRW9Q58g5DY1Hw7h
gCRKBEdPdGn0MFHsfw7rlu/oQm7IChI/uWd9q5wwo77YojtTDjRnpgZsjqBeynX8T90vFILqsY2K
5CF1OESalwvVr3sZiQX79lisuFKat92u6hBFikFIVxfHHB67Af+g7u0dEHdDW7lwy81MwFYxBTRy
9wIDAQABo4IBbTCCAWkwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwggEEBgNVHSAE
gfwwgfkwgfYGDSsGAQQBvj8CAQoBAQAwgeQwgZoGCCsGAQUFBwICMIGNGoGKQ2VydHlmaWthdCB3
eXN0YXdpb255IHpnb2RuaWUgeiBkb2t1bWVudGVtOiAiUG9saXR5a2EgQ2VydHlmaWthY2ppIGRs
YSBSb290Q0EiLiBDZXJ0eWZpa2F0IHd5c3Rhd2lvbnkgcHJ6ZXogUm9vdENBIHcgaGllcmFyY2hp
aSBDQyBTaWduZXQuMEUGCCsGAQUFBwIBFjlodHRwOi8vd3d3LnNpZ25ldC5wbC9yZXBvenl0b3Jp
dW0vZG9rdW1lbnR5L3BjX3Jvb3RjYS50eHQwHwYDVR0jBBgwFoAUwJvFIw0C4aZOSGsfAOnjmhQb
sa8wHQYDVR0OBBYEFMODHtVZd1T7TftXR/nEI1zR54njMA0GCSqGSIb3DQEBBQUAA4IBAQBRIHQB
FIGh8Jpxt87AgSLwIEEk4+oGy769u3NtoaR0R3WNMdmt7fXTi0tyTQ9V4AIszxVjhnUPaKnF1KYy
f8Tl+YTzk9ZfFkZ3kCdSaILZAOIrmqWNLPmjUQ5/JiMGho0e1YmWUcMci84+pIisTsytFzVP32/W
+sz2H4FQAvOIMmxB7EJX9AdbnXn9EXZ+4nCqi0ft5z96ZqOJJiCB3vSaoYg+wdkcvb6souMJzuc2
uptXtR1Xf3ihlHaGW+hmnpcwFA6AoNrom6Vgzk6U1ienx0Cw28BhRSKqzKkyXkuK8gRflZUx84uf
tXncwKJrMiE3lvgOOBITRzcahirLer4c
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIE9zCCA9+gAwIBAgIEPL/xoTANBgkqhkiG9w0BAQUFADB2MQswCQYDVQQGEwJQTDEfMB0GA1UE
ChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2Fjamkg
U2lnbmV0MSAwHgYDVQQDExdDQyBTaWduZXQgLSBQQ0EgS2xhc2EgMjAeFw0wMjA0MTkxMDI5NTNa
Fw0xNzA0MTgxMjUzMDdaMHUxCzAJBgNVBAYTAlBMMR8wHQYDVQQKExZUUCBJbnRlcm5ldCBTcC4g
eiBvLm8uMSQwIgYDVQQLExtDZW50cnVtIENlcnR5ZmlrYWNqaSBTaWduZXQxHzAdBgNVBAMTFkND
IFNpZ25ldCAtIENBIEtsYXNhIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqgLJu
QqY4yavbSgHg8CyfKTx4BokNSDOVz4eD9vptUr11Kqd06ED1hlH7Sg0goBFAfntNU/QTKwSBaNui
me7C4sSEdgsKrPoAhGb4Mq8y7Ty7RqZz7mkzNMqzL2L2U4yQ2QjvpH8MH0IBqOWEcpSkpwnrCDIm
RoTfd+YlZWKi2JceQixUUYIQ45Ox8+x8hHbvvZdgqtcvo8PW27qoHkp/7hMuJ44kDAGrmxffBXl/
OBRZp0uO1CSLcMcVJzyr2phKhy406MYdWrtNPEluGs0GFDzd0nrIctiWAO4cmct4S72S9Q6e//0G
O9f3/Ca5Kb2I1xYLj/xE+HgjHX9aD2MhAgMBAAGjggGMMIIBiDAPBgNVHRMBAf8EBTADAQH/MA4G
A1UdDwEB/wQEAwIBBjCB4wYDVR0gBIHbMIHYMIHVBg0rBgEEAb4/AhQKAQEAMIHDMHUGCCsGAQUF
BwICMGkaZ0NlcnR5ZmlrYXQgd3lzdGF3aW9ueSB6Z29kbmllIHogZG9rdW1lbnRlbTogIlBvbGl0
eWthIENlcnR5ZmlrYWNqaSBQQ0EyIC0gQ2VydHlmaWthdHkgVXJ6ZWRvdyBLbGFzeSAyIi4wSgYI
KwYBBQUHAgEWPmh0dHA6Ly93d3cuc2lnbmV0LnBsL3JlcG96eXRvcml1bS9kb2t1bWVudHkva2xh
c2EyL3BjX3BjYTIudHh0MD8GA1UdHwQ4MDYwNKAyoDCGLmh0dHA6Ly93d3cuc2lnbmV0LnBsL3Jl
cG96eXRvcml1bS9jcmwvcGNhMi5jcmwwHwYDVR0jBBgwFoAUwGxGyl2CfpYHRonE82AVXO08kMIw
HQYDVR0OBBYEFLtFBlILy4HNKVSzvHxBTM0HDowlMA0GCSqGSIb3DQEBBQUAA4IBAQBWTsCbqXrX
hBBev5v5cIuc6gJM8ww7oR0uMQRZoFSqvQUPWBYM2/TLI/f8UM9hSShUVj3zEsSj/vFHagUVmzuV
Xo5u0WK8iaqATSyEVBhADHrPG6wYcLKJlagge/ILA0m+SieyP2sjYD9MUB9KZIEyBKv0429UuDTw
6P7pslxMWJBSNyQxaLIs0SRKsqZZWkc7ZYAj2apSkBMX2Is1oHA+PwkF6jQMwCao/+CndXPUzfCF
6caa9WwW31W26MlXCvSmJgfiTPwGvm4PkPmOnmWZ3CczzhHl4q7ztHFzshJH3sZWDnrWwBFjzz5e
Pr3WHV1wA7EY6oT4zBx+2gT9XBTB
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEUzCCAzugAwIBAgIEPq+qjzANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQGEwJQTDE3MDUGA1UE
ChMuQ1ppQyBDZW50cmFzdCBTQSB3IGltaWVuaXUgTWluaXN0cmEgR29zcG9kYXJraTEZMBcGA1UE
AxMQQ1ppQyBDZW50cmFzdCBTQTAeFw0wMzA0MzAxMDUwNTVaFw0wODA0MjgxMDUwNTVaMGgxCzAJ
BgNVBAYTAlBMMR8wHQYDVQQKExZUUCBJbnRlcm5ldCBTcC4geiBvLm8uMR8wHQYDVQQDExZDQyBT
aWduZXQgLSBDQSBLbGFzYSAzMRcwFQYDVQQFEw5OdW1lciB3cGlzdTogNDCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBALVdeOM62cPH2NERFxbS5FIp/HSv3fgesdVsTUFxZbGtE+/E0RMl
KZQJHH9emx7vRYubsi4EOLCjYsCOTFvgGRIpZzx7R7T5c0Di5XFkRU4gjBl7aHJoKb5SLzGlWdoX
GsekVtl6keEACrizV2EafqjI8cnBWY7OxQ1ooLQp5AeFjXg+5PT0lO6TUZAubqjFbhVbxSWjqvdj
93RGfyYE76MnNn4c2xWySD07n7uno06TC0IJe6+3WSX1h+76VsIFouWBXOoM7cxxiLjoqdBVu24+
P8e81SukE7qEvOwDPmk9ZJFtt1nBNg8a1kaixcljrA/43XwOPz6qnJ+cIj/xywECAwEAAaOCAQow
ggEGMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMDMGA1UdIAEB/wQpMCcwJQYEVR0g
ADAdMBsGCCsGAQUFBwIBFg93d3cuY2VudHJhc3QucGwwgY4GA1UdIwSBhjCBg4AU2a7r85Cp1iJN
W0Ca1LR6VG3996ShZaRjMGExCzAJBgNVBAYTAlBMMTcwNQYDVQQKEy5DWmlDIENlbnRyYXN0IFNB
IHcgaW1pZW5pdSBNaW5pc3RyYSBHb3Nwb2RhcmtpMRkwFwYDVQQDExBDWmlDIENlbnRyYXN0IFNB
ggQ9/0sQMB0GA1UdDgQWBBR7Y8wZkHq0zrY7nn1tFSdQ0PlJuTANBgkqhkiG9w0BAQUFAAOCAQEA
ldt/svO5c1MU08FKgrOXCGEbEPbQxhpM0xcd6Iv3dCo6qugEgjEs9Qm5CwUNKMnFsvR27cJWUvZb
MVcvwlwCwclOdwF6u/QRS8bC2HYErhYo9bp9yuxxzuow2A94c5fPqfVrjXy+vDouchAm6+A5Wjzv
J8wxVFDCs+9iGACmyUWr/JGXCYiQIbQkwlkRKHHlan9ymKf1NvIej/3EpeT8fKr6ywxGuhAfqofW
pg3WJY/RCB4lTzD8vZGNwfMFGkWhJkypad3i9w3lGmDVpsHaWtCgGfd0H7tUtWPkP+t7EjIRCD9J
HYnTR+wbbewc5vOI+UobR15ynGfFIaSIiMTVtQ==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEejCCA2KgAwIBAgIEP4vk6TANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJQ
TDEfMB0GA1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2Vu
dHJ1bSBDZXJ0eWZpa2FjamkgU2lnbmV0MR8wHQYDVQQDExZDQyBTaWduZXQgLSBD
QSBLbGFzYSAyMB4XDTAzMTAxNDExNTgyMloXDTE3MDQxODEyNTMwN1owdzELMAkG
A1UEBhMCUEwxHzAdBgNVBAoTFlRQIEludGVybmV0IFNwLiB6IG8uby4xJDAiBgNV
BAsTG0NlbnRydW0gQ2VydHlmaWthY2ppIFNpZ25ldDEhMB8GA1UEAxMYQ0MgU2ln
bmV0IC0gT0NTUCBLbGFzYSAyMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCo
VCsaBStblXQYVNthe3dvaCrfvKpPXngh4almm988iIlEv9CVTaAdCfaJNihvA+Vs
Qw8++ix1VqteMQE474/MV/YaXigP0Zr0QB+g+/7PWVlv+5U9Gzp9+Xx4DJay8AoI
iB7Iy5Qf9iZiHm5BiPRIuUXT4ZRbZRYPh0/76vgRsQIDAQABo4IBkjCCAY4wDgYD
VR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMJMEEGA1UdHwQ6MDgwNqA0
oDKGMGh0dHA6Ly93d3cuc2lnbmV0LnBsL3JlcG96eXRvcml1bS9jcmwva2xhc2Ey
LmNybDCB2AYDVR0gBIHQMIHNMIHKBg4rBgEEAb4/AoFICgwBADCBtzBsBggrBgEF
BQcCAjBgGl5DZXJ0eWZpa2F0IHd5ZGFueSB6Z29kbmllIHogZG9rdW1lbnRlbSAi
UG9saXR5a2EgQ2VydHlmaWthY2ppIC0gQ2VydHlmaWthdHkgcmVzcG9uZGVyb3cg
T0NTUCIuMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnNpZ25ldC5wbC9yZXBvenl0
b3JpdW0vZG9rdW1lbnR5L3BjX29jc3BfMV8wLnBkZjAfBgNVHSMEGDAWgBS7RQZS
C8uBzSlUs7x8QUzNBw6MJTAdBgNVHQ4EFgQUKEVrOY7cEHvsVgvoyZdytlbtgwEw
CQYDVR0TBAIwADANBgkqhkiG9w0BAQUFAAOCAQEAQrRg5MV6dxr0HU2IsLInxhvt
iUVmSFkIUsBCjzLoewOXA16d2oDyHhI/eE+VgAsp+2ANjZu4xRteHIHoYMsN218M
eD2MLRsYS0U9xxAFK9gDj/KscPbrrdoqLvtPSMhUb4adJS9HLhvUe6BicvBf3A71
iCNe431axGNDWKnpuj2KUpj4CFHYsWCXky847YtTXDjri9NIwJJauazsrSjK+oXp
ngRS506mdQ7vWrtApkh8zhhWp7duCkjcCo1O8JxqYr2qEW1fXmgOISe010v2mmuv
hHxPyVwoAU4KkOw0nbXZn53yak0is5+XmAjh0wWue44AssHrjC9nUh3mkLt6eQ==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEezCCA2OgAwIBAgIEP4vnLzANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJQ
TDEfMB0GA1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEfMB0GA1UEAxMWQ0Mg
U2lnbmV0IC0gQ0EgS2xhc2EgMzEXMBUGA1UEBRMOTnVtZXIgd3Bpc3U6IDQwHhcN
MDMxMDE0MTIwODAwWhcNMDgwNDI4MTA1MDU1WjB3MQswCQYDVQQGEwJQTDEfMB0G
A1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBD
ZXJ0eWZpa2FjamkgU2lnbmV0MSEwHwYDVQQDExhDQyBTaWduZXQgLSBPQ1NQIEts
YXNhIDMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM/9GwvARNuCVN+PqZmO
4FqH8vTqhenUyqRkmAVT4YhLu0a9AXeLAYVDu+NTkYzsAUMAfu55rIKHNLlm6WbF
KvLiKKz4p4pbUr+ToPcwl/TDotidloUdBAxDg0SL+PmQqACZDe3seJho2IYf2vDL
/G4TLMbKmNB0mlWFuN0f4fJNAgMBAAGjggGgMIIBnDAOBgNVHQ8BAf8EBAMCB4Aw
EwYDVR0lBAwwCgYIKwYBBQUHAwkwTwYDVR0fBEgwRjBEoEKgQIY+aHR0cDovL3d3
dy5zaWduZXQucGwva3dhbGlmaWtvd2FuZS9yZXBvenl0b3JpdW0vY3JsL2tsYXNh
My5jcmwwgdgGA1UdIASB0DCBzTCBygYOKwYBBAG+PwKCLAoCAQAwgbcwbAYIKwYB
BQUHAgIwYBpeQ2VydHlmaWthdCB3eWRhbnkgemdvZG5pZSB6IGRva3VtZW50ZW0g
IlBvbGl0eWthIENlcnR5ZmlrYWNqaSAtIENlcnR5ZmlrYXR5IHJlc3BvbmRlcm93
IE9DU1AiLjBHBggrBgEFBQcCARY7aHR0cDovL3d3dy5zaWduZXQucGwvcmVwb3p5
dG9yaXVtL2Rva3VtZW50eS9wY19vY3NwXzFfMC5wZGYwHwYDVR0jBBgwFoAUe2PM
GZB6tM62O559bRUnUND5SbkwHQYDVR0OBBYEFG4jnCMvBALRQXtmDn9TyXQ/EKP+
MAkGA1UdEwQCMAAwDQYJKoZIhvcNAQEFBQADggEBACXrKG5Def5lpRwmZom3UEDq
bl7y4U3qomG4B+ok2FVZGgPZti+ZgvrenPj7PtbYCUBPsCSTNrznKinoT3gD9lQQ
xkEHwdc6VD1GlFp+qI64u0+wS9Epatrdf7aBnizrOIB4LJd4E2TWQ6trspetjMIU
upyWls1BmYUxB91R7QkTiAUSNZ87s3auhZuG4f0V0JLVCcg2rn7AN1rfMkgxCbHk
GxiQbYWFljl6aatxR3odnnzVUe1I8uoY2JXpmmUcOG4dNGuQYziyKG3mtXCQWvug
5qi9Mf3KUh1oSTKx6HfLjjNl1+wMB5Mdb8LF0XyZLdJM9yIZh7SBRsYm9QiXevY=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFGjCCBAKgAwIBAgIEPL7eEDANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJQTDEfMB0GA1UE
ChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2Fjamkg
U2lnbmV0MRswGQYDVQQDExJDQyBTaWduZXQgLSBSb290Q0EwHhcNMDIwNDE4MTQ1NDA4WhcNMjYw
OTIxMTU0MjE5WjB2MQswCQYDVQQGEwJQTDEfMB0GA1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5v
LjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2FjamkgU2lnbmV0MSAwHgYDVQQDExdDQyBTaWdu
ZXQgLSBQQ0EgS2xhc2EgMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM7BrBlbN5ma
M5eg0BOTqoZ+9NBDvU8Lm5rTdrMswFTCathzpVVLK/JD4K3+4oCZ9SRAspEXE4gvwb08ASY6w5s+
HpRkeJw8YzMFR5kDZD5adgnCAy4vDfIXYZgppXPaTQ8wnfUZ7BZ7Zfa7QBemUIcJIzJBB0UqgtxW
Ceol9IekpBRVmuuSA6QG0Jkm+pGDJ05yj2eQG8jTcBENM7sVA8rGRMyFA4skSZ+D0OG6FS2xC1i9
JyN0ag1yII/LPx8HK5J4W9MaPRNjAEeaa2qI9EpchwrOxnyVbQfSedCG1VRJfAsE/9tT9CMUPZ3x
W20QjQcSZJqVcmGW9gVsXKQOVLsCAwEAAaOCAbMwggGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P
AQH/BAQDAgEGMIIBBAYDVR0gBIH8MIH5MIH2Bg0rBgEEAb4/AgEKAQEBMIHkMIGaBggrBgEFBQcC
AjCBjRqBikNlcnR5ZmlrYXQgd3lzdGF3aW9ueSB6Z29kbmllIHogZG9rdW1lbnRlbTogIlBvbGl0
eWthIENlcnR5ZmlrYWNqaSBkbGEgUm9vdENBIi4gQ2VydHlmaWthdCB3eXN0YXdpb255IHByemV6
IFJvb3RDQSB3IGhpZXJhcmNoaWkgQ0MgU2lnbmV0LjBFBggrBgEFBQcCARY5aHR0cDovL3d3dy5z
aWduZXQucGwvcmVwb3p5dG9yaXVtL2Rva3VtZW50eS9wY19yb290Y2EudHh0MEQGA1UdHwQ9MDsw
OaA3oDWGM2h0dHA6Ly93d3cuc2lnbmV0LnBsL3JlcG96eXRvcml1bS9yb290Y2Evcm9vdGNhLmNy
bDAfBgNVHSMEGDAWgBTAm8UjDQLhpk5Iax8A6eOaFBuxrzAdBgNVHQ4EFgQUwGxGyl2CfpYHRonE
82AVXO08kMIwDQYJKoZIhvcNAQEFBQADggEBABp1TAUsa+BeVWg4cjowc8yTJ5XN3GvN96GObMkx
UGY7U9kVrLI71xBgoNVyzXTiMNDBvjh7vdPWjpl5SDiRpnnKiOFXA43HvNWzUaOkTu1mxjJsZsan
ot1Xt6j0ZDC+03FjLHdYMyM9kSWp6afb4980EPYZCcSzgM5TOGfJmNii5Tq468VFKrX+52Aou1G2
2Ohu+EEOlOrG7ylKv1hHUJJCjwN0ZVEIn1nDbrU9FeGCz8J9ihVUvnENEBbBkU37PWqWuHitKQDV
tcwTwJJdR8cmKq3NmkwAm9fPacidQLpaw0WkuGrS+fEDhu1Nhy9xELP6NA9GRTCNxm/dXlcwnmY=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFGjCCBAKgAwIBAgIEPV0tNDANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJQTDEfMB0GA1UE
ChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2Fjamkg
U2lnbmV0MRswGQYDVQQDExJDQyBTaWduZXQgLSBSb290Q0EwHhcNMDIwODE2MTY0OTU2WhcNMjYw
OTIxMTU0MjE5WjB2MQswCQYDVQQGEwJQTDEfMB0GA1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5v
LjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2FjamkgU2lnbmV0MSAwHgYDVQQDExdDQyBTaWdu
ZXQgLSBQQ0EgS2xhc2EgMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALN3LanJtdue
Ne6geWUTFENa+lEuzqELcoqhYB+a/tJcPEkc6TX/bYPzalRRjqs+quMP6KZTU0DixOrV+K7iWaqA
iQ913HX5IBLmKDCrTVW/ZvSDpiBKbxlHfSNuJxAuVT6HdbzK7yAW38ssX+yS2tZYHZ5FhZcfqzPE
OpO94mAKcBUhk6T/ki0evXX/ZvvktwmF3hKattzwtM4JMLurAEl8SInyEYULw5JdlfcBez2Tg6Db
w34hA1A+ckTwhxzecrB8TUe2BnQKOs9vr2cCACpFFcOmPkM0Drtjctr1QHm1tYSqRFRf9VcV5tfC
3P8QqoK4ONjtLPHc9x5NE1uK/FMCAwEAAaOCAbMwggGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P
AQH/BAQDAgEGMIIBBAYDVR0gBIH8MIH5MIH2Bg0rBgEEAb4/AgEKAQECMIHkMIGaBggrBgEFBQcC
AjCBjRqBikNlcnR5ZmlrYXQgd3lzdGF3aW9ueSB6Z29kbmllIHogZG9rdW1lbnRlbTogIlBvbGl0
eWthIENlcnR5ZmlrYWNqaSBkbGEgUm9vdENBIi4gQ2VydHlmaWthdCB3eXN0YXdpb255IHByemV6
IFJvb3RDQSB3IGhpZXJhcmNoaWkgQ0MgU2lnbmV0LjBFBggrBgEFBQcCARY5aHR0cDovL3d3dy5z
aWduZXQucGwvcmVwb3p5dG9yaXVtL2Rva3VtZW50eS9wY19yb290Y2EudHh0MEQGA1UdHwQ9MDsw
OaA3oDWGM2h0dHA6Ly93d3cuc2lnbmV0LnBsL3JlcG96eXRvcml1bS9yb290Y2Evcm9vdGNhLmNy
bDAfBgNVHSMEGDAWgBTAm8UjDQLhpk5Iax8A6eOaFBuxrzAdBgNVHQ4EFgQUXvthcPHlH5BgGhlM
ErJNXWlhlgAwDQYJKoZIhvcNAQEFBQADggEBACIce95Mvn710KCAISA0CuHD4aznTU6pLoCDShW4
7OR+GTpJUm1coTcUqlBHV9mra4VFrBcBuOkHZoBLq/jmE0QJWnpSEULDcH9J3mF0nqO9SM+mWyJG
dsJF/XU/7smummgjMNQXwzQTtWORF+6v5KUbWX85anO2wR+M6YTBWC55zWpWi4RG3vkHFs5Ze2oF
JTlpuxw9ZgxTnWlwI9QR2MvEhYIUMKMOWxw1nt0kKj+5TCNQQGh/VJJ1dsiroGh/io1DOcePEhKz
1Ag52y6Wf0nJJB9yk0sFakqZH18F7eQecQImgZyyeRtsG95leNugB3BXWCW+KxwiBrtQTXv4dTE=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEzzCCA7egAwIBAgIEO6ocGTANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJQTDEfMB0GA1UE
ChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2Fjamkg
U2lnbmV0MRswGQYDVQQDExJDQyBTaWduZXQgLSBSb290Q0EwHhcNMDEwOTIwMTY0MjE5WhcNMjYw
OTIxMTU0MjE5WjBxMQswCQYDVQQGEwJQTDEfMB0GA1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5v
LjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2FjamkgU2lnbmV0MRswGQYDVQQDExJDQyBTaWdu
ZXQgLSBSb290Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrr2vydnNpELfGW3Ks
ARiDhJvwDtUe4AbWev+OfMc3+vA29nX8ZmIwno3gmItjo5DbUCCRiCMq5c9epcGu+kg4a3BJChVX
REl8gVh0ST15rr3RKrSc4VgsvQzl0ZUraeQLl8JoRT5PLsUj3qwF78jUCQVckiiLVcnGfZtFCm+D
CJXliQBDMB9XFAUEiO/DtEBs0B7wJGx7lgJeJpQUcGiaOPjcJDYOk7rNAYmmD2gWeSlepufO8luU
YG/YDxTC4mqhRqfa4MnVO5dqy+ICj2UvUpHbZDB0KfGRibgBYeQP1kuqgIzJN4UqknVAJb0aMBSP
l+9k2fAUdchx1njlbdcbAgMBAAGjggFtMIIBaTAPBgNVHRMBAf8EBTADAQH/MIIBBAYDVR0gBIH8
MIH5MIH2Bg0rBgEEAb4/AgEKAQEAMIHkMIGaBggrBgEFBQcCAjCBjRqBikNlcnR5ZmlrYXQgd3lz
dGF3aW9ueSB6Z29kbmllIHogZG9rdW1lbnRlbTogIlBvbGl0eWthIENlcnR5ZmlrYWNqaSBkbGEg
Um9vdENBIi4gQ2VydHlmaWthdCB3eXN0YXdpb255IHByemV6IFJvb3RDQSB3IGhpZXJhcmNoaWkg
Q0MgU2lnbmV0LjBFBggrBgEFBQcCARY5aHR0cDovL3d3dy5zaWduZXQucGwvcmVwb3p5dG9yaXVt
L2Rva3VtZW50eS9wY19yb290Y2EudHh0MB0GA1UdDgQWBBTAm8UjDQLhpk5Iax8A6eOaFBuxrzAf
BgNVHSMEGDAWgBTAm8UjDQLhpk5Iax8A6eOaFBuxrzAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcN
AQEFBQADggEBAGnY5QmYqnnO9OqFOWZxxb25UHRnaRF6IV9aaGit5BZufZj2Tq3v8L3SgE34GOoI
cdRMMG5JEpEU4mN/Ef3oY6Eo+7HfqaPHI4KFmbDSPiK5s+wmf+bQSm0Yq5/h4ZOdcAESlLQeLSt1
CQk2JoKQJ6pyAf6xJBgWEIlm4RXE4J3324PUiOp83kW6MDvaa1xY976WyInr4rwoLgxVl11LZeKW
ha0RJJxJgw/NyWpKG7LWCm1fglF8JH51vZNndGYq1iKtfnrIOvLZq6bzaCiZm1EurD8HE6P7pmAB
KK6o3C2OXlNfNIgwkDN/cDqk5TYsTkrpfriJPdxXBH8hQOkW89g=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIID/TCCA2agAwIBAgIEP4/gkTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJQTDEfMB0GA1UE
ChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2Fjamkg
U2lnbmV0MR8wHQYDVQQDExZDQyBTaWduZXQgLSBDQSBLbGFzYSAxMB4XDTAzMTAxNzEyMjkwMloX
DTExMDkyMzExMTgxN1owdjELMAkGA1UEBhMCUEwxHzAdBgNVBAoTFlRQIEludGVybmV0IFNwLiB6
IG8uby4xJDAiBgNVBAsTG0NlbnRydW0gQ2VydHlmaWthY2ppIFNpZ25ldDEgMB4GA1UEAxMXQ0Mg
U2lnbmV0IC0gVFNBIEtsYXNhIDEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOJYrISEtSsd
uHajROh5/n7NGrkpYTT9NEaPe9+ucuQ37KxIbfJwXJjgUc1dw4wCkcQ12FJarD1X6mSQ4cfN/60v
LfKI5ZD4nhJTMKlAj1pX9ScQ/MuyvKStCbn5WTkjPhjRAM0tdwXSnzuTEunfw0Oup559y3Iqxg1c
ExflB6cfAgMBAAGjggGXMIIBkzBBBgNVHR8EOjA4MDagNKAyhjBodHRwOi8vd3d3LnNpZ25ldC5w
bC9yZXBvenl0b3JpdW0vY3JsL2tsYXNhMS5jcmwwDgYDVR0PAQH/BAQDAgeAMBYGA1UdJQEB/wQM
MAoGCCsGAQUFBwMIMIHaBgNVHSAEgdIwgc8wgcwGDSsGAQQBvj8CZAoRAgEwgbowbwYIKwYBBQUH
AgIwYxphQ2VydHlmaWthdCB3eXN0YXdpb255IHpnb2RuaWUgeiBkb2t1bWVudGVtICJQb2xpdHlr
YSBDZXJ0eWZpa2FjamkgQ0MgU2lnbmV0IC0gWm5ha293YW5pZSBjemFzZW0iLjBHBggrBgEFBQcC
ARY7aHR0cDovL3d3dy5zaWduZXQucGwvcmVwb3p5dG9yaXVtL2Rva3VtZW50eS9wY190c2ExXzJf
MS5wZGYwHwYDVR0jBBgwFoAUw4Me1Vl3VPtN+1dH+cQjXNHnieMwHQYDVR0OBBYEFJdDwEqtcavO
Yd9u9tej53vWXwNBMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQEFBQADgYEAnpiQkqLCJQYXUrqMHUEz
+z3rOqS0XzSFnVVLhkVssvXc8S3FkJIiQTUrkScjI4CToCzujj3EyfNxH6yiLlMbskF8I31JxIeB
vueqV+s+o76CZm3ycu9hb0I4lswuxoT+q5ZzPR8Irrb51rZXlolR+7KtwMg4sFDJZ8RNgOf7tbA=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIIDjCCBfagAwIBAgIJAOiOtsn4KhQoMA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
VQQGEwJVUzEQMA4GA1UECBMHSW5kaWFuYTEVMBMGA1UEBxMMSW5kaWFuYXBvbGlz
MSgwJgYDVQQKEx9Tb2Z0d2FyZSBpbiB0aGUgUHVibGljIEludGVyZXN0MRMwEQYD

View File

@ -40,8 +40,10 @@ void CommandLineOptions::showHelp()
" -p or --profile=PROFILE start with specified profile \n"
" -np or --no-plugins start without plugins \n"
"\n"
" Options to control running QupZilla:\n"
" -nt or --new-tab open new tab\n"
" -nw or --new-window open new window\n"
" -pb or --private-browsing start private browsing\n"
" -dm or --download-manager show download manager\n"
"\n"
" QupZilla is a new, fast and secure web browser\n"
@ -69,6 +71,7 @@ void CommandLineOptions::parseActions()
m_actions.append(pair);
break;
}
if (arg == "-a" || arg == "--authors") {
cout << "QupZilla authors: " << endl;
cout << " nowrep <nowrep@gmail.com>" << endl;
@ -78,6 +81,7 @@ void CommandLineOptions::parseActions()
m_actions.append(pair);
break;
}
if (arg == "-v" || arg == "--version") {
cout << "QupZilla v" << QupZilla::VERSION.toUtf8().data()
#ifdef GIT_REVISION
@ -134,6 +138,14 @@ void CommandLineOptions::parseActions()
pair.text = "";
m_actions.append(pair);
}
if (arg.startsWith("-pb") || arg.startsWith("--private-browsing")) {
found = true;
ActionPair pair;
pair.action = StartPrivateBrowsing;
pair.text = "";
m_actions.append(pair);
}
}
QString url(m_argv[m_argc - 1]);

View File

@ -26,7 +26,10 @@ class CommandLineOptions : public QObject
{
Q_OBJECT
public:
enum Action {NoAction, OpenUrl, StartWithProfile, StartWithoutAddons, NewTab, NewWindow, ShowDownloadManager, ExitAction};
enum Action { NoAction, OpenUrl, StartWithProfile, StartWithoutAddons,
NewTab, NewWindow, ShowDownloadManager, StartPrivateBrowsing,
ExitAction
};
struct ActionPair {
Action action;

View File

@ -44,6 +44,18 @@
#include "speeddial.h"
#include "webpage.h"
#ifdef Q_WS_WIN
#define DEFAULT_CHECK_UPDATES true
#define DEFAULT_THEME_NAME "windows"
#else
#define DEFAULT_CHECK_UPDATES false
#define DEFAULT_THEME_NAME "linux"
#endif
#if defined(PORTABLE_BUILD) && !defined(NO_SYSTEM_DATAPATH)
#define NO_SYSTEM_DATAPATH
#endif
MainApplication::MainApplication(const QList<CommandLineOptions::ActionPair> &cmdActions, int &argc, char** argv)
: QtSingleApplication("QupZillaWebBrowser", argc, argv)
, m_cookiemanager(0)
@ -69,20 +81,27 @@ MainApplication::MainApplication(const QList<CommandLineOptions::ActionPair> &cm
, m_isRestoring(false)
, m_databaseConnected(false)
{
setOverrideCursor(Qt::WaitCursor);
#if defined(Q_WS_X11) & !defined(NO_SYSTEM_DATAPATH)
DATADIR = USE_DATADIR;
#else
DATADIR = qApp->applicationDirPath() + "/";
#endif
#ifdef PORTABLE_BUILD
PROFILEDIR = DATADIR + "profiles/";
#else
PROFILEDIR = QDir::homePath() + "/.qupzilla/";
#endif
PLUGINSDIR = DATADIR + "plugins/";
TRANSLATIONSDIR = DATADIR + "locale/";
THEMESDIR = DATADIR + "themes/";
setOverrideCursor(Qt::WaitCursor);
setWindowIcon(QupZilla::qupzillaIcon());
bool noAddons = false;
QUrl startUrl("");
QString message;
QStringList messages;
QString startProfile;
if (argc > 1) {
@ -95,17 +114,20 @@ MainApplication::MainApplication(const QList<CommandLineOptions::ActionPair> &cm
startProfile = pair.text;
break;
case CommandLineOptions::NewTab:
message = "ACTION:NewTab";
messages.append("ACTION:NewTab");
break;
case CommandLineOptions::NewWindow:
message = "ACTION:NewWindow";
messages.append("ACTION:NewWindow");
break;
case CommandLineOptions::ShowDownloadManager:
message = "ACTION:ShowDownloadManager";
messages.append("ACTION:ShowDownloadManager");
break;
case CommandLineOptions::StartPrivateBrowsing:
messages.append("ACTION:StartPrivateBrowsing");
break;
case CommandLineOptions::OpenUrl:
startUrl = pair.text;
message = "URL:" + startUrl.toString();
messages.append("URL:" + startUrl.toString());
break;
default:
break;
@ -113,8 +135,14 @@ MainApplication::MainApplication(const QList<CommandLineOptions::ActionPair> &cm
}
}
if (messages.isEmpty()) {
messages.append(" ");
}
if (isRunning()) {
sendMessage(message);
foreach(QString message, messages) {
sendMessage(message);
}
m_isExited = true;
return;
}
@ -126,26 +154,23 @@ MainApplication::MainApplication(const QList<CommandLineOptions::ActionPair> &cm
setApplicationVersion(QupZilla::VERSION);
setOrganizationDomain("qupzilla");
QString homePath = QDir::homePath();
homePath += "/.qupzilla/";
checkSettingsDir();
QSettings::setDefaultFormat(QSettings::IniFormat);
if (startProfile.isEmpty()) {
QSettings settings(homePath + "profiles/profiles.ini", QSettings::IniFormat);
QSettings settings(PROFILEDIR + "profiles/profiles.ini", QSettings::IniFormat);
if (settings.value("Profiles/startProfile", "default").toString().contains("/")) {
m_activeProfil = homePath + "profiles/default/";
m_activeProfil = PROFILEDIR + "profiles/default/";
}
else {
m_activeProfil = homePath + "profiles/" + settings.value("Profiles/startProfile", "default").toString() + "/";
m_activeProfil = PROFILEDIR + "profiles/" + settings.value("Profiles/startProfile", "default").toString() + "/";
}
}
else {
m_activeProfil = homePath + "profiles/" + startProfile + "/";
m_activeProfil = PROFILEDIR + "profiles/" + startProfile + "/";
}
ProfileUpdater u(m_activeProfil, DATADIR);
ProfileUpdater u(m_activeProfil);
u.checkProfile();
connectDatabase();
@ -170,13 +195,7 @@ MainApplication::MainApplication(const QList<CommandLineOptions::ActionPair> &cm
AutoSaver* saver = new AutoSaver();
connect(saver, SIGNAL(saveApp()), this, SLOT(saveStateSlot()));
if (settings2.value("Web-Browser-Settings/CheckUpdates",
#ifdef Q_WS_WIN
true
#else
false
#endif
).toBool()) {
if (settings2.value("Web-Browser-Settings/CheckUpdates", DEFAULT_CHECK_UPDATES).toBool()) {
m_updater = new Updater(qupzilla);
}
@ -197,13 +216,7 @@ void MainApplication::loadSettings()
{
QSettings settings(m_activeProfil + "settings.ini", QSettings::IniFormat);
settings.beginGroup("Themes");
QString activeTheme = settings.value("activeTheme",
#ifdef Q_WS_X11
"linux"
#else
"windows"
#endif
).toString();
QString activeTheme = settings.value("activeTheme", DEFAULT_THEME_NAME).toString();
settings.endGroup();
m_activeThemePath = THEMESDIR + activeTheme + "/";
QFile cssFile(m_activeThemePath + "main.css");
@ -350,28 +363,36 @@ void MainApplication::sendMessages(MainApplication::MessageType mes, bool state)
void MainApplication::receiveAppMessage(QString message)
{
QWidget* actWin = getWindow();
if (message.startsWith("URL:")) {
QString url(message.remove("URL:"));
addNewTab(WebView::guessUrlFromString(url));
actWin = getWindow();
}
else if (message.startsWith("ACTION:")) {
QString text = message.mid(7);
if (text == "NewTab") {
addNewTab();
actWin = getWindow();
}
else if (text == "NewWindow") {
makeNewWindow(false);
actWin = makeNewWindow(false);
}
else if (text == "ShowDownloadManager") {
downManager()->show();
actWin = downManager();
}
else if (text == "StartPrivateBrowsing") {
sendMessages(StartPrivateBrowsing, true);
actWin = getWindow();
}
}
QupZilla* actWin = getWindow();
if (!actWin && !isClosing()) { // It can only occur if download manager window was still open
makeNewWindow(true);
return;
}
actWin->setWindowState(actWin->windowState() & ~Qt::WindowMinimized);
actWin->raise();
actWin->activateWindow();
@ -386,7 +407,7 @@ void MainApplication::addNewTab(const QUrl &url)
getWindow()->tabWidget()->addView(url);
}
void MainApplication::makeNewWindow(bool tryRestore, const QUrl &startUrl)
QupZilla* MainApplication::makeNewWindow(bool tryRestore, const QUrl &startUrl)
{
QupZilla::StartBehaviour behaviour;
if (tryRestore) {
@ -400,6 +421,8 @@ void MainApplication::makeNewWindow(bool tryRestore, const QUrl &startUrl)
connect(newWindow, SIGNAL(message(MainApplication::MessageType, bool)), this, SLOT(sendMessages(MainApplication::MessageType, bool)));
m_mainWindows.append(newWindow);
newWindow->show();
return newWindow;
}
void MainApplication::connectDatabase()
@ -411,7 +434,9 @@ void MainApplication::connectDatabase()
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(m_activeProfil + "browsedata.db");
if (!QFile::exists(m_activeProfil + "browsedata.db")) {
QFile(DATADIR + "data/default/profiles/default/browsedata.db").copy(m_activeProfil + "browsedata.db");
QFile(":data/browsedata.db").copy(m_activeProfil + "browsedata.db");
QFile(m_activeProfil + "browsedata.db").setPermissions(QFile::ReadUser | QFile::WriteUser);
db.setDatabaseName(m_activeProfil + "browsedata.db");
qWarning("Cannot find SQLite database file! Copying and using the defaults!");
}
@ -435,7 +460,7 @@ void MainApplication::translateApp()
}
QTranslator* app = new QTranslator();
app->load(DATADIR + "locale/" + file);
app->load(TRANSLATIONSDIR + file);
QTranslator* sys = new QTranslator();
if (QFile::exists(TRANSLATIONSDIR + "qt_" + shortLoc + ".qm")) {
@ -730,31 +755,34 @@ bool MainApplication::checkSettingsDir()
|
browsedata.db
*/
QString homePath = QDir::homePath() + "/.qupzilla/";
if (QDir(homePath).exists() && QFile(homePath + "profiles/profiles.ini").exists()) {
if (QDir(PROFILEDIR).exists() && QFile(PROFILEDIR + "profiles/profiles.ini").exists()) {
return true;
}
std::cout << "Creating new profile directory" << std::endl;
QDir dir = QDir::home();
dir.mkdir(".qupzilla");
dir.cd(".qupzilla");
QDir dir(PROFILEDIR);
if (!dir.exists()) {
dir.mkpath(PROFILEDIR);
}
dir.mkdir("profiles");
dir.cd("profiles");
//.qupzilla/profiles
QFile(homePath + "profiles/profiles.ini").remove();
QFile(DATADIR + "data/default/profiles/profiles.ini").copy(homePath + "profiles/profiles.ini");
QFile(PROFILEDIR + "profiles/profiles.ini").remove();
QFile(":data/profiles.ini").copy(PROFILEDIR + "profiles/profiles.ini");
QFile(PROFILEDIR + "profiles/profiles.ini").setPermissions(QFile::ReadUser | QFile::WriteUser);
dir.mkdir("default");
dir.cd("default");
//.qupzilla/profiles/default
QFile(homePath + "profiles/default/browsedata.db").remove();
QFile(DATADIR + "data/default/profiles/default/browsedata.db").copy(homePath + "profiles/default/browsedata.db");
QFile(PROFILEDIR + "profiles/default/browsedata.db").remove();
QFile(":data/browsedata.db").copy(PROFILEDIR + "profiles/default/browsedata.db");
QFile(PROFILEDIR + "profiles/default/browsedata.db").setPermissions(QFile::ReadUser | QFile::WriteUser);
return dir.isReadable();
}

View File

@ -54,18 +54,22 @@ class MainApplication : public QtSingleApplication
public:
QString DATADIR;
QString PROFILEDIR;
QString PLUGINSDIR;
QString TRANSLATIONSDIR;
QString THEMESDIR;
explicit MainApplication(const QList<CommandLineOptions::ActionPair> &cmdActions, int &argc, char** argv);
enum MessageType { SetAdBlockIconEnabled, CheckPrivateBrowsing, ReloadSettings, HistoryStateChanged, BookmarksChanged };
enum MessageType { SetAdBlockIconEnabled, CheckPrivateBrowsing, ReloadSettings,
HistoryStateChanged, BookmarksChanged, StartPrivateBrowsing
};
void connectDatabase();
void loadSettings();
void reloadSettings() { loadSettings(); emit message(ReloadSettings, true); }
bool restoreStateSlot(QupZilla* window);
void makeNewWindow(bool tryRestore, const QUrl &startUrl = QUrl());
QupZilla* makeNewWindow(bool tryRestore, const QUrl &startUrl = QUrl());
void addNewTab(const QUrl &url = QUrl());
void aboutToCloseWindow(QupZilla* window);
bool isStateChanged();

View File

@ -20,10 +20,9 @@
#include "updater.h"
#include "mainapplication.h"
ProfileUpdater::ProfileUpdater(const QString &profilePath, const QString &dataPath)
ProfileUpdater::ProfileUpdater(const QString &profilePath)
: QObject()
, m_profilePath(profilePath)
, m_dataPath(dataPath)
{
}
@ -93,7 +92,8 @@ void ProfileUpdater::copyDataToProfile()
profileDir.mkdir("certificates");
QFile(m_profilePath + "browsedata.db").remove();
QFile(m_dataPath + "data/default/profiles/default/browsedata.db").copy(m_profilePath + "browsedata.db");
QFile(":data/browsedata.db").copy(m_profilePath + "browsedata.db");
QFile(m_profilePath + "browsedata.db").setPermissions(QFile::ReadUser | QFile::WriteUser);
}
void ProfileUpdater::update100b4()

View File

@ -26,7 +26,7 @@ class ProfileUpdater : public QObject
{
Q_OBJECT
public:
explicit ProfileUpdater(const QString &profilePath, const QString &dataPath);
explicit ProfileUpdater(const QString &profilePath);
void checkProfile();
signals:
@ -42,8 +42,6 @@ private:
void update100();
QString m_profilePath;
QString m_dataPath;
};
#endif // PROFILEUPDATER_H

View File

@ -93,6 +93,7 @@ QupZilla::QupZilla(StartBehaviour behaviour, QUrl startUrl)
, m_actionPrivateBrowsing(0)
, m_statusBarMessage(new StatusBarMessage(this))
, m_sideBarWidth(0)
, m_usingTransparentBackground(false)
{
setObjectName("mainwindow");
setAttribute(Qt::WA_DeleteOnClose);
@ -308,7 +309,7 @@ void QupZilla::setupMenu()
m_menuEdit->addAction(QIcon::fromTheme("edit-select-all"), tr("Select &All"), this, SLOT(selectAll()))->setShortcut(QKeySequence("Ctrl+A"));
m_menuEdit->addAction(QIcon::fromTheme("edit-find"), tr("&Find"), this, SLOT(searchOnPage()))->setShortcut(QKeySequence("Ctrl+F"));
m_menuEdit->addSeparator();
#ifdef Q_WS_X11
#ifndef Q_WS_WIN
m_menuEdit->addAction(QIcon(":/icons/faenza/settings.png"), tr("Pr&eferences"), this, SLOT(showPreferences()))->setShortcut(QKeySequence("Ctrl+P"));
#endif
menuBar()->addMenu(m_menuEdit);
@ -480,6 +481,13 @@ void QupZilla::loadSettings()
m_actionPrivateBrowsing->setChecked(mApp->webSettings()->testAttribute(QWebSettings::PrivateBrowsingEnabled));
m_privateBrowsing->setVisible(mApp->webSettings()->testAttribute(QWebSettings::PrivateBrowsingEnabled));
#ifdef Q_WS_WIN
if (m_usingTransparentBackground && !makeTransparent) {
QtWin::enableBlurBehindWindow(this, false);
m_usingTransparentBackground = false;
}
#endif
if (!makeTransparent) {
return;
}
@ -498,6 +506,8 @@ void QupZilla::loadSettings()
if (QtWin::isCompositionEnabled()) {
QtWin::extendFrameIntoClientArea(this);
setContentsMargins(0, 0, 0, 0);
m_usingTransparentBackground = true;
}
}
@ -521,12 +531,7 @@ void QupZilla::receiveMessage(MainApplication::MessageType mes, bool state)
case MainApplication::CheckPrivateBrowsing:
m_privateBrowsing->setVisible(state);
m_actionPrivateBrowsing->setChecked(state);
if (state) {
setWindowTitle(windowTitle());
}
else {
setWindowTitle(windowTitle().remove(tr(" (Private Browsing)")));
}
weView()->titleChanged();
break;
case MainApplication::ReloadSettings:
@ -543,6 +548,10 @@ void QupZilla::receiveMessage(MainApplication::MessageType mes, bool state)
m_bookmarksMenuChanged = true;
break;
case MainApplication::StartPrivateBrowsing:
startPrivate(state);
break;
default:
qWarning("Unresolved message sent! This could never happen!");
break;
@ -835,7 +844,7 @@ void QupZilla::aboutToHideEditMenu()
}
m_menuEdit->actions().at(9)->setEnabled(true);
#ifdef Q_WS_X11
#ifndef Q_WS_WIN
m_menuEdit->actions().at(11)->setEnabled(true);
#endif
}
@ -1289,10 +1298,14 @@ void QupZilla::savePageScreen()
void QupZilla::startPrivate(bool state)
{
static bool askedThisSession = false;
QSettings settings(m_activeProfil + "settings.ini", QSettings::IniFormat);
bool askNow = settings.value("Browser-View-Settings/AskOnPrivate", true).toBool();
if (state && askNow) {
if (state && askNow && !askedThisSession) {
askedThisSession = true;
QString title = tr("Are you sure you want to turn on private browsing?");
QString text1 = tr("When private browsing is turned on, some actions concerning your privacy will be disabled:");

View File

@ -264,6 +264,7 @@ private:
QColor m_menuTextColor;
int m_sideBarWidth;
bool m_usingTransparentBackground;
//Used for F11 FullScreen remember visibility
//of menubar and statusbar

View File

@ -95,3 +95,11 @@ void BookmarkIcon::setBookmarkDisabled()
style()->polish(this);
setToolTip(tr("Bookmark this Page"));
}
void BookmarkIcon::mousePressEvent(QMouseEvent* ev)
{
ClickableLabel::mousePressEvent(ev);
// Prevent propagating to LocationBar
ev->accept();
}

View File

@ -41,6 +41,8 @@ private slots:
void bookmarkDeleted(const BookmarksModel::Bookmark &bookmark);
private:
void mousePressEvent(QMouseEvent* ev);
void setBookmarkSaved();
void setBookmarkDisabled();

View File

@ -34,6 +34,13 @@ BookmarksWidget::BookmarksWidget(int bookmarkId, QWidget* parent)
m_bookmarksModel = mApp->bookmarksModel();
loadBookmark();
// Use light color for QLabels even with Ubuntu Ambiance theme
QPalette pal = palette();
pal.setColor(QPalette::WindowText, QToolTip::palette().color(QPalette::ToolTipText));
ui->label_2->setPalette(pal);
ui->label_3->setPalette(pal);
ui->label_4->setPalette(pal);
}
void BookmarksWidget::loadBookmark()

View File

@ -28,6 +28,7 @@
#include <QDebug>
#include <QSqlQuery>
#include <QSqlError>
#include <QToolTip>
namespace Ui
{

6
src/data/data.qrc Normal file
View File

@ -0,0 +1,6 @@
<RCC>
<qresource prefix="/">
<file>data/browsedata.db</file>
<file>data/profiles.ini</file>
</qresource>
</RCC>

View File

@ -8,7 +8,7 @@ html * {font-size: 100%;line-height: 1.6;}
h1 {color: #1a4ba4;font-size: 160%;margin-bottom: 0px;}
h2 {margin: 5px 0px;font-size: 100%;color: #525c66;font-weight: bold;}
dl {margin-top: 0px;}
dt {display: block;float: left;width: 24%;margin: 0 0 0.3em 1%}
dt {display: block;float: left;min-width: 24%;margin: 0 0 0.3em 1%}
dd {color: black;margin: 0 0 0.3em 28%;}
p {margin-left: 1%;}
.about-img {float: right;margin-top: 15px;margin-right: -25px;}

View File

@ -28,6 +28,13 @@
#include "webpage.h"
#include "downloadfilehelper.h"
#ifdef Q_WS_WIN
#define DEFAULT_USE_NATIVE_DIALOG false
#else
#define DEFAULT_USE_NATIVE_DIALOG true
#endif
DownloadManager::DownloadManager(QWidget* parent)
: QWidget(parent)
, ui(new Ui::DownloadManager)
@ -63,13 +70,7 @@ void DownloadManager::loadSettings()
m_downloadPath = settings.value("defaultDownloadPath", "").toString();
m_lastDownloadPath = settings.value("lastDownloadPath", QDir::homePath() + "/").toString();
m_closeOnFinish = settings.value("CloseManagerOnFinish", false).toBool();
m_useNativeDialog = settings.value("useNativeDialog",
#ifdef Q_WS_WIN
false
#else
true
#endif
).toBool();
m_useNativeDialog = settings.value("useNativeDialog", DEFAULT_USE_NATIVE_DIALOG).toBool();
settings.endGroup();
}

View File

@ -25,6 +25,7 @@
int main(int argc, char* argv[])
{
Q_INIT_RESOURCE(data);
Q_INIT_RESOURCE(icons);
Q_INIT_RESOURCE(html);

View File

@ -0,0 +1,16 @@
#include "downicon.h"
DownIcon::DownIcon(QWidget* parent)
: ClickableLabel(parent)
{
setObjectName("locationbar-down-icon");
setCursor(Qt::ArrowCursor);
}
void DownIcon::mousePressEvent(QMouseEvent* ev)
{
ClickableLabel::mousePressEvent(ev);
// Prevent propagating to LocationBar
ev->accept();
}

17
src/navigation/downicon.h Normal file
View File

@ -0,0 +1,17 @@
#ifndef DOWNICON_H
#define DOWNICON_H
#include "clickablelabel.h"
class DownIcon : public ClickableLabel
{
Q_OBJECT
public:
explicit DownIcon(QWidget* parent = 0);
private:
void mousePressEvent(QMouseEvent* ev);
};
#endif // DOWNICON_H

17
src/navigation/goicon.cpp Normal file
View File

@ -0,0 +1,17 @@
#include "goicon.h"
GoIcon::GoIcon(QWidget* parent)
: ClickableLabel(parent)
{
setObjectName("locationbar-goicon");
setCursor(Qt::PointingHandCursor);
setHidden(true);
}
void GoIcon::mousePressEvent(QMouseEvent* ev)
{
ClickableLabel::mousePressEvent(ev);
// Prevent propagating to LocationBar
ev->accept();
}

21
src/navigation/goicon.h Normal file
View File

@ -0,0 +1,21 @@
#ifndef GOICON_H
#define GOICON_H
#include "clickablelabel.h"
class GoIcon : public ClickableLabel
{
Q_OBJECT
public:
explicit GoIcon(QWidget* parent = 0);
signals:
public slots:
private:
void mousePressEvent(QMouseEvent* ev);
};
#endif // GOICON_H

View File

@ -32,6 +32,9 @@
#include "toolbutton.h"
#include "searchenginesmanager.h"
#include "siteicon.h"
#include "goicon.h"
#include "rssicon.h"
#include "downicon.h"
LocationBar::LocationBar(QupZilla* mainClass)
: LineEdit()
@ -40,29 +43,17 @@ LocationBar::LocationBar(QupZilla* mainClass)
, m_locationBarSettings(LocationBarSettings::instance())
{
setObjectName("locationbar");
m_siteIcon = new SiteIcon(this);
m_rssIcon = new ClickableLabel(this);
m_rssIcon->setObjectName("locationbar-rss-icon");
m_rssIcon->setCursor(Qt::PointingHandCursor);
m_rssIcon->setToolTip(tr("Add RSS from this page..."));
m_rssIcon->setFocusPolicy(Qt::ClickFocus);
m_rssIcon->setVisible(false);
m_goButton = new ClickableLabel(this);
m_goButton->setObjectName("locationbar-goicon");
m_goButton->setCursor(Qt::PointingHandCursor);
m_goButton->setHidden(true);
m_bookmarkIcon = new BookmarkIcon(p_QupZilla);
ClickableLabel* down = new ClickableLabel(this);
down->setObjectName("locationbar-down-icon");
down->setCursor(Qt::ArrowCursor);
m_goIcon = new GoIcon(this);
m_rssIcon = new RssIcon(this);
m_rssIcon->setToolTip(tr("Add RSS from this page..."));
m_siteIcon = new SiteIcon(this);
DownIcon* down = new DownIcon(this);
addWidget(down, LineEdit::RightSide);
addWidget(m_bookmarkIcon, LineEdit::RightSide);
addWidget(m_goButton, LineEdit::RightSide);
addWidget(m_goIcon, LineEdit::RightSide);
addWidget(m_rssIcon, LineEdit::RightSide);
setWidgetSpacing(0);
@ -77,7 +68,7 @@ LocationBar::LocationBar(QupZilla* mainClass)
connect(this, SIGNAL(textEdited(QString)), m_locationCompleter, SLOT(refreshCompleter(QString)));
connect(m_locationCompleter->popup(), SIGNAL(clicked(QModelIndex)), p_QupZilla, SLOT(urlEnter()));
connect(m_siteIcon, SIGNAL(clicked()), this, SLOT(showSiteInfo()));
connect(m_goButton, SIGNAL(clicked(QPoint)), this, SLOT(urlEnter()));
connect(m_goIcon, SIGNAL(clicked(QPoint)), this, SLOT(urlEnter()));
connect(m_rssIcon, SIGNAL(clicked(QPoint)), this, SLOT(rssIconClicked()));
connect(down, SIGNAL(clicked(QPoint)), this, SLOT(showMostVisited()));
connect(mApp->searchEnginesManager(), SIGNAL(activeEngineChanged()), this, SLOT(updatePlaceHolderText()));
@ -135,7 +126,7 @@ void LocationBar::textEdit()
void LocationBar::showGoButton()
{
if (m_goButton->isVisible()) {
if (m_goIcon->isVisible()) {
return;
}
@ -143,18 +134,18 @@ void LocationBar::showGoButton()
m_bookmarkIcon->hide();
m_rssIcon->hide();
m_goButton->show();
m_goIcon->show();
}
void LocationBar::hideGoButton()
{
if (!m_goButton->isVisible()) {
if (!m_goIcon->isVisible()) {
return;
}
m_rssIcon->setVisible(m_rssIconVisible);
m_bookmarkIcon->show();
m_goButton->hide();
m_goIcon->hide();
}
void LocationBar::showMostVisited()

View File

@ -42,6 +42,8 @@ class BookmarkIcon;
class WebView;
class LocationBarSettings;
class SiteIcon;
class GoIcon;
class RssIcon;
class LocationBar : public LineEdit
{
Q_OBJECT
@ -87,8 +89,8 @@ private:
void hideGoButton();
BookmarkIcon* m_bookmarkIcon;
ClickableLabel* m_goButton;
ClickableLabel* m_rssIcon;
GoIcon* m_goIcon;
RssIcon* m_rssIcon;
SiteIcon* m_siteIcon;
QupZilla* p_QupZilla;

View File

@ -37,12 +37,15 @@ void SiteIcon::mousePressEvent(QMouseEvent* e)
}
ToolButton::mousePressEvent(e);
// Prevent propagating to LocationBar
e->accept();
}
void SiteIcon::mouseMoveEvent(QMouseEvent* e)
{
int manhattanLength = (e->pos() - m_dragStartPosition).manhattanLength();
if (manhattanLength > QApplication::startDragDistance()) {
if (manhattanLength <= QApplication::startDragDistance()) {
ToolButton::mouseMoveEvent(e);
return;
}

View File

@ -216,7 +216,9 @@ QString QupZillaSchemeReply::aboutPage()
authorString("Michał Szymanowski", "tylkobuba@gmail.com") + " (Polish)<br/>" +
authorString("Jérôme Giry", "baikalink@hotmail.fr") + " (French)<br/>" +
authorString("Nicolas Ourceau", "lamessen@hotmail.fr") + " (French)<br/>" +
authorString("Vasilis Tsivikis", "vasitsiv.dev@gmail.com") + " (Greek)"
authorString("Vasilis Tsivikis", "vasitsiv.dev@gmail.com") + " (Greek)<br/>" +
authorString("Alexander Maslov", "it@delta-z.ru") + " (Russian)<br/>" +
authorString("Oleg Brezhnev", "oleg-423@yandex.ru") + " (Russian)<br/>"
);
return aPage;

View File

@ -88,7 +88,9 @@ void AboutDialog::showAuthors()
"Michał Szymanowski (Polish)<br/>"
"Jérôme Giry (French)<br/>"
"Nicolas Ourceau (French)<br/>"
"Vasilis Tsivikis (Greek)"
"Vasilis Tsivikis (Greek)<br/>"
"Alexander Maslov (Russian)<br/>"
"Oleg Brezhnev (Russian)"
));
m_authorsHtml.append("</div>");
}

View File

@ -19,6 +19,12 @@
#include "plugininterface.h"
#include "mainapplication.h"
#ifdef PORTABLE_BUILD
#define DEFAULT_ENABLE_PLUGINS false
#else
#define DEFAULT_ENABLE_PLUGINS true
#endif
Plugins::Plugins(QObject* parent)
: QObject(parent)
{
@ -31,7 +37,7 @@ void Plugins::loadSettings()
QSettings settings(mApp->getActiveProfilPath() + "settings.ini", QSettings::IniFormat);
settings.beginGroup("Plugin-Settings");
m_pluginsEnabled = settings.value("EnablePlugins", true).toBool();
m_pluginsEnabled = settings.value("EnablePlugins", DEFAULT_ENABLE_PLUGINS).toBool();
m_allowedPluginFileNames = settings.value("AllowedPlugins", QStringList()).toStringList();
settings.endGroup();
}

View File

@ -21,6 +21,12 @@
#include "mainapplication.h"
#include "plugininterface.h"
#ifdef PORTABLE_BUILD
#define DEFAULT_ENABLE_PLUGINS false
#else
#define DEFAULT_ENABLE_PLUGINS true
#endif
PluginsList::PluginsList(QWidget* parent)
: QWidget(parent)
, ui(new Ui::PluginsList)
@ -36,7 +42,7 @@ PluginsList::PluginsList(QWidget* parent)
QSettings settings(mApp->getActiveProfilPath() + "settings.ini", QSettings::IniFormat);
settings.beginGroup("Plugin-Settings");
ui->allowAppPlugins->setChecked(settings.value("EnablePlugins", true).toBool());
ui->allowAppPlugins->setChecked(settings.value("EnablePlugins", DEFAULT_ENABLE_PLUGINS).toBool());
settings.endGroup();
allowAppPluginsChanged(ui->allowAppPlugins->isChecked());

View File

@ -40,6 +40,14 @@
#include "globalfunctions.h"
#include "autofillmodel.h"
#ifdef Q_WS_WIN
#define DEFAULT_CHECK_UPDATES true
#define DEFAULT_USE_NATIVE_DIALOG false
#else
#define DEFAULT_CHECK_UPDATES false
#define DEFAULT_USE_NATIVE_DIALOG true
#endif
bool removeFile(const QString &fullFileName)
{
QFile f(fullFileName);
@ -116,13 +124,7 @@ Preferences::Preferences(QupZilla* mainClass, QWidget* parent)
int afterLaunch = settings.value("afterLaunch", 1).toInt();
settings.endGroup();
ui->afterLaunch->setCurrentIndex(afterLaunch);
ui->checkUpdates->setChecked(settings.value("Web-Browser-Settings/CheckUpdates",
#ifdef Q_WS_WIN
true
#else
false
#endif
).toBool());
ui->checkUpdates->setChecked(settings.value("Web-Browser-Settings/CheckUpdates", DEFAULT_CHECK_UPDATES).toBool());
ui->newTabFrame->setVisible(false);
if (m_newTabUrl.isEmpty()) {
@ -143,16 +145,21 @@ Preferences::Preferences(QupZilla* mainClass, QWidget* parent)
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();
m_actProfileName = mApp->getActiveProfilPath();
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/");
ui->activeProfile->setText("<b>" + m_actProfileName + "</b>");
QSettings profileSettings(mApp->PROFILEDIR + "profiles/profiles.ini", QSettings::IniFormat);
QString actProfileName = profileSettings.value("Profiles/startProfile", "default").toString();
ui->startProfile->addItem(actProfileName);
QDir profilesDir(mApp->PROFILEDIR + "profiles/");
QStringList list_ = profilesDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot);
foreach(QString name, list_) {
if (m_actProfileName == name) {
if (actProfileName == name) {
continue;
}
ui->startProfile->addItem(name);
@ -160,6 +167,7 @@ Preferences::Preferences(QupZilla* mainClass, QWidget* parent)
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)));
startProfileIndexChanged(ui->startProfile->currentText());
//APPEREANCE
m_themesManager = new ThemeManager(ui->themesWidget);
@ -260,13 +268,7 @@ Preferences::Preferences(QupZilla* mainClass, QWidget* parent)
settings.beginGroup("DownloadManager");
ui->downLoc->setText(settings.value("defaultDownloadPath", "").toString());
ui->closeDownManOnFinish->setChecked(settings.value("CloseManagerOnFinish", false).toBool());
ui->downlaodNativeSystemDialog->setChecked(settings.value("useNativeDialog",
#ifdef Q_WS_WIN
false
#else
true
#endif
).toBool());
ui->downlaodNativeSystemDialog->setChecked(settings.value("useNativeDialog", DEFAULT_USE_NATIVE_DIALOG).toBool());
if (ui->downLoc->text().isEmpty()) {
ui->askEverytime->setChecked(true);
}
@ -570,10 +572,11 @@ void Preferences::buttonClicked(QAbstractButton* button)
void Preferences::createProfile()
{
QString name = QInputDialog::getText(this, tr("New Profile"), tr("Enter the new profile's name:"));
name = qz_filterCharsFromFilename(name);
if (name.isEmpty() || name.contains("/") || name.contains("\\")) {
return;
}
QDir dir(QDir::homePath() + "/.qupzilla/profiles/");
QDir dir(mApp->PROFILEDIR + "profiles/");
if (QDir(dir.absolutePath() + "/" + name).exists()) {
QMessageBox::warning(this, tr("Error!"), tr("This profile already exists!"));
return;
@ -583,7 +586,8 @@ void Preferences::createProfile()
return;
}
dir.cd(name);
QFile(mApp->DATADIR + "data/default/profiles/default/browsedata.db").copy(dir.absolutePath() + "/browsedata.db");
QFile(":data/browsedata.db").copy(dir.absolutePath() + "/browsedata.db");
QFile(dir.absolutePath() + "/browsedata.db").setPermissions(QFile::ReadUser | QFile::WriteUser);
ui->startProfile->insertItem(0, name);
ui->startProfile->setCurrentIndex(0);
@ -598,7 +602,7 @@ void Preferences::deleteProfile()
return;
}
removeDir(QDir::homePath() + "/.qupzilla/profiles/" + name);
removeDir(mApp->PROFILEDIR + "profiles/" + name);
ui->startProfile->removeItem(ui->startProfile->currentIndex());
}
@ -790,9 +794,7 @@ void Preferences::saveSettings()
settings.endGroup();
//Profiles
QString homePath = QDir::homePath();
homePath += "/.qupzilla/";
QSettings profileSettings(homePath + "profiles/profiles.ini", QSettings::IniFormat);
QSettings profileSettings(mApp->PROFILEDIR + "profiles/profiles.ini", QSettings::IniFormat);
profileSettings.setValue("Profiles/startProfile", ui->startProfile->currentText());
m_pluginsList->save();

View File

@ -303,17 +303,17 @@
</property>
</widget>
</item>
<item row="8" column="1">
<item row="9" column="1">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Startup profile:</string>
</property>
</widget>
</item>
<item row="8" column="2">
<item row="9" column="2">
<widget class="QComboBox" name="startProfile"/>
</item>
<item row="9" column="2" colspan="2">
<item row="10" column="2" colspan="2">
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
@ -379,7 +379,7 @@
</layout>
</widget>
</item>
<item row="11" column="1">
<item row="12" column="1">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
@ -427,7 +427,7 @@
</property>
</spacer>
</item>
<item row="10" column="1" colspan="2">
<item row="11" column="1" colspan="2">
<widget class="QLabel" name="cannotDeleteActiveProfileLabel">
<property name="text">
<string>Note: You cannot delete active profile.</string>
@ -444,6 +444,20 @@
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QLabel" name="label_45">
<property name="text">
<string>Active profile:</string>
</property>
</widget>
</item>
<item row="8" column="2">
<widget class="QLabel" name="activeProfile">
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="stackedWidgetPage2">

View File

@ -20,6 +20,12 @@
#include "mainapplication.h"
#include "globalfunctions.h"
#ifdef Q_WS_WIN
#define DEFAULT_THEME_NAME "windows"
#else
#define DEFAULT_THEME_NAME "linux"
#endif
ThemeManager::ThemeManager(QWidget* parent)
: QWidget()
, ui(new Ui::ThemeManager)
@ -28,13 +34,7 @@ ThemeManager::ThemeManager(QWidget* parent)
ui->license->hide();
QSettings settings(mApp->getActiveProfilPath() + "settings.ini", QSettings::IniFormat);
settings.beginGroup("Themes");
m_activeTheme = settings.value("activeTheme",
#ifdef Q_WS_X11
"linux"
#else
"windows"
#endif
).toString();
m_activeTheme = settings.value("activeTheme", DEFAULT_THEME_NAME).toString();
settings.endGroup();
QDir themeDir(mApp->THEMESDIR);

18
src/rss/rssicon.cpp Normal file
View File

@ -0,0 +1,18 @@
#include "rssicon.h"
RssIcon::RssIcon(QWidget* parent)
: ClickableLabel(parent)
{
setObjectName("locationbar-rss-icon");
setCursor(Qt::PointingHandCursor);
setFocusPolicy(Qt::ClickFocus);
setVisible(false);
}
void RssIcon::mousePressEvent(QMouseEvent* ev)
{
ClickableLabel::mousePressEvent(ev);
// Prevent propagating to LocationBar
ev->accept();
}

20
src/rss/rssicon.h Normal file
View File

@ -0,0 +1,20 @@
#ifndef RSSICON_H
#define RSSICON_H
#include "clickablelabel.h"
class RssIcon : public ClickableLabel
{
Q_OBJECT
public:
explicit RssIcon(QWidget* parent = 0);
signals:
public slots:
private:
void mousePressEvent(QMouseEvent* ev);
};
#endif // RSSICON_H

View File

@ -32,6 +32,11 @@ RSSWidget::RSSWidget(WebView* view, QWidget* parent)
QWebFrame* frame = m_view->page()->mainFrame();
QWebElementCollection links = frame->findAllElements("link[type=\"application/rss+xml\"]");
// Use light color for QLabels even with Ubuntu Ambiance theme
QPalette pal = palette();
pal.setColor(QPalette::WindowText, QToolTip::palette().color(QPalette::ToolTipText));
ui->label_2->setPalette(pal);
for (int i = 0; i < links.count(); i++) {
QWebElement element = links.at(i);
QString title = element.attribute("title");
@ -49,6 +54,7 @@ RSSWidget::RSSWidget(WebView* view, QWidget* parent)
button->setWhatsThis(href);
button->setToolTip(title);
QLabel* label = new QLabel(this);
label->setPalette(pal);
label->setText(title);
ui->gridLayout->addWidget(label, i, 0);
ui->gridLayout->addWidget(button, i, 1);

View File

@ -23,6 +23,7 @@
#include <QPushButton>
#include <QDebug>
#include <QWebFrame>
#include <QToolTip>
namespace Ui
{

View File

@ -16,10 +16,10 @@ RCC_DIR = ../build
UI_DIR = ../build
# Please read BUILD informations #
#DEFINES += UNRELEASED_BUILD
#DEFINES += NO_SYSTEM_DATAPATH
#DEFINES += USE_WEBGL
#DEFINES += KDE
#DEFINES += PORTABLE_BUILD
win32:DEFINES += W7API
unix:QT += dbus
@ -39,6 +39,7 @@ TRANSLATIONS +=../translations/cs_CZ.ts\
../translations/es_ES.ts\
../translations/fr_FR.ts\
../translations/el_GR.ts\
../translations/ru_RU.ts\
../translations/empty.ts\
@ -181,7 +182,10 @@ SOURCES += main.cpp\
other/databasewriter.cpp \
bookmarksimport/htmlimporter.cpp \
tools/enhancedmenu.cpp \
navigation/siteicon.cpp
navigation/siteicon.cpp \
navigation/goicon.cpp \
rss/rssicon.cpp \
navigation/downicon.cpp
HEADERS += \
3rdparty/qtwin.h \
@ -301,7 +305,10 @@ HEADERS += \
other/databasewriter.h \
bookmarksimport/htmlimporter.h \
tools/enhancedmenu.h \
navigation/siteicon.h
navigation/siteicon.h \
navigation/goicon.h \
rss/rssicon.h \
navigation/downicon.h
FORMS += \
preferences/autofillmanager.ui \
@ -346,7 +353,8 @@ FORMS += \
RESOURCES += \
data/icons.qrc \
data/html.qrc
data/html.qrc \
data/data.qrc
OTHER_FILES += \
appicon.rc
@ -373,7 +381,6 @@ unix {
target.path = $$binary_folder
target1.files = ../bin/data
target1.files += ../bin/locale
target1.files += ../bin/plugins
target1.files += ../bin/themes
@ -411,17 +418,17 @@ unix {
!equals(rev, ""): DEFINES += GIT_REVISION=\\\"""$$rev"\\\""
}
d_unreleased_build = $$(UNRELEASED_BUILD)
d_no_system_datapath = $$(NO_SYSTEM_DATAPATH)
d_use_webgl = $$(USE_WEBGL)
d_w7api = $$(W7API)
d_kde = $$(KDE)
d_portable = $$(PORTABLE_BUILD)
equals(d_unreleased_build, "true") { DEFINES += UNRELEASED_BUILD }
equals(d_no_system_datapath, "true") { DEFINES += NO_SYSTEM_DATAPATH }
equals(d_use_webgl, "true") { DEFINES += USE_WEBGL }
equals(d_w7api, "true") { DEFINES += W7API }
equals(d_kde, "true") { DEFINES += KDE }
equals(d_portable, "true") { DEFINES += PORTABLE_BUILD }
message(Using following defines)
message($$DEFINES)

View File

@ -71,6 +71,12 @@ SiteInfoWidget::SiteInfoWidget(QupZilla* mainClass, QWidget* parent)
}
}
connect(ui->pushButton, SIGNAL(clicked()), p_QupZilla, SLOT(showPageInfo()));
// Use light color for QLabels even with Ubuntu Ambiance theme
QPalette pal = palette();
pal.setColor(QPalette::WindowText, QToolTip::palette().color(QPalette::ToolTipText));
ui->historyLabel->setPalette(pal);
ui->secureLabel->setPalette(pal);
}
void SiteInfoWidget::showAt(QWidget* _parent)

View File

@ -20,6 +20,7 @@
#include <QWidget>
#include <QMenu>
#include <QToolTip>
namespace Ui
{

View File

@ -24,8 +24,11 @@
#define MAXIMUM_TAB_WIDTH 250
#define MINIMUM_TAB_WIDTH 50
#ifdef Q_WS_WIN
#define PINNED_TAB_WIDTH 38
#elif defined(KDE)
#define PINNED_TAB_WIDTH 24
#else
#define PINNED_TAB_WIDTH 31
#endif

View File

@ -540,7 +540,7 @@ void WebView::contextMenuEvent(QContextMenuEvent* event)
m_menu->addAction(engine.icon, tr("Search \"%1 ..\" with %2").arg(selectedText, engine.name), this, SLOT(searchSelectedText()));
}
#if QT_VERSION == 0x040800
#if (QTWEBKIT_VERSION >= QTWEBKIT_VERSION_CHECK(2, 2, 0))
// still bugged in 4.8 RC (it shows selection of webkit's internal source, not html from page)
// it may or may not be bug, but this implementation is useless for us
//
@ -643,12 +643,12 @@ void WebView::showSource()
p_QupZilla->showSource();
}
#if QT_VERSION >= 0x040800
void WebView::showSourceOfSelection()
{
#if (QTWEBKIT_VERSION >= QTWEBKIT_VERSION_CHECK(2, 2, 0))
p_QupZilla->showSource(selectedHtml());
}
#endif
}
void WebView::downloadLinkToDisk()
{

View File

@ -80,6 +80,7 @@ signals:
public slots:
void load(const QUrl &url);
void titleChanged();
void stop();
void back();
@ -107,7 +108,6 @@ private slots:
void loadFinished(bool state);
void linkClicked(const QUrl &url);
void urlChanged(const QUrl &url);
void titleChanged();
void linkHovered(const QString &link, const QString &title, const QString &content);
void openUrlInNewWindow();
void openUrlInNewTab();
@ -115,9 +115,7 @@ private slots:
void sendLinkByMail();
void bookmarkLink();
void showSource();
#if QT_VERSION >= 0x040800
void showSourceOfSelection();
#endif
void showSiteInfo();
void getFocus(const QUrl &urla);
void showInspector();

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

4437
translations/ru_RU.ts Normal file

File diff suppressed because it is too large Load Diff

View File

@ -2106,6 +2106,10 @@
<source>Ask when entering Private Browsing mode</source>
<translation>Pýtať sa pri zapínaní súkromného prehliadania</translation>
</message>
<message>
<source>Active profile:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QObject</name>

File diff suppressed because it is too large Load Diff