SPDX-FileCopyrightText: 2012-2013 Eike Hein <hein@kde.org>
SPDX-License-Identifier: GPL-2.0-or-later
*/
.import org.kde.kirigami as Kirigami
const iconMargin = Math.round(Kirigami.Units.smallSpacing / 4);
const labelMargin = Kirigami.Units.smallSpacing;
function horizontalMargins() {
const spacingAdjustment = (tasks.plasmoid.pluginName === "org.kde.plasma.icontasks") ? tasks.plasmoid.configuration.iconSpacing : 1
return (taskFrame.margins.left + taskFrame.margins.right) * (tasks.vertical ? 1 : spacingAdjustment);
}
function verticalMargins() {
const spacingAdjustment = (tasks.plasmoid.pluginName === "org.kde.plasma.icontasks") ? tasks.plasmoid.configuration.iconSpacing : 1
return (taskFrame.margins.top + taskFrame.margins.bottom) * (tasks.vertical ? spacingAdjustment : 1);
}
function adjustMargin(height, margin) {
const available = height - verticalMargins();
if (available < Kirigami.Units.iconSizes.small) {
return Math.floor((margin * (Kirigami.Units.iconSizes.small / available)) / 3);
}
return margin;
}
function maxStripes() {
const length = tasks.vertical ? tasks.width : tasks.height;
const minimum = tasks.vertical ? preferredMinWidth() : preferredMinHeight();
return Math.min(tasks.plasmoid.configuration.maxStripes, Math.max(1, Math.floor(length / minimum)));
}
function optimumCapacity(width, height) {
const length = tasks.vertical ? height : width;
const maximum = tasks.vertical ? preferredMaxHeight() : preferredMaxWidth();
if (!tasks.vertical) {
return Math.ceil(length / maximum) * maxStripes() + 1;
}
return Math.floor(length / maximum) * maxStripes();
}
function preferredMinWidth() {
let width = preferredMinLauncherWidth();
if (!tasks.vertical && !tasks.iconsOnly) {
width +=
(Kirigami.Units.smallSpacing * 2) +
(Kirigami.Units.gridUnit * 8);
}
return width;
}
function preferredMaxWidth() {
if (tasks.iconsOnly) {
if (tasks.vertical) {
if (tasks.width === 0) {
return 0
}
return tasks.width + verticalMargins();
} else {
if (tasks.height === 0) {
return 0
}
return tasks.height + horizontalMargins();
}
}
if (tasks.vertical) {
return preferredMinWidth();
}
const laneHeight = tasks.height / maxStripes();
let baseFactor = 1;
switch (tasks.plasmoid.configuration.taskMaxWidth) {
case 0:
baseFactor = 1.2;
break;
case 1:
baseFactor = 1.6;
break;
case 2:
baseFactor = 2;
break;
}
const factorReduction = (Math.min(50, laneHeight) - 20) * 0.01;
const factor = Math.max(1, baseFactor - Math.max(0, factorReduction));
return Math.floor(preferredMinWidth() * factor);
}
function preferredMinHeight() {
return Kirigami.Units.iconSizes.sizeForLabels + 4;
}
function preferredMaxHeight() {
if (tasks.vertical) {
let taskPreferredSize = 0;
if (tasks.iconsOnly) {
taskPreferredSize = tasks.width / maxStripes();
} else {
taskPreferredSize = Math.max(Kirigami.Units.iconSizes.sizeForLabels,
Kirigami.Units.iconSizes.medium);
}
return verticalMargins() +
Math.min(
tasks.width / maxStripes(),
taskPreferredSize);
} else {
return verticalMargins() +
Math.min(
Kirigami.Units.iconSizes.small * 3,
Kirigami.Units.iconSizes.sizeForLabels * 3);
}
}
function preferredHeightInPopup() {
return verticalMargins() + Math.max(Kirigami.Units.iconSizes.sizeForLabels,
Kirigami.Units.iconSizes.medium);
}
function spaceRequiredToShowText() {
return Math.round(Kirigami.Units.gridUnit * 1.5);
}
function preferredMinLauncherWidth() {
const baseWidth = tasks.vertical ? preferredMinHeight() : Math.min(tasks.height, Kirigami.Units.iconSizes.small * 3);
return (baseWidth + horizontalMargins())
- (adjustMargin(baseWidth, taskFrame.margins.top) + adjustMargin(baseWidth, taskFrame.margins.bottom));
}
function maximumContextMenuTextWidth() {
return (Kirigami.Units.iconSizes.sizeForLabels * 28);
}