mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 17:17:44 +00:00
Ladybird: Add autocomplete to LocationEdit
This commit is contained in:
parent
8fcf42f684
commit
d68433653a
9 changed files with 453 additions and 8 deletions
|
@ -5,9 +5,11 @@
|
|||
*/
|
||||
|
||||
#include "LocationEdit.h"
|
||||
#include "Settings.h"
|
||||
#include "StringUtils.h"
|
||||
#include <AK/URL.h>
|
||||
#include <QCoreApplication>
|
||||
#include <LibPublicSuffix/URL.h>
|
||||
#include <QApplication>
|
||||
#include <QPalette>
|
||||
#include <QTextLayout>
|
||||
#include <QTimer>
|
||||
|
@ -17,8 +19,50 @@ namespace Ladybird {
|
|||
LocationEdit::LocationEdit(QWidget* parent)
|
||||
: QLineEdit(parent)
|
||||
{
|
||||
setPlaceholderText("Enter web address");
|
||||
connect(this, &QLineEdit::editingFinished, this, &LocationEdit::clearFocus);
|
||||
setPlaceholderText("Search or enter web address");
|
||||
m_autocomplete = make<AutoComplete>(this);
|
||||
this->setCompleter(m_autocomplete);
|
||||
|
||||
connect(m_autocomplete, &AutoComplete::activated, [&](QModelIndex const&) {
|
||||
emit returnPressed();
|
||||
});
|
||||
|
||||
connect(this, &QLineEdit::returnPressed, [&] {
|
||||
clearFocus();
|
||||
if (!Settings::the()->enable_search())
|
||||
return;
|
||||
|
||||
auto query = ak_deprecated_string_from_qstring(text());
|
||||
if (auto result = PublicSuffix::absolute_url(query); !result.is_error())
|
||||
return;
|
||||
|
||||
auto search_url_or_error = AutoComplete::search_url_from_query(query);
|
||||
if (search_url_or_error.is_error()) {
|
||||
dbgln("LocationEdit::returnPressed: search_url_from_query failed: {}", search_url_or_error.error());
|
||||
return;
|
||||
}
|
||||
auto search_url = search_url_or_error.release_value();
|
||||
|
||||
setText(qstring_from_ak_string(search_url));
|
||||
});
|
||||
|
||||
connect(this, &QLineEdit::textEdited, [this] {
|
||||
if (!Settings::the()->enable_autocomplete()) {
|
||||
m_autocomplete->clear_suggestions();
|
||||
return;
|
||||
}
|
||||
|
||||
auto cursor_position = cursorPosition();
|
||||
|
||||
auto result = m_autocomplete->get_search_suggestions(ak_deprecated_string_from_qstring(text()));
|
||||
if (result.is_error()) {
|
||||
dbgln("LocationEdit::textEdited: get_search_suggestions failed: {}", result.error());
|
||||
return;
|
||||
}
|
||||
|
||||
setCursorPosition(cursor_position);
|
||||
});
|
||||
|
||||
connect(this, &QLineEdit::textChanged, this, &LocationEdit::highlight_location);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue