/* * SPDX-FileCopyrightText: 2022 Carson Black * * SPDX-License-Identifier: GPL-2.0-or-later */ import QtQuick import QtQuick.Layouts import QtQuick.Controls import org.kde.plasma.core as PlasmaCore import org.kde.ksvg as KSvg import org.kde.plasma.components as PC3 import org.kde.kirigami as Kirigami import org.kde.plasma.plasmoid AbstractButton { id: controlRoot hoverEnabled: true leftPadding: rest.margins.left rightPadding: rest.margins.right // needed since icon property can't hold QIcon, which the tasks manager gives us property alias iconSource: iconItem.source background: Item { id: background KSvg.FrameSvgItem { id: rest anchors.fill: parent visible: !controlRoot.down && !controlRoot.hovered imagePath: "widgets/menubaritem" prefix: "normal" } KSvg.FrameSvgItem { id: hover anchors.fill: parent visible: !controlRoot.down && controlRoot.hovered imagePath: "widgets/menubaritem" prefix: "hover" } KSvg.FrameSvgItem { id: down anchors.fill: parent visible: controlRoot.down imagePath: "widgets/menubaritem" prefix: "pressed" } } contentItem: RowLayout { Kirigami.Icon { id: iconItem visible: (Plasmoid.formFactor !== PlasmaCore.Types.Horizontal || Plasmoid.configuration.showIcon) && source !== "" && iconItem.valid implicitWidth: Kirigami.Units.iconSizes.sizeForLabels implicitHeight: Kirigami.Units.iconSizes.sizeForLabels Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter } // Fall back to a generic icon if the application doesn't provide a valid one Kirigami.Icon { visible: (Plasmoid.formFactor !== PlasmaCore.Types.Horizontal || Plasmoid.configuration.showIcon) && !iconItem.valid source: "preferences-system-windows" implicitWidth: Kirigami.Units.iconSizes.sizeForLabels implicitHeight: Kirigami.Units.iconSizes.sizeForLabels Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter } PC3.Label { id: label visible: Plasmoid.formFactor === PlasmaCore.Types.Horizontal && Plasmoid.configuration.showText text: controlRoot.text color: controlRoot.down || controlRoot.hovered ? Kirigami.Theme.highlightedTextColor : Kirigami.Theme.textColor verticalAlignment: Text.AlignVCenter elide: Text.ElideRight Layout.fillWidth: true Layout.fillHeight: true } } }