/* * 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 #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::setView(QWebEngineView *view) { disconnect(urlChangedConnection); disconnect(loadUrlConnection); disconnect(progressBarConnection); progressBar->setValue(100); if(view == nullptr) { urlBar->clear(); urlBar->pageMenu_action->setMenu(nullptr); urlBar->toolsMenu_action->setMenu(nullptr); return; } urlBar->setUrl(view->url()); urlChangedConnection = connect(view, &QWebEngineView::urlChanged, urlBar, &UrlLineEdit::setUrl); loadUrlConnection = connect(urlBar, &UrlLineEdit::returnPressed, [=]() { if(urlBar->text().startsWith('#')) { emit 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); } void AddressBar::setPageMenu(QMenu *menu) { urlBar->pageMenu_action->setMenu(menu); } void AddressBar::setToolsMenu(QMenu *menu) { urlBar->toolsMenu_action->setMenu(menu); }