1
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:
w41l 2012-03-12 17:34:02 +07:00
commit 8d22df25ec
74 changed files with 11724 additions and 5969 deletions

View File

@ -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:

View File

@ -86,7 +86,7 @@ Available Defines
(disabled by default)
example:
$ export NONBLOCK_JS_DIALOGS="true"
$ export NONBLOCK_JS_DIALOGS="true"
Windows specific defines:

View File

@ -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

Binary file not shown.

0
scripts/getrevision.sh Normal file → Executable file
View File

View 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)

View File

@ -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()
{

View File

@ -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);

View File

@ -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;

View File

@ -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">

View File

@ -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)

View File

@ -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)

View File

@ -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;

View File

@ -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;

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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);

View File

@ -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 &lt;%2&gt;</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);
}

View File

@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>271</width>
<width>381</width>
<height>440</height>
</rect>
</property>

View File

@ -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)

View File

@ -28,8 +28,6 @@ namespace Ui
class PageScreen;
}
class QAbstractButton;
class WebView;
class QT_QUPZILLA_EXPORT PageScreen : public QDialog

View File

@ -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)

View File

@ -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();
}
}

View File

@ -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:

View File

@ -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();
}

View File

@ -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() : "");

View File

@ -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>&lt;b&gt;Profiles&lt;/b&gt;</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>&lt;b&gt;Language&lt;/b&gt;</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>&lt;b&gt;Cookies&lt;/b&gt;</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>&lt;b&gt;Other&lt;/b&gt;</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>&lt;b&gt;Cookies&lt;/b&gt;</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>&lt;b&gt;Warning:&lt;/b&gt; 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>&lt;b&gt;SSL Certificates&lt;/b&gt;</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>&lt;b&gt;Other&lt;/b&gt;</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>&lt;b&gt;SSL Certificates&lt;/b&gt;</string>
</property>
</widget>
</item>
<item row="14" column="0" colspan="5">
<widget class="QLabel" name="label_19">
<property name="text">
<string>&lt;b&gt;Warning:&lt;/b&gt; 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>

View File

@ -213,3 +213,10 @@ void TreeWidget::deleteItem(QTreeWidgetItem* item)
delete item;
}
void TreeWidget::deleteItems(const QList<QTreeWidgetItem*> &items)
{
m_refreshAllItemsNeeded = true;
qDeleteAll(items);
}

View File

@ -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);

View File

@ -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());
}
}
}

View File

@ -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)

View File

@ -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:

View File

@ -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;
}

View File

@ -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;

View File

@ -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();
}

View File

@ -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;
};

View File

@ -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();

View File

@ -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;

View File

@ -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();
}

View File

@ -11,6 +11,7 @@ public:
static void loadSettings();
static int defaultZoom;
static bool loadTabsOnActivation;
};
#endif // WEBVIEWSETTINGS_H

View File

@ -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)

View File

@ -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()

View File

@ -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;

View File

@ -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>

View 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>&lt;h1&gt;Access Keys Navigation&lt;/h1&gt;</source>
<translation>&lt;h1&gt;Navigatietoetsen&lt;/h1&gt;</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>

View File

@ -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 \

View File

@ -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>

View 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>&lt;h1&gt;Mouse Gestures&lt;/h1&gt;</source>
<translation>&lt;h1&gt;Muisgebaren&lt;/h1&gt;</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>&lt;b&gt;Stop&lt;/b&gt;&lt;br/&gt;Stop loading page</source>
<translation>&lt;b&gt;Stop&lt;/b&gt;&lt;br/&gt;Stop laden van website</translation>
</message>
<message>
<location filename="../mousegesturessettingsdialog.ui" line="125"/>
<source>&lt;b&gt;New tab&lt;/b&gt;&lt;br/&gt;Open new tab</source>
<translation>&lt;b&gt;Nieuw tabblad&lt;/b&gt;&lt;br/&gt;Open nieuw tabblad</translation>
</message>
<message>
<location filename="../mousegesturessettingsdialog.ui" line="139"/>
<source>&lt;b&gt;Back&lt;/b&gt;&lt;br/&gt;Go back in history</source>
<translation>&lt;b&gt;Terug&lt;/b&gt;&lt;br/&gt;Ga naar vorige pagina in geschiedenis</translation>
</message>
<message>
<location filename="../mousegesturessettingsdialog.ui" line="153"/>
<source>&lt;b&gt;Forward&lt;/b&gt;&lt;br/&gt;Go forward in history</source>
<translation>&lt;b&gt;Vooruit&lt;/b&gt;&lt;br/&gt;Ga naar volgende pagina in geschiedenis</translation>
</message>
<message>
<location filename="../mousegesturessettingsdialog.ui" line="173"/>
<source>&lt;b&gt;Reload&lt;/b&gt;&lt;br/&gt;Reload page</source>
<translation>&lt;b&gt;Herlaad&lt;/b&gt;&lt;br/&gt;Laad pagina opnieuw</translation>
</message>
<message>
<location filename="../mousegesturessettingsdialog.ui" line="187"/>
<source>&lt;b&gt;Close tab&lt;/b&gt;&lt;br/&gt;Close current tab</source>
<translation>&lt;b&gt;Sluit tabblad&lt;/b&gt;&lt;br/&gt;Sluit actueel tabblad</translation>
</message>
<message>
<location filename="../mousegesturessettingsdialog.ui" line="201"/>
<source>&lt;b&gt;Home&lt;/b&gt;&lt;br/&gt;Go to homepage</source>
<translation>&lt;b&gt;Startpagina&lt;/b&gt;&lt;br/&gt;Ga naar uw startpagina</translation>
</message>
<message>
<location filename="../mousegesturessettingsdialog.ui" line="225"/>
<source>License</source>
<translation>Licentie</translation>
</message>
</context>
</TS>

View File

@ -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\

View File

@ -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>

View 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

View File

@ -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&apos;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>&lt;b&gt;Enabled&lt;/b&gt;</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

File diff suppressed because it is too large Load Diff

View File

@ -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&apos;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>&lt;b&gt;Enabled&lt;/b&gt;</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

View File

@ -1242,6 +1242,10 @@ não foi encontrado!</translation>
<source>&lt;b&gt;Note: &lt;/b&gt;%s in url represent searched string</source>
<translation>&lt;b&gt;Observação: &lt;/b&gt;%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&apos;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>&lt;b&gt;Enabled&lt;/b&gt;</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

View File

@ -1242,6 +1242,10 @@
<source>&lt;b&gt;Note: &lt;/b&gt;%s in url represent searched string</source>
<translation>&lt;b&gt;Poznámka: &lt;/b&gt;%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&apos;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&apos;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>&lt;b&gt;Enabled&lt;/b&gt;</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

View File

@ -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