1
mirror of https://invent.kde.org/network/falkon.git synced 2024-12-20 02:36:34 +01:00

Merge branch 'master' into anmolgautam

This commit is contained in:
Anmol Gautam 2018-07-22 19:20:17 +05:30
commit 90757e8846
88 changed files with 961 additions and 500 deletions

View File

@ -67,36 +67,36 @@ void AdBlockTest::parseRegExpFilterTest_data()
QTest::addColumn<QString>("parsedFilter");
QTest::addColumn<QStringList>("result");
QTest::newRow("test1") << "||doubleclick.net/pfadx/tmg.telegraph."
<< (QStringList() << "doubleclick.net/pfadx/tmg.telegraph.");
QTest::newRow("test2") << "||doubleclick.net/pfadx/*.mtvi"
<< (QStringList() << "doubleclick.net/pfadx/" << ".mtvi");
QTest::newRow("test3") << "&prvtof=*&poru="
<< (QStringList() << "&prvtof=" << "&poru=");
QTest::newRow("test4") << "/addyn|*;adtech;"
<< (QStringList() << "/addyn" << ";adtech;");
QTest::newRow("test5") << "/eas_fif.html^"
<< (QStringList() << "/eas_fif.html");
QTest::newRow("test6") << "://findnsave.^.*/api/groupon.json?"
<< (QStringList() << "://findnsave." << "/api/groupon.json?");
QTest::newRow("test7") << "^fp=*&prvtof="
<< (QStringList() << "fp=" << "&prvtof=");
QTest::newRow("test8") << "|http://ax-d.*/jstag^"
<< (QStringList() << "http://ax-d." << "/jstag");
QTest::newRow("test9") << "||reuters.com^*/rcom-wt-mlt.js"
<< (QStringList() << "reuters.com" <<"/rcom-wt-mlt.js");
QTest::newRow("test10") << "||chip.de^*/tracking.js"
<< (QStringList() << "chip.de" << "/tracking.js");
QTest::newRow("ignore1char") << "/search.php?uid=*.*&src="
<< (QStringList() << "/search.php?uid=" << "&src=");
QTest::newRow("ignoreDuplicates") << "/search.*.dup.*.dup.*&src="
<< (QStringList() << "/search." << ".dup." << "&src=");
QTest::newRow("test1") << QSL("||doubleclick.net/pfadx/tmg.telegraph.")
<< (QStringList() << QSL("doubleclick.net/pfadx/tmg.telegraph."));
QTest::newRow("test2") << QSL("||doubleclick.net/pfadx/*.mtvi")
<< (QStringList() << QSL("doubleclick.net/pfadx/") << QSL(".mtvi"));
QTest::newRow("test3") << QSL("&prvtof=*&poru=")
<< (QStringList() << QSL("&prvtof=") << QSL("&poru="));
QTest::newRow("test4") << QSL("/addyn|*;adtech;")
<< (QStringList() << QSL("/addyn") << QSL(";adtech;"));
QTest::newRow("test5") << QSL("/eas_fif.html^")
<< (QStringList() << QSL("/eas_fif.html"));
QTest::newRow("test6") << QSL("://findnsave.^.*/api/groupon.json?")
<< (QStringList() << QSL("://findnsave.") << QSL("/api/groupon.json?"));
QTest::newRow("test7") << QSL("^fp=*&prvtof=")
<< (QStringList() << QSL("fp=") << QSL("&prvtof="));
QTest::newRow("test8") << QSL("|http://ax-d.*/jstag^")
<< (QStringList() << QSL("http://ax-d.") << QSL("/jstag"));
QTest::newRow("test9") << QSL("||reuters.com^*/rcom-wt-mlt.js")
<< (QStringList() << QSL("reuters.com") <<QSL("/rcom-wt-mlt.js"));
QTest::newRow("test10") << QSL("||chip.de^*/tracking.js")
<< (QStringList() << QSL("chip.de") << QSL("/tracking.js"));
QTest::newRow("ignore1char") << QSL("/search.php?uid=*.*&src=")
<< (QStringList() << QSL("/search.php?uid=") << QSL("&src="));
QTest::newRow("ignoreDuplicates") << QSL("/search.*.dup.*.dup.*&src=")
<< (QStringList() << QSL("/search.") << QSL(".dup.") << QSL("&src="));
QTest::newRow("empty") << QString()
<< (QStringList());
QTest::newRow("justspaces") << QString(" ")
<< (QStringList() << " ");
QTest::newRow("spacesWithMetachars") << QString(" * ?")
<< (QStringList() << " " << " ?");
QTest::newRow("justspaces") << QSL(" ")
<< (QStringList() << QSL(" "));
QTest::newRow("spacesWithMetachars") << QSL(" * ?")
<< (QStringList() << QSL(" ") << QSL(" ?"));
}
void AdBlockTest::parseRegExpFilterTest()
@ -111,13 +111,13 @@ void AdBlockTest::parseRegExpFilterTest()
void AdBlockTest::ignoreEmptyLinesInSubscriptionTest()
{
AdBlockSubscription subscription("test-subscription");
subscription.setFilePath(":autotests/data/adblock_empty_lines.txt");
AdBlockSubscription subscription(QSL("test-subscription"));
subscription.setFilePath(QSL(":autotests/data/adblock_empty_lines.txt"));
subscription.loadSubscription({});
QCOMPARE(subscription.allRules().count(), 3);
QCOMPARE(subscription.allRules().at(0)->filter(), QString("filter.com"));
QCOMPARE(subscription.allRules().at(1)->filter(), QString("test"));
QCOMPARE(subscription.allRules().at(0)->filter(), QSL("filter.com"));
QCOMPARE(subscription.allRules().at(1)->filter(), QSL("test"));
QCOMPARE(subscription.allRules().at(2)->isComment(), true);
}

View File

@ -72,9 +72,9 @@ void CookiesTest::listMatchesDomainTest_data()
QTest::addColumn<bool>("result");
QStringList list;
list << "www.example.com" << "accounts.google.com";
list << QSL("www.example.com") << QSL("accounts.google.com");
QStringList list2;
list2 << "anotherexample.com" << "a.b.x.google.com";
list2 << QSL("anotherexample.com") << QSL("a.b.x.google.com");
QTest::newRow("test1") << list << ".www.example.com" << true;
QTest::newRow("test2") << list << ".google.com" << false;

View File

@ -43,8 +43,8 @@ void DatabaseEncryptedPasswordBackendTest::init()
{
QSqlDatabase db = QSqlDatabase::database();
if (!db.isValid()) {
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":memory:");
db = QSqlDatabase::addDatabase(QSL("QSQLITE"));
db.setDatabaseName(QSL(":memory:"));
}
db.open();
}

View File

@ -29,12 +29,12 @@ void DatabasePasswordBackendTest::reloadBackend()
void DatabasePasswordBackendTest::init()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":memory:");
QSqlDatabase db = QSqlDatabase::addDatabase(QSL("QSQLITE"));
db.setDatabaseName(QSL(":memory:"));
db.open();
db.exec("CREATE TABLE autofill (data TEXT, id INTEGER PRIMARY KEY, password TEXT,"
"server TEXT, username TEXT, last_used NUMERIC)");
db.exec(QSL("CREATE TABLE autofill (data TEXT, id INTEGER PRIMARY KEY, password TEXT,"
"server TEXT, username TEXT, last_used NUMERIC)"));
}
void DatabasePasswordBackendTest::cleanup()

View File

@ -53,7 +53,7 @@ static bool compareEntries(const PasswordEntry &value, const PasswordEntry &ref)
PasswordBackendTest::PasswordBackendTest()
: QObject()
, m_backend(0)
, m_backend(nullptr)
{
}
@ -83,28 +83,28 @@ void PasswordBackendTest::storeTest()
/* Basic password entry */
PasswordEntry entry;
entry.host = "org.falkon.google.com";
entry.username = "user1";
entry.password = "pass1";
entry.host = QSL("org.falkon.google.com");
entry.username = QSL("user1");
entry.password = QSL("pass1");
entry.data = "entry1-data=23&username=user1&password=pass1";
m_backend->addEntry(entry);
// Check entry that may be stored in cache
PasswordEntry stored = m_backend->getEntries(QUrl("org.falkon.google.com")).constFirst();
PasswordEntry stored = m_backend->getEntries(QUrl(QSL("org.falkon.google.com"))).constFirst();
QVERIFY(compareEntries(stored, entry) == true);
reloadBackend();
// Check entry retrieved from backend engine
QVERIFY(!m_backend->getEntries(QUrl("org.falkon.google.com")).isEmpty());
stored = m_backend->getEntries(QUrl("org.falkon.google.com")).constFirst();
QVERIFY(!m_backend->getEntries(QUrl(QSL("org.falkon.google.com"))).isEmpty());
stored = m_backend->getEntries(QUrl(QSL("org.falkon.google.com"))).constFirst();
QVERIFY(compareEntries(stored, entry) == true);
/* UTF-8 password entry */
PasswordEntry entry2;
entry2.host = "org.falkon.falkon.com";
entry2.host = QSL("org.falkon.falkon.com");
entry2.username = QString::fromUtf8("+ě ++ éí§`]|~đ11 +!:");
entry2.password = QString::fromUtf8("+ěš asn~đ°#&# |€");
entry2.data = "use%C2%B6+_nam%C4%8D=%2B%C4%9B+%2B%2B+%C3%A9%C3%AD%C2%A7%60%5D%7C%7E%C4%9111+%2B%21%3A"
@ -113,28 +113,28 @@ void PasswordBackendTest::storeTest()
m_backend->addEntry(entry2);
// Check entry that may be stored in cache
PasswordEntry stored2 = m_backend->getEntries(QUrl("org.falkon.falkon.com")).constFirst();
PasswordEntry stored2 = m_backend->getEntries(QUrl(QSL("org.falkon.falkon.com"))).constFirst();
QVERIFY(compareEntries(stored2, entry2) == true);
reloadBackend();
// Check entry retrieved from backend engine
stored2 = m_backend->getEntries(QUrl("org.falkon.falkon.com")).constFirst();
stored2 = m_backend->getEntries(QUrl(QSL("org.falkon.falkon.com"))).constFirst();
QVERIFY(compareEntries(stored2, entry2) == true);
/* Cleanup */
// Local cleanup
m_backend->removeEntry(stored);
QCOMPARE(m_backend->getEntries(QUrl("org.falkon.google.com")).count(), 0);
QCOMPARE(m_backend->getEntries(QUrl(QSL("org.falkon.google.com"))).count(), 0);
m_backend->removeEntry(stored2);
QCOMPARE(m_backend->getEntries(QUrl("org.falkon.falkon.com")).count(), 0);
QCOMPARE(m_backend->getEntries(QUrl(QSL("org.falkon.falkon.com"))).count(), 0);
reloadBackend();
// Backend engine cleanup
QCOMPARE(m_backend->getEntries(QUrl("org.falkon.google.com")).count(), 0);
QCOMPARE(m_backend->getEntries(QUrl("org.falkon.falkon.com")).count(), 0);
QCOMPARE(m_backend->getEntries(QUrl(QSL("org.falkon.google.com"))).count(), 0);
QCOMPARE(m_backend->getEntries(QUrl(QSL("org.falkon.falkon.com"))).count(), 0);
}
void PasswordBackendTest::removeAllTest()
@ -142,33 +142,33 @@ void PasswordBackendTest::removeAllTest()
reloadBackend();
PasswordEntry entry;
entry.host = "org.falkon.google.com";
entry.username = "user1";
entry.password = "pass1";
entry.host = QSL("org.falkon.google.com");
entry.username = QSL("user1");
entry.password = QSL("pass1");
entry.data = "entry1-data=23&username=user1&password=pass1";
m_backend->addEntry(entry);
entry.username.append("s");
entry.username.append(QSL("s"));
m_backend->addEntry(entry);
entry.username.append("s");
entry.username.append(QSL("s"));
m_backend->addEntry(entry);
entry.username.append("s");
entry.username.append(QSL("s"));
m_backend->addEntry(entry);
entry.username.append("s");
entry.username.append(QSL("s"));
m_backend->addEntry(entry);
entry.username.append("s");
entry.username.append(QSL("s"));
m_backend->addEntry(entry);
entry.username.append("s");
entry.username.append(QSL("s"));
m_backend->addEntry(entry);
QCOMPARE(m_backend->getEntries(QUrl("org.falkon.google.com")).count(), 7);
QCOMPARE(m_backend->getEntries(QUrl(QSL("org.falkon.google.com"))).count(), 7);
reloadBackend();
QCOMPARE(m_backend->getEntries(QUrl("org.falkon.google.com")).count(), 7);
QCOMPARE(m_backend->getEntries(QUrl(QSL("org.falkon.google.com"))).count(), 7);
m_backend->removeAll();
@ -182,9 +182,9 @@ void PasswordBackendTest::updateLastUsedTest()
reloadBackend();
PasswordEntry entry;
entry.host = "org.falkon.google.com";
entry.username = "user1";
entry.password = "pass1";
entry.host = QSL("org.falkon.google.com");
entry.username = QSL("user1");
entry.password = QSL("pass1");
entry.data = "entry1-data=23&username=user1&password=pass1";
m_backend->addEntry(entry);
@ -194,17 +194,17 @@ void PasswordBackendTest::updateLastUsedTest()
sleep(1);
#endif
entry.username.append("s");
entry.username.append(QSL("s"));
m_backend->addEntry(entry);
QVERIFY(!m_backend->getEntries(QUrl("org.falkon.google.com")).isEmpty());
QVERIFY(compareEntries(entry, m_backend->getEntries(QUrl("org.falkon.google.com")).constFirst()));
QVERIFY(!m_backend->getEntries(QUrl(QSL("org.falkon.google.com"))).isEmpty());
QVERIFY(compareEntries(entry, m_backend->getEntries(QUrl(QSL("org.falkon.google.com"))).constFirst()));
reloadBackend();
QVERIFY(!m_backend->getEntries(QUrl("org.falkon.google.com")).isEmpty());
QVERIFY(compareEntries(entry, m_backend->getEntries(QUrl("org.falkon.google.com")).constFirst()));
QVERIFY(!m_backend->getEntries(QUrl(QSL("org.falkon.google.com"))).isEmpty());
QVERIFY(compareEntries(entry, m_backend->getEntries(QUrl(QSL("org.falkon.google.com"))).constFirst()));
m_backend->removeEntry(m_backend->getEntries(QUrl("org.falkon.google.com")).constFirst());
m_backend->removeEntry(m_backend->getEntries(QUrl("org.falkon.google.com")).constFirst());
m_backend->removeEntry(m_backend->getEntries(QUrl(QSL("org.falkon.google.com"))).constFirst());
m_backend->removeEntry(m_backend->getEntries(QUrl(QSL("org.falkon.google.com"))).constFirst());
QCOMPARE(m_backend->getAllEntries().count(), 0);
reloadBackend();

View File

@ -42,7 +42,7 @@ void SqlDatabaseTest::sqlQueryJobTest()
QTemporaryFile file;
file.open();
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
QSqlDatabase db = QSqlDatabase::addDatabase(QSL("QSQLITE"));
db.setDatabaseName(file.fileName());
db.open();
@ -51,37 +51,37 @@ void SqlDatabaseTest::sqlQueryJobTest()
QCOMPARE(db.tables().count(), 0);
SqlQueryJob *job = new SqlQueryJob();
job->setQuery("CREATE TABLE test1 (data TEXT, id INTEGER PRIMARY KEY)");
job->setQuery(QSL("CREATE TABLE test1 (data TEXT, id INTEGER PRIMARY KEY)"));
job->start();
QVERIFY(waitForFinished(job));
QVERIFY(!job->error().isValid());
QCOMPARE(db.tables(), QStringList{"test1"});
QCOMPARE(db.tables(), QStringList{QSL("test1")});
job = new SqlQueryJob();
job->setQuery("INSERT INTO test1 (data) VALUES (?)");
job->addBindValue("test-value");
job->setQuery(QSL("INSERT INTO test1 (data) VALUES (?)"));
job->addBindValue(QSL("test-value"));
job->start();
QVERIFY(waitForFinished(job));
QVERIFY(!job->error().isValid());
QCOMPARE(job->lastInsertId().toInt(), 1);
QSqlQuery query("SELECT data FROM test1", db);
QSqlQuery query(QSL("SELECT data FROM test1"), db);
query.next();
QCOMPARE(query.value(0).toString(), QString("test-value"));
QCOMPARE(query.value(0).toString(), QSL("test-value"));
QVERIFY(!query.next());
job = new SqlQueryJob();
job->setQuery("SELECT data FROM test1");
job->setQuery(QSL("SELECT data FROM test1"));
job->start();
QVERIFY(waitForFinished(job));
QVERIFY(!job->error().isValid());
QCOMPARE(job->records().size(), 1);
QCOMPARE(job->records().at(0).value(0).toString(), QString("test-value"));
QCOMPARE(job->records().at(0).value(0).toString(), QSL("test-value"));
job = new SqlQueryJob();
job->setQuery("SELECT invalid sql syntax; 1321sdsa from");
job->setQuery(QSL("SELECT invalid sql syntax; 1321sdsa from"));
job->start();
QVERIFY(waitForFinished(job));
QVERIFY(job->error().isValid());

View File

