1
mirror of https://invent.kde.org/network/falkon.git synced 2024-09-22 02:02:10 +02:00

Password manager now detects also username

- username is detected as first input type="text" in form
 - it should work on almost every page

This is last requirements to implement saving multiple users on
one page.
This commit is contained in:
nowrep 2011-11-20 17:09:10 +01:00
parent 4bb5ff9b26
commit b88bfd46c7
15 changed files with 254 additions and 143 deletions

Binary file not shown.

View File

@ -110,7 +110,7 @@ bool AutoFillModel::addEntry(const QUrl &url, const QString &name, const QString
} }
///WEB Form ///WEB Form
bool AutoFillModel::addEntry(const QUrl &url, const QByteArray &data, const QString &pass) bool AutoFillModel::addEntry(const QUrl &url, const QByteArray &data, const QString &user, const QString &pass)
{ {
QSqlQuery query; QSqlQuery query;
query.exec("SELECT data FROM autofill WHERE server='" + url.host() + "'"); query.exec("SELECT data FROM autofill WHERE server='" + url.host() + "'");
@ -118,10 +118,11 @@ bool AutoFillModel::addEntry(const QUrl &url, const QByteArray &data, const QStr
return false; return false;
} }
query.prepare("INSERT INTO autofill (server, data, password) VALUES (?,?,?)"); query.prepare("INSERT INTO autofill (server, data, username, password) VALUES (?,?,?,?)");
query.bindValue(0, url.host()); query.bindValue(0, url.host());
query.bindValue(1, data); query.bindValue(1, data);
query.bindValue(2, pass); query.bindValue(2, user);
query.bindValue(3, pass);
return query.exec(); return query.exec();
} }
@ -192,37 +193,95 @@ void AutoFillModel::post(const QNetworkRequest &request, const QByteArray &outgo
return; return;
} }
QString passwordName = ""; QString usernameName;
QString passwordValue = ""; QString usernameValue;
QString passwordName;
QString passwordValue;
QUrl siteUrl = webView->url(); QUrl siteUrl = webView->url();
QWebElementCollection inputs; if (!isStoringEnabled(siteUrl)) {
return;
}
QWebElementCollection allForms; // All form elements on page
QWebElement foundForm; // Sent form element
QList<QWebFrame*> frames; QList<QWebFrame*> frames;
frames.append(webPage->mainFrame()); frames.append(webPage->mainFrame()); // Find all form elements
while (!frames.isEmpty()) { while (!frames.isEmpty()) {
QWebFrame* frame = frames.takeFirst(); QWebFrame* frame = frames.takeFirst();
inputs.append(frame->findAllElements("input[type=\"password\"]")); allForms.append(frame->findAllElements("form"));
frames += frame->childFrames(); frames += frame->childFrames();
} }
foreach(QWebElement element, inputs) { foreach(QWebElement formElement, allForms) {
passwordName = element.attribute("name"); foreach(QWebElement inputElement, formElement.findAll("input[type=\"password\"]")) {
passwordValue = element.evaluateJavaScript("this.value").toString(); passwordName = inputElement.attribute("name");
if (!passwordValue.isEmpty()) { passwordValue = getValueFromData(outgoingData, inputElement);
if (!passwordValue.isEmpty() && dataContains(outgoingData, passwordName)) {
foundForm = formElement;
break; break;
} }
} }
//Return if storing is not enabled, data for this page is already stored, no password element found in sent data if (!foundForm.isNull()) {
if (passwordName.isEmpty() || !isStoringEnabled(siteUrl) || isStored(siteUrl)) { break;
}
}
// Return if data for this page is already stored or no password element found in sent data
if (foundForm.isNull() || isStored(siteUrl)) {
return; return;
} }
//Return if no password form has been sent // We need to find username, we suppose that username is first not empty input[type=text] in form
if (!outgoingData.contains((QUrl(passwordName).toEncoded() + "=")) || passwordValue.isEmpty()) { // Tell me better solution. Maybe first try to find name="user", name="username" ?
return;
foreach(QWebElement element, foundForm.findAll("input[type=\"text\"]")) {
usernameName = element.attribute("name");
usernameValue = getValueFromData(outgoingData, element);
if (!usernameName.isEmpty() && !usernameValue.isEmpty()) {
break;
}
} }
AutoFillNotification* aWidget = new AutoFillNotification(siteUrl, outgoingData, passwordValue); AutoFillNotification* aWidget = new AutoFillNotification(siteUrl, outgoingData, usernameValue, passwordValue);
webView->addNotification(aWidget); webView->addNotification(aWidget);
} }
QString AutoFillModel::getValueFromData(const QByteArray &data, QWebElement element)
{
QString name = element.attribute("name");
if (name.isEmpty()) {
return "";
}
QString value = element.evaluateJavaScript("this.value").toString();
if (value.isEmpty()) {
QueryItems queryItems = QUrl("http://a.b/?" + data).queryItems();
for (int i = 0; i < queryItems.count(); i++) {
QueryItem item = queryItems.at(i);
if (item.first == name) {
value = item.second;
}
}
}
return value;
}
bool AutoFillModel::dataContains(const QByteArray &data, const QString &attributeName)
{
QueryItems queryItems = QUrl("http://a.b/?" + data).queryItems();
for (int i = 0; i < queryItems.count(); i++) {
QueryItem item = queryItems.at(i);
if (item.first == attributeName) {
return !item.second.isEmpty();
}
}
return false;
}

