aboutsummaryrefslogtreecommitdiff
path: root/lib/navigation/urllineedit.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/navigation/urllineedit.h')
-rw-r--r--lib/navigation/urllineedit.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/lib/navigation/urllineedit.h b/lib/navigation/urllineedit.h
new file mode 100644
index 0000000..46366a7
--- /dev/null
+++ b/lib/navigation/urllineedit.h
@@ -0,0 +1,59 @@
+/*
+ * 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: git://neueland.iserlohn-fortress.net/smolbote.git
+ *
+ * SPDX-License-Identifier: GPL-3.0
+ */
+
+#ifndef URLLINEEDIT_H
+#define URLLINEEDIT_H
+
+#include <QLineEdit>
+#include <QTextLayout>
+#include <QAction>
+
+#include "urlcompleter.h"
+
+class QAbstractItemModel;
+class QMenu;
+class QLabel;
+class UrlLineEdit : public QLineEdit
+{
+ Q_OBJECT
+public:
+ explicit UrlLineEdit(QWidget *parent = nullptr);
+
+ QAction *sslAction();
+ QAction *pageAction();
+
+ void setCompleterModel(QAbstractItemModel *model);
+
+signals:
+ void addressEntered(const QUrl &url);
+ void searchTermEntered(const QString &term);
+
+public slots:
+ void setUrl(const QUrl &url);
+ void showSslError(const QString &message);
+
+protected:
+ void focusInEvent(QFocusEvent *event);
+
+private:
+ void setTextFormat(const QTextLayout::FormatRange &format);
+ void clearTextFormat();
+
+ QTextLayout::FormatRange m_hostFormat;
+
+ QAction *m_sslAction = nullptr;
+ QAction *m_pageAction = nullptr;
+
+ // ssl menu
+ QMenu *m_sslMenu;
+ QLabel *m_sslLabel;
+
+ UrlCompleter *m_completer;
+};
+
+#endif // URLLINEEDIT_H