@ -18,6 +18,7 @@
<name xml:lang="id">Falkon</name>
<name xml:lang="it">Falkon</name>
<name xml:lang="nl">Falkon</name>
<name xml:lang="nn">Falkon</name>
<name xml:lang="pl">Falkon</name>
<name xml:lang="pt">Falkon</name>
<name xml:lang="pt-BR">Falkon</name>
@ -41,6 +42,7 @@
<summary xml:lang="id">Penelusur Web</summary>
<summary xml:lang="it">Browser web</summary>
<summary xml:lang="nl">Webbrowser</summary>
<summary xml:lang="nn">Nettlesar</summary>
<summary xml:lang="pl">Przeglądarka sieciowa</summary>
<summary xml:lang="pt">Navegador Web</summary>
<summary xml:lang="pt-BR">Navegador Web</summary>
@ -55,6 +57,7 @@
</p>
<p xml:lang="ca">El Falkon és un navegador Qt nou i molt ràpid. Pretén ser un navegador web lleuger, disponible a través de totes les principals plataformes. Aquest projecte només es va iniciar originalment amb finalitats educatives. Però des del seu inici, el Falkon s'ha convertit en un navegador ric en característiques.</p>
<p xml:lang="ca-valencia">El Falkon és un navegador Qt nou i molt ràpid. Pretén ser un navegador web lleuger, disponible a través de totes les principals plataformes. Aquest projecte només es va iniciar originalment amb finalitats educatives. Però des del seu inici, el Falkon s'ha convertit en un navegador ric en característiques.</p>
<p xml:lang="cs">Falkon je nový a velmi rychlý webový prohlížeč ve Qt. Cílem je poskytnout lehký prohlížeč dostupný na všech hlavních platformách. Tento projekt původně začal pouze pro vzdělávací účely, ale stal se z něj prohlížeč plný různých užitečných vlastností.</p>
<p xml:lang="da">Falkon er en ny og meget hurtig Qt-webbrowser. Den går efter at være en letvægts-webbrowser tilgængelig på alle større platforme. Projektet blev oprindeligt kun startet til uddannelsesformål, men Falkon har siden sin begyndelse vokset sig til en funktionsrig browser.</p>
<p xml:lang="en-GB">Falkon is a new and very fast Qt web browser. It aims to be a lightweight web browser available through all major platforms. This project has been originally started only for educational purposes. But from its start, Falkon has grown into a feature-rich browser.</p>
<p xml:lang="es">Falkon es un nuevo y muy rápido navegador web. Pretende ser un navegador web ligero disponible para todas las plataformas más populares. Este proyecto se inició originalmente con fines educativos. Aunque, desde el principio, Falkon se ha ido convirtiendo en un navegador rico en funcionalidades.</p>
@ -64,6 +67,7 @@
<p xml:lang="id">Falkon adalah penelusur web Qt yang baru dan sangat cepat. Ini bertujuan untuk menjadi penelusur web ringan yang tersedia melalui semua platform utama. Proyek ini awalnya hanya dimulai untuk tujuan pendidikan. Tapi sejak awal, Falkon telah tumbuh menjadi penelusur kaya fitur.</p>
<p xml:lang="it">Falkon è un nuovo e velocissimo browser web Qt. Mira ad essere un browser web leggero e disponibile per tutte le maggiori piattaforme. Il progetto è iniziato inizialmente a scopo educativo, ma da allora Falkon è diventato un browser ricco di funzionalità.</p>
<p xml:lang="nl">Flacon is een nieuwe en zeer snelle Qt-webbrowser. Zijn doel is om een lichtgewicht webbrowser te zijn beschikbaar via alle belangrijke platformen. Dit project is oorspronkelijk gestart alleen gestart voor onderwijsdoeleinden. Maar vanaf zijn start is Falcon gegroeid in een functierijke browser.</p>
<p xml:lang="nn">Falkon er ein ny og svært kjapp Qt-nettlesar. Målet er ein nettlesar som ikkje krev mykje systemressursar og som er tilgjengeleg på dei mest brukte plattformene. Programmet vart opphavleg utvikla berre som eit læreprosjekt, men har over tid blitt til ein funksjonsrik nettlesar.</p>
<p xml:lang="pl">Falkon jest nową i bardzo szybką przeglądarką sieciową Qt. Jej celem jest być dostępną na wszystkich głównych platformach. Projekt zaczął się ze względów edukacyjnych, lecz od jego początków Falkon stał się bogatą w możliwości przeglądarką.</p>
<p xml:lang="pt">O Falkon é um navegador novo e muito rápido em QtWebKit. Pretende ser um navegador Web leve e disponível em todas as plataformas importantes. Este projecto foi iniciado originalmente para fins educativos. Porém, desde o início, o Falkon cresceu para um navegador rico em funcionalidades.</p>
<p xml:lang="sv">Falkon är en ny och mycket snabb Qt webbläsare. Den har som mål att vara en lättviktig webbläsare tillgänglig på alla större plattformar. Projektet startades ursprungligen bara i utbildningssyfte, men från starten har Falkon växt till en funktionsrik webbläsare.</p>
@ -75,6 +79,7 @@
</p>
<p xml:lang="ca">El Falkon té totes les funcions estàndard que s'esperen d'un navegador web. Inclou adreces d'interès, historial (ambdós també a la barra lateral) i pestanyes. A més, podeu gestionar els canals RSS amb un lector RSS inclòs, bloquejar els anuncis amb un complement AdBlock integrat, bloquejar el contingut Flash amb Click2Flash i editar la base de dades de certificats de l'AC local amb un gestor SSL.</p>
<p xml:lang="ca-valencia">El Falkon té totes les funcions estàndard que s'esperen d'un navegador web. Inclou adreces d'interés, historial (ambdós també a la barra lateral) i pestanyes. A més, podeu gestionar els canals RSS amb un lector RSS inclòs, bloquejar els anuncis amb un complement AdBlock integrat, bloquejar el contingut Flash amb Click2Flash i editar la base de dades de certificats de l'AC local amb un gestor SSL.</p>
<p xml:lang="cs">Falkon obsahuje všechny standardní funcke, které byste u prohlížeče čekali. Obsahuje záložky, historii (obojí rovněž v postranní liště) a karty. Navíc může pomocí vlastní čtečky RSS spravovat kanály RSS, blokovat reklamu s vlastním modulem AdBlock, blokovat Flash s Click2Flash a upravovat místní databázi certifikátů CA se správcem SSL.</p>
<p xml:lang="da">Falkon har alle standardfunktioner som du forventer fra en webbrowser. Den inkluderer bogmærker, historik (begge findes også i sidebjælken) og faneblade. Derudover kan du håndtere RSS-feeds med en inkluderet RSS-læser, blokere reklamer med et indbygget AdBlock-plugin, blokere Flash-indhold med Click2Flash og redigere den lokale CA-certifikater-database med en SSL-manager.</p>
<p xml:lang="en-GB">Falkon has all standard functions you expect from a web browser. It includes bookmarks, history (both also in sidebar) and tabs. Above that, you can manage RSS feeds with an included RSS reader, block ads with a built-in AdBlock plugin, block Flash content with Click2Flash and edit the local CA Certificates database with an SSL manager.</p>
<p xml:lang="es">Falkon posee todas las funciones estándares que cabría esperar de un navegador web. Incluye marcadores, historial (ambos disponibles también en una barra lateral) y pestañas. Además, puede gestionar fuentes RSS con el lector RSS que incluye, bloquear publicidad mediante un complemento integrado, bloquear contenido Flash con Click2Flash y editar la base de datos local de certificados con un gestor SSL.</p>
@ -84,6 +89,7 @@
<p xml:lang="id">Falkon memiliki semua fungsi standar yang kamu harapkan dari penelusur web. Ini termasuk markah, riwayat (keduanya juga di bilah sisi) dan tab. Di samping itu, kamu bisa mengelola feed RSS dengan pembaca RSS yang disertakan, mencekal iklan dengan plugin AdBlock bawaan, mencekal konten Flash dengan Click2Flash dan mengedit database CA Certificates lokal dengan pengelola SSL.</p>
<p xml:lang="it">Falkon ha tutte le funzioni standard che ti aspetteresti da un browser web. Include i segnalibri e la cronologia, entrambi anche nella barra laterale, e le schede. Puoi inoltre gestire i feed RSS con un lettore RSS incluso, bloccare sia le inserzioni con un'estensione AdBlock integrata, sia i contenuti Flash con Click2Flash, ed infine modificare la banca dati dei certificati CA con un gestore SSL.</p>
<p xml:lang="nl">Falcon heeft alle standaard functies die u verwacht van een webbrowser. Het bevat bladwijzers, geschiedenis (ook in de zijbalk) en tabbladen. Bovendien kunt u RSS-feeds beheren met een ingevoegde RSS-reader, ads blokkeren met een ingebouwde AdBlock plug-in, Flash-inhoud blokkeren met Click2Flash en de lokale database met CA Certificaten met een SSL-beheerder.</p>
<p xml:lang="nn">Falkon har alle funksjonane du forventar av ein nettlesar, som fane- og bokmerkestøtte, og ein logg over vitja sider (også tilgjengeleg frå ein sidestolpe). Han har òg innebygd RSS-lesar, reklamefilter, Flash-blokkering (klikk for å starta) og redigerbar CA-sertifikatdabase.</p>
<p xml:lang="pl">Falkon ma wszystkie standardowe funkcje, których oczekuje się od przglądarek. Zawiera zakładki, historię (zarówno obie na pasku bocznym) i karty. Poza tym, może obsługiwać kanały RSS przy użyciu załączonego czytnika, blokować reklamy przy użyciu wbudowanej wtyczki AdBlock, blokować treści Flash przy użyciu Click2Flash i dedytować lokalne certyfikaty UC przy użyciu zarządzania SSL.</p>
<p xml:lang="pt">O Falkon tem todas as funções-padrão que iria esperar de um navegador Web. Inclui os favoritos, o histórico (ambos na barra lateral) e páginas separadas. Para além disso, pode gerir fontes RSS com um leitor de RSS incluído, o bloqueio de anúncios com um 'plugin' do AdBlock incorporado, o bloqueio de conteúdos em Flash com o Click2Flash e a edição da base de dados de Certificados da AC locais com um gestor de SSL.</p>
<p xml:lang="sv">Falkon har alla standardfunktioner man kan förvänta sig av en webbläsare. Det omfattar bokmärken, historik (båda också i sidorad) och flikar. Förutom det, kan man hantera RSS-kanaler med en inbyggd RSS-läsare, blockera reklam med ett inbyggt insticksprogram för reklamblockering, blockera Flash-innehåll med Click2Flash och redigera den lokala certifikatdatabasen för certifikatutfärdare med en SSL-hanterare.</p>

View File

@ -15,6 +15,7 @@ Name[gl]=Falkon
Name[id]=Falkon
Name[it]=Falkon
Name[nl]=Falkon
Name[nn]=Falkon
Name[pl]=Falkon
Name[pt]=Falkon
Name[pt_BR]=Falkon
@ -42,6 +43,7 @@ Comment[gl]=Un navegador rápido e seguro
Comment[id]=Sebuah penelusur web yang cepat dan aman
Comment[it]=Un browser web veloce e sicuro
Comment[nl]=Een snelle en veilige webbrowser
Comment[nn]=Ein kjapp og sikker nettlesar
Comment[pl]=Szybka i bezpieczna przeglądarka sieciowa
Comment[pt]=Um navegador Web rápido e seguro
Comment[sv]=En snabb och säker webbläsare
@ -64,6 +66,7 @@ GenericName[gl]=Navegador web
GenericName[id]=Penelusur Web
GenericName[it]=Browser web
GenericName[nl]=Webbrowser
GenericName[nn]=Nettlesar
GenericName[pl]=Przeglądarka sieciowa
GenericName[pt]=Navegador Web
GenericName[pt_BR]=Navegador Web
@ -95,6 +98,7 @@ Name[gl]=Abrir unha lapela nova
Name[id]=Buka tab baru
Name[it]=Apri una nuova scheda
Name[nl]=Nieuw tabblad openen
Name[nn]=Opna ny fane
Name[pl]=Otwórz nową kartę
Name[pt]=Abrir uma nova página
Name[pt_BR]=Abrir uma nova aba
@ -122,6 +126,7 @@ Name[gl]=Abrir unha xanela nova
Name[id]=Buka jendela baru
Name[it]=Apre una nuova finestra
Name[nl]=Nieuw venster openen
Name[nn]=Opna nytt vindauge
Name[pl]=Otwórz nowe okno
Name[pt]=Abrir uma nova janela
Name[pt_BR]=Abrir nova janela
@ -148,6 +153,7 @@ Name[gl]=Iniciar a navegación privada
Name[id]=Mulai penelusuran privasi
Name[it]=Avvia navigazione anonima
Name[nl]=Privébrowsing starten
Name[nn]=Start privat nettlesing
Name[pl]=Rozpocznij prywatne przeglądanie
Name[pt]=Iniciar a navegação privada
Name[sv]=Starta privat webbläsning

View File