View File

@ -21,6 +21,7 @@
#include <QObject> #include <QObject>
#include <QUrl> #include <QUrl>
#include <QNetworkRequest> #include <QNetworkRequest>
#include <QWebElement>
class QupZilla; class QupZilla;
class WebView; class WebView;
@ -28,6 +29,9 @@ class AutoFillModel : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
typedef QList<QPair<QString, QString> > QueryItems;
typedef QPair<QString, QString> QueryItem;
explicit AutoFillModel(QupZilla* mainClass, QObject* parent = 0); explicit AutoFillModel(QupZilla* mainClass, QObject* parent = 0);
void completePage(WebView* view); void completePage(WebView* view);
@ -38,7 +42,7 @@ public:
QString getUsername(const QUrl &url); QString getUsername(const QUrl &url);
QString getPassword(const QUrl &url); QString getPassword(const QUrl &url);
bool addEntry(const QUrl &url, const QString &name, const QString &pass); bool addEntry(const QUrl &url, const QString &name, const QString &pass);
bool addEntry(const QUrl &url, const QByteArray &data, const QString &pass); bool addEntry(const QUrl &url, const QByteArray &data, const QString &user, const QString &pass);
void post(const QNetworkRequest &request, const QByteArray &outgoingData); void post(const QNetworkRequest &request, const QByteArray &outgoingData);
@ -48,6 +52,9 @@ public slots:
void loadSettings(); void loadSettings();
private: private:
bool dataContains(const QByteArray &data, const QString &attributeName);
QString getValueFromData(const QByteArray &data, QWebElement element);
QupZilla* p_QupZilla; QupZilla* p_QupZilla;
QByteArray m_lastOutgoingData; QByteArray m_lastOutgoingData;
bool m_isStoring; bool m_isStoring;

View File

