From 945b8ba5ea735466d2a107a4c336217e689f825f Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Sat, 24 Apr 2021 15:06:37 +0300 Subject: [PATCH] expose margin values in pixels for the user --margin values are in percentage, now the user is able to hover over these values in order to be informed how much they are calculated in pixels --- app/view/view.cpp | 15 +++++++ app/view/view.h | 6 +++ .../package/contents/ui/VisibilityManager.qml | 7 ++++ .../configuration/pages/AppearanceConfig.qml | 40 ++++++++++++++++--- 4 files changed, 63 insertions(+), 5 deletions(-) diff --git a/app/view/view.cpp b/app/view/view.cpp index 157b61c48..3bcb5c108 100644 --- a/app/view/view.cpp +++ b/app/view/view.cpp @@ -1365,6 +1365,21 @@ void View::setColorizer(QQuickItem *colorizer) emit colorizerChanged(); } +QQuickItem *View::metrics() const +{ + return m_metrics; +} + +void View::setMetrics(QQuickItem *metrics) +{ + if (m_metrics == metrics) { + return; + } + + m_metrics = metrics; + emit metricsChanged(); +} + ViewPart::Effects *View::effects() const { return m_effects; diff --git a/app/view/view.h b/app/view/view.h index c2e14e4b9..41a0566b7 100644 --- a/app/view/view.h +++ b/app/view/view.h @@ -121,6 +121,7 @@ class View : public PlasmaQuick::ContainmentView Q_PROPERTY(QString name READ name NOTIFY nameChanged) Q_PROPERTY(QQuickItem *colorizer READ colorizer WRITE setColorizer NOTIFY colorizerChanged) + Q_PROPERTY(QQuickItem *metrics READ metrics WRITE setMetrics NOTIFY metricsChanged) Q_PROPERTY(QVariantList containmentActions READ containmentActions NOTIFY containmentActionsChanged) @@ -239,6 +240,9 @@ public: QQuickItem *colorizer() const; void setColorizer(QQuickItem *colorizer); + QQuickItem *metrics() const; + void setMetrics(QQuickItem *metrics); + QVariantList containmentActions() const; QQuickView *configView(); @@ -336,6 +340,7 @@ signals: void localGeometryChanged(); void maxLengthChanged(); void maxThicknessChanged(); + void metricsChanged(); void normalThicknessChanged(); void maxNormalThicknessChanged(); void nameChanged(); @@ -447,6 +452,7 @@ private: Layout::GenericLayout *m_layout{nullptr}; QQuickItem *m_colorizer{nullptr}; + QQuickItem *m_metrics{nullptr}; QPointer m_appletConfigView; QPointer m_primaryConfigView; diff --git a/containment/package/contents/ui/VisibilityManager.qml b/containment/package/contents/ui/VisibilityManager.qml index 7f1bb8196..648524646 100644 --- a/containment/package/contents/ui/VisibilityManager.qml +++ b/containment/package/contents/ui/VisibilityManager.qml @@ -212,6 +212,13 @@ Item{ value: colorizerManager } + Binding{ + target: latteView + property: "metrics" + when: latteView + value: metrics + } + //! View::Effects bindings Binding{ target: latteView && latteView.effects ? latteView.effects : null diff --git a/shell/package/contents/configuration/pages/AppearanceConfig.qml b/shell/package/contents/configuration/pages/AppearanceConfig.qml index c5b7bd754..745b13d8d 100644 --- a/shell/package/contents/configuration/pages/AppearanceConfig.qml +++ b/shell/package/contents/configuration/pages/AppearanceConfig.qml @@ -164,12 +164,23 @@ PlasmaComponents.Page { } PlasmaComponents.Label { - text: proportionSizeSlider.value !== proportionSizeSlider.from ? - i18nc("number in percentage, e.g. 85 %","%0 %").arg(proportionSizeSlider.value.toFixed(1)) : i18nc("no value in percentage","--- %") - horizontalAlignment: Text.AlignRight + id: absoluteSizeLbl Layout.minimumWidth: theme.mSize(theme.defaultFont).width * 4 Layout.maximumWidth: theme.mSize(theme.defaultFont).width * 4 + + text: proportionSizeSlider.value !== proportionSizeSlider.from ? + (absoluteSizeLblMouseArea.containsMouse ? + i18nc("number in pixels, e.g. 64 px.","%0 px.").arg(latteView.metrics.maxIconSize) : + i18nc("number in percentage, e.g. 85 %","%0 %").arg(proportionSizeSlider.value.toFixed(1))) : + i18nc("no value in percentage","--- %") + horizontalAlignment: Text.AlignRight enabled: proportionSizeSlider.value !== proportionSizeSlider.from + + MouseArea { + id: absoluteSizeLblMouseArea + anchors.fill: parent + hoverEnabled: true + } } } @@ -617,10 +628,20 @@ PlasmaComponents.Page { } PlasmaComponents.Label { - text: i18nc("number in percentage, e.g. 85 %","%0 %").arg(lengthExtMarginSlider.value) + text: lengthMarginLblMouseArea.containsMouse ? + i18nc("number in pixels, e.g. 8 px.","%0 px.").arg(currentValueInPixels) : + i18nc("number in percentage, e.g. 85 %","%0 %").arg(lengthExtMarginSlider.value) horizontalAlignment: Text.AlignRight Layout.minimumWidth: theme.mSize(theme.defaultFont).width * 4 Layout.maximumWidth: theme.mSize(theme.defaultFont).width * 4 + + readonly property int currentValueInPixels: (lengthExtMarginSlider.value/100) * latteView.metrics.maxIconSize + + MouseArea { + id: lengthMarginLblMouseArea + anchors.fill: parent + hoverEnabled: true + } } } @@ -653,12 +674,21 @@ PlasmaComponents.Page { } PlasmaComponents.Label { - text: i18nc("number in percentage, e.g. 85 %","%0 %").arg(currentValue) + text: thickMarginLblMouseArea.containsMouse ? + i18nc("number in pixels, e.g. 8 px.","%0 px.").arg(currentValueInPixels) : + i18nc("number in percentage, e.g. 85 %","%0 %").arg(currentValue) horizontalAlignment: Text.AlignRight Layout.minimumWidth: theme.mSize(theme.defaultFont).width * 4 Layout.maximumWidth: theme.mSize(theme.defaultFont).width * 4 readonly property int currentValue: Math.max(thickMarginSlider.minimumInternalValue, thickMarginSlider.value) + readonly property int currentValueInPixels: (currentValue/100) * latteView.metrics.maxIconSize + + MouseArea { + id: thickMarginLblMouseArea + anchors.fill: parent + hoverEnabled: true + } } }