/* * This file is part of smolbote. It's copyrighted by the contributors recorded * in the version control history of the file, available from its original * location: https://neueland.iserlohn-fortress.net/smolbote.hg * * SPDX-License-Identifier: GPL-3.0 */ #ifndef SMOLBOTE_URLLINEEDIT_H #define SMOLBOTE_URLLINEEDIT_H #include "completer.h" #include "webengine/webview.h" #include #include #include class QMenu; class QTimer; class BookmarksWidget; class WebView; class UrlLineEdit : public QLineEdit { Q_OBJECT public: explicit UrlLineEdit(const QHash &config, QWidget *parent = nullptr); ~UrlLineEdit() override; void setBookmarksManager(BookmarksWidget *w) { bookmarks = w; }; signals: void complete(const QString &term); public slots: void connectWebView(WebView *view); void setUrl(const QUrl &url); void search(); void updateCompleter(QStringList l); protected: void focusInEvent(QFocusEvent *event) override; void focusOutEvent(QFocusEvent *event) override; void keyPressEvent(QKeyEvent *event) override; private: void setTextFormat(const QTextLayout::FormatRange &format); void clearTextFormat(); BookmarksWidget *bookmarks = nullptr; WebView *m_view = nullptr; QTextLayout::FormatRange m_hostFormat; // pageMenu action: zoom, print QAction *m_pageMenuAction = nullptr; // devMenu action: scripts, etc QAction *m_toolsMenuAction = nullptr; // completer QTimer *suggestionTimer; Completer *m_listView; QMetaObject::Connection urlChangedConnection; }; #endif // SMOLBOTE_URLLINEEDIT_H