@ -22,16 +22,17 @@
#include "animatedwidget.h" #include "animatedwidget.h"
#include "iconprovider.h" #include "iconprovider.h"
AutoFillNotification::AutoFillNotification(QUrl url, QByteArray data, QString pass, QWidget* parent) AutoFillNotification::AutoFillNotification(const QUrl &url, const QByteArray &data, const QString &user, const QString &pass, QWidget* parent)
: AnimatedWidget(AnimatedWidget::Down, 300, parent) : AnimatedWidget(AnimatedWidget::Down, 300, parent)
, ui(new Ui::AutoFillWidget) , ui(new Ui::AutoFillWidget)
, m_url(url) , m_url(url)
, m_data(data) , m_data(data)
, m_user(user)
, m_pass(pass) , m_pass(pass)
{ {
setAttribute(Qt::WA_DeleteOnClose); setAttribute(Qt::WA_DeleteOnClose);
ui->setupUi(widget()); ui->setupUi(widget());
ui->label->setText(tr("Do you want QupZilla to remember password on %1?").arg(url.host())); ui->label->setText(tr("Do you want QupZilla to remember password for <b>%1</b> on %2?").arg(user, url.host()));
ui->closeButton->setIcon(IconProvider::standardIcon(QStyle::SP_DialogCloseButton)); ui->closeButton->setIcon(IconProvider::standardIcon(QStyle::SP_DialogCloseButton));
connect(ui->remember, SIGNAL(clicked()), this, SLOT(remember())); connect(ui->remember, SIGNAL(clicked()), this, SLOT(remember()));
@ -50,7 +51,7 @@ void AutoFillNotification::never()
void AutoFillNotification::remember() void AutoFillNotification::remember()
{ {
mApp->autoFill()->addEntry(m_url, m_data, m_pass); mApp->autoFill()->addEntry(m_url, m_data, m_user, m_pass);
hide(); hide();
} }

View File

@ -35,7 +35,7 @@ class AutoFillNotification : public AnimatedWidget
Q_OBJECT Q_OBJECT
public: public:
explicit AutoFillNotification(QUrl url, QByteArray data, QString pass, QWidget* parent = 0); explicit AutoFillNotification(const QUrl &url, const QByteArray &data, const QString &user, const QString &pass, QWidget* parent = 0);
~AutoFillNotification(); ~AutoFillNotification();
private slots: private slots:
@ -46,6 +46,7 @@ private:
Ui::AutoFillWidget* ui; Ui::AutoFillWidget* ui;
QUrl m_url; QUrl m_url;
QByteArray m_data; QByteArray m_data;
QString m_user;
QString m_pass; QString m_pass;
}; };

View File

@ -39,15 +39,15 @@ AutoFillManager::AutoFillManager(QWidget* parent)
void AutoFillManager::loadPasswords() void AutoFillManager::loadPasswords()
{ {
QSqlQuery query; QSqlQuery query;
query.exec("SELECT server, password, id FROM autofill"); query.exec("SELECT server, username, password, id FROM autofill");
ui->treePass->clear(); ui->treePass->clear();
while (query.next()) { while (query.next()) {
QTreeWidgetItem* item = new QTreeWidgetItem(ui->treePass); QTreeWidgetItem* item = new QTreeWidgetItem(ui->treePass);
item->setText(0, query.value(0).toString()); item->setText(0, query.value(0).toString());
// item->setText(1, query.value(1).toString()); item->setText(1, query.value(1).toString());
item->setText(1, "*****"); item->setText(2, "*****");
item->setWhatsThis(0, query.value(2).toString()); item->setWhatsThis(0, query.value(3).toString());
item->setWhatsThis(1, query.value(1).toString()); item->setWhatsThis(1, query.value(2).toString());
ui->treePass->addTopLevelItem(item); ui->treePass->addTopLevelItem(item);
} }
@ -79,7 +79,7 @@ void AutoFillManager::showPasswords()
if (!item) { if (!item) {
continue; continue;
} }
item->setText(1, item->whatsThis(1)); item->setText(2, item->whatsThis(1));
} }
ui->showPasswords->hide(); ui->showPasswords->hide();

View File

