aboutsummaryrefslogtreecommitdiff
path: root/src/widgets/urllineedit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/urllineedit.cpp')
-rw-r--r--src/widgets/urllineedit.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/widgets/urllineedit.cpp b/src/widgets/urllineedit.cpp
index b038da9..871cd53 100644
--- a/src/widgets/urllineedit.cpp
+++ b/src/widgets/urllineedit.cpp
@@ -26,6 +26,8 @@
#include <QStyle>
#include "browser.h"
+#include <QWidgetAction>
+
UrlLineEdit::UrlLineEdit(QWidget *parent) :
QLineEdit(parent)
{
@@ -47,6 +49,27 @@ UrlLineEdit::UrlLineEdit(QWidget *parent) :
QAction *contextAction = addAction(style()->standardIcon(QStyle::SP_TitleBarMinButton), ActionPosition::TrailingPosition);
contextAction->setShortcut(QKeySequence::fromString("F3"));
connect(contextAction, SIGNAL(triggered()), this, SLOT(showMenu()));
+
+ m_menu = new QMenu(this);
+ m_menu->setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);
+
+ QListWidget *listWidget = new QListWidget();
+ listWidget->addItem("start.duckduckgo.com");
+ listWidget->addItem("neueland.iserlohn-fortress.net");
+
+ connect(listWidget, &QListWidget::itemActivated, [this](QListWidgetItem *item){
+ setUrl(urlFromUserInput(item->text()));
+ this->m_menu->hide();
+ });
+
+ QWidgetAction *listAction = new QWidgetAction(m_menu);
+ listAction->setDefaultWidget(listWidget);
+ m_menu->addAction(listAction);
+ QAction *closeAction = m_menu->addAction("Close");
+ connect(closeAction, SIGNAL(triggered()), m_menu, SLOT(hide()));
+
+ connect(this, SIGNAL(textEdited(QString)), this, SLOT(showCompleter(QString)));
+
}
void UrlLineEdit::setUrl(const QUrl &url)
@@ -71,20 +94,30 @@ QUrl UrlLineEdit::url()
void UrlLineEdit::focusInEvent(QFocusEvent *event)
{
clearTextFormat();
+
QLineEdit::focusInEvent(event);
// select the contents when receiving focus
// http://stackoverflow.com/a/35725950/1054406
// mousePressEvent triggers right after focusInEvent so text selected in focusInEvent unselects by mousePressEvent
QTimer::singleShot(0, this, SLOT(selectAll()));
+
+ //QTimer::singleShot(0, this, SLOT(showCompleter()));
}
void UrlLineEdit::focusOutEvent(QFocusEvent *event)
{
+ wasFocused = false;
setUrl(urlFromUserInput(text()));
QLineEdit::focusOutEvent(event);
}
+void UrlLineEdit::resizeEvent(QResizeEvent *event)
+{
+ QLineEdit::resizeEvent(event);
+ m_menu->setFixedWidth(width());
+}
+
// formatting taken from: https://forum.qt.io/topic/60962/setting-qlineedit-text-bold
void UrlLineEdit::setTextFormat(const QTextLayout::FormatRange &format)
{
@@ -108,6 +141,14 @@ QUrl UrlLineEdit::urlFromUserInput(const QString &input)
return QUrl::fromUserInput(input);
}
+// Completer
+
+void UrlLineEdit::showCompleter(const QString &text)
+{
+ m_menu->move(mapToGlobal(QPoint(0, height())));
+ m_menu->exec();
+}
+
// Menu
void UrlLineEdit::showMenu()