diff options
Diffstat (limited to 'src/lib/navigation/urllineedit.cpp')
-rw-r--r-- | src/lib/navigation/urllineedit.cpp | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/src/lib/navigation/urllineedit.cpp b/src/lib/navigation/urllineedit.cpp deleted file mode 100644 index 4dc6b39..0000000 --- a/src/lib/navigation/urllineedit.cpp +++ /dev/null @@ -1,136 +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: git://neueland.iserlohn-fortress.net/smolbote.git - * - * SPDX-License-Identifier: GPL-3.0 - */ - -#include "urllineedit.h" -#include <QUrl> -#include <QTimer> -#include <QMenu> -#include <QAction> -#include <QStyle> - -#include <QWidgetAction> - -// ssl menu -#include <QLabel> - -#include "lib/bookmarks/bookmarkswidget.h" - -#include <QCompleter> - -UrlLineEdit::UrlLineEdit(QWidget *parent) : - QLineEdit(parent) -{ - setPlaceholderText(tr("Enter address")); - - // ssl menu - m_sslMenu = new QMenu(this); - m_sslLabel = new QLabel(m_sslMenu); - QWidgetAction *sslErrorAction = new QWidgetAction(m_sslMenu); - sslErrorAction->setDefaultWidget(m_sslLabel); - m_sslMenu->addAction(sslErrorAction); - - m_sslAction = addAction(style()->standardIcon(QStyle::SP_DriveNetIcon), QLineEdit::LeadingPosition); - m_sslAction->setToolTip(tr("TODO: Display SSL Status popup here")); - m_sslAction->setMenu(m_sslMenu); - - connect(m_sslAction, &QAction::triggered, this, [this]() { - m_sslMenu->exec(this->mapToGlobal(QPoint(0, height()))); - }); - - m_pageAction = addAction(style()->standardIcon(QStyle::SP_FileIcon), QLineEdit::TrailingPosition); - m_pageAction->setShortcut(QKeySequence("F10")); - m_pageAction->setToolTip(tr("Page Actions")); - connect(m_pageAction, &QAction::triggered, m_pageAction, [&]() { - //this->deselect(); - if(m_pageAction->menu() != nullptr) { - m_pageAction->menu()->exec(this->mapToGlobal(QPoint(width(), height()))); - } - }); - - QTextCharFormat hostnameFormat; - hostnameFormat.setFontWeight(QFont::Bold); - m_hostFormat.format = hostnameFormat; - - // connect signals - connect(this, &QLineEdit::returnPressed, [this]() { - if(this->text().startsWith('#')) { - emit searchTermEntered(this->text().mid(1)); - } else { - emit addressEntered(QUrl::fromUserInput(this->text())); - } - this->clearFocus(); - }); - -} - -QAction *UrlLineEdit::sslAction() -{ - Q_CHECK_PTR(m_sslAction); - return m_sslAction; -} - -QAction *UrlLineEdit::pageAction() -{ - Q_CHECK_PTR(m_pageAction); - return m_pageAction; -} - -void UrlLineEdit::setCompleterModel(QAbstractItemModel *model) -{ - Q_CHECK_PTR(model); - m_completer = new UrlCompleter(model, this); - m_completer->setCompletionColumn(1); - this->setCompleter(m_completer); -} - -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::showSslError(const QString &message) -{ - m_sslLabel->setText(message); - m_sslAction->trigger(); -} - -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())); -} - -// 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()); -} |