@ -29,14 +29,22 @@
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<item row="0" column="0"> <item row="0" column="0">
<widget class="QTreeWidget" name="treePass"> <widget class="QTreeWidget" name="treePass">
<property name="indentation">
<number>0</number>
</property>
<attribute name="headerMinimumSectionSize"> <attribute name="headerMinimumSectionSize">
<number>170</number> <number>100</number>
</attribute> </attribute>
<column> <column>
<property name="text"> <property name="text">
<string>Server</string> <string>Server</string>
</property> </property>
</column> </column>
<column>
<property name="text">
<string>Username</string>
</property>
</column>
<column> <column>
<property name="text"> <property name="text">
<string>Password</string> <string>Password</string>
@ -47,16 +55,16 @@
<item row="0" column="1"> <item row="0" column="1">
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<item> <item>
<widget class="QPushButton" name="removePass"> <widget class="QPushButton" name="editPass">
<property name="text"> <property name="text">
<string>Remove</string> <string>Edit</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="editPass"> <widget class="QPushButton" name="removePass">
<property name="text"> <property name="text">
<string>Edit</string> <string>Remove</string>
</property> </property>
</widget> </widget>
</item> </item>

View File

@ -228,41 +228,46 @@
<translation>Hesla</translation> <translation>Hesla</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="37"/> <location filename="../src/preferences/autofillmanager.ui" line="40"/>
<location filename="../src/preferences/autofillmanager.ui" line="120"/> <location filename="../src/preferences/autofillmanager.ui" line="128"/>
<source>Server</source> <source>Server</source>
<translation>Server</translation> <translation>Server</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="42"/> <location filename="../src/preferences/autofillmanager.ui" line="45"/>
<source>Username</source>
<translation>Uživatel</translation>
</message>
<message>
<location filename="../src/preferences/autofillmanager.ui" line="50"/>
<source>Password</source> <source>Password</source>
<translation>Heslo</translation> <translation>Heslo</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="52"/> <location filename="../src/preferences/autofillmanager.ui" line="67"/>
<location filename="../src/preferences/autofillmanager.ui" line="130"/> <location filename="../src/preferences/autofillmanager.ui" line="138"/>
<source>Remove</source> <source>Remove</source>
<translation>Odstranit</translation> <translation>Odstranit</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="59"/> <location filename="../src/preferences/autofillmanager.ui" line="60"/>
<source>Edit</source> <source>Edit</source>
<translation>Upravit</translation> <translation>Upravit</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="66"/> <location filename="../src/preferences/autofillmanager.ui" line="74"/>
<location filename="../src/preferences/autofillmanager.ui" line="137"/> <location filename="../src/preferences/autofillmanager.ui" line="145"/>
<source>Remove All</source> <source>Remove All</source>
<translation>Odstranit vše</translation> <translation>Odstranit vše</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="103"/> <location filename="../src/preferences/autofillmanager.ui" line="111"/>
<location filename="../src/preferences/autofillmanager.cpp" line="71"/> <location filename="../src/preferences/autofillmanager.cpp" line="71"/>
<source>Show Passwords</source> <source>Show Passwords</source>
<translation>Zobrazit hesla</translation> <translation>Zobrazit hesla</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="113"/> <location filename="../src/preferences/autofillmanager.ui" line="121"/>
<source>Exceptions</source> <source>Exceptions</source>
<translation>Vyjímky</translation> <translation>Vyjímky</translation>
</message> </message>
@ -295,9 +300,9 @@
<context> <context>
<name>AutoFillNotification</name> <name>AutoFillNotification</name>
<message> <message>
<location filename="../src/autofill/autofillnotification.cpp" line="34"/> <location filename="../src/autofill/autofillnotification.cpp" line="35"/>
<source>Do you want QupZilla to remember password on %1?</source> <source>Do you want QupZilla to remember password for &lt;b&gt;%1&lt;/b&gt; on %2?</source>
<translation>Chcete aby si QupZilla zapamatovala heslo pro %1?</translation> <translation>Chcete aby si QupZilla zapamatovala heslo pro &lt;b&gt;%1&lt;b&gt; na %2?</translation>
</message> </message>
</context> </context>
<context> <context>

View File

