You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
latte-dock/containment/package/contents/ui/abilities/Metrics.qml

104 lines
5.2 KiB
QML

/*
SPDX-FileCopyrightText: 2020 Michail Vourlakos <mvourlakos@gmail.com>
SPDX-License-Identifier: GPL-2.0-or-later
*/
import QtQuick 2.7
import org.kde.plasma.plasmoid 2.0
import org.kde.plasma.core 2.0 as PlasmaCore
import org.kde.latte.core 0.2 as LatteCore
import "./privates" as Ability
Ability.MetricsPrivate {
id: metrics
//! Signals
signal iconSizeAnimationEnded();
//! Public Properties
iconSize: _iconSize
maxIconSize: _maxIconSize
backgroundThickness: background.thickness
//! Margin
margin.length: fraction.lengthMargin * iconSize
margin.tailThickness: marginMinThickness + fraction.thicknessMargin * Math.max(0, _iconSize - marginMinThickness)
margin.maxTailThickness: marginMinThickness + fraction.thicknessMargin * Math.max(0, _maxIconSize - marginMinThickness)
margin.headThickness: (background.isGreaterThanItemThickness ? (background.totals.visualThickness - _iconSize - margin.tailThickness) : margin.tailThickness)
margin.maxHeadThickness: (background.isGreaterThanItemThickness ? (background.totals.visualMaxThickness - _maxIconSize - margin.maxTailThickness) : margin.maxTailThickness)
//margin.thickness: fraction.thicknessMargin * iconSize
// margin.maxThickness: fraction.thicknessMargin * maxIconSize
margin.screenEdge: (root.screenEdgeMarginEnabled && root.behaveAsPlasmaPanel)
|| !root.screenEdgeMarginEnabled
|| root.hideThickScreenGap ?
0 : plasmoid.configuration.screenEdgeMargin
//! MarginsAra
marginsArea.tailThickness: {
if (!themeExtended) {
return metrics.margin.tailThickness;
}
var areamargin = 0;
if (plasmoid.location === PlasmaCore.Types.TopEdge) {
areamargin = themeExtended.marginsAreaTop;
} else if (plasmoid.location === PlasmaCore.Types.LeftEdge) {
areamargin = themeExtended.marginsAreaLeft;
} else if (plasmoid.location === PlasmaCore.Types.RightEdge) {
areamargin = themeExtended.marginsAreaRight;
} else {
areamargin = themeExtended.marginsAreaBottom;
}
return areamargin + metrics.margin.tailThickness;
}
marginsArea.headThickness: {
if (!themeExtended) {
return metrics.margin.headThickness;
}
var areamargin = 0;
if (plasmoid.location === PlasmaCore.Types.TopEdge) {
areamargin = themeExtended.marginsAreaBottom;
} else if (plasmoid.location === PlasmaCore.Types.LeftEdge) {
areamargin = themeExtended.marginsAreaRight;
} else if (plasmoid.location === PlasmaCore.Types.RightEdge) {
areamargin = themeExtended.marginsAreaLeft;
} else {
areamargin = themeExtended.marginsAreaTop;
}
return areamargin + metrics.margin.headThickness;
}
//! Mask
mask.maxScreenEdge : root.behaveAsDockWithMask ? Math.max(0, plasmoid.configuration.screenEdgeMargin) : 0
// window geometry is updated after the local screen margin animation was zeroed*/
mask.screenEdge: (!root.screenEdgeMarginEnabled || root.hideThickScreenGap) ? 0 : plasmoid.configuration.screenEdgeMargin
mask.thickness.hidden: LatteCore.WindowSystem.compositingActive ? 2 : 1
mask.thickness.normal: mask.screenEdge + Math.max(totals.thickness + extraThicknessForNormal, background.thickness + background.shadows.headThickness)
mask.thickness.medium: mask.screenEdge + mediumFactor*(iconSize+extraThicknessForZoomed) + mediumMarginsFactor*totals.thicknessEdges
mask.thickness.zoomed: mask.screenEdge + ((iconSize+extraThicknessForZoomed) * parabolic.factor.maxZoom) + maxMarginsFactor*totals.thicknessEdges + 2
mask.thickness.maxNormal: mask.maxScreenEdge + maxIconSize + (margin.maxTailThickness + margin.maxHeadThickness) + extraThicknessForNormal
mask.thickness.maxMedium: mask.maxScreenEdge + Math.max(mask.thickness.maxNormalForItems, extraThicknessForNormal + (mediumFactor*maxIconSize)+(mediumMarginsFactor*margin.tailThickness))
mask.thickness.maxZoomed: mask.maxScreenEdge + Math.max( ((maxIconSize*parabolic.factor.maxZoom) + ((margin.maxTailThickness + margin.maxHeadThickness)*maxMarginsFactor)) + extraThicknessForZoomed,
background.thickness + background.shadows.headThickness)
mask.thickness.normalForItems: margin.screenEdge + totals.thickness
mask.thickness.zoomedForItems: margin.screenEdge + (parabolic.factor.zoom * iconSize) + (parabolic.factor.marginThicknessZoom * totals.thicknessEdges)
mask.thickness.maxNormalForItemsWithoutScreenEdge: maxIconSize + margin.maxTailThickness + margin.maxHeadThickness
mask.thickness.maxZoomedForItemsWithoutScreenEdge: maxIconSize*parabolic.factor.maxZoom + (margin.maxTailThickness + margin.maxHeadThickness)*maxMarginsFactor
mask.thickness.maxNormalForItems: mask.maxScreenEdge + mask.thickness.maxNormalForItemsWithoutScreenEdge
mask.thickness.maxZoomedForItems: mask.maxScreenEdge + mask.thickness.maxZoomedForItemsWithoutScreenEdge
//! Padding
padding.length: fraction.lengthPadding * iconSize
padding.lengthApplet: fraction.lengthAppletPadding * iconSize
}