@ -122,8 +122,8 @@ void FancyTabProxyStyle::drawControl(
p->drawText(text_rect, textFlags, text);
p->setPen(selected ? QColor(60, 60, 60) : Utils::StyleHelper::panelTextColor());
if (widget) {
const QString fader_key = "tab_" + text + "_fader";
const QString animation_key = "tab_" + text + "_animation";
const QString fader_key = QSL("tab_") + text + QSL("_fader");
const QString animation_key = QSL("tab_") + text + QSL("_animation");
const QString tab_hover = widget->property("tab_hover").toString();
int fader = widget->property(fader_key.toUtf8().constData()).toInt();
@ -174,7 +174,7 @@ void FancyTabProxyStyle::drawControl(
void FancyTabProxyStyle::polish(QWidget* widget)
{
if (QString(widget->metaObject()->className()) == QLatin1String("QTabBar")) {
if (QString::fromLatin1(widget->metaObject()->className()) == QLatin1String("QTabBar")) {
widget->setMouseTracking(true);
widget->installEventFilter(this);
}
@ -492,13 +492,13 @@ private:
FancyTabWidget::FancyTabWidget(QWidget* parent)
: QWidget(parent),
mode_(Mode_None),
tab_bar_(NULL),
tab_bar_(nullptr),
stack_(new QStackedLayout),
side_widget_(new QWidget),
side_layout_(new QVBoxLayout),
top_layout_(new QVBoxLayout),
use_background_(false),
menu_(NULL),
menu_(nullptr),
proxy_style_(new FancyTabProxyStyle)
{
side_layout_->setSpacing(0);
@ -602,7 +602,7 @@ void FancyTabWidget::SetMode(Mode mode)
{
// Remove previous tab bar
delete tab_bar_;
tab_bar_ = NULL;
tab_bar_ = nullptr;
use_background_ = false;

View File

@ -100,16 +100,16 @@ class FALKON_EXPORT FancyTabBar : public QWidget
Q_OBJECT
public:
FancyTabBar(QWidget* parent = 0);
~FancyTabBar();
explicit FancyTabBar(QWidget* parent = nullptr);
~FancyTabBar() override;
void paintEvent(QPaintEvent* event);
void paintEvent(QPaintEvent* event) override;
void paintTab(QPainter* painter, int tabIndex) const;
void mousePressEvent(QMouseEvent*);
void mousePressEvent(QMouseEvent*) override;
bool validIndex(int index) const { return index >= 0 && index < m_tabs.count(); }
QSize sizeHint() const;
QSize minimumSizeHint() const;
QSize sizeHint() const override;
QSize minimumSizeHint() const override;
void addTab(const QIcon &icon, const QString &label);
void addSpacer(int size = 40);
@ -151,7 +151,7 @@ class FALKON_EXPORT FancyTabWidget : public QWidget
Q_PROPERTY(QPixmap bgPixmap READ bgPixmap WRITE SetBackgroundPixmap)
public:
FancyTabWidget(QWidget* parent = 0);
explicit FancyTabWidget(QWidget* parent = nullptr);
// Values are persisted - only add to the end
enum Mode {

View File

@ -85,7 +85,7 @@ QtLocalPeer::QtLocalPeer(QObject* parent, const QString &appId)
#endif
prefix = id.section(QLatin1Char('/'), -1);
}
prefix.remove(QRegExp("[^a-zA-Z]"));
prefix.remove(QRegExp(QLatin1String("[^a-zA-Z]")));
prefix.truncate(6);
QByteArray idc = id.toUtf8();
@ -163,7 +163,7 @@ bool QtLocalPeer::sendMessage(const QString &message, int timeout)
Sleep(DWORD(ms));
#else
struct timespec ts = { ms / 1000, (ms % 1000) * 1000 * 1000 };
nanosleep(&ts, NULL);
nanosleep(&ts, nullptr);
#endif
}
if (!connOk) {

View File

@ -62,7 +62,7 @@ void SqueezeLabelV2::contextMenuEvent(QContextMenuEvent* event)
QMenu menu;
QAction* act = menu.addAction(tr("Copy"), this, SLOT(copy()));
act->setShortcut(QKeySequence("Ctrl+C"));
act->setShortcut(QKeySequence(QSL("Ctrl+C")));
act->setEnabled(hasSelectedText());
menu.exec(event->globalPos());

View File

@ -27,7 +27,7 @@ class FALKON_EXPORT SqueezeLabelV2 : public QLabel
Q_OBJECT
public:
SqueezeLabelV2(QWidget* parent = 0);
explicit SqueezeLabelV2(QWidget* parent = nullptr);
SqueezeLabelV2(const QString &string);
QString originalText();

View File

@ -181,7 +181,7 @@ void StyleHelper::drawIconWithShadow(const QIcon &icon, const QRect &rect,
QPainter* p, QIcon::Mode iconMode, int radius, const QColor &color, const QPoint &offset)
{
QPixmap cache;
QString pixmapName = QString("icon %0 %1 %2").arg(icon.cacheKey()).arg(iconMode).arg(rect.height());
QString pixmapName = QSL("icon %0 %1 %2").arg(icon.cacheKey()).arg(iconMode).arg(rect.height());
if (!QPixmapCache::find(pixmapName, cache)) {
QPixmap px = icon.pixmap(rect.size(), iconMode);

View File

@ -25,23 +25,23 @@ AdBlockAddSubscriptionDialog::AdBlockAddSubscriptionDialog(QWidget* parent)
{
ui->setupUi(this);
m_knownSubscriptions << Subscription("EasyList (English)", ADBLOCK_EASYLIST_URL)
<< Subscription("NoCoin List", ADBLOCK_NOCOINLIST_URL)
<< Subscription("BSI Lista Polska (Polish)", "http://www.bsi.info.pl/filtrABP.txt")
<< Subscription("Czech List (Czech)", "http://adblock.dajbych.net/adblock.txt")
<< Subscription("dutchblock (Dutch)", "http://groenewoudt.net/dutchblock/list.txt")
<< Subscription("Filtros Nauscopicos (Spanish)", "http://abp.mozilla-hispano.org/nauscopio/filtros.txt")
<< Subscription("IsraelList (Hebrew)", "http://secure.fanboy.co.nz/israelilist/IsraelList.txt")
<< Subscription("NLBlock (Dutch)", "http://www.verzijlbergh.com/adblock/nlblock.txt")
<< Subscription("Peter Lowe's list (English)", "http://pgl.yoyo.org/adservers/serverlist.php?hostformat=adblockplus&mimetype=plaintext")
<< Subscription("PLgeneral (Polish)", "http://www.niecko.pl/adblock/adblock.txt")
<< Subscription("Schacks Adblock Plus liste (Danish)", "http://adblock.schack.dk/block.txt")
<< Subscription("Xfiles (Italian)", "http://mozilla.gfsolone.com/filtri.txt")
<< Subscription("EasyPrivacy (English)", "http://easylist-downloads.adblockplus.org/easyprivacy.txt")
<< Subscription("RU Adlist (Russian)", "https://easylist-downloads.adblockplus.org/advblock.txt")
<< Subscription("ABPindo (Indonesian)", "https://raw.githubusercontent.com/heradhis/indonesianadblockrules/master/subscriptions/abpindo.txt")
<< Subscription("Easylist China (Chinese)", "https://easylist-downloads.adblockplus.org/easylistchina.txt")
<< Subscription("Anti-Adblock Killer", "https://raw.githubusercontent.com/reek/anti-adblock-killer/master/anti-adblock-killer-filters.txt")
m_knownSubscriptions << Subscription(QSL("EasyList (English)"), ADBLOCK_EASYLIST_URL)
<< Subscription(QSL("NoCoin List"), ADBLOCK_NOCOINLIST_URL)
<< Subscription(QSL("BSI Lista Polska (Polish)"), QSL("http://www.bsi.info.pl/filtrABP.txt"))
<< Subscription(QSL("Czech List (Czech)"), QSL("http://adblock.dajbych.net/adblock.txt"))
<< Subscription(QSL("dutchblock (Dutch)"), QSL("http://groenewoudt.net/dutchblock/list.txt"))
<< Subscription(QSL("Filtros Nauscopicos (Spanish)"), QSL("http://abp.mozilla-hispano.org/nauscopio/filtros.txt"))
<< Subscription(QSL("IsraelList (Hebrew)"), QSL("http://secure.fanboy.co.nz/israelilist/IsraelList.txt"))
<< Subscription(QSL("NLBlock (Dutch)"), QSL("http://www.verzijlbergh.com/adblock/nlblock.txt"))
<< Subscription(QSL("Peter Lowe's list (English)"), QSL("http://pgl.yoyo.org/adservers/serverlist.php?hostformat=adblockplus&mimetype=plaintext"))
<< Subscription(QSL("PLgeneral (Polish)"), QSL("http://www.niecko.pl/adblock/adblock.txt"))
<< Subscription(QSL("Schacks Adblock Plus liste (Danish)"), QSL("http://adblock.schack.dk/block.txt"))
<< Subscription(QSL("Xfiles (Italian)"), QSL("http://mozilla.gfsolone.com/filtri.txt"))
<< Subscription(QSL("EasyPrivacy (English)"), QSL("http://easylist-downloads.adblockplus.org/easyprivacy.txt"))
<< Subscription(QSL("RU Adlist (Russian)"), QSL("https://easylist-downloads.adblockplus.org/advblock.txt"))
<< Subscription(QSL("ABPindo (Indonesian)"), QSL("https://raw.githubusercontent.com/heradhis/indonesianadblockrules/master/subscriptions/abpindo.txt"))
<< Subscription(QSL("Easylist China (Chinese)"), QSL("https://easylist-downloads.adblockplus.org/easylistchina.txt"))
<< Subscription(QSL("Anti-Adblock Killer"), QSL("https://raw.githubusercontent.com/reek/anti-adblock-killer/master/anti-adblock-killer-filters.txt"))
<< Subscription(tr("Other..."), QString());
foreach (const Subscription &subscription, m_knownSubscriptions) {

View File

@ -31,8 +31,8 @@
AdBlockDialog::AdBlockDialog(QWidget* parent)
: QDialog(parent)
, m_manager(AdBlockManager::instance())
, m_currentTreeWidget(0)
, m_currentSubscription(0)
, m_currentTreeWidget(nullptr)
, m_currentSubscription(nullptr)
, m_loaded(false)
{
setAttribute(Qt::WA_DeleteOnClose);
@ -157,7 +157,7 @@ void AdBlockDialog::aboutToShowMenu()
void AdBlockDialog::learnAboutRules()
{
mApp->addNewTab(QUrl("http://adblockplus.org/en/filters"));
mApp->addNewTab(QUrl(QSL("http://adblockplus.org/en/filters")));
}
void AdBlockDialog::loadSubscriptions()

View File

@ -33,7 +33,7 @@ class FALKON_EXPORT AdBlockDialog : public QDialog, public Ui_AdBlockDialog
Q_OBJECT
public:
explicit AdBlockDialog(QWidget* parent = 0);
explicit AdBlockDialog(QWidget* parent = nullptr);
void showRule(const AdBlockRule* rule) const;

View File

@ -147,8 +147,8 @@ void AdBlockIcon::clicked(ClickController *controller)
if (!pageUrl.host().isEmpty() && manager->isEnabled() && manager->canRunOnScheme(pageUrl.scheme())) {
const QString host = view->url().host().contains(QLatin1String("www.")) ? pageUrl.host().mid(4) : pageUrl.host();
const QString hostFilter = QString("@@||%1^$document").arg(host);
const QString pageFilter = QString("@@|%1|$document").arg(pageUrl.toString());
const QString hostFilter = QSL("@@||%1^$document").arg(host);
const QString pageFilter = QSL("@@|%1|$document").arg(pageUrl.toString());
QAction* act = menu->addAction(tr("Disable on %1").arg(host));
act->setCheckable(true);

View File

@ -78,8 +78,8 @@ void AdBlockManager::setEnabled(bool enabled)
emit enabledChanged(enabled);
Settings settings;
settings.beginGroup("AdBlock");
settings.setValue("enabled", m_enabled);
settings.beginGroup(QSL("AdBlock"));
settings.setValue(QSL("enabled"), m_enabled);
settings.endGroup();
load();
@ -183,7 +183,7 @@ bool AdBlockManager::addSubscriptionFromUrl(const QUrl &url)
const QString message = AdBlockManager::tr("Do you want to add <b>%1</b> subscription?").arg(subscriptionTitle);
QMessageBox::StandardButton result = QMessageBox::question(0, AdBlockManager::tr("AdBlock Subscription"), message, QMessageBox::Yes | QMessageBox::No);
QMessageBox::StandardButton result = QMessageBox::question(nullptr, AdBlockManager::tr("AdBlock Subscription"), message, QMessageBox::Yes | QMessageBox::No);
if (result == QMessageBox::Yes) {
AdBlockManager::instance()->addSubscription(subscriptionTitle, subscriptionUrl);
AdBlockManager::instance()->showDialog();
@ -195,18 +195,18 @@ bool AdBlockManager::addSubscriptionFromUrl(const QUrl &url)
AdBlockSubscription* AdBlockManager::addSubscription(const QString &title, const QString &url)
{
if (title.isEmpty() || url.isEmpty()) {
return 0;
return nullptr;
}
QString fileName = QzTools::filterCharsFromFilename(title.toLower()) + ".txt";
QString filePath = QzTools::ensureUniqueFilename(DataPaths::currentProfilePath() + "/adblock/" + fileName);
QString fileName = QzTools::filterCharsFromFilename(title.toLower()) + QSL(".txt");
QString filePath = QzTools::ensureUniqueFilename(DataPaths::currentProfilePath() + QSL("/adblock/") + fileName);
QByteArray data = QString("Title: %1\nUrl: %2\n[Adblock Plus 1.1.1]").arg(title, url).toLatin1();
QByteArray data = QSL("Title: %1\nUrl: %2\n[Adblock Plus 1.1.1]").arg(title, url).toLatin1();
QSaveFile file(filePath);
if (!file.open(QFile::WriteOnly)) {
qWarning() << "AdBlockManager: Cannot write to file" << filePath;
return 0;
return nullptr;
}
file.write(data);
file.commit();
@ -250,7 +250,7 @@ AdBlockCustomList* AdBlockManager::customList() const
}
}
return 0;
return nullptr;
}
void AdBlockManager::load()
@ -267,23 +267,23 @@ void AdBlockManager::load()
#endif
Settings settings;
settings.beginGroup("AdBlock");
m_enabled = settings.value("enabled", m_enabled).toBool();
m_disabledRules = settings.value("disabledRules", QStringList()).toStringList();
QDateTime lastUpdate = settings.value("lastUpdate", QDateTime()).toDateTime();
settings.beginGroup(QSL("AdBlock"));
m_enabled = settings.value(QSL("enabled"), m_enabled).toBool();
m_disabledRules = settings.value(QSL("disabledRules"), QStringList()).toStringList();
QDateTime lastUpdate = settings.value(QSL("lastUpdate"), QDateTime()).toDateTime();
settings.endGroup();
if (!m_enabled) {
return;
}
QDir adblockDir(DataPaths::currentProfilePath() + "/adblock");
QDir adblockDir(DataPaths::currentProfilePath() + QSL("/adblock"));
// Create if neccessary
if (!adblockDir.exists()) {
QDir(DataPaths::currentProfilePath()).mkdir("adblock");
QDir(DataPaths::currentProfilePath()).mkdir(QSL("adblock"));
}
foreach (const QString &fileName, adblockDir.entryList(QStringList("*.txt"), QDir::Files)) {
foreach (const QString &fileName, adblockDir.entryList(QStringList(QSL("*.txt")), QDir::Files)) {
if (fileName == QLatin1String("customlist.txt")) {
continue;
}
@ -371,8 +371,8 @@ void AdBlockManager::updateAllSubscriptions()
}
Settings settings;
settings.beginGroup("AdBlock");
settings.setValue("lastUpdate", QDateTime::currentDateTime());
settings.beginGroup(QSL("AdBlock"));
settings.setValue(QSL("lastUpdate"), QDateTime::currentDateTime());
settings.endGroup();
}
@ -387,9 +387,9 @@ void AdBlockManager::save()
}
Settings settings;
settings.beginGroup("AdBlock");
settings.setValue("enabled", m_enabled);
settings.setValue("disabledRules", m_disabledRules);
settings.beginGroup(QSL("AdBlock"));
settings.setValue(QSL("enabled"), m_enabled);
settings.setValue(QSL("disabledRules"), m_disabledRules);
settings.endGroup();
}
@ -433,7 +433,7 @@ AdBlockSubscription* AdBlockManager::subscriptionByName(const QString &name) con
}
}
return 0;
return nullptr;
}
AdBlockDialog *AdBlockManager::showDialog(QWidget *parent)

View File

@ -27,8 +27,8 @@
#include "qzcommon.h"
#define ADBLOCK_EASYLIST_URL "https://easylist-downloads.adblockplus.org/easylist.txt"
#define ADBLOCK_NOCOINLIST_URL "https://raw.githubusercontent.com/hoshsadiq/adblock-nocoin-list/master/nocoin.txt"
#define ADBLOCK_EASYLIST_URL QSL("https://easylist-downloads.adblockplus.org/easylist.txt")
#define ADBLOCK_NOCOINLIST_URL QSL("https://raw.githubusercontent.com/hoshsadiq/adblock-nocoin-list/master/nocoin.txt")
class AdBlockRule;
class AdBlockDialog;

View File

@ -83,7 +83,7 @@ AdBlockRule::AdBlockRule(const QString &filter, AdBlockSubscription* subscriptio
, m_isEnabled(true)
, m_isException(false)
, m_isInternalDisabled(false)
, m_regExp(0)
, m_regExp(nullptr)
{
setFilter(filter);
}
@ -186,7 +186,7 @@ void AdBlockRule::setEnabled(bool enabled)
bool AdBlockRule::isSlow() const
{
return m_regExp != 0;
return m_regExp != nullptr;
}
bool AdBlockRule::isInternalDisabled() const
@ -720,7 +720,7 @@ QString AdBlockRule::createRegExpFromFilter(const QString &filter) const
i++;
}
else {
parsed.append('^');
parsed.append(QL1C('^'));
}
break;
}

View File

@ -63,7 +63,7 @@ class FALKON_EXPORT AdBlockRule
Q_DISABLE_COPY(AdBlockRule)
public:
AdBlockRule(const QString &filter = QString(), AdBlockSubscription* subscription = 0);
AdBlockRule(const QString &filter = QString(), AdBlockSubscription* subscription = nullptr);
~AdBlockRule();
AdBlockRule* copy() const;

View File

@ -57,7 +57,7 @@
AdBlockSubscription::AdBlockSubscription(const QString &title, QObject* parent)
: QObject(parent)
, m_reply(0)
, m_reply(nullptr)
, m_title(title)
, m_updated(false)
{
@ -191,7 +191,7 @@ bool AdBlockSubscription::saveDownloadedData(const QByteArray &data)
}
// Write subscription header
file.write(QString("Title: %1\nUrl: %2\n").arg(title(), url().toString()).toUtf8());
file.write(QSL("Title: %1\nUrl: %2\n").arg(title(), url().toString()).toUtf8());
file.write(data);
file.commit();
return true;
@ -200,7 +200,7 @@ bool AdBlockSubscription::saveDownloadedData(const QByteArray &data)
const AdBlockRule* AdBlockSubscription::rule(int offset) const
{
if (!QzTools::containsIndex(m_rules, offset)) {
return 0;
return nullptr;
}
return m_rules[offset];
@ -214,7 +214,7 @@ QVector<AdBlockRule*> AdBlockSubscription::allRules() const
const AdBlockRule* AdBlockSubscription::enableRule(int offset)
{
if (!QzTools::containsIndex(m_rules, offset)) {
return 0;
return nullptr;
}
AdBlockRule* rule = m_rules[offset];
@ -232,7 +232,7 @@ const AdBlockRule* AdBlockSubscription::enableRule(int offset)
const AdBlockRule* AdBlockSubscription::disableRule(int offset)
{
if (!QzTools::containsIndex(m_rules, offset)) {
return 0;
return nullptr;
}
AdBlockRule* rule = m_rules[offset];
@ -273,7 +273,7 @@ const AdBlockRule* AdBlockSubscription::replaceRule(AdBlockRule* rule, int offse
{
Q_UNUSED(rule)
Q_UNUSED(offset)
return 0;
return nullptr;
}
AdBlockSubscription::~AdBlockSubscription()

View File

@ -60,7 +60,7 @@ class FALKON_EXPORT AdBlockSubscription : public QObject
{
Q_OBJECT
public:
explicit AdBlockSubscription(const QString &title, QObject* parent = 0);
explicit AdBlockSubscription(const QString &title, QObject* parent = nullptr);
~AdBlockSubscription();
QString title() const;
@ -116,7 +116,7 @@ class AdBlockCustomList : public AdBlockSubscription
{
Q_OBJECT
public:
explicit AdBlockCustomList(QObject* parent = 0);
explicit AdBlockCustomList(QObject* parent = nullptr);
void loadSubscription(const QStringList &disabledRules);
void saveSubscription();

View File

@ -12,6 +12,7 @@ Name[gl]=Bloqueador de publicidade
Name[id]=AdBlock
Name[it]=Adblock
Name[nl]=AdBlock
Name[nn]=Reklamefilter
Name[pl]=AdBlock
Name[pt]=AdBlock
Name[pt_BR]=AdBlock
@ -32,6 +33,7 @@ Comment[gl]=Bloquea contenido web non desexado
Comment[id]=Memblokir konten web yang tak diinginkan
Comment[it]=Blocca i contenuti web non desiderati
Comment[nl]=Blokkeert niet-gewilde webinhoud
Comment[nn]=Blokkerer uønskt vevinnhald
Comment[pl]=Blokuje niechciane treści z sieci
Comment[pt]=Bloqueia o conteúdo Web indesejado
Comment[sv]=Blockerar oönskat webbinnehåll

View File

@ -190,18 +190,18 @@ QDataStream &operator>>(QDataStream &stream, BrowserWindow::SavedWindow &window)
}
BrowserWindow::BrowserWindow(Qz::BrowserWindowType type, const QUrl &startUrl)
: QMainWindow(0)
: QMainWindow(nullptr)
, m_startUrl(startUrl)
, m_windowType(type)
, m_startTab(0)
, m_startPage(0)
, m_startTab(nullptr)
, m_startPage(nullptr)
, m_sideBarManager(new SideBarManager(this))
, m_hideNavigationTimer(0)
, m_hideNavigationTimer(nullptr)
{
setAttribute(Qt::WA_DeleteOnClose);
setAttribute(Qt::WA_DontCreateNativeAncestors);
setObjectName("mainwindow");
setObjectName(QSL("mainwindow"));
setWindowTitle(tr("Falkon"));
setProperty("private", mApp->isPrivate());
@ -218,10 +218,10 @@ BrowserWindow::BrowserWindow(Qz::BrowserWindowType type, const QUrl &startUrl)
QTimer::singleShot(0, this, SLOT(postLaunch()));
if (mApp->isPrivate()) {
QzTools::setWmClass("Falkon Browser (Private Window)", this);
QzTools::setWmClass(QSL("Falkon Browser (Private Window)"), this);
}
else {
QzTools::setWmClass("Falkon Browser", this);
QzTools::setWmClass(QSL("Falkon Browser"), this);
}
}
@ -259,7 +259,7 @@ void BrowserWindow::postLaunch()
break;
case MainApplication::OpenSpeedDial:
startUrl = QUrl("falkon:speeddial");
startUrl = QUrl(QSL("falkon:speeddial"));
break;
case MainApplication::OpenHomePage:
@ -281,7 +281,7 @@ void BrowserWindow::postLaunch()
if (mApp->isStartingAfterCrash()) {
addTab = false;
startUrl.clear();
m_tabWidget->addView(QUrl("falkon:restore"), Qz::NT_CleanSelectedTabAtTheEnd);
m_tabWidget->addView(QUrl(QSL("falkon:restore")), Qz::NT_CleanSelectedTabAtTheEnd);
}
else if (mApp->afterLaunch() == MainApplication::SelectSession || mApp->afterLaunch() == MainApplication::RestoreSession) {
addTab = m_tabWidget->count() <= 0;
@ -338,7 +338,7 @@ void BrowserWindow::postLaunch()
void BrowserWindow::setupUi()
{
Settings settings;
settings.beginGroup("Browser-View-Settings");
settings.beginGroup(QSL("Browser-View-Settings"));
const QByteArray windowGeometry = settings.value(QSL("WindowGeometry")).toByteArray();
const QStringList keys = {
@ -364,7 +364,7 @@ void BrowserWindow::setupUi()
m_mainLayout->setContentsMargins(0, 0, 0, 0);
m_mainLayout->setSpacing(0);
m_mainSplitter = new QSplitter(this);
m_mainSplitter->setObjectName("sidebar-splitter");
m_mainSplitter->setObjectName(QSL("sidebar-splitter"));
m_tabWidget = new TabWidget(this);
m_superMenu = new QMenu(this);
m_navigationToolbar = new NavigationBar(this);
@ -386,12 +386,12 @@ void BrowserWindow::setupUi()
m_mainLayout->addWidget(m_mainSplitter);
m_statusBar = new StatusBar(this);
m_statusBar->setObjectName("mainwindow-statusbar");
m_statusBar->setObjectName(QSL("mainwindow-statusbar"));
m_statusBar->setCursor(Qt::ArrowCursor);
setStatusBar(m_statusBar);
m_progressBar = new ProgressBar(m_statusBar);
m_ipLabel = new QLabel(this);
m_ipLabel->setObjectName("statusbar-ip-label");
m_ipLabel->setObjectName(QSL("statusbar-ip-label"));
m_ipLabel->setToolTip(tr("IP Address of current page"));
m_statusBar->addPermanentWidget(m_progressBar);
@ -471,10 +471,10 @@ void BrowserWindow::setupMenu()
connect(closeTabAction, SIGNAL(activated()), this, SLOT(closeTab()));
connect(closeTabAction2, SIGNAL(activated()), this, SLOT(closeTab()));
QShortcut* reloadAction = new QShortcut(QKeySequence("Ctrl+R"), this);
QShortcut* reloadAction = new QShortcut(QKeySequence(QSL("Ctrl+R")), this);
connect(reloadAction, SIGNAL(activated()), this, SLOT(reload()));
QShortcut* openLocationAction = new QShortcut(QKeySequence("Alt+D"), this);
QShortcut* openLocationAction = new QShortcut(QKeySequence(QSL("Alt+D")), this);
connect(openLocationAction, SIGNAL(activated()), this, SLOT(openLocation()));
QShortcut* inspectorAction = new QShortcut(QKeySequence(QSL("F12")), this);
@ -574,35 +574,35 @@ void BrowserWindow::loadSettings()
Settings settings;
//Url settings
settings.beginGroup("Web-URL-Settings");
m_homepage = settings.value("homepage", "falkon:start").toUrl();
settings.beginGroup(QSL("Web-URL-Settings"));
m_homepage = settings.value(QSL("homepage"), QSL("falkon:start")).toUrl();
settings.endGroup();
//Browser Window settings
settings.beginGroup("Browser-View-Settings");
bool showStatusBar = settings.value("showStatusBar", false).toBool();
bool showBookmarksToolbar = settings.value("showBookmarksToolbar", false).toBool();
bool showNavigationToolbar = settings.value("showNavigationToolbar", true).toBool();
bool showMenuBar = settings.value("showMenubar", false).toBool();
settings.beginGroup(QSL("Browser-View-Settings"));
bool showStatusBar = settings.value(QSL("showStatusBar"), false).toBool();
bool showBookmarksToolbar = settings.value(QSL("showBookmarksToolbar"), false).toBool();
bool showNavigationToolbar = settings.value(QSL("showNavigationToolbar"), true).toBool();
bool showMenuBar = settings.value(QSL("showMenubar"), false).toBool();
// Make sure both menubar and navigationbar are not hidden
// Fixes #781
if (!showNavigationToolbar) {
showMenuBar = true;
settings.setValue("showMenubar", true);
settings.setValue(QSL("showMenubar"), true);
}
settings.endGroup();
settings.beginGroup("Shortcuts");
m_useTabNumberShortcuts = settings.value("useTabNumberShortcuts", true).toBool();
m_useSpeedDialNumberShortcuts = settings.value("useSpeedDialNumberShortcuts", true).toBool();
m_useSingleKeyShortcuts = settings.value("useSingleKeyShortcuts", false).toBool();
settings.beginGroup(QSL("Shortcuts"));
m_useTabNumberShortcuts = settings.value(QSL("useTabNumberShortcuts"), true).toBool();
m_useSpeedDialNumberShortcuts = settings.value(QSL("useSpeedDialNumberShortcuts"), true).toBool();
m_useSingleKeyShortcuts = settings.value(QSL("useSingleKeyShortcuts"), false).toBool();
settings.endGroup();
settings.beginGroup("Web-Browser-Settings");
settings.beginGroup(QSL("Web-Browser-Settings"));
QAction *quitAction = m_mainMenu->action(QSL("Standard/Quit"));
if (settings.value("closeAppWithCtrlQ", true).toBool()) {
if (settings.value(QSL("closeAppWithCtrlQ"), true).toBool()) {
quitAction->setShortcut(QzTools::actionShortcut(QKeySequence::Quit, QKeySequence(QSL("Ctrl+Q"))));
} else {
quitAction->setShortcut(QKeySequence());
@ -656,7 +656,7 @@ TabbedWebView* BrowserWindow::weView(int index) const
{
WebTab* webTab = qobject_cast<WebTab*>(m_tabWidget->widget(index));
if (!webTab) {
return 0;
return nullptr;
}
return webTab->webView();
@ -745,7 +745,7 @@ void BrowserWindow::changeEncoding()
mApp->webSettings()->setDefaultTextEncoding(encoding);
Settings settings;
settings.setValue("Web-Browser-Settings/DefaultEncoding", encoding);
settings.setValue(QSL("Web-Browser-Settings/DefaultEncoding"), encoding);
weView()->reload();
}
@ -868,7 +868,7 @@ void BrowserWindow::toggleShowMenubar()
setUpdatesEnabled(true);
Settings().setValue("Browser-View-Settings/showMenubar", menuBar()->isVisible());
Settings().setValue(QSL("Browser-View-Settings/showMenubar"), menuBar()->isVisible());
// Make sure we show Navigation Toolbar when Menu Bar is hidden
if (!m_navigationToolbar->isVisible() && !menuBar()->isVisible()) {
@ -884,7 +884,7 @@ void BrowserWindow::toggleShowStatusBar()
setUpdatesEnabled(true);
Settings().setValue("Browser-View-Settings/showStatusBar", m_statusBar->isVisible());
Settings().setValue(QSL("Browser-View-Settings/showStatusBar"), m_statusBar->isVisible());
}
@ -896,8 +896,8 @@ void BrowserWindow::toggleShowBookmarksToolbar()
setUpdatesEnabled(true);
Settings().setValue("Browser-View-Settings/showBookmarksToolbar", m_bookmarksToolbar->isVisible());
Settings().setValue("Browser-View-Settings/instantBookmarksToolbar", false);
Settings().setValue(QSL("Browser-View-Settings/showBookmarksToolbar"), m_bookmarksToolbar->isVisible());
Settings().setValue(QSL("Browser-View-Settings/instantBookmarksToolbar"), false);
}
void BrowserWindow::toggleShowNavigationToolbar()
@ -908,7 +908,7 @@ void BrowserWindow::toggleShowNavigationToolbar()
setUpdatesEnabled(true);
Settings().setValue("Browser-View-Settings/showNavigationToolbar", m_navigationToolbar->isVisible());
Settings().setValue(QSL("Browser-View-Settings/showNavigationToolbar"), m_navigationToolbar->isVisible());
#ifndef Q_OS_MACOS
// Make sure we show Menu Bar when Navigation Toolbar is hidden
@ -1056,7 +1056,7 @@ void BrowserWindow::createToolbarsMenu(QMenu* menu)
action = menu->addAction(tr("&Bookmarks Toolbar"), this, SLOT(toggleShowBookmarksToolbar()));
action->setCheckable(true);
action->setChecked(Settings().value("Browser-View-Settings/showBookmarksToolbar").toBool());
action->setChecked(Settings().value(QSL("Browser-View-Settings/showBookmarksToolbar")).toBool());
menu->addSeparator();
@ -1109,11 +1109,11 @@ void BrowserWindow::createEncodingMenu(QMenu* menu)
if (!menu->isEmpty())
menu->addSeparator();
createEncodingSubMenu("ISO", isoCodecs, menu);
createEncodingSubMenu("UTF", utfCodecs, menu);
createEncodingSubMenu("Windows", windowsCodecs, menu);
createEncodingSubMenu("Iscii", isciiCodecs, menu);
createEncodingSubMenu("IBM", ibmCodecs, menu);
createEncodingSubMenu(QSL("ISO"), isoCodecs, menu);
createEncodingSubMenu(QSL("UTF"), utfCodecs, menu);
createEncodingSubMenu(QSL("Windows"), windowsCodecs, menu);
createEncodingSubMenu(QSL("Iscii"), isciiCodecs, menu);
createEncodingSubMenu(QSL("IBM"), ibmCodecs, menu);
createEncodingSubMenu(tr("Other"), otherCodecs, menu);
}
@ -1143,7 +1143,7 @@ void BrowserWindow::searchOnPage()
{
if (weView() && weView()->webTab()) {
const QString searchText = weView()->page()->selectedText();
if (!searchText.contains('\n')) {
if (!searchText.contains(QL1C('\n'))) {
weView()->webTab()->showSearchToolBar(searchText);
} else {
weView()->webTab()->showSearchToolBar();
@ -1153,12 +1153,12 @@ void BrowserWindow::searchOnPage()
void BrowserWindow::openFile()
{
const QString fileTypes = QString("%1(*.html *.htm *.shtml *.shtm *.xhtml);;"
const QString fileTypes = QSL("%1(*.html *.htm *.shtml *.shtm *.xhtml);;"
"%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 = QzTools::getOpenFileName("MainWindow-openFile", this, tr("Open file..."), QDir::homePath(), fileTypes);
const QString filePath = QzTools::getOpenFileName(QSL("MainWindow-openFile"), this, tr("Open file..."), QDir::homePath(), fileTypes);
if (!filePath.isEmpty()) {
loadAddress(QUrl::fromLocalFile(filePath));
@ -1489,7 +1489,7 @@ void BrowserWindow::closeEvent(QCloseEvent* event)
}
Settings settings;
bool askOnClose = settings.value("Browser-Tabs-Settings/AskOnClosing", true).toBool();
bool askOnClose = settings.value(QSL("Browser-Tabs-Settings/AskOnClosing"), true).toBool();
if ((mApp->afterLaunch() == MainApplication::SelectSession || mApp->afterLaunch() == MainApplication::RestoreSession) && mApp->windowCount() == 1) {
askOnClose = false;
@ -1511,7 +1511,7 @@ void BrowserWindow::closeEvent(QCloseEvent* event)
}
if (dialog.isChecked()) {
settings.setValue("Browser-Tabs-Settings/AskOnClosing", false);
settings.setValue(QSL("Browser-Tabs-Settings/AskOnClosing"), false);
}
}
@ -1547,8 +1547,8 @@ void BrowserWindow::saveSettings()
}
Settings settings;
settings.beginGroup("Browser-View-Settings");
settings.setValue("WindowGeometry", saveGeometry());
settings.beginGroup(QSL("Browser-View-Settings"));
settings.setValue(QSL("WindowGeometry"), saveGeometry());
const auto state = saveUiState();
for (auto it = state.constBegin(); it != state.constEnd(); ++it) {

View File

@ -86,23 +86,23 @@ MainApplication::MainApplication(int &argc, char** argv)
, m_isPortable(false)
, m_isClosing(false)
, m_isStartingAfterCrash(false)
, m_history(0)
, m_bookmarks(0)
, m_autoFill(0)
, m_cookieJar(0)
, m_plugins(0)
, m_browsingLibrary(0)
, m_networkManager(0)
, m_restoreManager(0)
, m_sessionManager(0)
, m_downloadManager(0)
, m_userAgentManager(0)
, m_searchEnginesManager(0)
, m_closedWindowsManager(0)
, m_html5PermissionsManager(0)
, m_desktopNotifications(0)
, m_webProfile(0)
, m_autoSaver(0)
, m_history(nullptr)
, m_bookmarks(nullptr)
, m_autoFill(nullptr)
, m_cookieJar(nullptr)
, m_plugins(nullptr)
, m_browsingLibrary(nullptr)
, m_networkManager(nullptr)
, m_restoreManager(nullptr)
, m_sessionManager(nullptr)
, m_downloadManager(nullptr)
, m_userAgentManager(nullptr)
, m_searchEnginesManager(nullptr)
, m_closedWindowsManager(nullptr)
, m_html5PermissionsManager(nullptr)
, m_desktopNotifications(nullptr)
, m_webProfile(nullptr)
, m_autoSaver(nullptr)
, m_newWindowId(0)
#if defined(Q_OS_WIN) && !defined(Q_OS_OS2)
, m_registerQAppAssociation(0)
@ -119,7 +119,7 @@ MainApplication::MainApplication(int &argc, char** argv)
#ifdef GIT_REVISION
setApplicationVersion(QSL("%1 (%2)").arg(Qz::VERSION, GIT_REVISION));
#else
setApplicationVersion(Qz::VERSION);
setApplicationVersion(QString::fromLatin1(Qz::VERSION));
#endif
// Set fallback icon theme (eg. on Windows/Mac)
@ -129,7 +129,7 @@ MainApplication::MainApplication(int &argc, char** argv)
// QSQLITE database plugin is required
if (!QSqlDatabase::isDriverAvailable(QSL("QSQLITE"))) {
QMessageBox::critical(0, QSL("Error"), QSL("Qt SQLite database plugin is not available. Please install it and restart the application."));
QMessageBox::critical(nullptr, QSL("Error"), QSL("Qt SQLite database plugin is not available. Please install it and restart the application."));
m_isClosing = true;
return;
}
@ -670,7 +670,7 @@ void MainApplication::startPrivateBrowsing(const QUrl &startUrl)
void MainApplication::reloadUserStyleSheet()
{
const QString userCssFile = Settings().value("Web-Browser-Settings/userStyleSheet", QString()).toString();
const QString userCssFile = Settings().value(QSL("Web-Browser-Settings/userStyleSheet"), QString()).toString();
setUserStyleSheet(userCssFile);
}
@ -771,19 +771,19 @@ void MainApplication::saveSettings()
m_isClosing = true;
Settings settings;
settings.beginGroup("SessionRestore");
settings.setValue("isRunning", false);
settings.setValue("isRestoring", false);
settings.beginGroup(QSL("SessionRestore"));
settings.setValue(QSL("isRunning"), false);
settings.setValue(QSL("isRestoring"), false);
settings.endGroup();
settings.beginGroup("Web-Browser-Settings");
bool deleteCache = settings.value("deleteCacheOnClose", false).toBool();
bool deleteHistory = settings.value("deleteHistoryOnClose", false).toBool();
bool deleteHtml5Storage = settings.value("deleteHTML5StorageOnClose", false).toBool();
settings.beginGroup(QSL("Web-Browser-Settings"));
bool deleteCache = settings.value(QSL("deleteCacheOnClose"), false).toBool();
bool deleteHistory = settings.value(QSL("deleteHistoryOnClose"), false).toBool();
bool deleteHtml5Storage = settings.value(QSL("deleteHTML5StorageOnClose"), false).toBool();
settings.endGroup();
settings.beginGroup("Cookie-Settings");
bool deleteCookies = settings.value("deleteCookiesOnClose", false).toBool();
settings.beginGroup(QSL("Cookie-Settings"));
bool deleteCookies = settings.value(QSL("deleteCookiesOnClose"), false).toBool();
settings.endGroup();
if (deleteHistory) {
@ -903,8 +903,8 @@ void MainApplication::downloadRequested(QWebEngineDownloadItem *download)
void MainApplication::loadSettings()
{
Settings settings;
settings.beginGroup("Themes");
QString activeTheme = settings.value("activeTheme", DEFAULT_THEME_NAME).toString();
settings.beginGroup(QSL("Themes"));
QString activeTheme = settings.value(QSL("activeTheme"), DEFAULT_THEME_NAME).toString();
settings.endGroup();
loadTheme(activeTheme);
@ -912,54 +912,54 @@ void MainApplication::loadSettings()
QWebEngineSettings* webSettings = m_webProfile->settings();
// Web browsing settings
settings.beginGroup("Web-Browser-Settings");
settings.beginGroup(QSL("Web-Browser-Settings"));
webSettings->setAttribute(QWebEngineSettings::LocalStorageEnabled, settings.value("HTML5StorageEnabled", true).toBool());
webSettings->setAttribute(QWebEngineSettings::PluginsEnabled, settings.value("allowPlugins", true).toBool());
webSettings->setAttribute(QWebEngineSettings::JavascriptEnabled, settings.value("allowJavaScript", true).toBool());
webSettings->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, settings.value("allowJavaScriptOpenWindow", false).toBool());
webSettings->setAttribute(QWebEngineSettings::JavascriptCanAccessClipboard, settings.value("allowJavaScriptAccessClipboard", true).toBool());
webSettings->setAttribute(QWebEngineSettings::LinksIncludedInFocusChain, settings.value("IncludeLinkInFocusChain", false).toBool());
webSettings->setAttribute(QWebEngineSettings::XSSAuditingEnabled, settings.value("XSSAuditing", false).toBool());
webSettings->setAttribute(QWebEngineSettings::PrintElementBackgrounds, settings.value("PrintElementBackground", true).toBool());
webSettings->setAttribute(QWebEngineSettings::SpatialNavigationEnabled, settings.value("SpatialNavigation", false).toBool());
webSettings->setAttribute(QWebEngineSettings::ScrollAnimatorEnabled, settings.value("AnimateScrolling", true).toBool());
webSettings->setAttribute(QWebEngineSettings::LocalStorageEnabled, settings.value(QSL("HTML5StorageEnabled"), true).toBool());
webSettings->setAttribute(QWebEngineSettings::PluginsEnabled, settings.value(QSL("allowPlugins"), true).toBool());
webSettings->setAttribute(QWebEngineSettings::JavascriptEnabled, settings.value(QSL("allowJavaScript"), true).toBool());
webSettings->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, settings.value(QSL("allowJavaScriptOpenWindow"), false).toBool());
webSettings->setAttribute(QWebEngineSettings::JavascriptCanAccessClipboard, settings.value(QSL("allowJavaScriptAccessClipboard"), true).toBool());
webSettings->setAttribute(QWebEngineSettings::LinksIncludedInFocusChain, settings.value(QSL("IncludeLinkInFocusChain"), false).toBool());
webSettings->setAttribute(QWebEngineSettings::XSSAuditingEnabled, settings.value(QSL("XSSAuditing"), false).toBool());
webSettings->setAttribute(QWebEngineSettings::PrintElementBackgrounds, settings.value(QSL("PrintElementBackground"), true).toBool());
webSettings->setAttribute(QWebEngineSettings::SpatialNavigationEnabled, settings.value(QSL("SpatialNavigation"), false).toBool());
webSettings->setAttribute(QWebEngineSettings::ScrollAnimatorEnabled, settings.value(QSL("AnimateScrolling"), true).toBool());
webSettings->setAttribute(QWebEngineSettings::HyperlinkAuditingEnabled, false);
webSettings->setAttribute(QWebEngineSettings::FullScreenSupportEnabled, true);
webSettings->setAttribute(QWebEngineSettings::LocalContentCanAccessRemoteUrls, true);
webSettings->setAttribute(QWebEngineSettings::FocusOnNavigationEnabled, false);
#if QTWEBENGINE_VERSION >= QT_VERSION_CHECK(5, 10, 0)
webSettings->setAttribute(QWebEngineSettings::AllowWindowActivationFromJavaScript, settings.value("allowJavaScriptActivateWindow", false).toBool());
webSettings->setAttribute(QWebEngineSettings::AllowWindowActivationFromJavaScript, settings.value(QSL("allowJavaScriptActivateWindow"), false).toBool());
#endif
#if QTWEBENGINE_VERSION >= QT_VERSION_CHECK(5, 11, 0)
webSettings->setAttribute(QWebEngineSettings::JavascriptCanPaste, settings.value("allowJavaScriptPaste", true).toBool());
webSettings->setAttribute(QWebEngineSettings::PlaybackRequiresUserGesture, settings.value("DisableVideoAutoPlay", false).toBool());
webSettings->setAttribute(QWebEngineSettings::WebRTCPublicInterfacesOnly, settings.value("WebRTCPublicIpOnly", true).toBool());
webSettings->setAttribute(QWebEngineSettings::JavascriptCanPaste, settings.value(QSL("allowJavaScriptPaste"), true).toBool());
webSettings->setAttribute(QWebEngineSettings::PlaybackRequiresUserGesture, settings.value(QSL("DisableVideoAutoPlay"), false).toBool());
webSettings->setAttribute(QWebEngineSettings::WebRTCPublicInterfacesOnly, settings.value(QSL("WebRTCPublicIpOnly"), true).toBool());
webSettings->setUnknownUrlSchemePolicy(QWebEngineSettings::AllowAllUnknownUrlSchemes);
#endif
webSettings->setDefaultTextEncoding(settings.value("DefaultEncoding", webSettings->defaultTextEncoding()).toString());
webSettings->setDefaultTextEncoding(settings.value(QSL("DefaultEncoding"), webSettings->defaultTextEncoding()).toString());
setWheelScrollLines(settings.value("wheelScrollLines", wheelScrollLines()).toInt());
setWheelScrollLines(settings.value(QSL("wheelScrollLines"), wheelScrollLines()).toInt());
const QString userCss = settings.value("userStyleSheet", QString()).toString();
const QString userCss = settings.value(QSL("userStyleSheet"), QString()).toString();
settings.endGroup();
setUserStyleSheet(userCss);
settings.beginGroup("Browser-Fonts");
webSettings->setFontFamily(QWebEngineSettings::StandardFont, settings.value("StandardFont", webSettings->fontFamily(QWebEngineSettings::StandardFont)).toString());
webSettings->setFontFamily(QWebEngineSettings::CursiveFont, settings.value("CursiveFont", webSettings->fontFamily(QWebEngineSettings::CursiveFont)).toString());
webSettings->setFontFamily(QWebEngineSettings::FantasyFont, settings.value("FantasyFont", webSettings->fontFamily(QWebEngineSettings::FantasyFont)).toString());
webSettings->setFontFamily(QWebEngineSettings::FixedFont, settings.value("FixedFont", webSettings->fontFamily(QWebEngineSettings::FixedFont)).toString());
webSettings->setFontFamily(QWebEngineSettings::SansSerifFont, settings.value("SansSerifFont", webSettings->fontFamily(QWebEngineSettings::SansSerifFont)).toString());
webSettings->setFontFamily(QWebEngineSettings::SerifFont, settings.value("SerifFont", webSettings->fontFamily(QWebEngineSettings::SerifFont)).toString());
webSettings->setFontSize(QWebEngineSettings::DefaultFontSize, settings.value("DefaultFontSize", 15).toInt());
webSettings->setFontSize(QWebEngineSettings::DefaultFixedFontSize, settings.value("FixedFontSize", 14).toInt());
webSettings->setFontSize(QWebEngineSettings::MinimumFontSize, settings.value("MinimumFontSize", 3).toInt());
webSettings->setFontSize(QWebEngineSettings::MinimumLogicalFontSize, settings.value("MinimumLogicalFontSize", 5).toInt());
settings.beginGroup(QSL("Browser-Fonts"));
webSettings->setFontFamily(QWebEngineSettings::StandardFont, settings.value(QSL("StandardFont"), webSettings->fontFamily(QWebEngineSettings::StandardFont)).toString());
webSettings->setFontFamily(QWebEngineSettings::CursiveFont, settings.value(QSL("CursiveFont"), webSettings->fontFamily(QWebEngineSettings::CursiveFont)).toString());
webSettings->setFontFamily(QWebEngineSettings::FantasyFont, settings.value(QSL("FantasyFont"), webSettings->fontFamily(QWebEngineSettings::FantasyFont)).toString());
webSettings->setFontFamily(QWebEngineSettings::FixedFont, settings.value(QSL("FixedFont"), webSettings->fontFamily(QWebEngineSettings::FixedFont)).toString());
webSettings->setFontFamily(QWebEngineSettings::SansSerifFont, settings.value(QSL("SansSerifFont"), webSettings->fontFamily(QWebEngineSettings::SansSerifFont)).toString());
webSettings->setFontFamily(QWebEngineSettings::SerifFont, settings.value(QSL("SerifFont"), webSettings->fontFamily(QWebEngineSettings::SerifFont)).toString());
webSettings->setFontSize(QWebEngineSettings::DefaultFontSize, settings.value(QSL("DefaultFontSize"), 15).toInt());
webSettings->setFontSize(QWebEngineSettings::DefaultFixedFontSize, settings.value(QSL("FixedFontSize"), 14).toInt());
webSettings->setFontSize(QWebEngineSettings::MinimumFontSize, settings.value(QSL("MinimumFontSize"), 3).toInt());
webSettings->setFontSize(QWebEngineSettings::MinimumLogicalFontSize, settings.value(QSL("MinimumLogicalFontSize"), 5).toInt());
settings.endGroup();
QWebEngineProfile* profile = QWebEngineProfile::defaultProfile();
@ -969,7 +969,7 @@ void MainApplication::loadSettings()
QString defaultPath = DataPaths::path(DataPaths::Cache);
if (!defaultPath.startsWith(DataPaths::currentProfilePath()))
defaultPath.append(QLatin1Char('/') + ProfileManager::currentProfile());
const QString &cachePath = settings.value("Web-Browser-Settings/CachePath", defaultPath).toString();
const QString &cachePath = settings.value(QSL("Web-Browser-Settings/CachePath"), defaultPath).toString();
profile->setCachePath(cachePath);
const bool allowCache = settings.value(QSL("Web-Browser-Settings/AllowLocalCache"), true).toBool();
@ -1003,7 +1003,7 @@ void MainApplication::loadTheme(const QString &name)
if (activeThemePath.isEmpty()) {
qWarning() << "Cannot load theme " << name;
activeThemePath = QString("%1/%2").arg(DataPaths::path(DataPaths::Themes), DEFAULT_THEME_NAME);
activeThemePath = QSL("%1/%2").arg(DataPaths::path(DataPaths::Themes), DEFAULT_THEME_NAME);
}
QString qss = QzTools::readAllFileContents(activeThemePath + QLatin1String("/main.css"));
@ -1027,7 +1027,7 @@ void MainApplication::loadTheme(const QString &name)
qss.append(QzTools::readAllFileContents(DataPaths::currentProfilePath() + QL1S("/userChrome.css")));
QString relativePath = QDir::current().relativeFilePath(activeThemePath);
qss.replace(QRegularExpression(QSL("url\\s*\\(\\s*([^\\*:\\);]+)\\s*\\)")), QString("url(%1/\\1)").arg(relativePath));
qss.replace(QRegularExpression(QSL("url\\s*\\(\\s*([^\\*:\\);]+)\\s*\\)")), QSL("url(%1/\\1)").arg(relativePath));
setStyleSheet(qss);
}
@ -1039,7 +1039,7 @@ void MainApplication::checkDefaultWebBrowser()
#if defined(Q_OS_WIN) && !defined(Q_OS_OS2)
Settings settings;
bool checkNow = settings.value("Web-Browser-Settings/CheckDefaultBrowser", DEFAULT_CHECK_DEFAULTBROWSER).toBool();
bool checkNow = settings.value(QSL("Web-Browser-Settings/CheckDefaultBrowser"), DEFAULT_CHECK_DEFAULTBROWSER).toBool();
if (!checkNow) {
return;
@ -1064,7 +1064,7 @@ void MainApplication::checkDefaultWebBrowser()
checkAgain = dialog.isChecked();
}
settings.setValue("Web-Browser-Settings/CheckDefaultBrowser", checkAgain);
settings.setValue(QSL("Web-Browser-Settings/CheckDefaultBrowser"), checkAgain);
#endif
}

View File

@ -113,13 +113,13 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(Qz::NewTabPositionFlags)
}
#if defined(Q_OS_WIN) || defined(Q_OS_OS2)
#define DEFAULT_THEME_NAME "windows"
#define DEFAULT_THEME_NAME QSL("windows")
#elif defined(Q_OS_MACOS)
#define DEFAULT_THEME_NAME "mac"
#define DEFAULT_THEME_NAME QSL("mac")
#elif defined(Q_OS_UNIX)
#define DEFAULT_THEME_NAME "linux"
#define DEFAULT_THEME_NAME QSL("linux")
#else
#define DEFAULT_THEME_NAME "default"
#define DEFAULT_THEME_NAME QSL("default")
#endif
#ifdef Q_OS_WIN

View File

@ -22,9 +22,9 @@
AutoFillIcon::AutoFillIcon(QWidget* parent)
: ClickableLabel(parent)
, m_view(0)
, m_view(nullptr)
{
setObjectName("locationbar-autofillicon");
setObjectName(QSL("locationbar-autofillicon"));
setCursor(Qt::PointingHandCursor);
setToolTip(AutoFillWidget::tr("Choose username to login"));
setFocusPolicy(Qt::ClickFocus);

View File

@ -28,7 +28,7 @@ class FALKON_EXPORT AutoFillIcon : public ClickableLabel
Q_OBJECT
public:
explicit AutoFillIcon(QWidget* parent = 0);
explicit AutoFillIcon(QWidget* parent = nullptr);
void setWebView(WebView* view);
void setUsernames(const QStringList &usernames);

View File

@ -43,8 +43,8 @@ void AutoFillWidget::setUsernames(const QStringList &usernames)
}
QPushButton* button = new QPushButton(this);
button->setIcon(QIcon(":icons/other/login.png"));
button->setStyleSheet("text-align:left;font-weight:bold;");
button->setIcon(QIcon(QSL(":icons/other/login.png")));
button->setStyleSheet(QSL("text-align:left;font-weight:bold;"));
button->setText(username);
button->setFlat(true);

View File

@ -36,7 +36,7 @@ class FALKON_EXPORT AutoFillWidget : public LocationBarPopup
Q_OBJECT
public:
explicit AutoFillWidget(WebView* view, QWidget* parent = 0);
explicit AutoFillWidget(WebView* view, QWidget* parent = nullptr);
~AutoFillWidget();
void setUsernames(const QStringList &usernames);

View File

@ -37,9 +37,9 @@ DatabaseEncryptedPasswordBackend::DatabaseEncryptedPasswordBackend()
{
QSqlDatabase db = SqlDatabase::instance()->database();
if (!db.tables().contains(QLatin1String("autofill_encrypted"))) {
db.exec("CREATE TABLE autofill_encrypted (data_encrypted TEXT, id INTEGER PRIMARY KEY,"
"password_encrypted TEXT, server TEXT, username_encrypted TEXT, last_used NUMERIC)");
db.exec("CREATE INDEX autofillEncryptedServer ON autofill_encrypted(server ASC)");
db.exec(QSL("CREATE TABLE autofill_encrypted (data_encrypted TEXT, id INTEGER PRIMARY KEY,"
"password_encrypted TEXT, server TEXT, username_encrypted TEXT, last_used NUMERIC)"));
db.exec(QSL("CREATE INDEX autofillEncryptedServer ON autofill_encrypted(server ASC)"));
}
}
@ -54,7 +54,7 @@ QStringList DatabaseEncryptedPasswordBackend::getUsernames(const QUrl &url)
}
QSqlQuery query(SqlDatabase::instance()->database());
query.prepare("SELECT username_encrypted FROM autofill_encrypted WHERE server=? ORDER BY last_used DESC");
query.prepare(QSL("SELECT username_encrypted FROM autofill_encrypted WHERE server=? ORDER BY last_used DESC"));
query.addBindValue(PasswordManager::createHost(url));
query.exec();
@ -74,8 +74,8 @@ QVector<PasswordEntry> DatabaseEncryptedPasswordBackend::getEntries(const QUrl &
const QString host = PasswordManager::createHost(url);
QSqlQuery query(SqlDatabase::instance()->database());
query.prepare("SELECT id, username_encrypted, password_encrypted, data_encrypted FROM autofill_encrypted "
"WHERE server=? ORDER BY last_used DESC");
query.prepare(QSL("SELECT id, username_encrypted, password_encrypted, data_encrypted FROM autofill_encrypted "
"WHERE server=? ORDER BY last_used DESC"));
query.addBindValue(host);
query.exec();
@ -105,7 +105,7 @@ QVector<PasswordEntry> DatabaseEncryptedPasswordBackend::getAllEntries()
AesInterface aesDecryptor;
QSqlQuery query(SqlDatabase::instance()->database());
query.prepare("SELECT id, server, username_encrypted, password_encrypted, data_encrypted FROM autofill_encrypted");
query.prepare(QSL("SELECT id, server, username_encrypted, password_encrypted, data_encrypted FROM autofill_encrypted"));
query.exec();
if (query.next() && hasPermission()) {
@ -160,7 +160,7 @@ void DatabaseEncryptedPasswordBackend::addEntry(const PasswordEntry &entry)
if (entry.data.isEmpty()) {
// Multiple-usernames for HTTP/FTP authorization not supported
QSqlQuery query(SqlDatabase::instance()->database());
query.prepare("SELECT username_encrypted FROM autofill_encrypted WHERE server=?");
query.prepare(QSL("SELECT username_encrypted FROM autofill_encrypted WHERE server=?"));
query.addBindValue(entry.host);
query.exec();
@ -174,8 +174,8 @@ void DatabaseEncryptedPasswordBackend::addEntry(const PasswordEntry &entry)
if (hasPermission() && encryptPasswordEntry(encryptedEntry, &aesEncryptor)) {
QSqlQuery query(SqlDatabase::instance()->database());
query.prepare("INSERT INTO autofill_encrypted (server, data_encrypted, username_encrypted, password_encrypted, last_used) "
"VALUES (?,?,?,?,strftime('%s', 'now'))");
query.prepare(QSL("INSERT INTO autofill_encrypted (server, data_encrypted, username_encrypted, password_encrypted, last_used) "
"VALUES (?,?,?,?,strftime('%s', 'now'))"));
query.bindValue(0, encryptedEntry.host);
query.bindValue(1, encryptedEntry.data);
query.bindValue(2, encryptedEntry.username);
@ -194,13 +194,13 @@ bool DatabaseEncryptedPasswordBackend::updateEntry(const PasswordEntry &entry)
// Data is empty only for HTTP/FTP authorization
if (entry.data.isEmpty()) {
query.prepare("UPDATE autofill_encrypted SET username_encrypted=?, password_encrypted=? WHERE server=?");
query.prepare(QSL("UPDATE autofill_encrypted SET username_encrypted=?, password_encrypted=? WHERE server=?"));
query.bindValue(0, encryptedEntry.username);
query.bindValue(1, encryptedEntry.password);
query.bindValue(2, encryptedEntry.host);
}
else {
query.prepare("UPDATE autofill_encrypted SET data_encrypted=?, username_encrypted=?, password_encrypted=? WHERE id=?");
query.prepare(QSL("UPDATE autofill_encrypted SET data_encrypted=?, username_encrypted=?, password_encrypted=? WHERE id=?"));
query.addBindValue(encryptedEntry.data);
query.addBindValue(encryptedEntry.username);
query.addBindValue(encryptedEntry.password);
@ -216,7 +216,7 @@ bool DatabaseEncryptedPasswordBackend::updateEntry(const PasswordEntry &entry)
void DatabaseEncryptedPasswordBackend::updateLastUsed(PasswordEntry &entry)
{
QSqlQuery query(SqlDatabase::instance()->database());
query.prepare("UPDATE autofill_encrypted SET last_used=strftime('%s', 'now') WHERE id=?");
query.prepare(QSL("UPDATE autofill_encrypted SET last_used=strftime('%s', 'now') WHERE id=?"));
query.addBindValue(entry.id);
query.exec();
}
@ -228,7 +228,7 @@ void DatabaseEncryptedPasswordBackend::removeEntry(const PasswordEntry &entry)
}
QSqlQuery query(SqlDatabase::instance()->database());
query.prepare("DELETE FROM autofill_encrypted WHERE id=?");
query.prepare(QSL("DELETE FROM autofill_encrypted WHERE id=?"));
query.addBindValue(entry.id);
query.exec();
@ -245,7 +245,7 @@ void DatabaseEncryptedPasswordBackend::removeAll()
}
QSqlQuery query(SqlDatabase::instance()->database());
query.prepare("DELETE FROM autofill_encrypted");
query.prepare(QSL("DELETE FROM autofill_encrypted"));
query.exec();
m_stateOfMasterPassword = PasswordIsSetted;
@ -393,7 +393,7 @@ void DatabaseEncryptedPasswordBackend::encryptDataBaseTableOnFly(const QByteArra
}
QSqlQuery query(SqlDatabase::instance()->database());
query.prepare("SELECT id, data_encrypted, password_encrypted, username_encrypted, server FROM autofill_encrypted");
query.prepare(QSL("SELECT id, data_encrypted, password_encrypted, username_encrypted, server FROM autofill_encrypted"));
query.exec();
AesInterface encryptor;
@ -423,7 +423,7 @@ void DatabaseEncryptedPasswordBackend::encryptDataBaseTableOnFly(const QByteArra
}
QSqlQuery updateQuery(SqlDatabase::instance()->database());
updateQuery.prepare("UPDATE autofill_encrypted SET data_encrypted = ?, password_encrypted = ?, username_encrypted = ? WHERE id = ?");
updateQuery.prepare(QSL("UPDATE autofill_encrypted SET data_encrypted = ?, password_encrypted = ?, username_encrypted = ? WHERE id = ?"));
updateQuery.addBindValue(data);
updateQuery.addBindValue(password);
updateQuery.addBindValue(username);
@ -439,7 +439,7 @@ QByteArray DatabaseEncryptedPasswordBackend::someDataFromDatabase()
}
QSqlQuery query(SqlDatabase::instance()->database());
query.prepare("SELECT password_encrypted, data_encrypted, username_encrypted FROM autofill_encrypted");
query.prepare(QSL("SELECT password_encrypted, data_encrypted, username_encrypted FROM autofill_encrypted"));
query.exec();
QByteArray someData;
@ -467,7 +467,7 @@ QByteArray DatabaseEncryptedPasswordBackend::someDataFromDatabase()
void DatabaseEncryptedPasswordBackend::updateSampleData(const QByteArray &password)
{
QSqlQuery query(SqlDatabase::instance()->database());
query.prepare("SELECT id FROM autofill_encrypted WHERE server = ?");
query.prepare(QSL("SELECT id FROM autofill_encrypted WHERE server = ?"));
query.addBindValue(INTERNAL_SERVER_ID);
query.exec();
@ -476,10 +476,10 @@ void DatabaseEncryptedPasswordBackend::updateSampleData(const QByteArray &passwo
m_someDataStoredOnDataBase = aes.encrypt(AesInterface::createRandomData(16), password);
if (query.next()) {
query.prepare("UPDATE autofill_encrypted SET password_encrypted = ? WHERE server=?");
query.prepare(QSL("UPDATE autofill_encrypted SET password_encrypted = ? WHERE server=?"));
}
else {
query.prepare("INSERT INTO autofill_encrypted (password_encrypted, server) VALUES (?,?)");
query.prepare(QSL("INSERT INTO autofill_encrypted (password_encrypted, server) VALUES (?,?)"));
}
query.addBindValue(QString::fromUtf8(m_someDataStoredOnDataBase));
@ -489,7 +489,7 @@ void DatabaseEncryptedPasswordBackend::updateSampleData(const QByteArray &passwo
m_stateOfMasterPassword = PasswordIsSetted;
}
else if (query.next()) {
query.prepare("DELETE FROM autofill_encrypted WHERE server = ?");
query.prepare(QSL("DELETE FROM autofill_encrypted WHERE server = ?"));
query.addBindValue(INTERNAL_SERVER_ID);
query.exec();
@ -580,7 +580,7 @@ void MasterPasswordDialog::reject()
AutoFill::tr("This backend needs a master password to be set! "
"Falkon just switches to its default backend"));
// active default backend
mApp->autoFill()->passwordManager()->switchBackend("database");
mApp->autoFill()->passwordManager()->switchBackend(QSL("database"));
return;
}
}
@ -610,7 +610,7 @@ void MasterPasswordDialog::clearMasterPasswordAndConvert(bool forcedAskPass)
if (m_backend->hasPermission()) {
QVector<PasswordEntry> list = m_backend->getAllEntries();
PasswordBackend* databaseBackend = mApp->autoFill()->passwordManager()->availableBackends().value("database");
PasswordBackend* databaseBackend = mApp->autoFill()->passwordManager()->availableBackends().value(QSL("database"));
if (!databaseBackend) {
return;
}
@ -638,11 +638,11 @@ void MasterPasswordDialog::clearMasterPasswordAndConvert(bool forcedAskPass)
m_backend->removeMasterPassword();
m_backend->setAskMasterPasswordState(false);
mApp->autoFill()->passwordManager()->switchBackend("database");
mApp->autoFill()->passwordManager()->switchBackend(QSL("database"));
}
else {
QMessageBox::information(this, tr("Warning!"), tr("Some data has not been decrypted. The master password was not cleared!"));
mApp->autoFill()->passwordManager()->switchBackend("database");
mApp->autoFill()->passwordManager()->switchBackend(QSL("database"));
}
}
reject();

View File

@ -37,8 +37,8 @@ QVector<PasswordEntry> DatabasePasswordBackend::getEntries(const QUrl &url)
const QString host = PasswordManager::createHost(url);
QSqlQuery query(SqlDatabase::instance()->database());
query.prepare("SELECT id, username, password, data FROM autofill "
"WHERE server=? ORDER BY last_used DESC");
query.prepare(QSL("SELECT id, username, password, data FROM autofill "
"WHERE server=? ORDER BY last_used DESC"));
query.addBindValue(host);
query.exec();
@ -63,7 +63,7 @@ QVector<PasswordEntry> DatabasePasswordBackend::getAllEntries()
QVector<PasswordEntry> list;
QSqlQuery query(SqlDatabase::instance()->database());
query.prepare("SELECT id, server, username, password, data FROM autofill");
query.prepare(QSL("SELECT id, server, username, password, data FROM autofill"));
query.exec();
while (query.next()) {
@ -86,7 +86,7 @@ void DatabasePasswordBackend::addEntry(const PasswordEntry &entry)
if (entry.data.isEmpty()) {
// Multiple-usernames for HTTP/FTP authorization not supported
QSqlQuery query(SqlDatabase::instance()->database());
query.prepare("SELECT username FROM autofill WHERE server=?");
query.prepare(QSL("SELECT username FROM autofill WHERE server=?"));
query.addBindValue(entry.host);
query.exec();
@ -96,8 +96,8 @@ void DatabasePasswordBackend::addEntry(const PasswordEntry &entry)
}
QSqlQuery query(SqlDatabase::instance()->database());
query.prepare("INSERT INTO autofill (server, data, username, password, last_used) "
"VALUES (?,?,?,?,strftime('%s', 'now'))");
query.prepare(QSL("INSERT INTO autofill (server, data, username, password, last_used) "
"VALUES (?,?,?,?,strftime('%s', 'now'))"));
query.bindValue(0, entry.host);
query.bindValue(1, entry.data);
query.bindValue(2, entry.username);
@ -111,13 +111,13 @@ bool DatabasePasswordBackend::updateEntry(const PasswordEntry &entry)
// Data is empty only for HTTP/FTP authorization
if (entry.data.isEmpty()) {
query.prepare("UPDATE autofill SET username=?, password=? WHERE server=?");
query.prepare(QSL("UPDATE autofill SET username=?, password=? WHERE server=?"));
query.bindValue(0, entry.username);
query.bindValue(1, entry.password);
query.bindValue(2, entry.host);
}
else {
query.prepare("UPDATE autofill SET data=?, username=?, password=? WHERE id=?");
query.prepare(QSL("UPDATE autofill SET data=?, username=?, password=? WHERE id=?"));
query.addBindValue(entry.data);
query.addBindValue(entry.username);
query.addBindValue(entry.password);
@ -130,7 +130,7 @@ bool DatabasePasswordBackend::updateEntry(const PasswordEntry &entry)
void DatabasePasswordBackend::updateLastUsed(PasswordEntry &entry)
{
QSqlQuery query(SqlDatabase::instance()->database());
query.prepare("UPDATE autofill SET last_used=strftime('%s', 'now') WHERE id=?");
query.prepare(QSL("UPDATE autofill SET last_used=strftime('%s', 'now') WHERE id=?"));
query.addBindValue(entry.id);
query.exec();
}
@ -138,7 +138,7 @@ void DatabasePasswordBackend::updateLastUsed(PasswordEntry &entry)
void DatabasePasswordBackend::removeEntry(const PasswordEntry &entry)
{
QSqlQuery query(SqlDatabase::instance()->database());
query.prepare("DELETE FROM autofill WHERE id=?");
query.prepare(QSL("DELETE FROM autofill WHERE id=?"));
query.addBindValue(entry.id);
query.exec();
}
@ -146,5 +146,5 @@ void DatabasePasswordBackend::removeEntry(const PasswordEntry &entry)
void DatabasePasswordBackend::removeAll()
{
QSqlQuery query(SqlDatabase::instance()->database());
query.exec("DELETE FROM autofill");
query.exec(QSL("DELETE FROM autofill"));
}

View File

@ -61,25 +61,25 @@ QDataStream &operator >>(QDataStream &stream, PasswordEntry &entry)
PasswordManager::PasswordManager(QObject* parent)
: QObject(parent)
, m_loaded(false)
, m_backend(0)
, m_backend(nullptr)
, m_databaseBackend(new DatabasePasswordBackend)
, m_databaseEncryptedBackend(new DatabaseEncryptedPasswordBackend)
{
m_backends["database"] = m_databaseBackend;
m_backends["database-encrypted"] = m_databaseEncryptedBackend;
m_backends[QSL("database")] = m_databaseBackend;
m_backends[QSL("database-encrypted")] = m_databaseEncryptedBackend;
}
void PasswordManager::loadSettings()
{
Settings settings;
settings.beginGroup("PasswordManager");
QString backendId = settings.value("Backend", "database").toString();
settings.beginGroup(QSL("PasswordManager"));
QString backendId = settings.value(QSL("Backend"), QSL("database")).toString();
settings.endGroup();
if (m_backend) {
m_backend->setActive(false);
}
m_backend = m_backends[m_backends.contains(backendId) ? backendId : "database"];
m_backend = m_backends[m_backends.contains(backendId) ? backendId : QSL("database")];
m_backend->setActive(true);
}
@ -159,8 +159,8 @@ void PasswordManager::switchBackend(const QString &backendID)
m_backend->setActive(true);
Settings settings;
settings.beginGroup("PasswordManager");
settings.setValue("Backend", backendID);
settings.beginGroup(QSL("PasswordManager"));
settings.setValue(QSL("Backend"), backendID);
settings.endGroup();
emit passwordBackendChanged();

View File

@ -58,7 +58,7 @@ class FALKON_EXPORT PasswordManager : public QObject
{
Q_OBJECT
public:
explicit PasswordManager(QObject* parent = 0);
explicit PasswordManager(QObject* parent = nullptr);
~PasswordManager();
void loadSettings();

View File

@ -192,7 +192,7 @@ void BookmarkItem::addChild(BookmarkItem* child, int index)
void BookmarkItem::removeChild(BookmarkItem* child)
{
child->m_parent = 0;
child->m_parent = nullptr;
m_children.removeOne(child);
}
@ -217,15 +217,15 @@ QString BookmarkItem::typeToString(BookmarkItem::Type type)
{
switch (type) {
case Url:
return QString("url");
return QSL("url");
case Folder:
return QString("folder");
return QSL("folder");
case Separator:
return QString("separator");
return QSL("separator");
default:
return QString("invalid");
return QSL("invalid");
}
}

View File

@ -37,7 +37,7 @@ public:
Invalid
};
explicit BookmarkItem(Type type, BookmarkItem* parent = 0);
explicit BookmarkItem(Type type, BookmarkItem* parent = nullptr);
~BookmarkItem();
Type type() const;

View File

@ -31,7 +31,7 @@ static const int bookmarksVersion = 1;
Bookmarks::Bookmarks(QObject* parent)
: QObject(parent)
, m_autoSaver(0)
, m_autoSaver(nullptr)
{
m_autoSaver = new AutoSaver(this);
connect(m_autoSaver, SIGNAL(save()), this, SLOT(saveSettings()));
@ -49,9 +49,9 @@ Bookmarks::~Bookmarks()
void Bookmarks::loadSettings()
{
Settings settings;
settings.beginGroup("Bookmarks");
m_showOnlyIconsInToolbar = settings.value("showOnlyIconsInToolbar", false).toBool();
m_showOnlyTextInToolbar = settings.value("showOnlyTextInToolbar", false).toBool();
settings.beginGroup(QSL("Bookmarks"));
m_showOnlyIconsInToolbar = settings.value(QSL("showOnlyIconsInToolbar"), false).toBool();
m_showOnlyTextInToolbar = settings.value(QSL("showOnlyTextInToolbar"), false).toBool();
settings.endGroup();
}
@ -191,9 +191,9 @@ void Bookmarks::setShowOnlyTextInToolbar(bool state)
void Bookmarks::saveSettings()
{
Settings settings;
settings.beginGroup("Bookmarks");
settings.setValue("showOnlyIconsInToolbar", m_showOnlyIconsInToolbar);
settings.setValue("showOnlyTextInToolbar", m_showOnlyTextInToolbar);
settings.beginGroup(QSL("Bookmarks"));
settings.setValue(QSL("showOnlyIconsInToolbar"), m_showOnlyIconsInToolbar);
settings.setValue(QSL("showOnlyTextInToolbar"), m_showOnlyTextInToolbar);
settings.endGroup();
saveBookmarks();
@ -254,13 +254,13 @@ void Bookmarks::loadBookmarks()
Q_ASSERT(err.error == QJsonParseError::NoError);
Q_ASSERT(data.type() == QVariant::Map);
loadBookmarksFromMap(data.toMap().value("roots").toMap());
loadBookmarksFromMap(data.toMap().value(QSL("roots")).toMap());
// Don't forget to save the bookmarks
m_autoSaver->changeOccurred();
}
else {
loadBookmarksFromMap(res.toMap().value("roots").toMap());
loadBookmarksFromMap(res.toMap().value(QSL("roots")).toMap());
}
}
@ -270,22 +270,22 @@ void Bookmarks::saveBookmarks()
#define WRITE_FOLDER(name, mapName, folder) \
QVariantMap mapName; \
mapName.insert("children", writeBookmarks(folder)); \
mapName.insert("expanded", folder->isExpanded()); \
mapName.insert("expanded_sidebar", folder->isSidebarExpanded()); \
mapName.insert("name", folder->title()); \
mapName.insert("description", folder->description()); \
mapName.insert("type", "folder"); \
mapName.insert(QSL("children"), writeBookmarks(folder)); \
mapName.insert(QSL("expanded"), folder->isExpanded()); \
mapName.insert(QSL("expanded_sidebar"), folder->isSidebarExpanded()); \
mapName.insert(QSL("name"), folder->title()); \
mapName.insert(QSL("description"), folder->description()); \
mapName.insert(QSL("type"), QSL("folder")); \
bookmarksMap.insert(name, mapName);
WRITE_FOLDER("bookmark_bar", toolbarMap, m_folderToolbar)
WRITE_FOLDER("bookmark_menu", menuMap, m_folderMenu)
WRITE_FOLDER("other", unsortedMap, m_folderUnsorted)
WRITE_FOLDER(QSL("bookmark_bar"), toolbarMap, m_folderToolbar)
WRITE_FOLDER(QSL("bookmark_menu"), menuMap, m_folderMenu)
WRITE_FOLDER(QSL("other"), unsortedMap, m_folderUnsorted)
#undef WRITE_FOLDER
QVariantMap map;
map.insert("version", bookmarksVersion);
map.insert("roots", bookmarksMap);
map.insert(QSL("version"), bookmarksVersion);
map.insert(QSL("roots"), bookmarksMap);
const QJsonDocument json = QJsonDocument::fromVariant(map);
const QByteArray data = json.toJson();
@ -308,13 +308,13 @@ void Bookmarks::saveBookmarks()
void Bookmarks::loadBookmarksFromMap(const QVariantMap &map)
{
#define READ_FOLDER(name, folder) \
readBookmarks(map.value(name).toMap().value("children").toList(), folder); \
folder->setExpanded(map.value(name).toMap().value("expanded").toBool()); \
folder->setSidebarExpanded(map.value(name).toMap().value("expanded_sidebar").toBool());
readBookmarks(map.value(name).toMap().value(QSL("children")).toList(), folder); \
folder->setExpanded(map.value(name).toMap().value(QSL("expanded")).toBool()); \
folder->setSidebarExpanded(map.value(name).toMap().value(QSL("expanded_sidebar")).toBool());
READ_FOLDER("bookmark_bar", m_folderToolbar)
READ_FOLDER("bookmark_menu", m_folderMenu)
READ_FOLDER("other", m_folderUnsorted)
READ_FOLDER(QSL("bookmark_bar"), m_folderToolbar)
READ_FOLDER(QSL("bookmark_menu"), m_folderMenu)
READ_FOLDER(QSL("other"), m_folderUnsorted)
#undef READ_FOLDER
}
@ -324,7 +324,7 @@ void Bookmarks::readBookmarks(const QVariantList &list, BookmarkItem* parent)
foreach (const QVariant &entry, list) {
const QVariantMap map = entry.toMap();
BookmarkItem::Type type = BookmarkItem::typeFromString(map.value("type").toString());
BookmarkItem::Type type = BookmarkItem::typeFromString(map.value(QSL("type")).toString());
if (type == BookmarkItem::Invalid) {
continue;
@ -334,26 +334,26 @@ void Bookmarks::readBookmarks(const QVariantList &list, BookmarkItem* parent)
switch (type) {
case BookmarkItem::Url:
item->setUrl(QUrl::fromEncoded(map.value("url").toByteArray()));
item->setTitle(map.value("name").toString());
item->setDescription(map.value("description").toString());
item->setKeyword(map.value("keyword").toString());
item->setVisitCount(map.value("visit_count").toInt());
item->setUrl(QUrl::fromEncoded(map.value(QSL("url")).toByteArray()));
item->setTitle(map.value(QSL("name")).toString());
item->setDescription(map.value(QSL("description")).toString());
item->setKeyword(map.value(QSL("keyword")).toString());
item->setVisitCount(map.value(QSL("visit_count")).toInt());
break;
case BookmarkItem::Folder:
item->setTitle(map.value("name").toString());
item->setDescription(map.value("description").toString());
item->setExpanded(map.value("expanded").toBool());
item->setSidebarExpanded(map.value("expanded_sidebar").toBool());
item->setTitle(map.value(QSL("name")).toString());
item->setDescription(map.value(QSL("description")).toString());
item->setExpanded(map.value(QSL("expanded")).toBool());
item->setSidebarExpanded(map.value(QSL("expanded_sidebar")).toBool());
break;
default:
break;
}
if (map.contains("children")) {
readBookmarks(map.value("children").toList(), item);
if (map.contains(QSL("children"))) {
readBookmarks(map.value(QSL("children")).toList(), item);
}
}
}
@ -366,22 +366,22 @@ QVariantList Bookmarks::writeBookmarks(BookmarkItem* parent)
foreach (BookmarkItem* child, parent->children()) {
QVariantMap map;
map.insert("type", BookmarkItem::typeToString(child->type()));
map.insert(QSL("type"), BookmarkItem::typeToString(child->type()));
switch (child->type()) {
case BookmarkItem::Url:
map.insert("url", child->urlString());
map.insert("name", child->title());
map.insert("description", child->description());
map.insert("keyword", child->keyword());
map.insert("visit_count", child->visitCount());
map.insert(QSL("url"), child->urlString());
map.insert(QSL("name"), child->title());
map.insert(QSL("description"), child->description());
map.insert(QSL("keyword"), child->keyword());
map.insert(QSL("visit_count"), child->visitCount());
break;
case BookmarkItem::Folder:
map.insert("name", child->title());
map.insert("description", child->description());
map.insert("expanded", child->isExpanded());
map.insert("expanded_sidebar", child->isSidebarExpanded());
map.insert(QSL("name"), child->title());
map.insert(QSL("description"), child->description());
map.insert(QSL("expanded"), child->isExpanded());
map.insert(QSL("expanded_sidebar"), child->isSidebarExpanded());
break;
default:
@ -389,7 +389,7 @@ QVariantList Bookmarks::writeBookmarks(BookmarkItem* parent)
}
if (!child->children().isEmpty()) {
map.insert("children", writeBookmarks(child));
map.insert(QSL("children"), writeBookmarks(child));
}
list.append(map);

View File

@ -33,7 +33,7 @@ class FALKON_EXPORT Bookmarks : public QObject
{
Q_OBJECT
public:
explicit Bookmarks(QObject* parent = 0);
explicit Bookmarks(QObject* parent = nullptr);
~Bookmarks();
void loadSettings();

View File

@ -34,9 +34,9 @@ BookmarksImportDialog::BookmarksImportDialog(QWidget* parent)
: QDialog(parent)
, ui(new Ui::BookmarksImportDialog)
, m_currentPage(0)
, m_importer(0)
, m_importedFolder(0)
, m_model(0)
, m_importer(nullptr)
, m_importedFolder(nullptr)
, m_model(nullptr)
{
setAttribute(Qt::WA_DeleteOnClose);
ui->setupUi(this);
@ -56,7 +56,7 @@ BookmarksImportDialog::BookmarksImportDialog(QWidget* parent)
BookmarksImportDialog::~BookmarksImportDialog()
{
ui->treeView->setModel(0);
ui->treeView->setModel(nullptr);
delete m_model;
delete m_importedFolder;
delete m_importer;
@ -148,7 +148,7 @@ void BookmarksImportDialog::previousPage()
ui->stackedWidget->setCurrentIndex(--m_currentPage);
delete m_importer;
m_importer = 0;
m_importer = nullptr;
break;
case 2:
@ -159,12 +159,12 @@ void BookmarksImportDialog::previousPage()
ui->backButton->setEnabled(true);
ui->stackedWidget->setCurrentIndex(--m_currentPage);
ui->treeView->setModel(0);
ui->treeView->setModel(nullptr);
delete m_model;
m_model = 0;
m_model = nullptr;
delete m_importedFolder;
m_importedFolder = 0;
m_importedFolder = nullptr;
break;
default:
@ -185,12 +185,12 @@ void BookmarksImportDialog::showImporterPage()
ui->iconLabel->setPixmap(ui->browserList->currentItem()->icon().pixmap(48));
ui->importingFromLabel->setText(tr("<b>Importing from %1</b>").arg(ui->browserList->currentItem()->text()));
ui->fileText1->setText(m_importer->description());
ui->standardDirLabel->setText(QString("<i>%1</i>").arg(m_importer->standardPath()));
ui->standardDirLabel->setText(QSL("<i>%1</i>").arg(m_importer->standardPath()));
}
void BookmarksImportDialog::showExportedBookmarks()
{
m_model = new BookmarksModel(m_importedFolder, 0, this);
m_model = new BookmarksModel(m_importedFolder, nullptr, this);
ui->treeView->setModel(m_model);
ui->treeView->header()->resizeSection(0, ui->treeView->header()->width() / 2);
ui->treeView->expandAll();
@ -199,5 +199,5 @@ void BookmarksImportDialog::showExportedBookmarks()
void BookmarksImportDialog::addExportedBookmarks()
{
mApp->bookmarks()->addBookmark(mApp->bookmarks()->unsortedFolder(), m_importedFolder);
m_importedFolder = 0;
m_importedFolder = nullptr;
}

View File

@ -47,7 +47,7 @@ QString ChromeImporter::standardPath() const
QString ChromeImporter::getPath(QWidget* parent)
{
m_path = QFileDialog::getOpenFileName(parent, BookmarksImporter::tr("Choose file..."), standardPath(), "Bookmarks (Bookmarks)");
m_path = QFileDialog::getOpenFileName(parent, BookmarksImporter::tr("Choose file..."), standardPath(), QSL("Bookmarks (Bookmarks)"));
return m_path;
}
@ -74,25 +74,25 @@ BookmarkItem* ChromeImporter::importBookmarks()
if (err.error != QJsonParseError::NoError || res.type() != QVariant::Map) {
setError(BookmarksImporter::tr("Cannot parse JSON file!"));
return 0;
return nullptr;
}
QVariantMap rootMap = res.toMap().value("roots").toMap();
QVariantMap rootMap = res.toMap().value(QSL("roots")).toMap();
BookmarkItem* root = new BookmarkItem(BookmarkItem::Folder);
root->setTitle("Chrome Import");
root->setTitle(QSL("Chrome Import"));
BookmarkItem* toolbar = new BookmarkItem(BookmarkItem::Folder, root);
toolbar->setTitle(rootMap.value("bookmark_bar").toMap().value("name").toString());
readBookmarks(rootMap.value("bookmark_bar").toMap().value("children").toList(), toolbar);
toolbar->setTitle(rootMap.value(QSL("bookmark_bar")).toMap().value(QSL("name")).toString());
readBookmarks(rootMap.value(QSL("bookmark_bar")).toMap().value(QSL("children")).toList(), toolbar);
BookmarkItem* other = new BookmarkItem(BookmarkItem::Folder, root);
other->setTitle(rootMap.value("other").toMap().value("name").toString());
readBookmarks(rootMap.value("other").toMap().value("children").toList(), other);
other->setTitle(rootMap.value(QSL("other")).toMap().value(QSL("name")).toString());
readBookmarks(rootMap.value(QSL("other")).toMap().value(QSL("children")).toList(), other);
BookmarkItem* synced = new BookmarkItem(BookmarkItem::Folder, root);
synced->setTitle(rootMap.value("synced").toMap().value("name").toString());
readBookmarks(rootMap.value("synced").toMap().value("synced").toList(), other);
synced->setTitle(rootMap.value(QSL("synced")).toMap().value(QSL("name")).toString());
readBookmarks(rootMap.value(QSL("synced")).toMap().value(QSL("synced")).toList(), other);
return root;
}
@ -103,7 +103,7 @@ void ChromeImporter::readBookmarks(const QVariantList &list, BookmarkItem* paren
foreach (const QVariant &entry, list) {
const QVariantMap map = entry.toMap();
const QString typeString = map.value("type").toString();
const QString typeString = map.value(QSL("type")).toString();
BookmarkItem::Type type;
if (typeString == QLatin1String("url")) {
@ -117,14 +117,14 @@ void ChromeImporter::readBookmarks(const QVariantList &list, BookmarkItem* paren
}
BookmarkItem* item = new BookmarkItem(type, parent);
item->setTitle(map.value("name").toString());
item->setTitle(map.value(QSL("name")).toString());
if (item->isUrl()) {
item->setUrl(QUrl::fromEncoded(map.value("url").toByteArray()));
item->setUrl(QUrl::fromEncoded(map.value(QSL("url")).toByteArray()));
}
if (map.contains("children")) {
readBookmarks(map.value("children").toList(), item);
if (map.contains(QSL("children"))) {
readBookmarks(map.value(QSL("children")).toList(), item);
}
}
}

View File

@ -34,7 +34,7 @@ BookmarksManager::BookmarksManager(BrowserWindow* window, QWidget* parent)
, ui(new Ui::BookmarksManager)
, m_window(window)
, m_bookmarks(mApp->bookmarks())
, m_selectedBookmark(0)
, m_selectedBookmark(nullptr)
, m_blockDescriptionChangedSignal(false)
, m_adjustHeaderSizesOnShow(true)
{
@ -48,7 +48,7 @@ BookmarksManager::BookmarksManager(BrowserWindow* window, QWidget* parent)
connect(ui->tree, SIGNAL(contextMenuRequested(QPoint)), this, SLOT(createContextMenu(QPoint)));
// Box for editing bookmarks
updateEditBox(0);
updateEditBox(nullptr);
connect(ui->title, SIGNAL(textEdited(QString)), this, SLOT(bookmarkEdited()));
connect(ui->address, SIGNAL(textEdited(QString)), this, SLOT(bookmarkEdited()));
connect(ui->keyword, SIGNAL(textEdited(QString)), this, SLOT(bookmarkEdited()));
@ -90,8 +90,8 @@ void BookmarksManager::bookmarkShiftActivated(BookmarkItem* item)
void BookmarksManager::bookmarksSelected(const QList<BookmarkItem*> &items)
{
if (items.size() != 1) {
m_selectedBookmark = 0;
updateEditBox(0);
m_selectedBookmark = nullptr;
updateEditBox(nullptr);
}
else {
m_selectedBookmark = items.at(0);
@ -111,7 +111,7 @@ void BookmarksManager::createContextMenu(const QPoint &pos)
menu.addAction(tr("New Folder"), this, SLOT(addFolder()));
menu.addAction(tr("New Separator"), this, SLOT(addSeparator()));
menu.addSeparator();
QAction* actDelete = menu.addAction(QIcon::fromTheme("edit-delete"), tr("Delete"));
QAction* actDelete = menu.addAction(QIcon::fromTheme(QSL("edit-delete")), tr("Delete"));
connect(actNewTab, SIGNAL(triggered()), this, SLOT(openBookmarkInNewTab()));
connect(actNewWindow, SIGNAL(triggered()), this, SLOT(openBookmarkInNewWindow()));
@ -169,7 +169,7 @@ void BookmarksManager::addBookmark()
{
BookmarkItem* item = new BookmarkItem(BookmarkItem::Url);
item->setTitle(tr("New Bookmark"));
item->setUrl(QUrl("http://"));
item->setUrl(QUrl(QSL("http://")));
addBookmark(item);
}

View File

@ -15,6 +15,7 @@ Name[gl]=Breeze
Name[id]=Breeze
Name[it]=Brezza
Name[nl]=Breeze
Name[nn]=Breeze
Name[pl]=Bryza
Name[pt]=Brisa
Name[pt_BR]=Breeze
@ -26,8 +27,8 @@ Name[zh_CN]=微风
Comment=Breeze Team
Comment[ar]=فريق نسيم
Comment[ast]=L'equipu de Breeze
Comment[ca]=L'equip Brisa
Comment[ca@valencia]=L'equip Brisa
Comment[ca]=L'equip «Breeze»
Comment[ca@valencia]=L'equip «Breeze»
Comment[cs]=Team Breeze
Comment[da]=Breeze-tema
Comment[de]=Breeze-Team
@ -39,6 +40,7 @@ Comment[gl]=Equipo de Breeze
Comment[id]=Tim Breeze
Comment[it]=La squadra di Brezza
Comment[nl]=Breeze-team
Comment[nn]=Breeze-laget
Comment[pl]=Zespół Bryzy
Comment[pt]=Equipa do Brisa
Comment[sv]=Breeze-gruppen

View File

@ -268,10 +268,7 @@ void DownloadManager::download(QWebEngineDownloadItem *downloadItem)
QString downloadPath;
bool openFile = false;
QString fileName = QFileInfo(downloadItem->path()).fileName();
fileName = QUrl::fromPercentEncoding(fileName.toUtf8());
// Filename may have been percent encoded and actually containing path
fileName = QFileInfo(fileName).fileName();
const QString fileName = QFileInfo(downloadItem->path()).fileName();
const bool forceAsk = downloadItem->savePageFormat() != QWebEngineDownloadItem::UnknownSaveFormat
|| downloadItem->type() == QWebEngineDownloadItem::UserRequested;

View File

@ -230,19 +230,24 @@ void NavigationBar::setCurrentView(TabbedWebView *view)
return;
}
auto updateButton = [](ToolButton *button, QAction *action) {
button->setEnabled(action->isEnabled());
auto connectPageActions = [this](QWebEnginePage *page) {
auto updateButton = [](ToolButton *button, QAction *action) {
button->setEnabled(action->isEnabled());
};
auto updateBackButton = std::bind(updateButton, m_buttonBack, page->action(QWebEnginePage::Back));
auto updateForwardButton = std::bind(updateButton, m_buttonForward, page->action(QWebEnginePage::Forward));
updateBackButton();
updateForwardButton();
disconnect(m_backConnection);
disconnect(m_forwardConnection);
m_backConnection = connect(page->action(QWebEnginePage::Back), &QAction::changed, this, updateBackButton);
m_forwardConnection = connect(page->action(QWebEnginePage::Forward), &QAction::changed, this, updateForwardButton);
};
auto updateBackButton = std::bind(updateButton, m_buttonBack, view->pageAction(QWebEnginePage::Back));
auto updateForwardButton = std::bind(updateButton, m_buttonForward, view->pageAction(QWebEnginePage::Forward));
updateBackButton();
updateForwardButton();
disconnect(m_backConnection);
disconnect(m_forwardConnection);
m_backConnection = connect(view->pageAction(QWebEnginePage::Back), &QAction::changed, this, updateBackButton);
m_forwardConnection = connect(view->pageAction(QWebEnginePage::Forward), &QAction::changed, this, updateForwardButton);
connectPageActions(view->page());
connect(view, &TabbedWebView::pageChanged, this, connectPageActions);
}
void NavigationBar::showReloadButton()

View File

@ -89,8 +89,7 @@ FalkonSchemeReply::FalkonSchemeReply(QWebEngineUrlRequestJob *job, QObject *pare
{
m_pageName = m_job->requestUrl().path();
open(QIODevice::ReadOnly);
m_buffer.open(QIODevice::ReadWrite);
QTimer::singleShot(0, this, &FalkonSchemeReply::loadPage);
}
void FalkonSchemeReply::loadPage()
@ -98,38 +97,40 @@ void FalkonSchemeReply::loadPage()
if (m_loaded)
return;
QTextStream stream(&m_buffer);
stream.setCodec("UTF-8");
QString contents;
if (m_pageName == QLatin1String("about")) {
stream << aboutPage();
}
else if (m_pageName == QLatin1String("start")) {
stream << startPage();
}
else if (m_pageName == QLatin1String("speeddial")) {
stream << speeddialPage();
}
else if (m_pageName == QLatin1String("config")) {
stream << configPage();
}
else if (m_pageName == QLatin1String("restore")) {
stream << restorePage();
contents = aboutPage();
} else if (m_pageName == QLatin1String("start")) {
contents = startPage();
} else if (m_pageName == QLatin1String("speeddial")) {
contents = speeddialPage();
} else if (m_pageName == QLatin1String("config")) {
contents = configPage();
} else if (m_pageName == QLatin1String("restore")) {
contents = restorePage();
}
stream.flush();
m_buffer.reset();
QMutexLocker lock(&m_mutex);
m_buffer.setData(contents.toUtf8());
m_buffer.open(QIODevice::ReadOnly);
lock.unlock();
open(QIODevice::ReadOnly);
emit readyRead();
m_loaded = true;
}
qint64 FalkonSchemeReply::bytesAvailable() const
{
QMutexLocker lock(&m_mutex);
return m_buffer.bytesAvailable();
}
qint64 FalkonSchemeReply::readData(char *data, qint64 maxSize)
{
loadPage();
QMutexLocker lock(&m_mutex);
return m_buffer.read(data, maxSize);
}

View File

@ -18,6 +18,7 @@
#ifndef FALKONSCHEMEHANDLER_H
#define FALKONSCHEMEHANDLER_H
#include <QMutex>
#include <QBuffer>
#include <QIODevice>
#include <QWebEngineUrlSchemeHandler>
@ -60,6 +61,7 @@ private:
QBuffer m_buffer;
QString m_pageName;
QWebEngineUrlRequestJob *m_job;
mutable QMutex m_mutex;
};
#endif // FALKONSCHEMEHANDLER_H

View File

@ -52,7 +52,7 @@ public:
static QString fromPunycode(const QString &str);
static QString escapeSqlGlobString(QString urlString);
static QString ensureUniqueFilename(const QString &name, const QString &appendFormat = QString("(%1)"));
static QString ensureUniqueFilename(const QString &name, const QString &appendFormat = QSL("(%1)"));
static QString getFileNameFromUrl(const QUrl &url);
static QString filterCharsFromFilename(const QString &name);

View File

@ -16,7 +16,7 @@ add_executable(falkon ${SRCS})
target_link_libraries(falkon FalkonPrivate)
if (APPLE)
set_target_properties(falkon PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/main/Info.plist)
set_target_properties(falkon PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist)
set_target_properties(falkon PROPERTIES MACOSX_BUNDLE_GUI_IDENTIFIER "org.kde.falkon")
set_target_properties(falkon PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Falkon")
install(FILES lib/data/icons/exeicons/falkon.icns DESTINATION ${BUNDLE_INSTALL_DIR}/falkon.app/Contents/Resources)

View File

@ -13,6 +13,7 @@ Name[gl]=Desprazamento automático
Name[id]=AutoScroll
Name[it]=Scorrimento automatico
Name[nl]=Auto-schuiven
Name[nn]=Autorulling
Name[pl]=Samoprzewijanie
Name[pt]=Deslocamento Automático
Name[sv]=Rulla automatiskt
@ -20,8 +21,8 @@ Name[uk]=Автогортання
Name[x-test]=xxAutoScrollxx
Name[zh_CN]=
Comment=Provides support for autoscroll with middle mouse button
Comment[ca]=Proporciona suport per al desplaçament automàtic amb el botó mig del ratolí
Comment[ca@valencia]=Proporciona suport per al desplaçament automàtic amb el botó mig del ratolí
Comment[ca]=Proporciona suport per al desplaçament automàtic amb el botó del mig del ratolí
Comment[ca@valencia]=Proporciona suport per al desplaçament automàtic amb el botó del mig del ratolí
Comment[cs]=Poskytuje podporu pro automatický posun pomocí prostředního tlačítka
Comment[da]=Giver understøttelse af autorul med den midterste museknap
Comment[en_GB]=Provides support for autoscroll with middle mouse button
@ -32,6 +33,7 @@ Comment[gl]=Fornece a funcionalidade de desprazamento automático co botón cent
Comment[id]=Menyediakan dukungan untuk gulir otomatis dengan tombol tengah mouse
Comment[it]=Fornisce il supporto allo scorrimento automatico con il pulsante centrale del mouse
Comment[nl]=Bied ondersteuning voor auto-schuiven met middelste muisknop
Comment[nn]=Gjev støtte for autorulling med midtknappen på musa
Comment[pl]=Zapewnia obsługę samoprzewijania na środkowy przycisk myszy
Comment[pt]=Oferece o suporte para o deslocamento automático com o botão do meio do rato
Comment[sv]=Tillhandahåller stöd för automatisk rullning med musens mittenknapp

View File

@ -1,7 +1,7 @@
[Desktop Entry]
Name=Flash Cookie Manager
Name[ca]=Gestor de galetes Flash
Name[ca@valencia]=Gestor de galetes Flash
Name[ca]=Gestor de les galetes Flash
Name[ca@valencia]=Gestor de les galetes Flash
Name[cs]=Správce cookies pro Flash
Name[da]=Håndtering af flash-cookie
Name[de]=Flash-Cookie-Verwaltung
@ -13,6 +13,7 @@ Name[gl]=Xestor de cookies flash
Name[id]=Flash Cookie Manager
Name[it]=Gestore dei cookie in flash
Name[nl]=Cookiebeheerder van Flash
Name[nn]=Handsamar for Flash-infokapslar
Name[pl]=Zarządzanie ciasteczkami Flash
Name[pt]=Gestor de 'Cookies' do Flash
Name[sv]=Flash kakhanterare
@ -20,8 +21,8 @@ Name[uk]=Керування куками Flash
Name[x-test]=xxFlash Cookie Managerxx
Name[zh_CN]=Flash Cookie
Comment=You can easily view/delete flash cookies stored on your computer. This is a solution for having more privacy.
Comment[ca]=Podeu veure/eliminar fàcilment les galetes Flash emmagatzemades a l'ordinador. Aquesta és una solució per tenir més privacitat.
Comment[ca@valencia]=Podeu veure/eliminar fàcilment les galetes Flash emmagatzemades a l'ordinador. Aquesta és una solució per tindre més privacitat.
Comment[ca]=Podeu veure/eliminar fàcilment les galetes Flash emmagatzemades a l'ordinador. Aquesta és una solució per a tenir més privacitat.
Comment[ca@valencia]=Podeu veure/eliminar fàcilment les galetes Flash emmagatzemades a l'ordinador. Aquesta és una solució per a tindre més privacitat.
Comment[cs]=Můžete snadno prohlížet/mazat cookies pro flash uložené na vašem počítači. Toto je řešení pro větší soukromí.
Comment[da]=Du kan let vise/slette flash-cookies som er lagret på din computer. En løsning til mere privatliv.
Comment[en_GB]=You can easily view/delete flash cookies stored on your computer. This is a solution for having more privacy.
@ -32,6 +33,7 @@ Comment[gl]=Pode ver e eliminar facilmente cookies flash almacenadas no seu comp
Comment[id]=Kamu bisa menampilkan/menghapus cookies flash yang tersimpan pada komputermu. Ini adalah sebuah solusi untuk membuat lebih privasi.
Comment[it]=Puoi vedere o cancellare in maniera semplice i cookie in flash immagazzinati nel tuo computer. È una soluzione per avere una maggior privacy.
Comment[nl]=U kunt gemakkelijk cookies van flash opgeslagen op uw computer bekijken/verwijderen. Dit is een oplossing om meer privacy te hebben.
Comment[nn]=Du kan visa og sletta lagra Flash-infokapslar. Dette styrkjer personvernet.
Comment[pl]=Możesz łatwo obejrzeć/usunąć ciasteczka flash przechowywane na twoim komputerze. Jest to rozwiązanie umożliwiające większą prywatność.
Comment[pt]=Poderá ver/apagar facilmente os 'cookies' do Flash gravados no seu computador. Esta é uma solução para ter mais privacidade.
Comment[sv]=Det går enkelt att titta på eller ta bort Flash kakor lagrade på datorn. Det är en lösning på integritetsproblem.

View File

@ -12,6 +12,7 @@ Name[gl]=Contrasinais do chaveiro de Gnome
Name[id]=Gnome Keyring Passwords
Name[it]=Portachiavi per le chiavi di Gnome
Name[nl]=GNOME-sleutelbos wachtwoorden
Name[nn]=Passord for Gnome-nøkkelring
Name[pl]=Hasła pęku kluczy Gnome
Name[pt]=Senhas no Porta-Chaves do Gnome
Name[sv]=Gnome-nyckelring lösenord
@ -19,8 +20,8 @@ Name[uk]=Паролі сховища ключів Gnome
Name[x-test]=xxGnome Keyring Passwordsxx
Name[zh_CN]=Gnome
Comment=Provides support for storing passwords in gnome-keyring
Comment[ca]=Proporciona suport per emmagatzemar contrasenyes a l'anell de claus de Gnome
Comment[ca@valencia]=Proporciona suport per emmagatzemar contrasenyes a l'anell de claus de Gnome
Comment[ca]=Proporciona suport per emmagatzemar les contrasenyes a l'anell de claus de Gnome
Comment[ca@valencia]=Proporciona suport per emmagatzemar les contrasenyes a l'anell de claus de Gnome
Comment[cs]=Poskytuje podporu pro ukládání hesel pomocí gnome-keyring
Comment[da]=Giver understøttelse af lagring af adgangskoder i gnome-nøglring
Comment[en_GB]=Provides support for storing passwords in gnome-keyring
@ -31,6 +32,7 @@ Comment[gl]=Permite almacenar contrasinais en gnome-keyring
Comment[id]=Menyediakan dukungan untuk menyimpan sandi dalam gnome-keyring
Comment[it]=Fornisce un supporto all'immagazzinamento delle password nel portachiavi di Gnome
Comment[nl]=Biedt ondersteuning voor opslaan van GNOME-sleutelbos wachtwoorden
Comment[nn]=Gjev støtte for lagring av passord i Gnome-nøkkelringen
Comment[pl]=Zapewnia obsługę przechowywania haseł w pęku kluczy gnome
Comment[pt]=Oferece o suporte para gravar as senhas no 'gnome-keyring'
Comment[sv]=Tillhandahåller stöd för att lagra lösenord i Gnome-nyckelring

View File

@ -13,15 +13,16 @@ Name[gl]=GreaseMonkey
Name[id]=GreaseMonkey
Name[it]=GreaseMonkey
Name[nl]=GreaseMonkey
Name[nn]=GreaseMonkey
Name[pl]=GreaseMonkey
Name[pt]=GreaseMonkey
Name[sv]=GreaseMonkey
Name[uk]=GreaseMonkey
Name[x-test]=xxGreaseMonkeyxx
Name[zh_CN]=GreaseMonkey
Name[zh_CN]=
Comment=Provides support for userscripts
Comment[ca]=Proporciona suport per scripts d'usuari
Comment[ca@valencia]=Proporciona suport per scripts d'usuari
Comment[ca]=Proporciona suport per als scripts d'usuari
Comment[ca@valencia]=Proporciona suport per als scripts d'usuari
Comment[cs]=Poskytuje podporu pro uživatelské skripty
Comment[da]=Giver understøttelse af brugerscripts
Comment[en_GB]=Provides support for userscripts
@ -32,6 +33,7 @@ Comment[gl]=Permite scripts de usuario
Comment[id]=Menyediakan dukungan untuk skrip pengguna
Comment[it]=Fornisce un supporto agli script utente
Comment[nl]=Biedt ondersteuning voor scripts van gebruikers
Comment[nn]=Gjev støtte for brukarskript
Comment[pl]=Zapewnia obsługę dla skryptów użytkownika
Comment[pt]=Oferece o suporte para programas do utilizador
Comment[sv]=Tillhandahåller stöd för användarskript

View File

@ -11,14 +11,15 @@ Name[gl]=Integración coas infraestruturas de KDE
Name[id]=KDE Frameworks Integration
Name[it]=Integrazione con KDE Frameworks
Name[nl]=KDE Frameworks integratie
Name[nn]=Integrering med KDE Frameworks
Name[pt]=Integração com as Plataformas do KDE
Name[sv]=Integration med KDE Ramverk
Name[uk]=Інтерграція із KDE Frameworks
Name[x-test]=xxKDE Frameworks Integrationxx
Name[zh_CN]=KDE
Comment=Provides support for KIO and storing passwords in KWallet
Comment[ca]=Proporciona suport pel KIO i per emmagatzemar contrasenyes al KWallet
Comment[ca@valencia]=Proporciona suport pel KIO i per emmagatzemar contrasenyes al KWallet
Comment[ca]=Proporciona suport pel KIO i per emmagatzemar les contrasenyes al KWallet
Comment[ca@valencia]=Proporciona suport pel KIO i per emmagatzemar les contrasenyes al KWallet
Comment[cs]=Poskytuje podporu pro KIO a ukládání hesel v Kwallet
Comment[da]=Giver understøttelse af KIO og lagring af adgangskoder i KWallet
Comment[en_GB]=Provides support for KIO and storing passwords in KWallet
@ -28,6 +29,7 @@ Comment[gl]=Fornece compatibilidade con KIO e permite almacenar contrasinais en
Comment[id]=Menyediakan dukungan untuk KIO dan menyimpan sandi dalam KWallet
Comment[it]=Fornisce un supporto per KIO e per l'immagazzinamento delle password in KWallet
Comment[nl]=Biedt ondersteuning voor KIO en opslaan van wachtwoorden in KWallet
Comment[nn]=Gjev støtte for KIO og lagring av passord i KWallet
Comment[pt]=Oferece o suporte para o KIO e para guardar as senhas no KWallet
Comment[sv]=Tillhandahåller stöd KIO och för att lagra lösenord i plånboken
Comment[uk]=Забезпечує підтримку засобів введення-виведення KIO і зберігання паролів у KWallet

View File

@ -13,6 +13,7 @@ Name[gl]=Xestos do rato
Name[id]=Mouse Gestures
Name[it]=Gesti del mouse
Name[nl]=Muisgebaren
Name[nn]=Muserørsler
Name[pl]=Gesty myszy
Name[pt]=Gestos do Rato
Name[sv]=Musgester
@ -20,8 +21,8 @@ Name[uk]=Керування мишею
Name[x-test]=xxMouse Gesturesxx
Name[zh_CN]=
Comment=Provides support for navigating in webpages by mouse gestures
Comment[ca]=Proporciona suport per navegar per les pàgines web amb gestos del ratolí
Comment[ca@valencia]=Proporciona suport per navegar per les pàgines web amb gestos del ratolí
Comment[ca]=Proporciona suport per a navegar per les pàgines web amb els gestos del ratolí
Comment[ca@valencia]=Proporciona suport per a navegar per les pàgines web amb els gestos del ratolí
Comment[cs]=Poskytuje podporu pro procházení webových stránek pomocí gest myší
Comment[da]=Giver understøttelse af navigering på websider med musebevægelser
Comment[de]=Unterstützung für die Navigation auf Webseiten durch Mausgesten
@ -33,6 +34,7 @@ Comment[gl]=Permite navegar por páxinas web con acenos co rato
Comment[id]=Menyediakan dukungan untuk menavigasi dalam halaman web dengan pergerakan mouse
Comment[it]=Fornisce un supporto alla navigazione nelle pagine web per mezzo di gesti del mouse
Comment[nl]=Biedt ondersteuning voor navigeren in webpagina's door muisgebaren
Comment[nn]=Gjev støtte for muserørsler for nettsidenavigering
Comment[pl]=Zapewnia obsługę poruszania się po stronach przy użyciu gestów myszy
Comment[pt]=Oferece o suporte para navegar nas páginas Web com gestos do rato
Comment[sv]=Tillhandahåller stöd för att navigera på webbsidor med musgester

View File

@ -13,6 +13,7 @@ Name[gl]=PIM
Name[id]=PIM
Name[it]=PIM
Name[nl]=PIM
Name[nn]=PIM
Name[pl]=ZIO
Name[pt]=PIM
Name[sv]=Personlig information
@ -20,8 +21,8 @@ Name[uk]=Керування інформацією
Name[x-test]=xxPIMxx
Name[zh_CN]=
Comment=Adds ability for Falkon to store some personal data
Comment[ca]=Afegeix la possibilitat del Falkon per emmagatzemar diverses dades personals
Comment[ca@valencia]=Afig la possibilitat del Falkon per emmagatzemar diverses dades personals
Comment[ca]=Afegeix la possibilitat que el Falkon emmagatzemi diverses dades personals
Comment[ca@valencia]=Afig la possibilitat que el Falkon emmagatzeme diverses dades personals
Comment[cs]=Přidává Falkonu schopnost ukládat nějaká osobní data
Comment[da]=Tilføjer mulighed for at Falkon kan lagre nogle personlige data
Comment[en_GB]=Adds ability for Falkon to store some personal data
@ -32,6 +33,7 @@ Comment[gl]=Permite a Falkon almacenar algúns datos persoais
Comment[id]=Menambah kemampuan terhadap Falkon untuk menyimpan beberapa data pribadi
Comment[it]=Aggiunge a Falkon la capacità di immagazzinare alcuni dati personali
Comment[nl]=Biedt mogelijkheid voor Falkon om enige persoonlijke gegevens op te slaan
Comment[nn]=Gjer det mogleg for Falkon å lagra nokre persondata
Comment[pl]=Dodaje możliwość przechowywania pewnych danych osobistych
Comment[pt]=Adiciona ao Falkon a capacidade de guardar alguns dados pessoais
Comment[sv]=Lägger till möjlighet för Falkon att lagra viss personlig information

View File

@ -19,6 +19,10 @@
// Make "signals:", "slots:" visible as access specifiers
#define QT_ANNOTATE_ACCESS_SPECIFIER(a) __attribute__((annotate(#a)))
// PYSIDE-711
#include <QHstsPolicy>
#include <QWebEngineContextMenuData>
// 3rdparty
#include "lineedit.h"
#include "squeezelabelv1.h"

View File

@ -13,6 +13,7 @@ Name[gl]=Iconas da barra de estado
Name[id]=Ikon BilahStatus
Name[it]=Icone della barra di stato
Name[nl]=Pictogrammen op de statusbalk
Name[nn]=Statuslinje-ikon
Name[pl]=Ikony paska stanu
Name[pt]=Ícones da Barra de Estado
Name[sv]=Ikoner i statusraden
@ -32,6 +33,7 @@ Comment[gl]=Engade iconas adicionais e un trebello de ampliación á barra de es
Comment[id]=Menambah tambahan ikon dan perbesaran widget untuk bilah status
Comment[it]=Aggiunge alla barra di stato alcune icone aggiuntive ed uno strumento di ingrandimento
Comment[nl]=Voegt extra pictogrammen en zoomwidget toe aan de statusbalk
Comment[nn]=Leggjer til fleire ikon og sideforstørring via statuslinja
Comment[pl]=Dodaje dodatkowe ikony i element do powiększania na pasku stanu
Comment[pt]=Adiciona ícones extra e um item de ampliação à barra de estado
Comment[sv]=Lägger till ytterligare ikoner och en zoomkomponent i statusraden

View File

@ -31,8 +31,8 @@ SBI_NetworkIconDialog::SBI_NetworkIconDialog(QWidget* parent)
ui->setupUi(this);
ui->addButton->setIcon(QIcon::fromTheme("document-new", QIcon(":sbi/data/add.png")));
ui->removeButton->setIcon(QIcon::fromTheme("edit-delete", QIcon(":sbi/data/remove.png")));
ui->addButton->setIcon(QIcon::fromTheme(QLatin1String("document-new"), QIcon(QLatin1String(":sbi/data/add.png"))));
ui->removeButton->setIcon(QIcon::fromTheme(QLatin1String("edit-delete"), QIcon(QLatin1String(":sbi/data/remove.png"))));
const QHash<QString, SBI_NetworkProxy*> &proxies = SBINetManager->proxies();

View File

@ -23,12 +23,12 @@
#include <QSettings>
SBI_NetworkManager* SBI_NetworkManager::s_instance = 0;
SBI_NetworkManager* SBI_NetworkManager::s_instance = nullptr;
SBI_NetworkManager::SBI_NetworkManager(const QString &settingsPath, QObject* parent)
: QObject(parent)
, m_settingsFile(settingsPath + QL1S("/networkicon.ini"))
, m_currentProxy(0)
, m_currentProxy(nullptr)
{
s_instance = this;
@ -58,8 +58,8 @@ void SBI_NetworkManager::loadSettings()
m_proxies[group] = proxy;
}
const QString currentName = settings.value("CurrentProxy", QString()).toString();
m_currentProxy = m_proxies.contains(currentName) ? m_proxies.value(currentName) : 0;
const QString currentName = settings.value(QSL("CurrentProxy"), QString()).toString();
m_currentProxy = m_proxies.contains(currentName) ? m_proxies.value(currentName) : nullptr;
applyCurrentProxy();
}
@ -77,9 +77,9 @@ SBI_NetworkProxy* SBI_NetworkManager::currentProxy() const
void SBI_NetworkManager::setCurrentProxy(const QString &name)
{
QSettings settings(m_settingsFile, QSettings::IniFormat);
settings.setValue("CurrentProxy", name);
settings.setValue(QSL("CurrentProxy"), name);
m_currentProxy = m_proxies.contains(name) ? m_proxies.value(name) : 0;
m_currentProxy = m_proxies.contains(name) ? m_proxies.value(name) : nullptr;
applyCurrentProxy();
}

View File

@ -13,6 +13,7 @@ Name[gl]=Xestor de lapelas
Name[id]=Pengelola Tab
Name[it]=Gestore delle schede
Name[nl]=Tabbladbeheerder
Name[nn]=Fanehandsamar
Name[pl]=Zarządzanie kartami
Name[pt]=Gestor de Páginas
Name[sv]=Flikhanterare
@ -20,8 +21,8 @@ Name[uk]=Керування вкладками
Name[x-test]=xxTab Managerxx
Name[zh_CN]=
Comment=Adds ability to managing tabs and windows
Comment[ca]=Afegeix la possibilitat de gestionar pestanyes i finestres
Comment[ca@valencia]=Afig la possibilitat de gestionar pestanyes i finestres
Comment[ca]=Afegeix la possibilitat de gestionar les pestanyes i finestres
Comment[ca@valencia]=Afig la possibilitat de gestionar les pestanyes i finestres
Comment[cs]=Přidává schopnost správy karet a oken
Comment[da]=Tilføjer mulighed for at håndtere faneblade og vinduer
Comment[de]=Verwaltung von Unterfenstern und Fenstern
@ -33,6 +34,7 @@ Comment[gl]=Permite xestionar lapelas e xanelas
Comment[id]=Menambah kemampuan untuk mengelola tab dan jendela
Comment[it]=Aggiunge la capacità di gestione delle schede e delle finestre
Comment[nl]=Voegt mogelijkheid toe om tabbladen en vensters te beheren
Comment[nn]=Gjer det mogleg å handtera faner og vindauge
Comment[pl]=Dodaje możliwość zarządzania kartami i oknami
Comment[pt]=Adiciona a capacidade para gerir páginas e janelas
Comment[sv]=Lägger till möjlighet att hantera flikar och fönster

View File

@ -13,6 +13,7 @@ Name[gl]=Complemento de exemplo
Name[id]=Contoh Plugin
Name[it]=Estensione di esempio
Name[nl]=Voorbeeld plug-in
Name[nn]=Eksempel-tillegg
Name[pl]=Przykładowa wtyczka
Name[pt]='Plugin' de Exemplo
Name[sv]=Exempelinsticksprogram
@ -20,8 +21,8 @@ Name[uk]=Приклад додатка
Name[x-test]=xxExample Pluginxx
Name[zh_CN]=
Comment=Very simple minimal plugin example
Comment[ca]=Exemple molt senzill de connector mínim
Comment[ca@valencia]=Exemple molt senzill de connector mínim
Comment[ca]=Exemple molt senzill d'un connector mínim
Comment[ca@valencia]=Exemple molt senzill d'un connector mínim
Comment[cs]=Jednoduchá ukázka modulu
Comment[da]=Meget simpelt minimalt plugin eksempel
Comment[de]=Einfaches minimales Beispielmodul
@ -33,6 +34,7 @@ Comment[gl]=Exemplo de complemento mínimo moi simple
Comment[id]=Contoh plugin minimal yang sangat sederhana
Comment[it]=Estensione di esempio molto semplice e minimale
Comment[nl]=Zeer eenvoudige minimaal voorbeeld voor plug-in
Comment[nn]=Veldig enkelt og lite eksempel-tillegg
Comment[pl]=Bardzo prosty minimalny przykład wtyczki
Comment[pt]='Plugin' de exemplo muito simples e minimalista
Comment[sv]=Mycket enkelt minimalt exempel på ett insticksprogram

View File

@ -13,12 +13,13 @@ Name[gl]=Lapelas verticais
Name[id]=Tab Tegak
Name[it]=Schede verticali
Name[nl]=Verticale tabbladen
Name[nn]=Loddrette faner
Name[pl]=Pionowe karty
Name[pt]=Páginas Verticais
Name[sv]=Vertikala flikar
Name[uk]=Вертикальні вкладки
Name[x-test]=xxVertical Tabsxx
Name[zh_CN]=
Name[zh_CN]=
Comment=Adds ability to show tabs in sidebar
Comment[ca]=Afegeix la possibilitat de mostrar les pestanyes a la barra lateral
Comment[ca@valencia]=Afig la possibilitat de mostrar les pestanyes a la barra lateral
@ -32,12 +33,13 @@ Comment[gl]=Permite mostrar lapelas na barra lateral
Comment[id]=Menambah kemampuan untuk menampilkan tab dalam bilah sisi
Comment[it]=Aggiunge la capacità di mostrare le schede nella barra laterale
Comment[nl]=Voegt mogelijkheid toe om tabbladen in de zijbalk te tonen
Comment[nn]=Gjer det mogleg å visa faner i sidestolpen
Comment[pl]=Dodaje możliwość pokazywania kart na pasku bocznym
Comment[pt]=Adiciona a capacidade de mostrar as páginas na barra lateral
Comment[sv]=Lägger till möjlighet att visa flikar i sidorader
Comment[uk]=Додає можливість показу вкладок на бічній панелі
Comment[x-test]=xxAdds ability to show tabs in sidebarxx
Comment[zh_CN]=
Comment[zh_CN]=
Icon=:verticaltabs/data/icon.svg
Type=Service

View File

@ -386,6 +386,14 @@ void TabTreeView::addMenuActions(QMenu *menu, const QModelIndex &index) const
tab->closeTab();
}
});
m->addAction(tr("Unload Tree"), this, [=]() {
reverseTraverse(pindex, [&](const QModelIndex &index) {
WebTab *tab = index.data(TabModel::WebTabRole).value<WebTab*>();
if (tab && tab->isRestored()) {
tab->unload();
}
});
});
}
m->addSeparator();

View File

@ -18,5 +18,6 @@ endfunction()
install_python_script(hellopython)
install_python_script(runaction)
install_python_script(middleclickloader)
install_qml_script(helloqml)

View File

@ -12,6 +12,7 @@ Name[gl]=Ola, Python!
Name[id]=Hello Python
Name[it]=Hello Python
Name[nl]=Hallo Python
Name[nn]=Hei-Python
Name[pl]=Witaj Python
Name[pt]=Olá em Python
Name[sv]=Hej Python
@ -31,6 +32,7 @@ Comment[gl]=Extensión de Python de exemplo
Comment[id]=Contoh ekstensi Python
Comment[it]=Estensione di esempio in Python
Comment[nl]=Voorbeeld Python-extensie
Comment[nn]=Eksempel på Python-tillegg
Comment[pl]=Przykładowe rozszerzenie Python
Comment[pt]=Extensão de exemplo em Python
Comment[sv]=Exempel på Python-utökning

View File

@ -0,0 +1,11 @@
#! /bin/sh
XGETTEXT_FLAGS_PYTHON="\
--copyright-holder=This_file_is_part_of_KDE \
--msgid-bugs-address=http://bugs.kde.org \
--from-code=UTF-8 \
-L Python \
-ki18n:1 -ki18np:1,2 \
"
$XGETTEXT_PROGRAM $XGETTEXT_FLAGS_PYTHON `find . -name '*.py'` -o $podir/falkon_middleclickloader.pot

View File

@ -0,0 +1,51 @@
# ============================================================
# MiddleClickLoader - plugin for Falkon
# Copyright (C) 2018 Juraj Oravec <sgd.orava@gmail.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# ============================================================
import Falkon
from PySide2 import QtCore
from middleclickloader.mcl_handler import MCL_Handler
class MCL_Plugin(Falkon.PluginInterface, QtCore.QObject):
handler = None
def init(self, state, settingsPath):
plugins = Falkon.MainApplication.instance().plugins()
plugins.registerAppEventHandler(Falkon.PluginProxy.MousePressHandler, self)
self.handler = MCL_Handler(settingsPath)
def unload(self):
del self.handler
self.handler = None
def testPlugin(self):
return True
def mousePress(self, type, obj, event):
if type == Falkon.Qz.ON_WebView:
return self.handler.mousePress(obj, event)
return False
def showSettings(self, parent):
pass
self.handler.showSettings(parent)
Falkon.registerPlugin(MCL_Plugin())

View File

@ -0,0 +1,90 @@
# ============================================================
# MiddleClickLoader - plugin for Falkon
# Copyright (C) 2018 Juraj Oravec <sgd.orava@gmail.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# ============================================================
import Falkon
from PySide2 import QtCore, QtGui, QtWidgets
from middleclickloader.mcl_loadmode import MCL_LoadMode
from middleclickloader.mcl_settings import MCL_Settings
class MCL_Handler(QtCore.QObject):
settingsFile = ""
loaded = False
onlyValidUrl = False
loadMode = 0
def __init__(self, settingsPath, parent=None):
super().__init__(parent)
self.settingsFile = settingsPath + "/extensions.ini"
def loadSettings(self):
settings = QtCore.QSettings(self.settingsFile, QtCore.QSettings.IniFormat)
settings.beginGroup("MiddleClickLoader")
self.loadMode = int(settings.value("LoadMode", MCL_LoadMode.NEW_TAB))
self.onlyValidUrl = bool(settings.value("OnlyValidUrl", True))
settings.endGroup()
self.loaded = True
def showSettings(self, parent=None):
self.settings = MCL_Settings(self.settingsFile, parent)
self.settings.accepted.connect(self.loadSettings)
self.settings.exec_()
def mousePress(self, view, event):
if not self.loaded:
self.loadSettings()
if event.buttons() == QtCore.Qt.MiddleButton:
res = view.page().hitTestContent(event.pos())
if res.isContentEditable() or not res.linkUrl().isEmpty():
return False
selectionClipboard = QtWidgets.QApplication.clipboard().text(QtGui.QClipboard.Selection)
if selectionClipboard:
guessedUrl = QtCore.QUrl.fromUserInput(selectionClipboard)
isValid = view.isUrlValid(guessedUrl)
if self.onlyValidUrl and not isValid:
return False
if not isValid:
searchManager = Falkon.MainApplication.instance().searchEnginesManager()
engine = searchManager.defaultEngine()
req = searchManager.searchResult(engine, selectionClipboard)
guessedUrl = req.url()
return self.loadUrl(view, guessedUrl)
return False
def loadUrl(self, view, url):
if self.loadMode == MCL_LoadMode.NEW_TAB:
view.openUrlInNewTab(url, Falkon.Qz.NT_NotSelectedTab)
elif self.loadMode == MCL_LoadMode.CURRENT_TAB:
view.load(url)
elif self.loadMode == MCL_LoadMode.NEW_WINDOW:
Falkon.MainApplication.instance().createWindow(Falkon.Qz.BW_NewWindow, url)
else:
return False
return True

View File

@ -0,0 +1,25 @@
# ============================================================
# MiddleClickLoader - plugin for Falkon
# Copyright (C) 2018 Juraj Oravec <sgd.orava@gmail.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# ============================================================
from enum import IntEnum
class MCL_LoadMode(IntEnum):
NEW_TAB = 0
CURRENT_TAB = 1
NEW_WINDOW = 2

View File

@ -0,0 +1,69 @@
# ============================================================
# MiddleClickLoader - plugin for Falkon
# Copyright (C) 2018 Juraj Oravec <sgd.orava@gmail.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# ============================================================
import os
from PySide2 import QtCore, QtWidgets, QtUiTools
from middleclickloader.i18n import i18n
from middleclickloader.mcl_loadmode import MCL_LoadMode
class MCL_Settings(QtWidgets.QDialog):
settingsFile = ""
ui = None
def __init__(self, settingsFile, parent=None):
super().__init__(parent)
self.settingsFile = settingsFile
file = QtCore.QFile(os.path.join(os.path.dirname(__file__), "mcl_settings.ui"))
file.open(QtCore.QFile.ReadOnly)
self.ui = QtUiTools.QUiLoader().load(file, self)
file.close()
layout = QtWidgets.QVBoxLayout(self)
layout.addWidget(self.ui)
self.setLayout(layout)
self.setWindowTitle(i18n("MiddleClickLoader Setting"))
self.ui.label_header.setText("<h2>{}</h2>".format(i18n("MiddleClickLoader")))
self.ui.label_loadMode.setText(i18n("Open url in:"))
self.ui.onlyValidUrl.setText(i18n("Use only valid url"))
self.ui.loadMode.addItem(i18n("New Tab"), MCL_LoadMode.NEW_TAB)
self.ui.loadMode.addItem(i18n("Current Tab"), MCL_LoadMode.CURRENT_TAB)
self.ui.loadMode.addItem(i18n("New Window"), MCL_LoadMode.NEW_WINDOW)
settings = QtCore.QSettings(self.settingsFile, QtCore.QSettings.IniFormat)
settings.beginGroup("MiddleClickLoader")
self.ui.loadMode.setCurrentIndex(int(settings.value("LoadMode", MCL_LoadMode.NEW_TAB)))
self.ui.onlyValidUrl.setChecked(bool(settings.value("OnlyValidUrl", True)))
settings.endGroup()
self.ui.buttonBox.accepted.connect(self.accept)
self.ui.buttonBox.rejected.connect(self.reject)
def accept(self):
settings = QtCore.QSettings(self.settingsFile, QtCore.QSettings.IniFormat)
settings.beginGroup("MiddleClickLoader")
settings.setValue("LoadMode", self.ui.loadMode.currentIndex())
settings.setValue("OnlyValidUrl", self.ui.onlyValidUrl.isChecked())
settings.endGroup()
super().accept()
self.close()

View File

@ -0,0 +1,105 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MCL_Settings</class>
<widget class="QWidget" name="MiddleClickLoaderSettings">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>379</width>
<height>194</height>
</rect>
</property>
<property name="windowTitle">
<string>MiddleClickLoader Settings</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<spacer name="horizontalSpacer_2">
<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>
<widget class="QLabel" name="label_header">
<property name="text">
<string>&lt;h2&gt;MiddleClickLoader&lt;/h2&gt;</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label_loadMode">
<property name="text">
<string>Open url in:</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_6">
<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>
<widget class="QComboBox" name="loadMode"/>
</item>
</layout>
</item>
<item>
<widget class="QCheckBox" name="onlyValidUrl">
<property name="text">
<string>Use only valid url</string>
</property>
<property name="tristate">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,30 @@
[Desktop Entry]
Name=MiddleClickLoader
Name[ca]=MiddleClickLoader
Name[ca@valencia]=MiddleClickLoader
Name[es]=Cargador de clic central
Name[fr]=MiddleClickLoader
Name[it]=Caricatore al clic centrale
Name[nl]=MiddleClickLoader
Name[pt]=CarregadorBotãoMeio
Name[sv]=Mittenklicksinläsning
Name[uk]=Завантажувач за клацанням середньою
Name[x-test]=xxMiddleClickLoaderxx
Comment=Load text in selection clipboard as URL
Comment[ca]=Carrega text com a URL en una selecció del porta-retalls
Comment[ca@valencia]=Carrega text com a URL en una selecció del porta-retalls
Comment[fr]=Charger l'URL sélectionnée dans le presse-papier
Comment[it]=Carica come URL il testo negli appunti della selezione
Comment[nl]=Tekst laden in selectieklembord als URL
Comment[pt]=Carrega o texto na área de transferência como um URL
Comment[sv]=Läs in text i markeringen eller klippbordet som webbadress
Comment[uk]=Завантажує текст у буфері обміну як адресу
Comment[x-test]=xxLoad text in selection clipboard as URLxx
Icon=
Type=Service
X-Falkon-Author=Juraj Oravec
X-Falkon-Email=sgd.orava@gmail.com
X-Falkon-Version=0.2.0
X-Falkon-Settings=true

View File

@ -12,6 +12,7 @@ Name[gl]=Dicionario
Name[id]=Kamus
Name[it]=Dizionario
Name[nl]=Woordenboek
Name[nn]=Ordliste
Name[pt]=Dicionário
Name[sv]=Ordlista
Name[uk]=Словник

View File

@ -12,6 +12,7 @@ Name[gl]=Google
Name[id]=Google
Name[it]=Google
Name[nl]=Google
Name[nn]=Google
Name[pt]=Google
Name[sv]=Google
Name[uk]=Google
@ -30,6 +31,7 @@ Comment[gl]=Buscar con…
Comment[id]=Cari dengan...
Comment[it]=Cerca con...
Comment[nl]=Zoeken met...
Comment[nn]=Søk med 
Comment[pt]=Procurar com...
Comment[sv]=Sök med...
Comment[uk]=Шукати за допомогою

View File

@ -11,6 +11,7 @@ Name[gl]=Abrir con mpv
Name[id]=Buka dengan mpv
Name[it]=Apri con mpv
Name[nl]=Met mpv openen
Name[nn]=Opna med mpv
Name[pt]=Abrir com o 'mpv'
Name[sv]=Öppna med mpv
Name[uk]=Відкрити за допомогою mpv

View File

@ -12,6 +12,7 @@ Name[gl]=TinEye
Name[id]=TinEye
Name[it]=TinEye
Name[nl]=TinEye
Name[nn]=TinEye
Name[pt]=TinEye
Name[sv]=TinEye
Name[uk]=TinEye
@ -30,6 +31,7 @@ Comment[gl]=Buscar con…
Comment[id]=Cari dengan...
Comment[it]=Cerca con...
Comment[nl]=Zoeken met...
Comment[nn]=Søk med 
Comment[pt]=Procurar com...
Comment[sv]=Sök med...
Comment[uk]=Шукати за допомогою

View File

@ -12,6 +12,7 @@ Name[gl]=Traducir a páxina
Name[id]=Terjemahkan halaman
Name[it]=Traduci la pagina
Name[nl]=Pagina vertalen
Name[nn]=Set om side
Name[pt]=Traduzir a página
Name[sv]=Översätt sida
Name[uk]=Перекласти сторінку

View File

@ -12,6 +12,7 @@ Name[gl]=Validar a páxina
Name[id]=Validasi halaman
Name[it]=Convalida la pagina
Name[nl]=Pagina valideren
Name[nn]=Valider side
Name[pt]=Validar a página
Name[sv]=Validera sida
Name[uk]=Перевірити достовірність сторінки

View File

@ -12,6 +12,7 @@ Name[gl]=Yandex
Name[id]=Yandex
Name[it]=Yandex
Name[nl]=Yandex
Name[nn]=Yandex
Name[pt]=Yandex
Name[sv]=Yandex
Name[uk]=Яндекс
@ -30,6 +31,7 @@ Comment[gl]=Buscar con…
Comment[id]=Cari dengan...
Comment[it]=Cerca con...
Comment[nl]=Zoeken met...
Comment[nn]=Søk med 
Comment[pt]=Procurar com...
Comment[sv]=Sök med...
Comment[uk]=Шукати за допомогою

View File

@ -11,6 +11,7 @@ Name[gl]=Executar a acción
Name[id]=Run Action
Name[it]=Esegui azione
Name[nl]=Uitvoeractie
Name[nn]=Køyr handling
Name[pt]=Executar uma Acção
Name[sv]=Utför åtgärd
Name[uk]=Виконати дію
@ -28,6 +29,7 @@ Comment[gl]=Executar varias accións en sitios
Comment[id]=Jalankan beberapa aksi pada situs
Comment[it]=Esegue numerose azioni nei siti
Comment[nl]=Verschillende acties op sites uitvoeren
Comment[nn]=Køyr ymse handlingar på nettstadar
Comment[pt]=Executar várias acções sobre as páginas
Comment[sv]=Utför diverse åtgärder på webbplatser
Comment[uk]=Виконання різноманітних дій на сайтах

View File

@ -29,6 +29,8 @@ class SettingsDialog(QtWidgets.QDialog):
file = QtCore.QFile(os.path.join(os.path.dirname(__file__), "settings.ui"))
file.open(QtCore.QFile.ReadOnly)
self.ui = QtUiTools.QUiLoader().load(file, self)
file.close()
layout = QtWidgets.QVBoxLayout(self)
layout.addWidget(self.ui)

View File

@ -33,8 +33,8 @@ private Q_SLOTS:
void AdBlockParseRule::parseEasyList()
{
QBENCHMARK {
AdBlockSubscription* subscription = new AdBlockSubscription("EasyList", this);
subscription->setFilePath(":/files/easylist.txt");
AdBlockSubscription* subscription = new AdBlockSubscription(QSL("EasyList"), this);
subscription->setFilePath(QSL(":/files/easylist.txt"));
subscription->loadSubscription(QStringList());
}
}

View File

@ -13,6 +13,7 @@ Name[gl]=Chrome
Name[id]=Chrome
Name[it]=Chrome
Name[nl]=Chrome
Name[nn]=Chrome
Name[pl]=Chrome
Name[pt]=Chrome
Name[sv]=Chrome
@ -20,8 +21,8 @@ Name[uk]=Хромування
Name[x-test]=xxChromexx
Name[zh_CN]=Chrome
Comment=Chrome like theme for Falkon based on Firefox Chromifox theme
Comment[ca]=Tema semblant al Chrome pel Falkon basat en el tema Chromifox del Firefox
Comment[ca@valencia]=Tema semblant al Chrome pel Falkon basat en el tema Chromifox del Firefox
Comment[ca]=Tema semblant al Chrome pel Falkon, basat en el tema Chromifox del Firefox
Comment[ca@valencia]=Tema semblant al Chrome pel Falkon, basat en el tema Chromifox del Firefox
Comment[cs]=Motiv pro Falkon podobný Chrome založený na motivu Firefox Chromifox
Comment[da]=Chrome-lignende tema til Falkon baseret på Firefox Chromifox-tema
Comment[de]=Chrome ähnliches Design für Falkon auf der Basis des Chromifox-Designs von Firefox
@ -33,6 +34,7 @@ Comment[gl]=Tema parecido a Chrome para Falkon baseado no tema Chromifox de Fire
Comment[id]=Tema seperti Chrome untuk Falkon berdasarkan pada tema Firefox Chromifox
Comment[it]=Tema di tipo Chrome per Falkon, basato sul tema Chromifox di Firefox
Comment[nl]=Op Chrome lijkend thema voor Falkon gebaseerd op Firefox Chromifox thema
Comment[nn]=Chrome-liknande tema for Falkon, basert på Firefox Chromifox-temaet
Comment[pl]=Wygląd przypominający Chrome dla Falkona oparty na wyglądzie Firefox Chromifox
Comment[pt]=Tema semelhante ao Chrome para o Falkon, baseado no tema Chromifox do Firefox
Comment[sv]=Chrome-liknande tema för Falkon baserat på Firefox Chromifox-tema

View File

@ -13,6 +13,7 @@ Name[gl]=Linux
Name[id]=Linux
Name[it]=Linux
Name[nl]=Linux
Name[nn]=Linux
Name[pl]=Linux
Name[pt]=Linux
Name[sv]=Linux
@ -20,8 +21,8 @@ Name[uk]=Linux
Name[x-test]=xxLinuxxx
Name[zh_CN]=Linux
Comment=Default simple theme for Linux using native widget style and some basic icons from desktop icon set
Comment[ca]=Tema senzill predeterminat per a Linux usant l'estil d'estris natiu i diverses icones bàsiques del conjunt d'icones de l'escriptori
Comment[ca@valencia]=Tema senzill predeterminat per a Linux usant l'estil d'estris natiu i diverses icones bàsiques del conjunt d'icones de l'escriptori
Comment[ca]=Tema senzill predeterminat per a Linux, usant l'estil natiu dels estris i diverses icones bàsiques del conjunt d'icones de l'escriptori
Comment[ca@valencia]=Tema senzill predeterminat per a Linux, usant l'estil natiu dels estris i diverses icones bàsiques del conjunt d'icones de l'escriptori
Comment[cs]=Výchozí jednoduchý motiv pro Linux používající nativní styl widgetu style a nějaké základní ikony ze sady ikon pracovní plochy
Comment[da]=Standard simpelt tema til Linux som bruger systemets widgetstil og nogle basisikoner fra skrivebordets ikonsæt
Comment[en_GB]=Default simple theme for Linux using native widget style and some basic icons from desktop icon set
@ -32,6 +33,7 @@ Comment[gl]=Tema predeterminado simple para Linux que usa o estilo de trebellos
Comment[id]=Tema sederhana baku untuk Linux menggunakan gaya widget bawaan dan beberapa ikon dasar dari set ikon desktop
Comment[it]=Semplice tema predefinito per Linux, che usa lo stile nativo degli oggetti ed alcune icone di base dall'insieme di icone del desktop
Comment[nl]=Standaard eenvoudig thema voor Linux met inheemse widgetstijl en enige basis pictogrammen uit set pictogrammen voor bureaublad
Comment[nn]=Standardtema for Linux, som brukar systemutsjånad på skjermelement og nokre ikon frå skrivebordsikontemaet
Comment[pl]=Domyślny prosty wygląd dla Linuksa używający natywnego wyglądu elementów interfejsu i podstawowych ikon z zestawu ikon dla pulpitu
Comment[pt]=Tema predefinido simples para o Linux, usando o estilo gráfico nativo e alguns ícones básicos do conjunto de ícones do ambiente de trabalho
Comment[sv]=Enkelt standardtema för Linux som använder inbyggd komponentstil och några grundläggande ikoner från skrivbordets ikonuppsättning

View File

@ -13,6 +13,7 @@ Name[gl]=Mac
Name[id]=Mac
Name[it]=Mac
Name[nl]=Mac
Name[nn]=Mac
Name[pl]=Mac
Name[pt]=Mac
Name[sv]=Mac
@ -20,8 +21,8 @@ Name[uk]=Mac
Name[x-test]=xxMacxx
Name[zh_CN]=Mac
Comment=Mac like theme for Falkon based on Firefox Mac OS X theme
Comment[ca]=Tema semblant al Mac pel Falkon basat en el tema Mac OS X del Firefox
Comment[ca@valencia]=Tema semblant al Mac pel Falkon basat en el tema Mac OS X del Firefox
Comment[ca]=Tema semblant al Mac pel Falkon, basat en el tema Mac OS X del Firefox
Comment[ca@valencia]=Tema semblant al Mac pel Falkon, basat en el tema Mac OS X del Firefox
Comment[cs]=Motiv pro Falkon podobný Macu založený na motivu Firefox Mac OS X
Comment[da]=Mac-lignende tema til Falkon baseret på Firefox Mac OS X-tema
Comment[de]=Mac ähnliches Design für Falkon auf der Basis des Mac OS X-Designs von Firefox
@ -33,6 +34,7 @@ Comment[gl]=Tema parecido a Mac para Falkon baseado no tema de Mac OS X de Firef
Comment[id]=Tema seperti Mac untuk Falkon berdasarkan pada tema Firefox Mac OS X
Comment[it]=Tema di tipo Mac per Falkon, basato sul tema Mac OS X di Firefox
Comment[nl]=Op Mac lijkend thema voor Falkon gebaseerd op Firefox Mac OS X thema
Comment[nn]=Mac-liknande tema for Falkon, basert på Firefox Mac OS X-temaet
Comment[pl]=Wygląd przypominający Maka dla Falkona oparty na wyglądzie Firefox Mac OS X
Comment[pt]=Tema semelhante ao Mac para o Falkon, baseado no tema Mac OS X do Firefox
Comment[sv]=Mac-liknande tema för Falkon baserat på Firefox Mac OS X-tema

View File

@ -13,6 +13,7 @@ Name[gl]=Xanelas
Name[id]=Windows
Name[it]=Windows
Name[nl]=Windows
Name[nn]=Windows
Name[pl]=Windows
Name[pt]=Windows
Name[sv]=Windows
@ -20,8 +21,8 @@ Name[uk]=Windows
Name[x-test]=xxWindowsxx
Name[zh_CN]=Windows
Comment=Windows like theme based on Material design
Comment[ca]=Tema semblant al Windows basat en el «Material design»
Comment[ca@valencia]=Tema semblant al Windows basat en el «Material design»
Comment[ca]=Tema semblant al Windows, basat en el «Material design»
Comment[ca@valencia]=Tema semblant al Windows, basat en el «Material design»
Comment[cs]=Motiv podobný Windows založený na designu Material
Comment[da]=Windows-lignende tema baseret på Material design
Comment[de]=Windows ähnliches Design auf der Basis des Designs Material
@ -33,6 +34,7 @@ Comment[gl]=Tema parecido a Windows baseado no deseño material
Comment[id]=Tema seperti Windows berdasarkan pada desain Material
Comment[it]=Tema di tipo Windows, basato sul design Material
Comment[nl]=Op Windows lijkend thema gebaseerd op Material ontwerp
Comment[nn]=Windows-liknande tema, basert på Material-stilen
Comment[pl]=Wygląd przypominający Windowsa dla Falkona oparty na wyglądzie Material
Comment[pt]=Tema semelhante ao Windows, baseado no 'material design'
Comment[sv]=Windows-liknande tema baserat på Material design