@ -228,41 +228,46 @@
<translation>Passwörter</translation> <translation>Passwörter</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="37"/> <location filename="../src/preferences/autofillmanager.ui" line="40"/>
<location filename="../src/preferences/autofillmanager.ui" line="120"/> <location filename="../src/preferences/autofillmanager.ui" line="128"/>
<source>Server</source> <source>Server</source>
<translation>Server</translation> <translation>Server</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="42"/> <location filename="../src/preferences/autofillmanager.ui" line="45"/>
<source>Username</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/preferences/autofillmanager.ui" line="50"/>
<source>Password</source> <source>Password</source>
<translation>Passwort</translation> <translation>Passwort</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="52"/> <location filename="../src/preferences/autofillmanager.ui" line="67"/>
<location filename="../src/preferences/autofillmanager.ui" line="130"/> <location filename="../src/preferences/autofillmanager.ui" line="138"/>
<source>Remove</source> <source>Remove</source>
<translation>Entfernen</translation> <translation>Entfernen</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="59"/> <location filename="../src/preferences/autofillmanager.ui" line="60"/>
<source>Edit</source> <source>Edit</source>
<translation>Bearbeiten</translation> <translation>Bearbeiten</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="66"/> <location filename="../src/preferences/autofillmanager.ui" line="74"/>
<location filename="../src/preferences/autofillmanager.ui" line="137"/> <location filename="../src/preferences/autofillmanager.ui" line="145"/>
<source>Remove All</source> <source>Remove All</source>
<translation>Alle entfernen</translation> <translation>Alle entfernen</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="103"/> <location filename="../src/preferences/autofillmanager.ui" line="111"/>
<location filename="../src/preferences/autofillmanager.cpp" line="71"/> <location filename="../src/preferences/autofillmanager.cpp" line="71"/>
<source>Show Passwords</source> <source>Show Passwords</source>
<translation>Passwörter im Klartext anzeigen</translation> <translation>Passwörter im Klartext anzeigen</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="113"/> <location filename="../src/preferences/autofillmanager.ui" line="121"/>
<source>Exceptions</source> <source>Exceptions</source>
<translation>Ausnahmen</translation> <translation>Ausnahmen</translation>
</message> </message>
@ -295,9 +300,9 @@
<context> <context>
<name>AutoFillNotification</name> <name>AutoFillNotification</name>
<message> <message>
<location filename="../src/autofill/autofillnotification.cpp" line="34"/> <location filename="../src/autofill/autofillnotification.cpp" line="35"/>
<source>Do you want QupZilla to remember password on %1?</source> <source>Do you want QupZilla to remember password for &lt;b&gt;%1&lt;/b&gt; on %2?</source>
<translation>Möchten Sie das Passwort für %1 speichern?</translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context> <context>

View File

@ -228,41 +228,46 @@
<translation>Contraseñas</translation> <translation>Contraseñas</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="37"/> <location filename="../src/preferences/autofillmanager.ui" line="40"/>
<location filename="../src/preferences/autofillmanager.ui" line="120"/> <location filename="../src/preferences/autofillmanager.ui" line="128"/>
<source>Server</source> <source>Server</source>
<translation>Servidor</translation> <translation>Servidor</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="42"/> <location filename="../src/preferences/autofillmanager.ui" line="45"/>
<source>Username</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/preferences/autofillmanager.ui" line="50"/>
<source>Password</source> <source>Password</source>
<translation>Contraseña</translation> <translation>Contraseña</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="52"/> <location filename="../src/preferences/autofillmanager.ui" line="67"/>
<location filename="../src/preferences/autofillmanager.ui" line="130"/> <location filename="../src/preferences/autofillmanager.ui" line="138"/>
<source>Remove</source> <source>Remove</source>
<translation>Quitar</translation> <translation>Quitar</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="59"/> <location filename="../src/preferences/autofillmanager.ui" line="60"/>
<source>Edit</source> <source>Edit</source>
<translation>Editar</translation> <translation>Editar</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="66"/> <location filename="../src/preferences/autofillmanager.ui" line="74"/>
<location filename="../src/preferences/autofillmanager.ui" line="137"/> <location filename="../src/preferences/autofillmanager.ui" line="145"/>
<source>Remove All</source> <source>Remove All</source>
<translation>Quitar todo</translation> <translation>Quitar todo</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="103"/> <location filename="../src/preferences/autofillmanager.ui" line="111"/>
<location filename="../src/preferences/autofillmanager.cpp" line="71"/> <location filename="../src/preferences/autofillmanager.cpp" line="71"/>
<source>Show Passwords</source> <source>Show Passwords</source>
<translation>Mostras contraseñas</translation> <translation>Mostras contraseñas</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="113"/> <location filename="../src/preferences/autofillmanager.ui" line="121"/>
<source>Exceptions</source> <source>Exceptions</source>
<translation>Excepciones</translation> <translation>Excepciones</translation>
</message> </message>
@ -295,9 +300,9 @@
<context> <context>
<name>AutoFillNotification</name> <name>AutoFillNotification</name>
<message> <message>
<location filename="../src/autofill/autofillnotification.cpp" line="34"/> <location filename="../src/autofill/autofillnotification.cpp" line="35"/>
<source>Do you want QupZilla to remember password on %1?</source> <source>Do you want QupZilla to remember password for &lt;b&gt;%1&lt;/b&gt; on %2?</source>
<translation>¿Desea que QupZilla recuerde la contraseña en %1?</translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context> <context>

