mirror of
https://invent.kde.org/network/falkon.git
synced 2024-11-13 10:32:11 +01:00
Show page zoom level in locationbar
- Only show up when the zoom level is different than the default zoom level set in preferences. BUG: 399001 Signed-off-by: Juraj Oravec <jurajoravec@mailo.com>
This commit is contained in:
parent
6c5db638ec
commit
d50eb6e822
|
@ -127,6 +127,7 @@ set(SRCS ${SRCS}
|
||||||
navigation/reloadstopbutton.cpp
|
navigation/reloadstopbutton.cpp
|
||||||
navigation/siteicon.cpp
|
navigation/siteicon.cpp
|
||||||
navigation/websearchbar.cpp
|
navigation/websearchbar.cpp
|
||||||
|
navigation/zoomlabel.cpp
|
||||||
network/networkmanager.cpp
|
network/networkmanager.cpp
|
||||||
network/networkurlinterceptor.cpp
|
network/networkurlinterceptor.cpp
|
||||||
network/schemehandlers/extensionschemehandler.cpp
|
network/schemehandlers/extensionschemehandler.cpp
|
||||||
|
@ -355,6 +356,7 @@ set(SRCS ${SRCS}
|
||||||
navigation/reloadstopbutton.h
|
navigation/reloadstopbutton.h
|
||||||
navigation/siteicon.h
|
navigation/siteicon.h
|
||||||
navigation/websearchbar.h
|
navigation/websearchbar.h
|
||||||
|
navigation/zoomlabel.h
|
||||||
network/networkmanager.h
|
network/networkmanager.h
|
||||||
network/networkurlinterceptor.h
|
network/networkurlinterceptor.h
|
||||||
network/schemehandlers/extensionschemehandler.h
|
network/schemehandlers/extensionschemehandler.h
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
#include "colors.h"
|
#include "colors.h"
|
||||||
#include "autofillicon.h"
|
#include "autofillicon.h"
|
||||||
#include "completer/locationcompleter.h"
|
#include "completer/locationcompleter.h"
|
||||||
|
#include "zoomlabel.h"
|
||||||
|
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QMimeData>
|
#include <QMimeData>
|
||||||
|
@ -63,8 +64,10 @@ LocationBar::LocationBar(QWidget *parent)
|
||||||
m_siteIcon = new SiteIcon(this);
|
m_siteIcon = new SiteIcon(this);
|
||||||
m_autofillIcon = new AutoFillIcon(this);
|
m_autofillIcon = new AutoFillIcon(this);
|
||||||
auto* down = new DownIcon(this);
|
auto* down = new DownIcon(this);
|
||||||
|
m_zoomlabel = new ZoomLabel(this);
|
||||||
|
|
||||||
addWidget(m_siteIcon, LineEdit::LeftSide);
|
addWidget(m_siteIcon, LineEdit::LeftSide);
|
||||||
|
addWidget(m_zoomlabel, LineEdit::RightSide);
|
||||||
addWidget(m_autofillIcon, LineEdit::RightSide);
|
addWidget(m_autofillIcon, LineEdit::RightSide);
|
||||||
addWidget(m_bookmarkIcon, LineEdit::RightSide);
|
addWidget(m_bookmarkIcon, LineEdit::RightSide);
|
||||||
addWidget(m_goIcon, LineEdit::RightSide);
|
addWidget(m_goIcon, LineEdit::RightSide);
|
||||||
|
@ -134,6 +137,7 @@ void LocationBar::setWebView(TabbedWebView* view)
|
||||||
|
|
||||||
m_bookmarkIcon->setWebView(m_webView);
|
m_bookmarkIcon->setWebView(m_webView);
|
||||||
m_siteIcon->setWebView(m_webView);
|
m_siteIcon->setWebView(m_webView);
|
||||||
|
m_zoomlabel->setWebView(m_webView);
|
||||||
m_autofillIcon->setWebView(m_webView);
|
m_autofillIcon->setWebView(m_webView);
|
||||||
|
|
||||||
connect(m_webView, &QWebEngineView::loadStarted, this, &LocationBar::loadStarted);
|
connect(m_webView, &QWebEngineView::loadStarted, this, &LocationBar::loadStarted);
|
||||||
|
@ -364,10 +368,12 @@ void LocationBar::setGoIconVisible(bool state)
|
||||||
{
|
{
|
||||||
if (state) {
|
if (state) {
|
||||||
m_bookmarkIcon->hide();
|
m_bookmarkIcon->hide();
|
||||||
|
m_zoomlabel->hide();
|
||||||
m_goIcon->show();
|
m_goIcon->show();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
m_bookmarkIcon->show();
|
m_bookmarkIcon->show();
|
||||||
|
m_zoomlabel->show();
|
||||||
|
|
||||||
if (!qzSettings->alwaysShowGoIcon) {
|
if (!qzSettings->alwaysShowGoIcon) {
|
||||||
m_goIcon->hide();
|
m_goIcon->hide();
|
||||||
|
|
|
@ -34,6 +34,7 @@ class SiteIcon;
|
||||||
class GoIcon;
|
class GoIcon;
|
||||||
class AutoFillIcon;
|
class AutoFillIcon;
|
||||||
class BookmarkItem;
|
class BookmarkItem;
|
||||||
|
class ZoomLabel;
|
||||||
|
|
||||||
class FALKON_EXPORT LocationBar : public LineEdit
|
class FALKON_EXPORT LocationBar : public LineEdit
|
||||||
{
|
{
|
||||||
|
@ -117,6 +118,7 @@ private:
|
||||||
GoIcon* m_goIcon;
|
GoIcon* m_goIcon;
|
||||||
SiteIcon* m_siteIcon;
|
SiteIcon* m_siteIcon;
|
||||||
AutoFillIcon* m_autofillIcon;
|
AutoFillIcon* m_autofillIcon;
|
||||||
|
ZoomLabel* m_zoomlabel;
|
||||||
|
|
||||||
BrowserWindow* m_window;
|
BrowserWindow* m_window;
|
||||||
TabbedWebView* m_webView;
|
TabbedWebView* m_webView;
|
||||||
|
|
82
src/lib/navigation/zoomlabel.cpp
Normal file
82
src/lib/navigation/zoomlabel.cpp
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
/* ============================================================
|
||||||
|
* ZoomLabel - Shows current zoom level in locationbar
|
||||||
|
* Copyright (C) 2023 Juraj Oravec <jurajoravec@mailo.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
* ============================================================ */
|
||||||
|
#include "zoomlabel.h"
|
||||||
|
#include "locationbar.h"
|
||||||
|
#include "mainapplication.h"
|
||||||
|
#include "tabbedwebview.h"
|
||||||
|
#include "qzsettings.h"
|
||||||
|
|
||||||
|
#include <QApplication>
|
||||||
|
|
||||||
|
ZoomLabel::ZoomLabel(LocationBar* parent)
|
||||||
|
: ClickableLabel(parent)
|
||||||
|
, m_locationBar(parent)
|
||||||
|
, m_view(nullptr)
|
||||||
|
{
|
||||||
|
setObjectName(QSL("locationbar-zoomlabel"));
|
||||||
|
setCursor(Qt::PointingHandCursor);
|
||||||
|
setFocusPolicy(Qt::NoFocus);
|
||||||
|
setScaledContents(true);
|
||||||
|
setToolTip(tr("Reset zoom level"));
|
||||||
|
|
||||||
|
connect(mApp, &MainApplication::settingsReloaded, this, [this]() {
|
||||||
|
if (this->m_view) {
|
||||||
|
this->valueChanged(m_view->zoomLevel());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void ZoomLabel::setWebView(WebView* view)
|
||||||
|
{
|
||||||
|
m_view = view;
|
||||||
|
connect(view, &WebView::zoomLevelChanged, this, &ZoomLabel::valueChanged);
|
||||||
|
connect(this, &ZoomLabel::clicked, view, &WebView::zoomReset);
|
||||||
|
valueChanged(m_view->zoomLevel());
|
||||||
|
}
|
||||||
|
|
||||||
|
void ZoomLabel::valueChanged(int value)
|
||||||
|
{
|
||||||
|
if ((m_view) && (value != qzSettings->defaultZoomLevel) && (qzSettings->showZoomLabel)) {
|
||||||
|
setText(QSL("%1%").arg(m_view->zoomFactor() * 100));
|
||||||
|
show();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ZoomLabel::paintEvent(QPaintEvent* e)
|
||||||
|
{
|
||||||
|
QPainter p(this);
|
||||||
|
|
||||||
|
QFontMetrics fmNormalFont(font());
|
||||||
|
QFont smallFont(font());
|
||||||
|
smallFont.setPointSizeF(smallFont.pointSizeF() * 0.8);
|
||||||
|
p.setFont(smallFont);
|
||||||
|
|
||||||
|
QFontMetrics fmSmallFont(smallFont);
|
||||||
|
int fontSizeDiff = fmNormalFont.height() - fmSmallFont.height();
|
||||||
|
|
||||||
|
QRect rect = e->rect();
|
||||||
|
rect.setY(rect.y() + (fontSizeDiff * 2));
|
||||||
|
rect.setHeight(fmSmallFont.height());
|
||||||
|
p.fillRect(rect, QApplication::palette().color(QPalette::Base));
|
||||||
|
|
||||||
|
rect.setX(rect.x() + (fmNormalFont.horizontalAdvance(text()) - fmSmallFont.horizontalAdvance(text())) / 2);
|
||||||
|
p.drawText(rect, text());
|
||||||
|
}
|
47
src/lib/navigation/zoomlabel.h
Normal file
47
src/lib/navigation/zoomlabel.h
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
/* ============================================================
|
||||||
|
* ZoomLabel - Shows current zoom level in locationbar
|
||||||
|
* Copyright (C) 2023 Juraj Oravec <jurajoravec@mailo.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
* ============================================================ */
|
||||||
|
#ifndef ZOOM_LABEL_H
|
||||||
|
#define ZOOM_LABEL_H
|
||||||
|
|
||||||
|
#include "clickablelabel.h"
|
||||||
|
|
||||||
|
class LocationBar;
|
||||||
|
class WebView;
|
||||||
|
class BrowserWindow;
|
||||||
|
|
||||||
|
class ZoomLabel : public ClickableLabel
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit ZoomLabel(LocationBar* parent);
|
||||||
|
|
||||||
|
void setWebView(WebView* view);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void paintEvent(QPaintEvent* e) override;
|
||||||
|
|
||||||
|
private Q_SLOTS:
|
||||||
|
void valueChanged(int value);
|
||||||
|
|
||||||
|
private:
|
||||||
|
LocationBar* m_locationBar;
|
||||||
|
WebView* m_view;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // ZOOM_LABEL_H
|
|
@ -34,6 +34,7 @@ void QzSettings::loadSettings()
|
||||||
showSwitchTab = settings.value("showSwitchTab", true).toBool();
|
showSwitchTab = settings.value("showSwitchTab", true).toBool();
|
||||||
alwaysShowGoIcon = settings.value("alwaysShowGoIcon", false).toBool();
|
alwaysShowGoIcon = settings.value("alwaysShowGoIcon", false).toBool();
|
||||||
useInlineCompletion = settings.value("useInlineCompletion", true).toBool();
|
useInlineCompletion = settings.value("useInlineCompletion", true).toBool();
|
||||||
|
showZoomLabel = settings.value("showZoomLabel", true).toBool();
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
settings.beginGroup("SearchEngines");
|
settings.beginGroup("SearchEngines");
|
||||||
|
|
|
@ -39,6 +39,7 @@ public:
|
||||||
bool showSwitchTab;
|
bool showSwitchTab;
|
||||||
bool alwaysShowGoIcon;
|
bool alwaysShowGoIcon;
|
||||||
bool useInlineCompletion;
|
bool useInlineCompletion;
|
||||||
|
bool showZoomLabel;
|
||||||
|
|
||||||
// SearchEngines
|
// SearchEngines
|
||||||
bool searchOnEngineChange;
|
bool searchOnEngineChange;
|
||||||
|
|
|
@ -249,6 +249,7 @@ Preferences::Preferences(BrowserWindow* window)
|
||||||
ui->useInlineCompletion->setChecked(settings.value("useInlineCompletion", true).toBool());
|
ui->useInlineCompletion->setChecked(settings.value("useInlineCompletion", true).toBool());
|
||||||
ui->completionShowSwitchTab->setChecked(settings.value("showSwitchTab", true).toBool());
|
ui->completionShowSwitchTab->setChecked(settings.value("showSwitchTab", true).toBool());
|
||||||
ui->alwaysShowGoIcon->setChecked(settings.value("alwaysShowGoIcon", false).toBool());
|
ui->alwaysShowGoIcon->setChecked(settings.value("alwaysShowGoIcon", false).toBool());
|
||||||
|
ui->showZoomLabel->setChecked(settings.value("showZoomLabel", true).toBool());
|
||||||
ui->selectAllOnFocus->setChecked(settings.value("SelectAllTextOnDoubleClick", true).toBool());
|
ui->selectAllOnFocus->setChecked(settings.value("SelectAllTextOnDoubleClick", true).toBool());
|
||||||
ui->selectAllOnClick->setChecked(settings.value("SelectAllTextOnClick", false).toBool());
|
ui->selectAllOnClick->setChecked(settings.value("SelectAllTextOnClick", false).toBool());
|
||||||
bool showPBinAB = settings.value("ShowLoadingProgress", false).toBool();
|
bool showPBinAB = settings.value("ShowLoadingProgress", false).toBool();
|
||||||
|
@ -1027,6 +1028,7 @@ void Preferences::saveSettings()
|
||||||
settings.setValue("showSuggestions", ui->addressbarCompletion->currentIndex());
|
settings.setValue("showSuggestions", ui->addressbarCompletion->currentIndex());
|
||||||
settings.setValue("useInlineCompletion", ui->useInlineCompletion->isChecked());
|
settings.setValue("useInlineCompletion", ui->useInlineCompletion->isChecked());
|
||||||
settings.setValue("alwaysShowGoIcon", ui->alwaysShowGoIcon->isChecked());
|
settings.setValue("alwaysShowGoIcon", ui->alwaysShowGoIcon->isChecked());
|
||||||
|
settings.setValue("showZoomLabel", ui->showZoomLabel->isChecked());
|
||||||
settings.setValue("showSwitchTab", ui->completionShowSwitchTab->isChecked());
|
settings.setValue("showSwitchTab", ui->completionShowSwitchTab->isChecked());
|
||||||
settings.setValue("SelectAllTextOnDoubleClick", ui->selectAllOnFocus->isChecked());
|
settings.setValue("SelectAllTextOnDoubleClick", ui->selectAllOnFocus->isChecked());
|
||||||
settings.setValue("SelectAllTextOnClick", ui->selectAllOnClick->isChecked());
|
settings.setValue("SelectAllTextOnClick", ui->selectAllOnClick->isChecked());
|
||||||
|
|
|
@ -818,6 +818,13 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="showZoomLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Show zoom label</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="selectAllOnFocus">
|
<widget class="QCheckBox" name="selectAllOnFocus">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
|
Loading…
Reference in New Issue
Block a user