mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2024-10-01 01:26:01 -04:00
Implement option to search all open databases.
This commit is contained in:
parent
be24872bba
commit
41be9e8178
@ -181,30 +181,47 @@ bool Service::removeFirstDomain(QString & hostname)
|
|||||||
return !hostname.isEmpty();
|
return !hostname.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<Entry*> Service::searchEntries(const QString& text)
|
QList<Entry*> Service::searchEntries(Database* db, const QString& hostname)
|
||||||
{
|
{
|
||||||
QList<Entry*> entries;
|
QList<Entry*> entries;
|
||||||
|
if (Group* rootGroup = db->rootGroup())
|
||||||
|
Q_FOREACH (Entry* entry, rootGroup->search(hostname, Qt::CaseInsensitive)) {
|
||||||
|
QString title = entry->title();
|
||||||
|
QString url = entry->url();
|
||||||
|
|
||||||
//TODO: setting to search all databases [e.g. as long as the 'current' db is authentified
|
//Filter to match hostname in Title and Url fields
|
||||||
|
if ( (!title.isEmpty() && hostname.contains(title))
|
||||||
|
|| (!url.isEmpty() && hostname.contains(url))
|
||||||
|
|| (matchUrlScheme(title) && hostname.endsWith(QUrl(title).host()))
|
||||||
|
|| (matchUrlScheme(url) && hostname.endsWith(QUrl(url).host())) )
|
||||||
|
entries.append(entry);
|
||||||
|
}
|
||||||
|
return entries;
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<Entry*> Service::searchEntries(const QString& text)
|
||||||
|
{
|
||||||
|
//Get the list of databases to search
|
||||||
|
QList<Database*> databases;
|
||||||
|
if (HttpSettings::searchInAllDatabases()) {
|
||||||
|
for (int i = 0; i < m_dbTabWidget->count(); i++)
|
||||||
|
if (DatabaseWidget* dbWidget = qobject_cast<DatabaseWidget*>(m_dbTabWidget->widget(i)))
|
||||||
|
if (Database* db = dbWidget->database())
|
||||||
|
databases << db;
|
||||||
|
}
|
||||||
|
else if (DatabaseWidget* dbWidget = m_dbTabWidget->currentDatabaseWidget()) {
|
||||||
|
if (Database* db = dbWidget->database())
|
||||||
|
databases << db;
|
||||||
|
}
|
||||||
|
|
||||||
//Search entries matching the hostname
|
//Search entries matching the hostname
|
||||||
QString hostname = QUrl(text).host();
|
QString hostname = QUrl(text).host();
|
||||||
if (DatabaseWidget* dbWidget = m_dbTabWidget->currentDatabaseWidget())
|
QList<Entry*> entries;
|
||||||
if (Database* db = dbWidget->database())
|
do {
|
||||||
if (Group* rootGroup = db->rootGroup())
|
Q_FOREACH (Database* db, databases)
|
||||||
do {
|
entries << searchEntries(db, hostname);
|
||||||
Q_FOREACH (Entry* entry, rootGroup->search(hostname, Qt::CaseInsensitive)) {
|
} while(entries.isEmpty() && removeFirstDomain(hostname));
|
||||||
QString title = entry->title();
|
|
||||||
QString url = entry->url();
|
|
||||||
|
|
||||||
//Filter to match hostname in Title and Url fields
|
|
||||||
if ( (!title.isEmpty() && hostname.contains(title))
|
|
||||||
|| (!url.isEmpty() && hostname.contains(url))
|
|
||||||
|| (matchUrlScheme(title) && hostname.endsWith(QUrl(title).host()))
|
|
||||||
|| (matchUrlScheme(url) && hostname.endsWith(QUrl(url).host())) )
|
|
||||||
entries.append(entry);
|
|
||||||
}
|
|
||||||
} while(entries.isEmpty() && removeFirstDomain(hostname));
|
|
||||||
return entries;
|
return entries;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,6 +52,7 @@ private:
|
|||||||
class SortEntries;
|
class SortEntries;
|
||||||
int sortPriority(const Entry *entry, const QString &host, const QString &submitUrl, const QString &baseSubmitUrl) const;
|
int sortPriority(const Entry *entry, const QString &host, const QString &submitUrl, const QString &baseSubmitUrl) const;
|
||||||
KeepassHttpProtocol::Entry prepareEntry(const Entry* entry);
|
KeepassHttpProtocol::Entry prepareEntry(const Entry* entry);
|
||||||
|
QList<Entry*> searchEntries(Database* db, const QString& hostname);
|
||||||
QList<Entry*> searchEntries(const QString& text);
|
QList<Entry*> searchEntries(const QString& text);
|
||||||
|
|
||||||
DatabaseTabWidget * const m_dbTabWidget;
|
DatabaseTabWidget * const m_dbTabWidget;
|
||||||
|
Loading…
Reference in New Issue
Block a user