View File

@ -228,41 +228,46 @@
<translation>Passwords</translation> <translation>Passwords</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="37"/> <location filename="../src/preferences/autofillmanager.ui" line="40"/>
<location filename="../src/preferences/autofillmanager.ui" line="120"/> <location filename="../src/preferences/autofillmanager.ui" line="128"/>
<source>Server</source> <source>Server</source>
<translation>Server</translation> <translation>Server</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="42"/> <location filename="../src/preferences/autofillmanager.ui" line="45"/>
<source>Username</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/preferences/autofillmanager.ui" line="50"/>
<source>Password</source> <source>Password</source>
<translation>Password</translation> <translation>Password</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="52"/> <location filename="../src/preferences/autofillmanager.ui" line="67"/>
<location filename="../src/preferences/autofillmanager.ui" line="130"/> <location filename="../src/preferences/autofillmanager.ui" line="138"/>
<source>Remove</source> <source>Remove</source>
<translation>Elimina</translation> <translation>Elimina</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="59"/> <location filename="../src/preferences/autofillmanager.ui" line="60"/>
<source>Edit</source> <source>Edit</source>
<translation>Modifica</translation> <translation>Modifica</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="66"/> <location filename="../src/preferences/autofillmanager.ui" line="74"/>
<location filename="../src/preferences/autofillmanager.ui" line="137"/> <location filename="../src/preferences/autofillmanager.ui" line="145"/>
<source>Remove All</source> <source>Remove All</source>
<translation>Elimina Tutto</translation> <translation>Elimina Tutto</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="103"/> <location filename="../src/preferences/autofillmanager.ui" line="111"/>
<location filename="../src/preferences/autofillmanager.cpp" line="71"/> <location filename="../src/preferences/autofillmanager.cpp" line="71"/>
<source>Show Passwords</source> <source>Show Passwords</source>
<translation>Mostra le password</translation> <translation>Mostra le password</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="113"/> <location filename="../src/preferences/autofillmanager.ui" line="121"/>
<source>Exceptions</source> <source>Exceptions</source>
<translation>Eccezioni</translation> <translation>Eccezioni</translation>
</message> </message>
@ -295,9 +300,9 @@
<context> <context>
<name>AutoFillNotification</name> <name>AutoFillNotification</name>
<message> <message>
<location filename="../src/autofill/autofillnotification.cpp" line="34"/> <location filename="../src/autofill/autofillnotification.cpp" line="35"/>
<source>Do you want QupZilla to remember password on %1?</source> <source>Do you want QupZilla to remember password for &lt;b&gt;%1&lt;/b&gt; on %2?</source>
<translation>Vuoi che QupZilla ricordi la password per %1?</translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context> <context>

