From 1ee841364215042f1f284e692ae191ebf7a64156 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Tue, 1 May 2018 15:54:49 +0200 Subject: Split off addressbar into lib/ --- src/addressbar/urllineedit.cpp | 127 ----------------------------------------- 1 file changed, 127 deletions(-) delete mode 100644 src/addressbar/urllineedit.cpp (limited to 'src/addressbar/urllineedit.cpp') 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 -#include -#include -#include -#include -#include - -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 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()); -} -- cgit v1.2.1