aboutsummaryrefslogtreecommitdiff
path: root/src/addressbar/urllineedit.cpp
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2018-05-01 15:54:49 +0200
committerAqua-sama <aqua@iserlohn-fortress.net>2018-05-01 15:54:49 +0200
commit1ee841364215042f1f284e692ae191ebf7a64156 (patch)
tree48c1f49e29fe6b13cef68cd73dd2cab039fea822 /src/addressbar/urllineedit.cpp
parentWindow::session (diff)
downloadsmolbote-1ee841364215042f1f284e692ae191ebf7a64156.tar.xz
Split off addressbar into lib/
Diffstat (limited to 'src/addressbar/urllineedit.cpp')
-rw-r--r--src/addressbar/urllineedit.cpp127
1 files changed, 0 insertions, 127 deletions
diff --git a/src/addressbar/urllineedit.cpp b/src/addressbar/urllineedit.cpp
deleted file mode 100644
index fa65e5b..0000000
--- a/src/addressbar/urllineedit.cpp
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * 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
- */
-
-#include "urllineedit.h"
-#include <QLabel>
-#include <QMenu>
-#include <QShortcut>
-#include <QTimer>
-#include <QWidgetAction>
-#include <bookmarks/bookmarkswidget.h>
-
-UrlLineEdit::UrlLineEdit(QWidget *parent)
- : QLineEdit(parent)
- , m_listView(new Completer(this))
-{
- setPlaceholderText(tr("Enter address"));
-
- m_listView->setVisible(false);
-
- pageMenu_action = addAction(style()->standardIcon(QStyle::SP_DriveNetIcon), QLineEdit::LeadingPosition);
- connect(pageMenu_action, &QAction::triggered, pageMenu_action, [&]() {
- if(pageMenu_action->menu()) {
- pageMenu_action->menu()->exec(this->mapToGlobal(QPoint(0, height())));
- }
- });
-
- toolsMenu_action = addAction(style()->standardIcon(QStyle::SP_FileIcon), QLineEdit::TrailingPosition);
- connect(toolsMenu_action, &QAction::triggered, toolsMenu_action, [&]() {
- if(toolsMenu_action->menu()) {
- toolsMenu_action->menu()->exec(this->mapToGlobal(QPoint(width(), height())));
- }
- });
-
- QTextCharFormat hostnameFormat;
- hostnameFormat.setFontWeight(QFont::Bold);
- m_hostFormat.format = hostnameFormat;
-}
-
-void UrlLineEdit::setUrl(const QUrl &url)
-{
- QString urlText = url.toString();
- QString domain = url.host();
-
- m_hostFormat.start = urlText.indexOf(domain);
- m_hostFormat.length = domain.length();
-
- clear();
- clearTextFormat();
- setTextFormat(m_hostFormat);
- setText(urlText);
-}
-
-void UrlLineEdit::updateCompleter(const QStringList &l)
-{
- if(!m_listView->updateItems(l)) {
- m_listView->hide();
- return;
- }
-
- // positioning
- m_listView->setFixedWidth(width());
- m_listView->move(mapToGlobal(QPoint(0, height())));
- m_listView->show();
-}
-
-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()));
-}
-
-void UrlLineEdit::focusOutEvent(QFocusEvent *event)
-{
- if(!text().startsWith('#'))
- setUrl(QUrl::fromUserInput(text()));
-
- QLineEdit::focusOutEvent(event);
-}
-
-void UrlLineEdit::keyPressEvent(QKeyEvent *event)
-{
- if(m_listView->keyPressed(event)) {
- int key = event->key();
- QModelIndex currentIndex = m_listView->currentIndex();
-
- if(key == Qt::Key::Key_Enter || key == Qt::Key_Return) {
-
- if(currentIndex.isValid()) {
- setText(currentIndex.data().toString());
- }
- m_listView->hide();
- event->accept();
- return;
- }
- } else if(event->key() == Qt::Key::Key_Escape) {
- clearFocus();
- event->accept();
- return;
- }
-
- QLineEdit::keyPressEvent(event);
-}
-
-// formatting taken from: https://forum.qt.io/topic/60962/setting-qlineedit-text-bold
-void UrlLineEdit::setTextFormat(const QTextLayout::FormatRange &format)
-{
- QList<QInputMethodEvent::Attribute> attributes;
- attributes.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, format.start, format.length, format.format));
- QInputMethodEvent ev(QString(), attributes);
- event(&ev);
-}
-
-void UrlLineEdit::clearTextFormat()
-{
- setTextFormat(QTextLayout::FormatRange());
-}