View File

@ -228,41 +228,46 @@
<translation>Wachtwoorden</translation> <translation>Wachtwoorden</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="37"/> <location filename="../src/preferences/autofillmanager.ui" line="40"/>
<location filename="../src/preferences/autofillmanager.ui" line="120"/> <location filename="../src/preferences/autofillmanager.ui" line="128"/>
<source>Server</source> <source>Server</source>
<translation>Server</translation> <translation>Server</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="42"/> <location filename="../src/preferences/autofillmanager.ui" line="45"/>
<source>Username</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/preferences/autofillmanager.ui" line="50"/>
<source>Password</source> <source>Password</source>
<translation>Wachtwoord</translation> <translation>Wachtwoord</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="52"/> <location filename="../src/preferences/autofillmanager.ui" line="67"/>
<location filename="../src/preferences/autofillmanager.ui" line="130"/> <location filename="../src/preferences/autofillmanager.ui" line="138"/>
<source>Remove</source> <source>Remove</source>
<translation>Verwijder</translation> <translation>Verwijder</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="59"/> <location filename="../src/preferences/autofillmanager.ui" line="60"/>
<source>Edit</source> <source>Edit</source>
<translation>Bewerk</translation> <translation>Bewerk</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="66"/> <location filename="../src/preferences/autofillmanager.ui" line="74"/>
<location filename="../src/preferences/autofillmanager.ui" line="137"/> <location filename="../src/preferences/autofillmanager.ui" line="145"/>
<source>Remove All</source> <source>Remove All</source>
<translation>Verwijder alles</translation> <translation>Verwijder alles</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="103"/> <location filename="../src/preferences/autofillmanager.ui" line="111"/>
<location filename="../src/preferences/autofillmanager.cpp" line="71"/> <location filename="../src/preferences/autofillmanager.cpp" line="71"/>
<source>Show Passwords</source> <source>Show Passwords</source>
<translation>Toon wachtwoorden</translation> <translation>Toon wachtwoorden</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="113"/> <location filename="../src/preferences/autofillmanager.ui" line="121"/>
<source>Exceptions</source> <source>Exceptions</source>
<translation>Uitzonderingen</translation> <translation>Uitzonderingen</translation>
</message> </message>
@ -295,9 +300,9 @@
<context> <context>
<name>AutoFillNotification</name> <name>AutoFillNotification</name>
<message> <message>
<location filename="../src/autofill/autofillnotification.cpp" line="34"/> <location filename="../src/autofill/autofillnotification.cpp" line="35"/>
<source>Do you want QupZilla to remember password on %1?</source> <source>Do you want QupZilla to remember password for &lt;b&gt;%1&lt;/b&gt; on %2?</source>
<translation>Wilt u dat QupZilla uw wachtwoord onthoudt voor %1?</translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context> <context>

View File

