mirror of
https://invent.kde.org/network/falkon.git
synced 2024-11-11 01:22:10 +01:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
8d22df25ec
1
AUTHORS
1
AUTHORS
|
@ -33,6 +33,7 @@ Unink-Lio <unink4451@163.com> (Chinese)
|
|||
Wu Cheng-Hong <stu2731652@gmail.com> (Traditional Chinese)
|
||||
Widya Walesa <walecha99@gmail.com> (Indonesian)
|
||||
Beqa Arabuli <arabulibeqa@gmail.com> (Georgian)
|
||||
Daiki Noda <sys.pdr.pdm9@gmail.com> (Japanese)
|
||||
|
||||
Special thanks:
|
||||
|
||||
|
|
2
BUILDING
2
BUILDING
|
@ -86,7 +86,7 @@ Available Defines
|
|||
(disabled by default)
|
||||
|
||||
example:
|
||||
$ export NONBLOCK_JS_DIALOGS="true"
|
||||
$ export NONBLOCK_JS_DIALOGS="true"
|
||||
|
||||
|
||||
Windows specific defines:
|
||||
|
|
|
@ -45,7 +45,7 @@ Then you can start compiling by running this commands:
|
|||
|
||||
After a successful compilation the executable binary can be found in the bin/ directory.
|
||||
|
||||
To install QupZilla, you will have to run this command: (it may be neccessary to run it as root)
|
||||
To install QupZilla, you will have to run this command: (it may be necessary to run it as root)
|
||||
|
||||
$ make install
|
||||
|
||||
|
@ -53,7 +53,7 @@ Current version
|
|||
----------------------------------------------------------------------------------------
|
||||
|
||||
The current released version of QupZilla is 1.1.8. You can download precompiled packages
|
||||
and the sources from the download section.
|
||||
and the sources from the download section at [homepage](http://www.qupzilla.com/download).
|
||||
However, if you want the latest revision, just take the latest code snapshot either by
|
||||
downloading a tarball or running:
|
||||
|
||||
|
|
BIN
bin/locale/qt_ja.qm
Normal file
BIN
bin/locale/qt_ja.qm
Normal file
Binary file not shown.
0
scripts/getrevision.sh
Normal file → Executable file
0
scripts/getrevision.sh
Normal file → Executable file
|
@ -20,17 +20,21 @@ DEFINES += QT_NO_URL_CAST_FROM_STRING
|
|||
##It won't compile on windows with this define. Some bug in qtsingleapp / qvector template
|
||||
!win32: !CONFIG(debug, debug|release): DEFINES += QT_NO_DEBUG_OUTPUT
|
||||
|
||||
CONFIG(debug, debug|release): DEFINES += QUPZILLA_DEBUG_BUILD
|
||||
|
||||
d_no_system_datapath = $$(NO_SYSTEM_DATAPATH)
|
||||
d_use_webgl = $$(USE_WEBGL)
|
||||
d_w7api = $$(W7API)
|
||||
d_kde = $$(KDE)
|
||||
d_portable = $$(PORTABLE_BUILD)
|
||||
d_nonblock_dialogs = $$(NONBLOCK_JS_DIALOGS)
|
||||
|
||||
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 }
|
||||
equals(d_nonblock_dialogs, "true") { DEFINES += NONBLOCK_JS_DIALOGS }
|
||||
|
||||
!mac:unix {
|
||||
d_prefix = $$(QUPZILLA_PREFIX)
|
||||
|
|
|
@ -759,7 +759,7 @@ void MainApplication::aboutToCloseWindow(QupZilla* window)
|
|||
}
|
||||
|
||||
//Version of session.dat file
|
||||
static const int sessionVersion = 0x0002;
|
||||
static const int sessionVersion = 0x0003;
|
||||
|
||||
bool MainApplication::saveStateSlot()
|
||||
{
|
||||
|
|
|
@ -125,17 +125,6 @@ void QupZilla::postLaunch()
|
|||
m_tabWidget->restorePinnedTabs();
|
||||
}
|
||||
|
||||
//Open tab from command line argument
|
||||
bool addTab = true;
|
||||
const QStringList &arguments = qApp->arguments();
|
||||
for (int i = 0; i < qApp->arguments().count(); i++) {
|
||||
QString arg = arguments.at(i);
|
||||
if (arg.startsWith("-url=")) {
|
||||
m_tabWidget->addView(QUrl(arg.remove("-url=")), Qz::NT_SelectedTabAtTheEnd);
|
||||
addTab = false;
|
||||
}
|
||||
}
|
||||
|
||||
Settings settings;
|
||||
settings.beginGroup("Web-URL-Settings");
|
||||
int afterLaunch = settings.value("afterLaunch", 1).toInt();
|
||||
|
@ -144,6 +133,7 @@ void QupZilla::postLaunch()
|
|||
bool startingAfterCrash = settings.value("isCrashed", false).toBool();
|
||||
settings.endGroup();
|
||||
|
||||
bool addTab = true;
|
||||
QUrl startUrl;
|
||||
switch (afterLaunch) {
|
||||
case 0:
|
||||
|
@ -1418,8 +1408,8 @@ void QupZilla::searchOnPage()
|
|||
void QupZilla::openFile()
|
||||
{
|
||||
const QString &fileTypes = QString("%1(*.html *.htm *.shtml *.shtm);;"
|
||||
"%2(*.txt);;"
|
||||
"%3(*.png *.jpg *.jpeg *.bmp *.gif *.svg);;"
|
||||
"%2(*.png *.jpg *.jpeg *.bmp *.gif *.svg *.tiff);;"
|
||||
"%3(*.txt);;"
|
||||
"%4(*.*)").arg(tr("HTML files"), tr("Image files"), tr("Text files"), tr("All files"));
|
||||
|
||||
const QString &filePath = QFileDialog::getOpenFileName(this, tr("Open file..."), QDir::homePath(), fileTypes);
|
||||
|
|
|
@ -627,12 +627,11 @@ void BookmarksManager::insertAllTabs()
|
|||
}
|
||||
|
||||
foreach(WebTab * tab, getQupZilla()->tabWidget()->allTabs(false)) {
|
||||
TabbedWebView* view = tab->view();
|
||||
if (view->url().isEmpty()) {
|
||||
if (tab->url().isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
m_bookmarksModel->saveBookmark(view->url(), view->title(), view->icon(), BookmarksModel::fromTranslatedFolder(combo->currentText()));
|
||||
m_bookmarksModel->saveBookmark(tab->url(), tab->title(), tab->icon(), BookmarksModel::fromTranslatedFolder(combo->currentText()));
|
||||
}
|
||||
|
||||
delete dialog;
|
||||
|
|
|
@ -39,6 +39,11 @@ table.tbl {width: 100%;margin: 15px 0;border-radius: 4px;padding: 0px;border: 2p
|
|||
%PATHS-TEXT%
|
||||
</dl>
|
||||
|
||||
<h2>%BUILD-CONFIG%</h2>
|
||||
<dl>
|
||||
%BUILD-CONFIG-TEXT%
|
||||
</dl>
|
||||
|
||||
<h2>%PLUGINS%</h2>
|
||||
|
||||
<table class="tbl">
|
||||
|
|
|
@ -124,30 +124,45 @@ void HistoryManager::copyUrl()
|
|||
|
||||
void HistoryManager::deleteItem()
|
||||
{
|
||||
QList<int> list;
|
||||
|
||||
foreach(QTreeWidgetItem * item, ui->historyTree->selectedItems()) {
|
||||
if (!item) {
|
||||
return;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!item->parent()) {
|
||||
QList<QTreeWidgetItem*> items;
|
||||
|
||||
for (int i = 0; i < item->childCount(); i++) {
|
||||
QTreeWidgetItem* children = item->child(i);
|
||||
int id = children->whatsThis(1).toInt();
|
||||
m_historyModel->deleteHistoryEntry(id);
|
||||
if (children->isHidden()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
ui->historyTree->deleteItem(children);
|
||||
int id = children->whatsThis(1).toInt();
|
||||
|
||||
list.append(id);
|
||||
m_ignoredIds.append(id);
|
||||
items.append(children);
|
||||
}
|
||||
ui->historyTree->deleteItem(item);
|
||||
|
||||
if (item->childCount() == 0) {
|
||||
items.append(item);
|
||||
}
|
||||
ui->historyTree->deleteItems(items);
|
||||
}
|
||||
else {
|
||||
int id = item->whatsThis(1).toInt();
|
||||
m_historyModel->deleteHistoryEntry(id);
|
||||
|
||||
list.append(id);
|
||||
m_ignoredIds.append(id);
|
||||
|
||||
ui->historyTree->deleteItem(item);
|
||||
m_ignoredIds.append(id);
|
||||
}
|
||||
}
|
||||
|
||||
m_historyModel->deleteHistoryEntry(list);
|
||||
}
|
||||
|
||||
void HistoryManager::historyEntryAdded(const HistoryEntry &entry)
|
||||
|
|
|
@ -19,10 +19,10 @@
|
|||
#include "tabbedwebview.h"
|
||||
#include "qupzilla.h"
|
||||
#include "iconprovider.h"
|
||||
#include "databasewriter.h"
|
||||
#include "settings.h"
|
||||
|
||||
#include <QThread>
|
||||
#include <QSqlDatabase>
|
||||
#include <QSqlQuery>
|
||||
|
||||
HistoryModel::HistoryModel(QupZilla* mainClass)
|
||||
: QObject()
|
||||
|
@ -31,14 +31,8 @@ HistoryModel::HistoryModel(QupZilla* mainClass)
|
|||
{
|
||||
loadSettings();
|
||||
|
||||
qRegisterMetaType<HistoryEntry>("HistoryEntry");
|
||||
|
||||
QThread* t = new QThread(this);
|
||||
t->start();
|
||||
moveToThread(t);
|
||||
|
||||
connect(this, SIGNAL(signalAddHistoryEntry(QUrl, QString)), this, SLOT(slotAddHistoryEntry(QUrl, QString)));
|
||||
connect(this, SIGNAL(signalDeleteHistoryEntry(int)), this, SLOT(slotDeleteHistoryEntry(int)));
|
||||
connect(this, SIGNAL(signalDeleteHistoryEntry(QList<int>)), this, SLOT(slotDeleteHistoryEntry(QList<int>)));
|
||||
}
|
||||
|
||||
void HistoryModel::loadSettings()
|
||||
|
@ -123,7 +117,15 @@ void HistoryModel::slotAddHistoryEntry(const QUrl &url, QString title)
|
|||
// DeleteHistoryEntry
|
||||
void HistoryModel::deleteHistoryEntry(int index)
|
||||
{
|
||||
emit signalDeleteHistoryEntry(index);
|
||||
QList<int> list;
|
||||
list.append(index);
|
||||
|
||||
deleteHistoryEntry(list);
|
||||
}
|
||||
|
||||
void HistoryModel::deleteHistoryEntry(const QList<int> &list)
|
||||
{
|
||||
emit signalDeleteHistoryEntry(list);
|
||||
}
|
||||
|
||||
void HistoryModel::deleteHistoryEntry(const QString &url, const QString &title)
|
||||
|
@ -138,32 +140,41 @@ void HistoryModel::deleteHistoryEntry(const QString &url, const QString &title)
|
|||
deleteHistoryEntry(id);
|
||||
}
|
||||
}
|
||||
|
||||
void HistoryModel::slotDeleteHistoryEntry(int index)
|
||||
#include <QDebug>
|
||||
void HistoryModel::slotDeleteHistoryEntry(const QList<int> &list)
|
||||
{
|
||||
QSqlQuery query;
|
||||
query.prepare("SELECT id, count, date, url, title FROM history WHERE id=?");
|
||||
query.bindValue(0, index);
|
||||
query.exec();
|
||||
if (!query.next()) {
|
||||
return;
|
||||
QSqlDatabase db = QSqlDatabase::database();
|
||||
db.transaction();
|
||||
|
||||
foreach(int index, list) {
|
||||
QSqlQuery query;
|
||||
query.prepare("SELECT id, count, date, url, title FROM history WHERE id=?");
|
||||
query.bindValue(0, index);
|
||||
query.exec();
|
||||
if (!query.next()) {
|
||||
qDebug() << "invalid id" << index;
|
||||
continue;
|
||||
}
|
||||
|
||||
HistoryEntry entry;
|
||||
entry.id = query.value(0).toInt();
|
||||
entry.count = query.value(1).toInt();
|
||||
entry.date = QDateTime::fromMSecsSinceEpoch(query.value(2).toLongLong());
|
||||
entry.url = query.value(3).toUrl();
|
||||
entry.title = query.value(4).toString();
|
||||
|
||||
query.prepare("DELETE FROM history WHERE id=?");
|
||||
query.bindValue(0, index);
|
||||
query.exec();
|
||||
|
||||
query.prepare("DELETE FROM icons WHERE url=?");
|
||||
query.bindValue(0, entry.url.toEncoded(QUrl::RemoveFragment));
|
||||
query.exec();
|
||||
|
||||
emit historyEntryDeleted(entry);
|
||||
}
|
||||
|
||||
HistoryEntry entry;
|
||||
entry.id = query.value(0).toInt();
|
||||
entry.count = query.value(1).toInt();
|
||||
entry.date = QDateTime::fromMSecsSinceEpoch(query.value(2).toLongLong());
|
||||
entry.url = query.value(3).toUrl();
|
||||
entry.title = query.value(4).toString();
|
||||
|
||||
query.prepare("DELETE FROM history WHERE id=?");
|
||||
query.bindValue(0, index);
|
||||
query.exec();
|
||||
query.prepare("DELETE FROM icons WHERE url=?");
|
||||
query.bindValue(0, entry.url.toEncoded(QUrl::RemoveFragment));
|
||||
query.exec();
|
||||
|
||||
emit historyEntryDeleted(entry);
|
||||
db.commit();
|
||||
}
|
||||
|
||||
bool HistoryModel::urlIsStored(const QString &url)
|
||||
|
|
|
@ -50,6 +50,7 @@ public:
|
|||
void addHistoryEntry(const QUrl &url, QString title);
|
||||
|
||||
void deleteHistoryEntry(int index);
|
||||
void deleteHistoryEntry(const QList<int> &list);
|
||||
void deleteHistoryEntry(const QString &url, const QString &title);
|
||||
|
||||
bool urlIsStored(const QString &url);
|
||||
|
@ -65,7 +66,7 @@ public:
|
|||
|
||||
private slots:
|
||||
void slotAddHistoryEntry(const QUrl &url, QString title);
|
||||
void slotDeleteHistoryEntry(int index);
|
||||
void slotDeleteHistoryEntry(const QList<int> &list);
|
||||
|
||||
signals:
|
||||
void historyEntryAdded(HistoryEntry entry);
|
||||
|
@ -75,7 +76,7 @@ signals:
|
|||
void historyClear();
|
||||
|
||||
void signalAddHistoryEntry(QUrl url, QString title);
|
||||
void signalDeleteHistoryEntry(int index);
|
||||
void signalDeleteHistoryEntry(QList<int> list);
|
||||
|
||||
private:
|
||||
bool m_isSaving;
|
||||
|
|
|
@ -227,7 +227,8 @@ QString QupZillaSchemeReply::aboutPage()
|
|||
authorString("Unink-Lio", "unink4451@163.com") + " (Chinese)<br/>" +
|
||||
authorString("Wu Cheng-Hong", "stu2731652@gmail.com") + " (Traditional Chinese)<br/>" +
|
||||
authorString("Widya Walesa", "walecha99@gmail.com") + " (Indonesian)<br/>" +
|
||||
authorString("Beqa Arabuli", "arabulibeqa@gmail.com") + " (Georgian)"
|
||||
authorString("Beqa Arabuli", "arabulibeqa@gmail.com") + " (Georgian)<br/>" +
|
||||
authorString("Daiki Noda", "sys.pdr.pdm9@gmail.com") + " (Japanese)"
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -303,6 +304,7 @@ QString QupZillaSchemeReply::configPage()
|
|||
cPage.replace("%CONFIG-ABOUT%", tr("This page contains information about QupZilla's current configuration, plugins, etc, all relevant information for troubleshooting. Please include these information when sending bug reports."));
|
||||
cPage.replace("%BROWSER-IDENTIFICATION%", tr("Browser Identification"));
|
||||
cPage.replace("%PATHS%", tr("Paths"));
|
||||
cPage.replace("%BUILD-CONFIG%", tr("Build Configuration"));
|
||||
cPage.replace("%PREFS%", tr("Preferences"));
|
||||
cPage.replace("%OPTION%", tr("Option"));
|
||||
cPage.replace("%VALUE%", tr("Value"));
|
||||
|
@ -312,15 +314,6 @@ QString QupZillaSchemeReply::configPage()
|
|||
cPage.replace("%PL-AUTH%", tr("Author"));
|
||||
cPage.replace("%PL-DESC%", tr("Description"));
|
||||
|
||||
cPage.replace("%PATHS-TEXT%",
|
||||
QString("<dt>%1</dt><dd>%2<dd>").arg(tr("Profile"), mApp->getActiveProfilPath()) +
|
||||
QString("<dt>%1</dt><dd>%2<dd>").arg(tr("Settings"), mApp->getActiveProfilPath() + "settings.ini") +
|
||||
QString("<dt>%1</dt><dd>%2<dd>").arg(tr("Saved session"), mApp->getActiveProfilPath() + "session.dat") +
|
||||
QString("<dt>%1</dt><dd>%2<dd>").arg(tr("Pinned tabs"), mApp->getActiveProfilPath() + "pinnedtabs.dat") +
|
||||
QString("<dt>%1</dt><dd>%2<dd>").arg(tr("Data"), mApp->DATADIR) +
|
||||
QString("<dt>%1</dt><dd>%2<dd>").arg(tr("Themes"), mApp->THEMESDIR) +
|
||||
QString("<dt>%1</dt><dd>%2<dd>").arg(tr("Translations"), mApp->TRANSLATIONSDIR));
|
||||
|
||||
cPage.replace("%VERSION-INFO%",
|
||||
QString("<dt>%1</dt><dd>%2<dd>").arg(tr("Application version"), QupZilla::VERSION
|
||||
#ifdef GIT_REVISION
|
||||
|
@ -331,6 +324,44 @@ QString QupZillaSchemeReply::configPage()
|
|||
QString("<dt>%1</dt><dd>%2<dd>").arg(tr("WebKit version"), QupZilla::WEBKITVERSION) +
|
||||
QString("<dt>%1</dt><dd>%2<dd>").arg(tr("Build time"), QupZilla::BUILDTIME) +
|
||||
QString("<dt>%1</dt><dd>%2<dd>").arg(tr("Platform"), qz_buildSystem()));
|
||||
|
||||
cPage.replace("%PATHS-TEXT%",
|
||||
QString("<dt>%1</dt><dd>%2<dd>").arg(tr("Profile"), mApp->getActiveProfilPath()) +
|
||||
QString("<dt>%1</dt><dd>%2<dd>").arg(tr("Settings"), mApp->getActiveProfilPath() + "settings.ini") +
|
||||
QString("<dt>%1</dt><dd>%2<dd>").arg(tr("Saved session"), mApp->getActiveProfilPath() + "session.dat") +
|
||||
QString("<dt>%1</dt><dd>%2<dd>").arg(tr("Pinned tabs"), mApp->getActiveProfilPath() + "pinnedtabs.dat") +
|
||||
QString("<dt>%1</dt><dd>%2<dd>").arg(tr("Data"), mApp->DATADIR) +
|
||||
QString("<dt>%1</dt><dd>%2<dd>").arg(tr("Themes"), mApp->THEMESDIR) +
|
||||
QString("<dt>%1</dt><dd>%2<dd>").arg(tr("Translations"), mApp->TRANSLATIONSDIR));
|
||||
|
||||
QString debugBuild = tr("Disabled");
|
||||
QString webGLEnabled = tr("Disabled");
|
||||
QString w7APIEnabled = tr("Disabled");
|
||||
QString KDEIntegration = tr("Disabled");
|
||||
QString portableBuild = tr("Disabled");
|
||||
|
||||
#ifdef QUPZILLA_DEBUG_BUILD
|
||||
debugBuild = tr("<b>Enabled</b>");
|
||||
#endif
|
||||
#ifdef USE_WEBGL
|
||||
webGLEnabled = tr("<b>Enabled</b>");
|
||||
#endif
|
||||
#if defined(Q_WS_WIN) && defined(W7API)
|
||||
w7APIEnabled = tr("<b>Enabled</b>");
|
||||
#endif
|
||||
#if defined(Q_WS_X11) && defined(KDE)
|
||||
KDEIntegration = tr("<b>Enabled</b>");
|
||||
#endif
|
||||
#ifdef PORTABLE_BUILD
|
||||
portableBuild = tr("<b>Enabled</b>");
|
||||
#endif
|
||||
|
||||
cPage.replace("%BUILD-CONFIG-TEXT%",
|
||||
QString("<dt>%1</dt><dd>%2<dd>").arg(tr("Debug build"), debugBuild) +
|
||||
QString("<dt>%1</dt><dd>%2<dd>").arg(tr("WebGL support"), webGLEnabled) +
|
||||
QString("<dt>%1</dt><dd>%2<dd>").arg(tr("Windows 7 API"), w7APIEnabled) +
|
||||
QString("<dt>%1</dt><dd>%2<dd>").arg(tr("KDE integration"), KDEIntegration) +
|
||||
QString("<dt>%1</dt><dd>%2<dd>").arg(tr("Portable build"), portableBuild));
|
||||
}
|
||||
|
||||
QString page = cPage;
|
||||
|
|
|
@ -30,6 +30,8 @@ EditSearchEngine::EditSearchEngine(const QString &title, QWidget* parent)
|
|||
connect(ui->iconFromFile, SIGNAL(clicked()), this, SLOT(chooseIcon()));
|
||||
|
||||
ui->buttonBox->setFocus();
|
||||
|
||||
setFixedHeight(sizeHint().height());
|
||||
}
|
||||
|
||||
QString EditSearchEngine::name()
|
||||
|
@ -85,7 +87,9 @@ void EditSearchEngine::hideIconLabels()
|
|||
|
||||
void EditSearchEngine::chooseIcon()
|
||||
{
|
||||
QString path = QFileDialog::getOpenFileName(this, tr("Choose icon..."));
|
||||
const QString &fileTypes = QString("%3(*.png *.jpg *.jpeg *.bmp *.gif *.svg *.tiff)").arg(tr("Image files"));
|
||||
|
||||
QString path = QFileDialog::getOpenFileName(this, tr("Choose icon..."), QDir::homePath(), fileTypes);
|
||||
if (path.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -104,7 +104,7 @@ OpenSearchEngine* OpenSearchReader::read()
|
|||
}
|
||||
|
||||
if (!m_searchXml.contains(QLatin1String("http://a9.com/-/spec/opensearch/1.1/")) &&
|
||||
!m_searchXml.contains(QLatin1String("http://www.mozilla.org/2006/browser/search/"))) {
|
||||
!m_searchXml.contains(QLatin1String("http://www.mozilla.org/2006/browser/search/"))) {
|
||||
raiseError(QObject::tr("The file is not an OpenSearch 1.1 file."));
|
||||
return engine;
|
||||
}
|
||||
|
|
|
@ -222,7 +222,7 @@ void SearchEnginesManager::addEngineFromForm(const QWebElement &element, WebView
|
|||
|
||||
QList<QPair<QByteArray, QByteArray> > queryItems;
|
||||
QWebElementCollection allInputs = formElement.findAll("input");
|
||||
foreach (QWebElement e, allInputs) {
|
||||
foreach(QWebElement e, allInputs) {
|
||||
if (element == e || !e.hasAttribute("name")) {
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -61,7 +61,7 @@ public:
|
|||
void addEngine(OpenSearchEngine* engine);
|
||||
void addEngine(const Engine &engine);
|
||||
|
||||
void addEngineFromForm(const QWebElement &element, WebView *view);
|
||||
void addEngineFromForm(const QWebElement &element, WebView* view);
|
||||
|
||||
void removeEngine(const Engine &engine);
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
#include "tabbedwebview.h"
|
||||
#include "webpage.h"
|
||||
#include "qtwin.h"
|
||||
|
||||
#include <QDebug>
|
||||
AboutDialog::AboutDialog(QWidget* parent)
|
||||
: QDialog(parent),
|
||||
ui(new Ui::AboutDialog)
|
||||
|
@ -55,7 +55,7 @@ void AboutDialog::showAbout()
|
|||
{
|
||||
ui->authorsButton->setText(tr("Authors and Contributors"));
|
||||
if (m_aboutHtml.isEmpty()) {
|
||||
m_aboutHtml.append("<div style='margin:10px;'>");
|
||||
m_aboutHtml.append("<center><div style='margin:10px;'>");
|
||||
m_aboutHtml.append(tr("<p><b>Application version %1</b><br/>").arg(QupZilla::VERSION
|
||||
#ifdef GIT_REVISION
|
||||
+ " (" + GIT_REVISION + ")"
|
||||
|
@ -66,7 +66,7 @@ void AboutDialog::showAbout()
|
|||
m_aboutHtml.append(tr("<small>Build time: %1 </small></p>").arg(QupZilla::BUILDTIME));
|
||||
m_aboutHtml.append(QString("<p><a href=%1>%1</a></p>").arg(QupZilla::WWWADDRESS));
|
||||
m_aboutHtml.append("<p>" + mApp->getWindow()->weView()->webPage()->userAgentForUrl(QUrl()) + "</p>");
|
||||
m_aboutHtml.append("</div>");
|
||||
m_aboutHtml.append("</div></center>");
|
||||
}
|
||||
ui->textBrowser->setHtml(m_aboutHtml);
|
||||
}
|
||||
|
@ -75,7 +75,7 @@ void AboutDialog::showAuthors()
|
|||
{
|
||||
ui->authorsButton->setText(tr("< About QupZilla"));
|
||||
if (m_authorsHtml.isEmpty()) {
|
||||
m_authorsHtml.append("<div style='margin:10px;'>");
|
||||
m_authorsHtml.append("<center><div style='margin:10px;'>");
|
||||
m_authorsHtml.append(tr("<p><b>Main developer:</b><br/>%1 <%2></p>").arg(QupZilla::AUTHOR, "<a href=mailto:nowrep@gmail.com>nowrep@gmail.com</a>"));
|
||||
m_authorsHtml.append(tr("<p><b>Contributors:</b><br/>%1</p>").arg(
|
||||
QString::fromUtf8("Mladen Pejaković<br/>"
|
||||
|
@ -105,9 +105,10 @@ void AboutDialog::showAuthors()
|
|||
"Unink-Lio<br/>"
|
||||
"Wu Cheng-Hong<br/>"
|
||||
"Widya Walesa<br/>"
|
||||
"Beqa Arabuli")
|
||||
"Beqa Arabuli<br/>"
|
||||
"Daiki Noda")
|
||||
));
|
||||
m_authorsHtml.append("</div>");
|
||||
m_authorsHtml.append("</div></center>");
|
||||
}
|
||||
ui->textBrowser->setHtml(m_authorsHtml);
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>271</width>
|
||||
<width>381</width>
|
||||
<height>440</height>
|
||||
</rect>
|
||||
</property>
|
||||
|
|
|
@ -17,15 +17,11 @@
|
|||
* ============================================================ */
|
||||
#include "databasewriter.h"
|
||||
|
||||
#include <QThread>
|
||||
#include <QTimer>
|
||||
|
||||
DatabaseWriter::DatabaseWriter()
|
||||
: QObject()
|
||||
{
|
||||
QThread* t = new QThread(this);
|
||||
t->start();
|
||||
moveToThread(t);
|
||||
}
|
||||
|
||||
void DatabaseWriter::executeQuery(const QSqlQuery &query)
|
||||
|
|
|
@ -28,8 +28,6 @@ namespace Ui
|
|||
class PageScreen;
|
||||
}
|
||||
|
||||
class QAbstractButton;
|
||||
|
||||
class WebView;
|
||||
|
||||
class QT_QUPZILLA_EXPORT PageScreen : public QDialog
|
||||
|
|
|
@ -275,7 +275,9 @@ void SpeedDial::removeImageForUrl(const QString &url)
|
|||
|
||||
QString SpeedDial::getOpenFileName()
|
||||
{
|
||||
return QFileDialog::getOpenFileName(0, tr("Select image..."), QDir::homePath(), "(*.png *.jpg *.jpeg *.bmp *.gif *.tiff)");
|
||||
const QString &fileTypes = QString("%3(*.png *.jpg *.jpeg *.bmp *.gif *.svg *.tiff)").arg(tr("Image files"));
|
||||
|
||||
return QFileDialog::getOpenFileName(0, tr("Select image..."), QDir::homePath(), fileTypes);
|
||||
}
|
||||
|
||||
QString SpeedDial::urlFromUserInput(const QString &url)
|
||||
|
|
|
@ -58,14 +58,17 @@ QWidget* PopupWebView::overlayForJsAlert()
|
|||
return this;
|
||||
}
|
||||
|
||||
void PopupWebView::openUrlInNewTab(const QUrl &url, Qz::NewTabPositionFlag position)
|
||||
void PopupWebView::openUrlInNewTab(const QUrl &urla, Qz::NewTabPositionFlag position)
|
||||
{
|
||||
Q_UNUSED(position)
|
||||
|
||||
QupZilla* window = mApp->getWindow();
|
||||
|
||||
if (window) {
|
||||
window->tabWidget()->addView(url, Qz::NT_SelectedTab);
|
||||
QNetworkRequest req(urla);
|
||||
req.setRawHeader("Referer", url().toEncoded());
|
||||
|
||||
window->tabWidget()->addView(req, Qz::NT_SelectedTab);
|
||||
window->raise();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ public:
|
|||
PopupWebPage* webPage();
|
||||
|
||||
QWidget* overlayForJsAlert();
|
||||
void openUrlInNewTab(const QUrl &url, Qz::NewTabPositionFlag position);
|
||||
void openUrlInNewTab(const QUrl &urla, Qz::NewTabPositionFlag position);
|
||||
|
||||
signals:
|
||||
|
||||
|
|
|
@ -81,6 +81,7 @@ PopupWindow::PopupWindow(PopupWebView* view, bool showStatusBar)
|
|||
|
||||
// Ensuring correct sizes for widgets in layout are calculated even
|
||||
// before calling QWidget::show()
|
||||
m_layout->invalidate();
|
||||
m_layout->activate();
|
||||
}
|
||||
|
||||
|
|
|
@ -101,6 +101,7 @@ Preferences::Preferences(QupZilla* mainClass, QWidget* parent)
|
|||
settings.endGroup();
|
||||
ui->afterLaunch->setCurrentIndex(afterLaunch);
|
||||
ui->checkUpdates->setChecked(settings.value("Web-Browser-Settings/CheckUpdates", DEFAULT_CHECK_UPDATES).toBool());
|
||||
ui->dontLoadTabsUntilSelected->setChecked(settings.value("Web-Browser-Settings/LoadTabsOnActivation", false).toBool());
|
||||
|
||||
ui->newTabFrame->setVisible(false);
|
||||
if (m_newTabUrl.isEmpty()) {
|
||||
|
@ -788,6 +789,7 @@ void Preferences::saveSettings()
|
|||
settings.setValue("wheelScrollLines", ui->wheelScroll->value());
|
||||
settings.setValue("DoNotTrack", ui->doNotTrack->isChecked());
|
||||
settings.setValue("CheckUpdates", ui->checkUpdates->isChecked());
|
||||
settings.setValue("LoadTabsOnActivation", ui->dontLoadTabsUntilSelected->isChecked());
|
||||
settings.setValue("DefaultZoom", ui->defaultZoom->value());
|
||||
settings.setValue("XSSAuditing", ui->xssAuditing->isChecked());
|
||||
settings.setValue("UserAgent", ui->changeUserAgent->isChecked() ? ui->userAgentCombo->currentText() : "");
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>829</width>
|
||||
<height>484</height>
|
||||
<height>496</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
|
@ -292,24 +292,24 @@
|
|||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0" colspan="2">
|
||||
<item row="7" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string><b>Profiles</b></string>
|
||||
</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="1" colspan="3">
|
||||
<item row="10" column="1" colspan="3">
|
||||
<widget class="QFrame" name="frame">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
|
@ -391,42 +391,42 @@
|
|||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1" colspan="2">
|
||||
<item row="6" column="1" colspan="2">
|
||||
<widget class="QCheckBox" name="checkUpdates">
|
||||
<property name="text">
|
||||
<string>Check for updates on start</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="1">
|
||||
<item row="8" column="1">
|
||||
<widget class="QLabel" name="label_45">
|
||||
<property name="text">
|
||||
<string>Active profile:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="2">
|
||||
<item row="8" column="2">
|
||||
<widget class="QLabel" name="activeProfile">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="15" column="1" colspan="2">
|
||||
<item row="16" column="1" colspan="2">
|
||||
<widget class="QLabel" name="label_17">
|
||||
<property name="text">
|
||||
<string>In order to change language, you must restart browser.</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="11" column="0" colspan="3">
|
||||
<item row="12" column="0" colspan="3">
|
||||
<widget class="QLabel" name="label_11">
|
||||
<property name="text">
|
||||
<string><b>Language</b></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="12" column="1">
|
||||
<item row="13" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_13">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_16">
|
||||
|
@ -449,10 +449,10 @@
|
|||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="12" column="2">
|
||||
<item row="13" column="2">
|
||||
<widget class="QComboBox" name="languages"/>
|
||||
</item>
|
||||
<item row="10" column="1">
|
||||
<item row="11" column="1">
|
||||
<spacer name="verticalSpacer_6">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
|
@ -465,6 +465,13 @@
|
|||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="5" column="1" colspan="2">
|
||||
<widget class="QCheckBox" name="dontLoadTabsUntilSelected">
|
||||
<property name="text">
|
||||
<string>Don't load tabs until selected</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="stackedWidgetPage2">
|
||||
|
@ -1690,7 +1697,112 @@
|
|||
</widget>
|
||||
<widget class="QWidget" name="stackedWidgetPage6">
|
||||
<layout class="QGridLayout" name="gridLayout_12">
|
||||
<item row="5" column="0">
|
||||
<property name="sizeConstraint">
|
||||
<enum>QLayout::SetFixedSize</enum>
|
||||
</property>
|
||||
<item row="26" column="1" colspan="4">
|
||||
<widget class="QCheckBox" name="jscanAccessClipboard">
|
||||
<property name="text">
|
||||
<string>JavaScript can access clipboard</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="25" column="1" colspan="4">
|
||||
<widget class="QCheckBox" name="blockPopup">
|
||||
<property name="text">
|
||||
<string>Block popup windows</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="20" column="1" colspan="4">
|
||||
<widget class="QCheckBox" name="sendReferer">
|
||||
<property name="text">
|
||||
<string>Send Referer header to servers</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="13" column="1" colspan="3">
|
||||
<widget class="QCheckBox" name="filterTracking">
|
||||
<property name="text">
|
||||
<string>Filter tracking cookies</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="0" colspan="5">
|
||||
<widget class="QLabel" name="label_12">
|
||||
<property name="text">
|
||||
<string><b>Cookies</b></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="1" colspan="4">
|
||||
<widget class="QCheckBox" name="saveCookies">
|
||||
<property name="text">
|
||||
<string>Allow storing of cookies</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="13" column="0">
|
||||
<spacer name="horizontalSpacer_20">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="12" column="1" colspan="4">
|
||||
<widget class="QCheckBox" name="matchExactly">
|
||||
<property name="text">
|
||||
<string>Match domain exactly</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="21" column="1" colspan="4">
|
||||
<widget class="QCheckBox" name="doNotTrack">
|
||||
<property name="text">
|
||||
<string>Send Do Not Track header to servers</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="18" column="0" colspan="5">
|
||||
<widget class="QLabel" name="label_50">
|
||||
<property name="text">
|
||||
<string><b>Other</b></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="17" column="0" colspan="4">
|
||||
<widget class="QLabel" name="label_49">
|
||||
<property name="text">
|
||||
<string>Edit CA certificates in SSL Manager</string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="10" column="4">
|
||||
<spacer name="horizontalSpacer_22">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="28" column="0" colspan="5">
|
||||
<spacer name="verticalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
|
@ -1703,177 +1815,71 @@
|
|||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<item row="0" column="0" colspan="4">
|
||||
<widget class="QLabel" name="label_12">
|
||||
<property name="text">
|
||||
<string><b>Cookies</b></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1" colspan="2">
|
||||
<widget class="QCheckBox" name="filterTracking">
|
||||
<property name="text">
|
||||
<string>Filter tracking cookies</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1" colspan="3">
|
||||
<widget class="QCheckBox" name="saveCookies">
|
||||
<property name="text">
|
||||
<string>Allow storing of cookies</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="2">
|
||||
<widget class="QCheckBox" name="deleteCookiesOnClose">
|
||||
<property name="text">
|
||||
<string>Delete cookies on close</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1" colspan="3">
|
||||
<widget class="QCheckBox" name="matchExactly">
|
||||
<property name="text">
|
||||
<string>Match domain exactly</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<spacer name="horizontalSpacer_20">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="5" column="0" colspan="4">
|
||||
<widget class="QLabel" name="label_19">
|
||||
<property name="text">
|
||||
<string><b>Warning:</b> Match domain exactly and filter tracking cookies options can lead to deny some cookies from sites. If you have problems with cookies, try to disable this options first!</string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="3">
|
||||
<widget class="QPushButton" name="cookieManagerBut">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Cookies Manager</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<spacer name="horizontalSpacer_5">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="6" column="0" colspan="4">
|
||||
<widget class="QLabel" name="label_48">
|
||||
<property name="text">
|
||||
<string><b>SSL Certificates</b></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="3">
|
||||
<widget class="QPushButton" name="sslManagerButton">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>SSL Manager</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0" colspan="3">
|
||||
<widget class="QLabel" name="label_49">
|
||||
<property name="text">
|
||||
<string>Edit CA certificates in SSL Manager</string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="3">
|
||||
<spacer name="horizontalSpacer_22">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="9" column="1" colspan="3">
|
||||
<widget class="QCheckBox" name="jscanAccessClipboard">
|
||||
<property name="text">
|
||||
<string>JavaScript can access clipboard</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="0" colspan="4">
|
||||
<widget class="QLabel" name="label_50">
|
||||
<property name="text">
|
||||
<string><b>Other</b></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="11" column="1" colspan="3">
|
||||
<widget class="QCheckBox" name="doNotTrack">
|
||||
<property name="text">
|
||||
<string>Send Do Not Track header to servers</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="12" column="1" colspan="3">
|
||||
<widget class="QCheckBox" name="sendReferer">
|
||||
<property name="text">
|
||||
<string>Send Referer header to servers</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="10" column="1" colspan="3">
|
||||
<widget class="QCheckBox" name="blockPopup">
|
||||
<property name="text">
|
||||
<string>Block popup windows</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
<item row="13" column="4">
|
||||
<widget class="QPushButton" name="cookieManagerBut">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Cookies Manager</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="17" column="4">
|
||||
<widget class="QPushButton" name="sslManagerButton">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>SSL Manager</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="10" column="2" colspan="2">
|
||||
<widget class="QCheckBox" name="deleteCookiesOnClose">
|
||||
<property name="text">
|
||||
<string>Delete cookies on close</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="10" column="1">
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="15" column="0" colspan="5">
|
||||
<widget class="QLabel" name="label_48">
|
||||
<property name="text">
|
||||
<string><b>SSL Certificates</b></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="14" column="0" colspan="5">
|
||||
<widget class="QLabel" name="label_19">
|
||||
<property name="text">
|
||||
<string><b>Warning:</b> Match domain exactly and filter tracking cookies options can lead to deny some cookies from sites. If you have problems with cookies, try to disable this options first!</string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
|
@ -2184,11 +2190,6 @@
|
|||
<tabstop>closeDownManOnFinish</tabstop>
|
||||
<tabstop>downlaodNativeSystemDialog</tabstop>
|
||||
<tabstop>allowPassManager</tabstop>
|
||||
<tabstop>saveCookies</tabstop>
|
||||
<tabstop>deleteCookiesOnClose</tabstop>
|
||||
<tabstop>matchExactly</tabstop>
|
||||
<tabstop>filterTracking</tabstop>
|
||||
<tabstop>cookieManagerBut</tabstop>
|
||||
<tabstop>useOSDNotifications</tabstop>
|
||||
<tabstop>useNativeSystemNotifications</tabstop>
|
||||
<tabstop>doNotUseNotifications</tabstop>
|
||||
|
|
|
@ -213,3 +213,10 @@ void TreeWidget::deleteItem(QTreeWidgetItem* item)
|
|||
|
||||
delete item;
|
||||
}
|
||||
|
||||
void TreeWidget::deleteItems(const QList<QTreeWidgetItem*> &items)
|
||||
{
|
||||
m_refreshAllItemsNeeded = true;
|
||||
|
||||
qDeleteAll(items);
|
||||
}
|
||||
|
|
|
@ -41,6 +41,7 @@ public:
|
|||
void insertTopLevelItems(int index, const QList<QTreeWidgetItem*> &items);
|
||||
|
||||
void deleteItem(QTreeWidgetItem* item);
|
||||
void deleteItems(const QList<QTreeWidgetItem*> &items);
|
||||
|
||||
signals:
|
||||
void itemControlClicked(QTreeWidgetItem* item);
|
||||
|
|
|
@ -289,7 +289,9 @@ void TabBar::bookmarkTab()
|
|||
return;
|
||||
}
|
||||
|
||||
p_QupZilla->addBookmark(view->url(), view->title(), view->icon());
|
||||
WebTab* tab = view->webTab();
|
||||
|
||||
p_QupZilla->addBookmark(tab->url(), tab->title(), tab->icon());
|
||||
}
|
||||
|
||||
void TabBar::pinTab()
|
||||
|
@ -434,7 +436,10 @@ void TabBar::dropEvent(QDropEvent* event)
|
|||
}
|
||||
}
|
||||
else {
|
||||
p_QupZilla->weView(index)->load(mime->urls().first());
|
||||
WebTab* tab = p_QupZilla->weView(index)->webTab();
|
||||
if (tab->isRestored()) {
|
||||
tab->view()->load(mime->urls().first());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -345,14 +345,17 @@ void TabbedWebView::stop()
|
|||
slotLoadFinished();
|
||||
}
|
||||
|
||||
void TabbedWebView::openUrlInNewTab(const QUrl &url, Qz::NewTabPositionFlag position)
|
||||
void TabbedWebView::openUrlInNewTab(const QUrl &urla, Qz::NewTabPositionFlag position)
|
||||
{
|
||||
m_tabWidget->addView(url, position);
|
||||
QNetworkRequest req(urla);
|
||||
req.setRawHeader("Referer", url().toEncoded());
|
||||
|
||||
m_tabWidget->addView(req, position);
|
||||
}
|
||||
|
||||
void TabbedWebView::openNewTab()
|
||||
{
|
||||
m_tabWidget->addView();
|
||||
m_tabWidget->addView(QUrl());
|
||||
}
|
||||
|
||||
void TabbedWebView::getFocus(const QUrl &urla)
|
||||
|
|
|
@ -70,7 +70,7 @@ public slots:
|
|||
void loadingProgress(int prog);
|
||||
|
||||
void closeView();
|
||||
void openUrlInNewTab(const QUrl &url, Qz::NewTabPositionFlag position);
|
||||
void openUrlInNewTab(const QUrl &urla, Qz::NewTabPositionFlag position);
|
||||
void openNewTab();
|
||||
|
||||
private slots:
|
||||
|
|
|
@ -150,20 +150,14 @@ void TabWidget::resizeEvent(QResizeEvent* e)
|
|||
QTabWidget::resizeEvent(e);
|
||||
}
|
||||
|
||||
TabbedWebView* TabWidget::weView()
|
||||
WebTab* TabWidget::weTab()
|
||||
{
|
||||
return weView(currentIndex());
|
||||
return weTab(currentIndex());
|
||||
}
|
||||
|
||||
TabbedWebView* TabWidget::weView(int index)
|
||||
WebTab* TabWidget::weTab(int index)
|
||||
{
|
||||
WebTab* webTab = qobject_cast<WebTab*>(widget(index));
|
||||
|
||||
if (!webTab) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return webTab->view();
|
||||
return qobject_cast<WebTab*>(widget(index));
|
||||
}
|
||||
|
||||
void TabWidget::createKeyPressEvent(QKeyEvent* event)
|
||||
|
@ -192,24 +186,24 @@ void TabWidget::moveAddTabButton(int posX)
|
|||
void TabWidget::aboutToShowTabsMenu()
|
||||
{
|
||||
m_menuTabs->clear();
|
||||
TabbedWebView* actView = weView();
|
||||
if (!actView) {
|
||||
WebTab* actTab = weTab();
|
||||
if (!actTab) {
|
||||
return;
|
||||
}
|
||||
for (int i = 0; i < count(); i++) {
|
||||
TabbedWebView* view = weView(i);
|
||||
if (!view) {
|
||||
WebTab* tab = weTab(i);
|
||||
if (!tab) {
|
||||
continue;
|
||||
}
|
||||
QAction* action = new QAction(this);
|
||||
if (view == actView) {
|
||||
if (tab == actTab) {
|
||||
action->setIcon(QIcon(":/icons/menu/dot.png"));
|
||||
}
|
||||
else {
|
||||
action->setIcon(view->icon());
|
||||
action->setIcon(tab->icon());
|
||||
}
|
||||
if (view->title().isEmpty()) {
|
||||
if (view->isLoading()) {
|
||||
if (tab->title().isEmpty()) {
|
||||
if (tab->isLoading()) {
|
||||
action->setText(tr("Loading..."));
|
||||
action->setIcon(QIcon(":/icons/other/progress.gif"));
|
||||
}
|
||||
|
@ -218,7 +212,7 @@ void TabWidget::aboutToShowTabsMenu()
|
|||
}
|
||||
}
|
||||
else {
|
||||
QString title = view->title();
|
||||
QString title = tab->title();
|
||||
title.replace("&", "&&");
|
||||
if (title.length() > 40) {
|
||||
title.truncate(40);
|
||||
|
@ -244,11 +238,22 @@ void TabWidget::actionChangeIndex()
|
|||
|
||||
int TabWidget::addView(const QUrl &url, const Qz::NewTabPositionFlags &openFlags, bool selectLine)
|
||||
{
|
||||
return addView(url, tr("New tab"), openFlags, selectLine);
|
||||
return addView(QNetworkRequest(url), openFlags, selectLine);
|
||||
}
|
||||
|
||||
int TabWidget::addView(QUrl url, const QString &title, const Qz::NewTabPositionFlags &openFlags, bool selectLine, int position)
|
||||
int TabWidget::addView(const QNetworkRequest &req, const Qz::NewTabPositionFlags &openFlags, bool selectLine)
|
||||
{
|
||||
return addView(req, tr("New tab"), openFlags, selectLine);
|
||||
}
|
||||
|
||||
int TabWidget::addView(const QUrl &url, const QString &title, const Qz::NewTabPositionFlags &openFlags, bool selectLine, int position)
|
||||
{
|
||||
return addView(QNetworkRequest(url), title, openFlags, selectLine, position);
|
||||
}
|
||||
|
||||
int TabWidget::addView(QNetworkRequest req, const QString &title, const Qz::NewTabPositionFlags &openFlags, bool selectLine, int position)
|
||||
{
|
||||
QUrl url = req.url();
|
||||
m_lastTabIndex = currentIndex();
|
||||
|
||||
if (url.isEmpty() && !(openFlags & Qz::NT_CleanTab)) {
|
||||
|
@ -277,7 +282,7 @@ int TabWidget::addView(QUrl url, const QString &title, const Qz::NewTabPositionF
|
|||
index = insertTab(position, new WebTab(p_QupZilla, locBar), "");
|
||||
}
|
||||
|
||||
TabbedWebView* webView = weView(index);
|
||||
TabbedWebView* webView = weTab(index)->view();
|
||||
locBar->setWebView(webView);
|
||||
|
||||
setTabText(index, title);
|
||||
|
@ -303,7 +308,8 @@ int TabWidget::addView(QUrl url, const QString &title, const Qz::NewTabPositionF
|
|||
connect(webView, SIGNAL(ipChanged(QString)), p_QupZilla->ipLabel(), SLOT(setText(QString)));
|
||||
|
||||
if (url.isValid()) {
|
||||
webView->load(url);
|
||||
req.setUrl(url);
|
||||
webView->load(req);
|
||||
}
|
||||
|
||||
if (selectLine) {
|
||||
|
@ -323,14 +329,15 @@ void TabWidget::closeTab(int index)
|
|||
index = currentIndex();
|
||||
}
|
||||
|
||||
TabbedWebView* webView = weView(index);
|
||||
WebPage* webPage = webView->webPage();
|
||||
WebTab* webTab = webView->webTab();
|
||||
|
||||
if (!webView || !webPage || !webTab) {
|
||||
WebTab* webTab = weTab(index);
|
||||
if (!webTab) {
|
||||
return;
|
||||
}
|
||||
|
||||
TabbedWebView* webView = webTab->view();
|
||||
WebPage* webPage = webView->webPage();
|
||||
|
||||
if (count() == 1) {
|
||||
if (m_dontQuitWithOneTab) {
|
||||
webView->load(m_urlOnNewTab);
|
||||
|
@ -379,13 +386,14 @@ void TabWidget::currentTabChanged(int index)
|
|||
m_isClosingToLastTabIndex = false;
|
||||
m_lastBackgroundTabIndex = -1;
|
||||
|
||||
TabbedWebView* webView = weView();
|
||||
LocationBar* locBar = webView->webTab()->locationBar();
|
||||
WebTab* webTab = weTab(index);
|
||||
LocationBar* locBar = webTab->locationBar();
|
||||
|
||||
if (m_locationBars->indexOf(locBar) != -1) {
|
||||
m_locationBars->setCurrentWidget(locBar);
|
||||
}
|
||||
|
||||
webTab->setCurrentTab();
|
||||
p_QupZilla->currentTabChanged();
|
||||
m_tabBar->updateCloseButton(index);
|
||||
}
|
||||
|
@ -404,7 +412,7 @@ void TabWidget::setTabText(int index, const QString &text)
|
|||
QString newtext = text;
|
||||
newtext.replace("&", "&&"); // Avoid Alt+letter shortcuts
|
||||
|
||||
if (WebTab* webTab = qobject_cast<WebTab*>(p_QupZilla->tabWidget()->widget(index))) {
|
||||
if (WebTab* webTab = weTab(index)) {
|
||||
if (webTab->isPinned()) {
|
||||
newtext = "";
|
||||
}
|
||||
|
@ -415,7 +423,7 @@ void TabWidget::setTabText(int index, const QString &text)
|
|||
|
||||
void TabWidget::reloadTab(int index)
|
||||
{
|
||||
weView(index)->reload();
|
||||
weTab(index)->reload();
|
||||
}
|
||||
|
||||
void TabWidget::showTabBar()
|
||||
|
@ -437,41 +445,37 @@ void TabWidget::reloadAllTabs()
|
|||
|
||||
void TabWidget::stopTab(int index)
|
||||
{
|
||||
weView(index)->stop();
|
||||
}
|
||||
|
||||
void TabWidget::backTab(int index)
|
||||
{
|
||||
weView(index)->back();
|
||||
}
|
||||
|
||||
void TabWidget::forwardTab(int index)
|
||||
{
|
||||
weView(index)->forward();
|
||||
weTab(index)->stop();
|
||||
}
|
||||
|
||||
void TabWidget::closeAllButCurrent(int index)
|
||||
{
|
||||
WebTab* akt = qobject_cast<WebTab*>(widget(index));
|
||||
WebTab* akt = weTab(index);
|
||||
|
||||
foreach(WebTab * tab, allTabs(false)) {
|
||||
if (akt == widget(tab->view()->tabIndex())) {
|
||||
int tabIndex = tab->tabIndex();
|
||||
if (akt == widget(tabIndex)) {
|
||||
continue;
|
||||
}
|
||||
closeTab(tab->view()->tabIndex());
|
||||
closeTab(tabIndex);
|
||||
}
|
||||
}
|
||||
|
||||
int TabWidget::duplicateTab(int index)
|
||||
{
|
||||
const QUrl &url = weView(index)->url();
|
||||
WebView* view = weTab(index)->view();
|
||||
const QUrl &url = view->url();
|
||||
|
||||
QByteArray history;
|
||||
QDataStream tabHistoryStream(&history, QIODevice::WriteOnly);
|
||||
tabHistoryStream << *weView(index)->history();
|
||||
tabHistoryStream << *view->history();
|
||||
|
||||
int id = addView(url, tabText(index), Qz::NT_CleanNotSelectedTab);
|
||||
QNetworkRequest req(url);
|
||||
req.setRawHeader("Referer", url.toEncoded());
|
||||
|
||||
int id = addView(req, tabText(index), Qz::NT_CleanNotSelectedTab);
|
||||
QDataStream historyStream(history);
|
||||
historyStream >> *weView(id)->history();
|
||||
historyStream >> *weTab(id)->history();
|
||||
|
||||
return id;
|
||||
}
|
||||
|
@ -493,10 +497,8 @@ void TabWidget::restoreClosedTab()
|
|||
}
|
||||
|
||||
int index = addView(QUrl(), tab.title, Qz::NT_CleanSelectedTab, false, tab.position);
|
||||
QDataStream historyStream(tab.history);
|
||||
historyStream >> *weView(index)->history();
|
||||
|
||||
weView(index)->load(tab.url);
|
||||
WebTab* webTab = weTab(index);
|
||||
webTab->p_restoreTab(tab.url, tab.history);
|
||||
}
|
||||
|
||||
void TabWidget::restoreAllClosedTabs()
|
||||
|
@ -509,10 +511,8 @@ void TabWidget::restoreAllClosedTabs()
|
|||
|
||||
foreach(const ClosedTabsManager::Tab & tab, closedTabs) {
|
||||
int index = addView(QUrl(), tab.title, Qz::NT_CleanSelectedTab);
|
||||
QDataStream historyStream(tab.history);
|
||||
historyStream >> *weView(index)->history();
|
||||
|
||||
weView(index)->load(tab.url);
|
||||
WebTab* webTab = weTab(index);
|
||||
webTab->p_restoreTab(tab.url, tab.history);
|
||||
}
|
||||
|
||||
m_closedTabsManager->clearList();
|
||||
|
@ -561,12 +561,13 @@ QList<WebTab*> TabWidget::allTabs(bool withPinned)
|
|||
QList<WebTab*> allTabs;
|
||||
|
||||
for (int i = 0; i < count(); i++) {
|
||||
WebTab* tab = qobject_cast<WebTab*>(widget(i));
|
||||
WebTab* tab = weTab(i);
|
||||
if (!tab || (!withPinned && tab->isPinned())) {
|
||||
continue;
|
||||
}
|
||||
allTabs.append(tab);
|
||||
}
|
||||
|
||||
return allTabs;
|
||||
}
|
||||
|
||||
|
@ -578,9 +579,8 @@ void TabWidget::savePinnedTabs()
|
|||
QStringList tabs;
|
||||
QList<QByteArray> tabsHistory;
|
||||
for (int i = 0; i < count(); ++i) {
|
||||
if (TabbedWebView* tab = weView(i)) {
|
||||
WebTab* webTab = qobject_cast<WebTab*>(widget(i));
|
||||
if (!webTab || !webTab->isPinned()) {
|
||||
if (WebTab* tab = weTab(i)) {
|
||||
if (!tab->isPinned()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -630,16 +630,18 @@ void TabWidget::restorePinnedTabs()
|
|||
|
||||
QByteArray historyState = tabHistory.value(i);
|
||||
int addedIndex;
|
||||
|
||||
if (!historyState.isEmpty()) {
|
||||
addedIndex = addView(QUrl(), Qz::NT_CleanSelectedTab);
|
||||
QDataStream historyStream(historyState);
|
||||
historyStream >> *weView(addedIndex)->history();
|
||||
weView(addedIndex)->load(url);
|
||||
|
||||
weTab(i)->p_restoreTab(url, historyState);
|
||||
}
|
||||
else {
|
||||
addedIndex = addView(url);
|
||||
}
|
||||
WebTab* webTab = qobject_cast<WebTab*>(widget(addedIndex));
|
||||
|
||||
WebTab* webTab = weTab(addedIndex);
|
||||
|
||||
if (webTab) {
|
||||
webTab->setPinned(true);
|
||||
emit pinnedTabAdded();
|
||||
|
@ -652,72 +654,57 @@ void TabWidget::restorePinnedTabs()
|
|||
|
||||
QByteArray TabWidget::saveState()
|
||||
{
|
||||
QList<WebTab::SavedTab> tabList;
|
||||
|
||||
for (int i = 0; i < count(); ++i) {
|
||||
WebTab* webTab = weTab(i);
|
||||
if (!webTab || webTab->isPinned()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
WebTab::SavedTab tab(webTab);
|
||||
tabList.append(tab);
|
||||
}
|
||||
|
||||
QByteArray data;
|
||||
QDataStream stream(&data, QIODevice::WriteOnly);
|
||||
|
||||
QStringList tabs;
|
||||
QList<QByteArray> tabsHistory;
|
||||
for (int i = 0; i < count(); ++i) {
|
||||
if (TabbedWebView* tab = weView(i)) {
|
||||
WebTab* webTab = qobject_cast<WebTab*>(widget(i));
|
||||
if (webTab && webTab->isPinned()) {
|
||||
continue;
|
||||
}
|
||||
stream << tabList.count();
|
||||
|
||||
tabs.append(tab->url().toEncoded());
|
||||
if (tab->history()->count() != 0) {
|
||||
QByteArray tabHistory;
|
||||
QDataStream tabHistoryStream(&tabHistory, QIODevice::WriteOnly);
|
||||
tabHistoryStream << *tab->history();
|
||||
tabsHistory.append(tabHistory);
|
||||
}
|
||||
else {
|
||||
tabsHistory << QByteArray();
|
||||
}
|
||||
}
|
||||
else {
|
||||
tabs.append(QString::null);
|
||||
tabsHistory.append(QByteArray());
|
||||
}
|
||||
foreach(const WebTab::SavedTab & tab, tabList) {
|
||||
stream << tab;
|
||||
}
|
||||
stream << tabs;
|
||||
|
||||
stream << currentIndex();
|
||||
stream << tabsHistory;
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
bool TabWidget::restoreState(const QByteArray &state)
|
||||
bool TabWidget::restoreState(QByteArray &state)
|
||||
{
|
||||
QByteArray sd = state;
|
||||
QDataStream stream(&sd, QIODevice::ReadOnly);
|
||||
QDataStream stream(&state, QIODevice::ReadOnly);
|
||||
if (stream.atEnd()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
QStringList openTabs;
|
||||
int currentTab;
|
||||
QList<QByteArray> tabHistory;
|
||||
stream >> openTabs;
|
||||
stream >> currentTab;
|
||||
stream >> tabHistory;
|
||||
int tabListCount = 0;
|
||||
int currentTab = 0;
|
||||
|
||||
for (int i = 0; i < openTabs.count(); ++i) {
|
||||
QUrl url = QUrl::fromEncoded(openTabs.at(i).toUtf8());
|
||||
stream >> tabListCount;
|
||||
|
||||
QByteArray historyState = tabHistory.value(i);
|
||||
if (!historyState.isEmpty()) {
|
||||
int index = addView(QUrl(), Qz::NT_CleanSelectedTab);
|
||||
QDataStream historyStream(historyState);
|
||||
historyStream >> *weView(index)->history();
|
||||
weView(index)->load(url);
|
||||
}
|
||||
else {
|
||||
addView(url);
|
||||
}
|
||||
for (int i = 0; i < tabListCount; ++i) {
|
||||
WebTab::SavedTab tab;
|
||||
stream >> tab;
|
||||
|
||||
int index = addView(QUrl(), Qz::NT_CleanSelectedTab);
|
||||
weTab(index)->restoreTab(tab);
|
||||
}
|
||||
|
||||
stream >> currentTab;
|
||||
|
||||
setCurrentIndex(currentTab);
|
||||
currentTabChanged(currentTab);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
|
||||
#include <QTabWidget>
|
||||
#include <QUrl>
|
||||
#include <QNetworkRequest>
|
||||
|
||||
#include "toolbutton.h"
|
||||
#include "qz_namespace.h"
|
||||
|
@ -55,7 +56,7 @@ public:
|
|||
~TabWidget();
|
||||
|
||||
QByteArray saveState();
|
||||
bool restoreState(const QByteArray &state);
|
||||
bool restoreState(QByteArray &state);
|
||||
void savePinnedTabs();
|
||||
void restorePinnedTabs();
|
||||
|
||||
|
@ -81,7 +82,11 @@ signals:
|
|||
|
||||
public slots:
|
||||
int addView(const QUrl &url, const Qz::NewTabPositionFlags &openFlags, bool selectLine = false);
|
||||
int addView(QUrl url = QUrl(), const QString &title = tr("New tab"), const Qz::NewTabPositionFlags &openFlags = Qz::NT_SelectedTab, bool selectLine = false, int position = -1);
|
||||
int addView(const QNetworkRequest &req, const Qz::NewTabPositionFlags &openFlags, bool selectLine = false);
|
||||
|
||||
int addView(const QUrl &url, const QString &title = tr("New tab"), const Qz::NewTabPositionFlags &openFlags = Qz::NT_SelectedTab, bool selectLine = false, int position = -1);
|
||||
int addView(QNetworkRequest req, const QString &title = tr("New tab"), const Qz::NewTabPositionFlags &openFlags = Qz::NT_SelectedTab, bool selectLine = false, int position = -1);
|
||||
|
||||
int duplicateTab(int index);
|
||||
|
||||
void closeTab(int index = -1);
|
||||
|
@ -108,8 +113,9 @@ private slots:
|
|||
|
||||
private:
|
||||
void resizeEvent(QResizeEvent* e);
|
||||
inline TabbedWebView* weView();
|
||||
inline TabbedWebView* weView(int index);
|
||||
|
||||
WebTab* weTab();
|
||||
WebTab* weTab(int index);
|
||||
|
||||
bool m_hideTabBarWithOneTab;
|
||||
bool m_dontQuitWithOneTab;
|
||||
|
|
|
@ -22,8 +22,57 @@
|
|||
#include "tabbar.h"
|
||||
#include "tabwidget.h"
|
||||
#include "locationbar.h"
|
||||
#include "globalfunctions.h"
|
||||
#include "webviewsettings.h"
|
||||
|
||||
#include <QVBoxLayout>
|
||||
#include <QWebHistory>
|
||||
#include <QLabel>
|
||||
|
||||
WebTab::SavedTab::SavedTab(WebTab* webTab)
|
||||
{
|
||||
if (webTab->isRestored()) {
|
||||
WebView* view = webTab->view();
|
||||
|
||||
title = view->title();
|
||||
url = view->url();
|
||||
icon = view->icon();
|
||||
|
||||
QDataStream historyStream(&history, QIODevice::WriteOnly);
|
||||
historyStream << *view->history();
|
||||
}
|
||||
else {
|
||||
*this = webTab->savedTab();
|
||||
}
|
||||
}
|
||||
|
||||
void WebTab::SavedTab::clear()
|
||||
{
|
||||
title.clear();
|
||||
url.clear();
|
||||
icon = QIcon();
|
||||
history.clear();
|
||||
}
|
||||
|
||||
QDataStream &operator <<(QDataStream &stream, const WebTab::SavedTab &tab)
|
||||
{
|
||||
stream << tab.title;
|
||||
stream << tab.url;
|
||||
stream << tab.icon;
|
||||
stream << tab.history;
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
QDataStream &operator >>(QDataStream &stream, WebTab::SavedTab &tab)
|
||||
{
|
||||
stream >> tab.title;
|
||||
stream >> tab.url;
|
||||
stream >> tab.icon;
|
||||
stream >> tab.history;
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
WebTab::WebTab(QupZilla* mainClass, LocationBar* locationBar)
|
||||
: QWidget()
|
||||
|
@ -54,12 +103,71 @@ WebTab::WebTab(QupZilla* mainClass, LocationBar* locationBar)
|
|||
connect(m_locationBar.data(), SIGNAL(loadUrl(QUrl)), m_view, SLOT(load(QUrl)));
|
||||
}
|
||||
|
||||
TabbedWebView* WebTab::view()
|
||||
TabbedWebView* WebTab::view() const
|
||||
{
|
||||
return m_view;
|
||||
}
|
||||
|
||||
bool WebTab::isPinned()
|
||||
void WebTab::setCurrentTab()
|
||||
{
|
||||
if (!isRestored()) {
|
||||
p_restoreTab(m_savedTab);
|
||||
|
||||
m_savedTab.clear();
|
||||
}
|
||||
}
|
||||
|
||||
QUrl WebTab::url() const
|
||||
{
|
||||
if (isRestored()) {
|
||||
return m_view->url();
|
||||
}
|
||||
else {
|
||||
return m_savedTab.url;
|
||||
}
|
||||
}
|
||||
|
||||
QString WebTab::title() const
|
||||
{
|
||||
if (isRestored()) {
|
||||
return m_view->title();
|
||||
}
|
||||
else {
|
||||
return m_savedTab.title;
|
||||
}
|
||||
}
|
||||
|
||||
QIcon WebTab::icon() const
|
||||
{
|
||||
if (isRestored()) {
|
||||
return m_view->icon();
|
||||
}
|
||||
else {
|
||||
return m_savedTab.icon;
|
||||
}
|
||||
}
|
||||
|
||||
QWebHistory* WebTab::history() const
|
||||
{
|
||||
return m_view->history();
|
||||
}
|
||||
|
||||
void WebTab::reload()
|
||||
{
|
||||
m_view->reload();
|
||||
}
|
||||
|
||||
void WebTab::stop()
|
||||
{
|
||||
m_view->stop();
|
||||
}
|
||||
|
||||
bool WebTab::isLoading() const
|
||||
{
|
||||
return m_view->isLoading();
|
||||
}
|
||||
|
||||
bool WebTab::isPinned() const
|
||||
{
|
||||
return m_pinned;
|
||||
}
|
||||
|
@ -74,12 +182,12 @@ void WebTab::setLocationBar(LocationBar* bar)
|
|||
m_locationBar = bar;
|
||||
}
|
||||
|
||||
LocationBar* WebTab::locationBar()
|
||||
LocationBar* WebTab::locationBar() const
|
||||
{
|
||||
return m_locationBar.data();
|
||||
}
|
||||
|
||||
bool WebTab::inspectorVisible()
|
||||
bool WebTab::inspectorVisible() const
|
||||
{
|
||||
return m_inspectorVisible;
|
||||
}
|
||||
|
@ -89,6 +197,45 @@ void WebTab::setInspectorVisible(bool v)
|
|||
m_inspectorVisible = v;
|
||||
}
|
||||
|
||||
WebTab::SavedTab WebTab::savedTab() const
|
||||
{
|
||||
return m_savedTab;
|
||||
}
|
||||
|
||||
bool WebTab::isRestored() const
|
||||
{
|
||||
return m_savedTab.isEmpty();
|
||||
}
|
||||
|
||||
void WebTab::restoreTab(const WebTab::SavedTab &tab)
|
||||
{
|
||||
if (WebViewSettings::loadTabsOnActivation) {
|
||||
m_savedTab = tab;
|
||||
int index = tabIndex();
|
||||
|
||||
m_view->animationLoading(index, false)->setPixmap(tab.icon.pixmap(16, 16));
|
||||
m_view->tabWidget()->setTabText(index, tab.title);
|
||||
m_locationBar.data()->showUrl(tab.url);
|
||||
}
|
||||
else {
|
||||
p_restoreTab(tab);
|
||||
}
|
||||
}
|
||||
|
||||
void WebTab::p_restoreTab(const QUrl &url, const QByteArray &history)
|
||||
{
|
||||
QDataStream historyStream(history);
|
||||
historyStream >> *m_view->history();
|
||||
|
||||
m_view->load(url);
|
||||
}
|
||||
|
||||
void WebTab::p_restoreTab(const WebTab::SavedTab &tab)
|
||||
{
|
||||
p_restoreTab(tab.url, tab.history);
|
||||
}
|
||||
|
||||
|
||||
void WebTab::showNotification(QWidget* notif)
|
||||
{
|
||||
if (m_layout->count() > 1) {
|
||||
|
@ -99,7 +246,7 @@ void WebTab::showNotification(QWidget* notif)
|
|||
notif->show();
|
||||
}
|
||||
|
||||
int WebTab::tabIndex()
|
||||
int WebTab::tabIndex() const
|
||||
{
|
||||
return m_view->tabIndex();
|
||||
}
|
||||
|
|
|
@ -20,45 +20,87 @@
|
|||
|
||||
#include <QWidget>
|
||||
#include <QWeakPointer>
|
||||
#include <QIcon>
|
||||
#include <QUrl>
|
||||
|
||||
#include "qz_namespace.h"
|
||||
|
||||
class QVBoxLayout;
|
||||
class QWebHistory;
|
||||
|
||||
class QupZilla;
|
||||
class LocationBar;
|
||||
class WebView;
|
||||
class TabbedWebView;
|
||||
|
||||
class QT_QUPZILLA_EXPORT WebTab : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
struct SavedTab {
|
||||
QString title;
|
||||
QUrl url;
|
||||
QIcon icon;
|
||||
QByteArray history;
|
||||
|
||||
SavedTab() { }
|
||||
SavedTab(WebTab* webTab);
|
||||
|
||||
bool isEmpty() const { return url.isEmpty(); }
|
||||
void clear();
|
||||
|
||||
friend QT_QUPZILLA_EXPORT QDataStream &operator<<(QDataStream &stream, const SavedTab &tab);
|
||||
friend QT_QUPZILLA_EXPORT QDataStream &operator>>(QDataStream &stream, SavedTab &tab);
|
||||
};
|
||||
|
||||
explicit WebTab(QupZilla* mainClass, LocationBar* locationBar);
|
||||
~WebTab();
|
||||
TabbedWebView* view();
|
||||
bool isPinned();
|
||||
|
||||
TabbedWebView* view() const;
|
||||
void setCurrentTab();
|
||||
|
||||
QUrl url() const;
|
||||
QString title() const;
|
||||
QIcon icon() const;
|
||||
QWebHistory* history() const;
|
||||
|
||||
void reload();
|
||||
void stop();
|
||||
bool isLoading() const;
|
||||
|
||||
bool isPinned() const;
|
||||
void pinTab(int index);
|
||||
void setPinned(bool state);
|
||||
|
||||
void setLocationBar(LocationBar* bar);
|
||||
LocationBar* locationBar();
|
||||
int tabIndex() const;
|
||||
|
||||
bool inspectorVisible();
|
||||
void setLocationBar(LocationBar* bar);
|
||||
LocationBar* locationBar() const;
|
||||
|
||||
bool inspectorVisible() const;
|
||||
void setInspectorVisible(bool v);
|
||||
|
||||
SavedTab savedTab() const;
|
||||
bool isRestored() const;
|
||||
|
||||
void restoreTab(const SavedTab &tab);
|
||||
|
||||
void p_restoreTab(const SavedTab &tab);
|
||||
void p_restoreTab(const QUrl &url, const QByteArray &history);
|
||||
|
||||
void disconnectObjects();
|
||||
|
||||
private slots:
|
||||
void showNotification(QWidget* notif);
|
||||
|
||||
private:
|
||||
int tabIndex();
|
||||
|
||||
QupZilla* p_QupZilla;
|
||||
TabbedWebView* m_view;
|
||||
QVBoxLayout* m_layout;
|
||||
QWeakPointer<LocationBar> m_locationBar;
|
||||
|
||||
SavedTab m_savedTab;
|
||||
|
||||
bool m_pinned;
|
||||
bool m_inspectorVisible;
|
||||
};
|
||||
|
|
|
@ -116,6 +116,13 @@ void WebView::setPage(QWebPage* page)
|
|||
|
||||
void WebView::load(const QUrl &url)
|
||||
{
|
||||
load(QNetworkRequest(url));
|
||||
}
|
||||
|
||||
void WebView::load(const QNetworkRequest &request, QNetworkAccessManager::Operation operation, const QByteArray &body)
|
||||
{
|
||||
const QUrl &url = request.url();
|
||||
|
||||
if (url.scheme() == "javascript") {
|
||||
// Getting scriptSource from PercentEncoding to properly load bookmarklets
|
||||
QString scriptSource = QUrl::fromPercentEncoding(url.toString().mid(11).toUtf8());
|
||||
|
@ -124,7 +131,7 @@ void WebView::load(const QUrl &url)
|
|||
}
|
||||
|
||||
if (isUrlValid(url)) {
|
||||
QWebView::load(url);
|
||||
QWebView::load(request, operation, body);
|
||||
emit urlChanged(url);
|
||||
m_aboutToLoadUrl = url;
|
||||
return;
|
||||
|
@ -132,8 +139,10 @@ void WebView::load(const QUrl &url)
|
|||
|
||||
const QUrl &searchUrl = mApp->searchEnginesManager()->searchUrl(url.toString());
|
||||
QWebView::load(searchUrl);
|
||||
|
||||
emit urlChanged(searchUrl);
|
||||
m_aboutToLoadUrl = searchUrl;
|
||||
|
||||
}
|
||||
|
||||
bool WebView::isLoading() const
|
||||
|
@ -504,7 +513,7 @@ bool WebView::isMediaElement(const QWebElement &element)
|
|||
return (element.tagName().toLower() == "video" || element.tagName().toLower() == "audio");
|
||||
}
|
||||
|
||||
void WebView::checkForForm(QMenu *menu, const QWebElement &element)
|
||||
void WebView::checkForForm(QMenu* menu, const QWebElement &element)
|
||||
{
|
||||
QWebElement parentElement = element.parent();
|
||||
|
||||
|
|
|
@ -36,6 +36,8 @@ public:
|
|||
|
||||
void setPage(QWebPage* page);
|
||||
|
||||
void load(const QNetworkRequest &request, QNetworkAccessManager::Operation operation = QNetworkAccessManager::GetOperation, const QByteArray &body = QByteArray());
|
||||
|
||||
bool isLoading() const;
|
||||
int loadProgress() const;
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include "settings.h"
|
||||
|
||||
int WebViewSettings::defaultZoom = 100;
|
||||
bool WebViewSettings::loadTabsOnActivation = false;
|
||||
|
||||
WebViewSettings::WebViewSettings()
|
||||
{
|
||||
|
@ -11,7 +12,9 @@ void WebViewSettings::loadSettings()
|
|||
{
|
||||
Settings settings;
|
||||
settings.beginGroup("Web-Browser-Settings");
|
||||
|
||||
defaultZoom = settings.value("DefaultZoom", 100).toInt();
|
||||
loadTabsOnActivation = settings.value("LoadTabsOnActivation", false).toBool();
|
||||
|
||||
settings.endGroup();
|
||||
}
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ public:
|
|||
static void loadSettings();
|
||||
|
||||
static int defaultZoom;
|
||||
static bool loadTabsOnActivation;
|
||||
};
|
||||
|
||||
#endif // WEBVIEWSETTINGS_H
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
QT += webkit
|
||||
TARGET = AccessKeysNavigation
|
||||
os2: TARGET = AcKeyNav
|
||||
|
||||
SOURCES = \
|
||||
akn_plugin.cpp \
|
||||
|
@ -18,9 +19,10 @@ RESOURCES = akn_res.qrc
|
|||
|
||||
TRANSLATIONS = \
|
||||
translations/cs_CZ.ts \
|
||||
translations/de_DE.ts \
|
||||
translations/nl_NL.ts \
|
||||
translations/sr_BA.ts \
|
||||
translations/sr_RS.ts \
|
||||
translations/de_DE.ts \
|
||||
translations/zh_TW.ts \
|
||||
|
||||
include(../../plugins.pri)
|
||||
|
|
|
@ -206,11 +206,6 @@ void AKN_Handler::showAccessKeys()
|
|||
|
||||
QWebPage* page = m_view->page();
|
||||
|
||||
// Install event filter and connect loadStarted
|
||||
m_accessKeysVisible = true;
|
||||
qApp->installEventFilter(this);
|
||||
connect(m_view, SIGNAL(loadStarted()), this, SLOT(hideAccessKeys()));
|
||||
|
||||
QStringList supportedElement;
|
||||
supportedElement << QLatin1String("input")
|
||||
<< QLatin1String("a")
|
||||
|
@ -291,6 +286,13 @@ void AKN_Handler::showAccessKeys()
|
|||
makeAccessKeyLabel(accessKey, element);
|
||||
}
|
||||
}
|
||||
|
||||
// Install event filter and connect loadStarted
|
||||
m_accessKeysVisible = !m_accessKeyLabels.isEmpty();
|
||||
if (m_accessKeysVisible) {
|
||||
qApp->installEventFilter(this);
|
||||
connect(m_view, SIGNAL(loadStarted()), this, SLOT(hideAccessKeys()));
|
||||
}
|
||||
}
|
||||
|
||||
void AKN_Handler::hideAccessKeys()
|
||||
|
|
|
@ -35,7 +35,7 @@ PluginSpec AKN_Plugin::pluginSpec()
|
|||
spec.name = "Access Keys Navigation";
|
||||
spec.info = "Access keys navigation for QupZilla";
|
||||
spec.description = "Provides support for navigating in webpages by keyboard shortcuts";
|
||||
spec.version = "0.1.0";
|
||||
spec.version = "0.2.0";
|
||||
spec.author = "David Rosca <nowrep@gmail.com>";
|
||||
spec.icon = QPixmap(":/accesskeysnavigation/data/icon.png");
|
||||
spec.hasSettings = true;
|
||||
|
|
|
@ -3,9 +3,10 @@
|
|||
<file>data/icon.png</file>
|
||||
<file>data/copyright</file>
|
||||
<file>locale/cs_CZ.qm</file>
|
||||
<file>locale/de_DE.qm</file>
|
||||
<file>locale/nl_NL.qm</file>
|
||||
<file>locale/sr_BA.qm</file>
|
||||
<file>locale/sr_RS.qm</file>
|
||||
<file>locale/de_DE.qm</file>
|
||||
<file>locale/zh_TW.qm</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
|
47
src/plugins/AccessKeysNavigation/translations/nl_NL.ts
Normal file
47
src/plugins/AccessKeysNavigation/translations/nl_NL.ts
Normal file
|
@ -0,0 +1,47 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.0" language="nl">
|
||||
<context>
|
||||
<name>AKN_Settings</name>
|
||||
<message>
|
||||
<location filename="../akn_settings.ui" line="14"/>
|
||||
<source>Access Keys Navigation</source>
|
||||
<translation>Navigatietoetsen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../akn_settings.ui" line="20"/>
|
||||
<source><h1>Access Keys Navigation</h1></source>
|
||||
<translation><h1>Navigatietoetsen</h1></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../akn_settings.ui" line="33"/>
|
||||
<source>Ctrl</source>
|
||||
<translation>Ctrl</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../akn_settings.ui" line="38"/>
|
||||
<source>Alt</source>
|
||||
<translation>Alt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../akn_settings.ui" line="43"/>
|
||||
<source>Shift</source>
|
||||
<translation>Shift</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../akn_settings.ui" line="51"/>
|
||||
<source>Double press</source>
|
||||
<translation>Twee keer indrukken</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../akn_settings.ui" line="58"/>
|
||||
<source>Key for showing access keys:</source>
|
||||
<translation>Toets om navigatietoetsen te tonen:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../akn_settings.ui" line="103"/>
|
||||
<source>Licence</source>
|
||||
<translation>Licentie</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
|
@ -1,5 +1,6 @@
|
|||
QT += network webkit
|
||||
TARGET = MouseGestures
|
||||
os2: TARGET = MouseGes
|
||||
|
||||
INCLUDEPATH = 3rdparty
|
||||
|
||||
|
@ -27,6 +28,7 @@ RESOURCES = mousegestures.qrc
|
|||
TRANSLATIONS = \
|
||||
translations/cs_CZ.ts \
|
||||
translations/de_DE.ts \
|
||||
translations/nl_NL.ts \
|
||||
translations/sk_SK.ts \
|
||||
translations/sr_BA.ts \
|
||||
translations/sr_RS.ts \
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
<file>data/copyright</file>
|
||||
<file>locale/cs_CZ.qm</file>
|
||||
<file>locale/de_DE.qm</file>
|
||||
<file>locale/nl_NL.qm</file>
|
||||
<file>locale/sk_SK.qm</file>
|
||||
<file>locale/sr_BA.qm</file>
|
||||
<file>locale/sr_RS.qm</file>
|
||||
|
|
62
src/plugins/MouseGestures/translations/nl_NL.ts
Normal file
62
src/plugins/MouseGestures/translations/nl_NL.ts
Normal file
|
@ -0,0 +1,62 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.0" language="nl">
|
||||
<context>
|
||||
<name>MouseGesturesSettingsDialog</name>
|
||||
<message>
|
||||
<location filename="../mousegesturessettingsdialog.ui" line="14"/>
|
||||
<source>Mouse Gestures</source>
|
||||
<translation>Muisgebaren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mousegesturessettingsdialog.ui" line="42"/>
|
||||
<source><h1>Mouse Gestures</h1></source>
|
||||
<translation><h1>Muisgebaren</h1></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mousegesturessettingsdialog.ui" line="64"/>
|
||||
<source>Press and hold the middle mouse button and move your mouse in the indicated directions.</source>
|
||||
<translation>Klik en houdt de middelste muisknop vast en verplaats uw muis in the aangegeven richtingen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mousegesturessettingsdialog.ui" line="111"/>
|
||||
<source><b>Stop</b><br/>Stop loading page</source>
|
||||
<translation><b>Stop</b><br/>Stop laden van website</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mousegesturessettingsdialog.ui" line="125"/>
|
||||
<source><b>New tab</b><br/>Open new tab</source>
|
||||
<translation><b>Nieuw tabblad</b><br/>Open nieuw tabblad</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mousegesturessettingsdialog.ui" line="139"/>
|
||||
<source><b>Back</b><br/>Go back in history</source>
|
||||
<translation><b>Terug</b><br/>Ga naar vorige pagina in geschiedenis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mousegesturessettingsdialog.ui" line="153"/>
|
||||
<source><b>Forward</b><br/>Go forward in history</source>
|
||||
<translation><b>Vooruit</b><br/>Ga naar volgende pagina in geschiedenis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mousegesturessettingsdialog.ui" line="173"/>
|
||||
<source><b>Reload</b><br/>Reload page</source>
|
||||
<translation><b>Herlaad</b><br/>Laad pagina opnieuw</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mousegesturessettingsdialog.ui" line="187"/>
|
||||
<source><b>Close tab</b><br/>Close current tab</source>
|
||||
<translation><b>Sluit tabblad</b><br/>Sluit actueel tabblad</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mousegesturessettingsdialog.ui" line="201"/>
|
||||
<source><b>Home</b><br/>Go to homepage</source>
|
||||
<translation><b>Startpagina</b><br/>Ga naar uw startpagina</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mousegesturessettingsdialog.ui" line="225"/>
|
||||
<source>License</source>
|
||||
<translation>Licentie</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
|
@ -5,18 +5,21 @@
|
|||
#-------------------------------------------------
|
||||
QT += network webkit
|
||||
TARGET = TestPlugin
|
||||
# OS/2 allows only 8 chars in TARGET
|
||||
os2: TARGET = TestPlug
|
||||
|
||||
SOURCES += testplugin.cpp
|
||||
HEADERS += testplugin.h
|
||||
RESOURCES += testplugin.qrc
|
||||
|
||||
TRANSLATIONS += translations/cs_CZ.ts\
|
||||
translations/sk_SK.ts\
|
||||
translations/sr_BA.ts\
|
||||
translations/sr_RS.ts\
|
||||
translations/de_DE.ts\
|
||||
translations/el_GR.ts\
|
||||
translations/id_ID.ts\
|
||||
translations/nl_NL.ts\
|
||||
translations/sk_SK.ts\
|
||||
translations/sr_BA.ts\
|
||||
translations/sr_RS.ts\
|
||||
translations/zh_CN.ts\
|
||||
translations/zh_TW.ts\
|
||||
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
<file>locale/cs_CZ.qm</file>
|
||||
<file>locale/de_DE.qm</file>
|
||||
<file>locale/el_GR.qm</file>
|
||||
<file>locale/id_ID.qm</file>
|
||||
<file>locale/nl_NL.qm</file>
|
||||
<file>locale/sk_SK.qm</file>
|
||||
<file>locale/sr_BA.qm</file>
|
||||
<file>locale/sr_RS.qm</file>
|
||||
|
|
32
src/plugins/TestPlugin/translations/nl_NL.ts
Normal file
32
src/plugins/TestPlugin/translations/nl_NL.ts
Normal file
|
@ -0,0 +1,32 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.0" language="nl" sourcelanguage="en_US">
|
||||
<context>
|
||||
<name>TestPlugin</name>
|
||||
<message>
|
||||
<location filename="../testplugin.cpp" line="92"/>
|
||||
<source>Close</source>
|
||||
<translation>Sluit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../testplugin.cpp" line="103"/>
|
||||
<source>Example Plugin Settings</source>
|
||||
<translation>Voorbeeldplugin-instellingen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../testplugin.cpp" line="127"/>
|
||||
<source>My first plugin action</source>
|
||||
<translation>Mijn eerste plugin-actie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../testplugin.cpp" line="139"/>
|
||||
<source>Hello</source>
|
||||
<translation>Hallo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../testplugin.cpp" line="139"/>
|
||||
<source>First plugin action works :-)</source>
|
||||
<translation>Eerste plugin-actie werkt :-)</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
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
|
@ -1212,6 +1212,10 @@
|
|||
<source>Choose icon...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Image files</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>HistoryManager</name>
|
||||
|
@ -2217,6 +2221,10 @@
|
|||
<source>Allow Netscape Plugins (Flash plugin)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Don't load tabs until selected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QObject</name>
|
||||
|
@ -2893,6 +2901,38 @@
|
|||
<source>No available plugins.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Build Configuration</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Disabled</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><b>Enabled</b></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Debug build</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>WebGL support</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Windows 7 API</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KDE integration</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Portable build</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RSSManager</name>
|
||||
|
@ -3465,6 +3505,10 @@ After adding or removing certificate paths, it is neccessary to restart QupZilla
|
|||
<source>Unable to load</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Image files</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TabBar</name>
|
||||
|
|
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
4122
translations/ja_JP.ts
Normal file
4122
translations/ja_JP.ts
Normal file
File diff suppressed because it is too large
Load Diff
|
@ -1214,6 +1214,10 @@
|
|||
<source>Choose icon...</source>
|
||||
<translation>ხატულის არჩევა...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Image files</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>HistoryManager</name>
|
||||
|
@ -2228,6 +2232,10 @@
|
|||
<source>Allow Netscape Plugins (Flash plugin)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Don't load tabs until selected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QObject</name>
|
||||
|
@ -2904,6 +2912,38 @@
|
|||
<source>No available plugins.</source>
|
||||
<translation>ხელმისაწვდომი მოდულები არ არის.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Build Configuration</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Disabled</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><b>Enabled</b></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Debug build</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>WebGL support</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Windows 7 API</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KDE integration</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Portable build</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RSSManager</name>
|
||||
|
@ -3477,6 +3517,10 @@ After adding or removing certificate paths, it is neccessary to restart QupZilla
|
|||
<source>Unable to load</source>
|
||||
<translation>ჩატვირთვა ვერ მოხერხდა</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Image files</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TabBar</name>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1242,6 +1242,10 @@ não foi encontrado!</translation>
|
|||
<source><b>Note: </b>%s in url represent searched string</source>
|
||||
<translation><b>Observação: </b>%s no url representa o texto procurado</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Image files</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>HistoryManager</name>
|
||||
|
@ -2264,6 +2268,10 @@ não foi encontrado!</translation>
|
|||
<source>Allow Netscape Plugins (Flash plugin)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Don't load tabs until selected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QObject</name>
|
||||
|
@ -2944,6 +2952,38 @@ não foi encontrado!</translation>
|
|||
<source>No available plugins.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Build Configuration</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Disabled</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><b>Enabled</b></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Debug build</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>WebGL support</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Windows 7 API</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KDE integration</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Portable build</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RSSManager</name>
|
||||
|
@ -3518,6 +3558,10 @@ Após adicionar ou remover os caminhos dos certificados, você terá que reinici
|
|||
<source>Unable to load</source>
|
||||
<translation>Não foi possível carregar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Image files</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TabBar</name>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1242,6 +1242,10 @@
|
|||
<source><b>Note: </b>%s in url represent searched string</source>
|
||||
<translation><b>Poznámka: </b>%s v url reprezentuje hľadaný reťazec</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Image files</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>HistoryManager</name>
|
||||
|
@ -2260,6 +2264,10 @@
|
|||
<source>Allow Netscape Plugins (Flash plugin)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Don't load tabs until selected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QObject</name>
|
||||
|
@ -2940,6 +2948,38 @@
|
|||
<source>This page contains information about QupZilla's current configuration, plugins, etc, all relevant information for troubleshooting. Please include these information when sending bug reports.</source>
|
||||
<translation>Táto stránka obsahuje informácie o aktuálnej konfigurácií QupZilly, pluginov a všetkých dôležitých informáciach na riešenie problémov. Prosím, priložte tieto informácie k hlásenému problému.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Build Configuration</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Disabled</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><b>Enabled</b></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Debug build</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>WebGL support</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Windows 7 API</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KDE integration</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Portable build</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RSSManager</name>
|
||||
|
@ -3514,6 +3554,10 @@ Po pridaní či odobratí ciest k certifikátom je nutné reštartovať prehliad
|
|||
<source>Select image...</source>
|
||||
<translation>Zvoliť obrázok...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Image files</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TabBar</name>
|
||||
|
|
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
|
@ -17,6 +17,7 @@ TRANSLATIONS += $$PWD/cs_CZ.ts\
|
|||
$$PWD/sv_SE.ts\
|
||||
$$PWD/id_ID.ts\
|
||||
$$PWD/ka_GE.ts\
|
||||
$$PWD/ja_JP.ts\
|
||||
|
||||
include(../src/defines.pri)
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user