/* * 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 "addressbar.h" #include "urllineedit.h" #include "webengine/webview.h" #include #include #include AddressBar::AddressBar(const QHash &config, QWidget *parent) : QWidget(parent) { setLayout(new QVBoxLayout()); layout()->setContentsMargins(0, 0, 0, 0); layout()->setSpacing(0); urlBar = new UrlLineEdit(this); layout()->addWidget(urlBar); auto *focusShortcut = new QShortcut(QKeySequence(config.value("addressbar.shortcuts.focus")), parent); connect(focusShortcut, &QShortcut::activated, urlBar, [=]() { urlBar->setFocus(); urlBar->selectAll(); }); urlBar->pageMenu_action->setShortcut(QKeySequence(config.value("addressbar.shortcuts.pageMenu"))); urlBar->pageMenu_action->setToolTip(tr("Page Actions (%1)").arg(urlBar->pageMenu_action->shortcut().toString())); urlBar->toolsMenu_action->setShortcut(QKeySequence(config.value("addressbar.shortcuts.toolsMenu"))); urlBar->toolsMenu_action->setToolTip(tr("Tools (%1)").arg(urlBar->toolsMenu_action->shortcut().toString())); connect(urlBar, &UrlLineEdit::textEdited, [=](const QString &text) { std::function callback = std::bind(&UrlLineEdit::updateCompleter, urlBar, std::placeholders::_1); emit complete(text, callback); }); progressBar = new QProgressBar(this); progressBar->setMaximumHeight(5); progressBar->setTextVisible(false); layout()->addWidget(progressBar); } AddressBar::~AddressBar() { disconnect(urlChangedConnection); disconnect(loadUrlConnection); disconnect(progressBarConnection); } void AddressBar::connectWebView(WebView* view) { disconnect(urlChangedConnection); disconnect(loadUrlConnection); disconnect(progressBarConnection); if(view == nullptr) { urlBar->clear(); urlBar->pageMenu_action->setMenu(nullptr); urlBar->toolsMenu_action->setMenu(nullptr); progressBar->setValue(100); return; } urlBar->setUrl(view->url()); urlBar->pageMenu_action->setMenu(view->pageMenu()); urlBar->toolsMenu_action->setMenu(view->toolsMenu()); urlChangedConnection = connect(view, &WebView::urlChanged, urlBar, &UrlLineEdit::setUrl); loadUrlConnection = connect(urlBar, &UrlLineEdit::returnPressed, [=]() { if(urlBar->text().startsWith('#')) {; view->search(urlBar->text().mid(1)); } else { view->load(QUrl::fromUserInput(urlBar->text())); } view->setFocus(); }); progressBar->setValue(view->loadProgress()); progressBarConnection = connect(view, &QWebEngineView::loadProgress, progressBar, &QProgressBar::setValue); }