@ -228,41 +228,46 @@
<translation>Heslá</translation> <translation>Heslá</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="37"/> <location filename="../src/preferences/autofillmanager.ui" line="40"/>
<location filename="../src/preferences/autofillmanager.ui" line="120"/> <location filename="../src/preferences/autofillmanager.ui" line="128"/>
<source>Server</source> <source>Server</source>
<translation>Server</translation> <translation>Server</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="42"/> <location filename="../src/preferences/autofillmanager.ui" line="45"/>
<source>Username</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/preferences/autofillmanager.ui" line="50"/>
<source>Password</source> <source>Password</source>
<translation>Heslo</translation> <translation>Heslo</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="52"/> <location filename="../src/preferences/autofillmanager.ui" line="67"/>
<location filename="../src/preferences/autofillmanager.ui" line="130"/> <location filename="../src/preferences/autofillmanager.ui" line="138"/>
<source>Remove</source> <source>Remove</source>
<translation>Odstrániť</translation> <translation>Odstrániť</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="59"/> <location filename="../src/preferences/autofillmanager.ui" line="60"/>
<source>Edit</source> <source>Edit</source>
<translation>Upraviť</translation> <translation>Upraviť</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="66"/> <location filename="../src/preferences/autofillmanager.ui" line="74"/>
<location filename="../src/preferences/autofillmanager.ui" line="137"/> <location filename="../src/preferences/autofillmanager.ui" line="145"/>
<source>Remove All</source> <source>Remove All</source>
<translation>Odstrániť všetko</translation> <translation>Odstrániť všetko</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="103"/> <location filename="../src/preferences/autofillmanager.ui" line="111"/>
<location filename="../src/preferences/autofillmanager.cpp" line="71"/> <location filename="../src/preferences/autofillmanager.cpp" line="71"/>
<source>Show Passwords</source> <source>Show Passwords</source>
<translation>Zobraziť heslo</translation> <translation>Zobraziť heslo</translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="113"/> <location filename="../src/preferences/autofillmanager.ui" line="121"/>
<source>Exceptions</source> <source>Exceptions</source>
<translation>Výnimky</translation> <translation>Výnimky</translation>
</message> </message>
@ -295,9 +300,9 @@
<context> <context>
<name>AutoFillNotification</name> <name>AutoFillNotification</name>
<message> <message>
<location filename="../src/autofill/autofillnotification.cpp" line="34"/> <location filename="../src/autofill/autofillnotification.cpp" line="35"/>
<source>Do you want QupZilla to remember password on %1?</source> <source>Do you want QupZilla to remember password for &lt;b&gt;%1&lt;/b&gt; on %2?</source>
<translation>Chcete aby si QupZilla zapamätala heslo pre %1?</translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context> <context>

View File

@ -228,41 +228,46 @@
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="37"/> <location filename="../src/preferences/autofillmanager.ui" line="40"/>
<location filename="../src/preferences/autofillmanager.ui" line="120"/> <location filename="../src/preferences/autofillmanager.ui" line="128"/>
<source>Server</source> <source>Server</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="42"/> <location filename="../src/preferences/autofillmanager.ui" line="45"/>
<source>Username</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/preferences/autofillmanager.ui" line="50"/>
<source>Password</source> <source>Password</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="52"/> <location filename="../src/preferences/autofillmanager.ui" line="67"/>
<location filename="../src/preferences/autofillmanager.ui" line="130"/> <location filename="../src/preferences/autofillmanager.ui" line="138"/>
<source>Remove</source> <source>Remove</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="59"/> <location filename="../src/preferences/autofillmanager.ui" line="60"/>
<source>Edit</source> <source>Edit</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="66"/> <location filename="../src/preferences/autofillmanager.ui" line="74"/>
<location filename="../src/preferences/autofillmanager.ui" line="137"/> <location filename="../src/preferences/autofillmanager.ui" line="145"/>
<source>Remove All</source> <source>Remove All</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="103"/> <location filename="../src/preferences/autofillmanager.ui" line="111"/>
<location filename="../src/preferences/autofillmanager.cpp" line="71"/> <location filename="../src/preferences/autofillmanager.cpp" line="71"/>
<source>Show Passwords</source> <source>Show Passwords</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/preferences/autofillmanager.ui" line="113"/> <location filename="../src/preferences/autofillmanager.ui" line="121"/>
<source>Exceptions</source> <source>Exceptions</source>
<translation></translation> <translation></translation>
</message> </message>
@ -295,9 +300,9 @@
<context> <context>
<name>AutoFillNotification</name> <name>AutoFillNotification</name>
<message> <message>
<location filename="../src/autofill/autofillnotification.cpp" line="34"/> <location filename="../src/autofill/autofillnotification.cpp" line="35"/>
<source>Do you want QupZilla to remember password on %1?</source> <source>Do you want QupZilla to remember password for &lt;b&gt;%1&lt;/b&gt; on %2?</source>
<translation>QupZilla记住%1</translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context> <context>