1/* 2 SPDX-FileCopyrightText: 2013-2015 Sebastian Kügler <sebas@kde.org> 3 4 SPDX-License-Identifier: LGPL-2.0-or-later 5*/ 6 7import QtQuick 2.0 8import QtQuick.Layouts 1.1 9import org.kde.plasma.core 2.0 as PlasmaCore 10import org.kde.plasma.components 2.0 as PlasmaComponents 11import org.kde.plasma.extras 2.0 as PlasmaExtras 12 13 14PlasmaCore.ColorScope { 15 id: tooltipContentItem 16 17 property Item toolTip 18 property int preferredTextWidth: PlasmaCore.Units.gridUnit * 20 19 20 Layout.minimumWidth: childrenRect.width + PlasmaCore.Units.gridUnit 21 Layout.minimumHeight: childrenRect.height + PlasmaCore.Units.gridUnit 22 Layout.maximumWidth: childrenRect.width + PlasmaCore.Units.gridUnit 23 Layout.maximumHeight: childrenRect.height + PlasmaCore.Units.gridUnit 24 25 LayoutMirroring.enabled: Qt.application.layoutDirection === Qt.RightToLeft 26 LayoutMirroring.childrenInherit: true 27 colorGroup: PlasmaCore.Theme.NormalColorGroup 28 inherit: false 29 30 RowLayout { 31 32 anchors { 33 left: parent.left 34 top: parent.top 35 margins: PlasmaCore.Units.gridUnit / 2 36 } 37 38 spacing: PlasmaCore.Units.largeSpacing 39 40 Image { 41 id: tooltipImage 42 source: toolTip ? toolTip.image : "" 43 visible: toolTip != null && toolTip.image != "" 44 Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter 45 } 46 47 PlasmaCore.IconItem { 48 id: tooltipIcon 49 animated: false 50 source: toolTip ? toolTip.icon : "" 51 Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter 52 visible: toolTip != null && toolTip.icon != "" && toolTip.image == "" && valid 53 Layout.preferredWidth: PlasmaCore.Units.iconSizes.medium 54 Layout.preferredHeight: PlasmaCore.Units.iconSizes.medium 55 } 56 57 ColumnLayout { 58 Layout.maximumWidth: preferredTextWidth 59 spacing: 0 60 61 PlasmaExtras.Heading { 62 id: tooltipMaintext 63 level: 3 64 Layout.fillWidth: true 65 elide: Text.ElideRight 66 wrapMode: Text.Wrap 67 text: toolTip ? toolTip.mainText : "" 68 textFormat: Text.PlainText 69 visible: text != "" 70 } 71 PlasmaComponents.Label { 72 id: tooltipSubtext 73 Layout.fillWidth: true 74 // Unset Label default height, confuses the layout engine completely 75 // either shifting the item vertically or letting it get too wide 76 height: undefined 77 wrapMode: Text.WordWrap 78 text: toolTip ? toolTip.subText : "" 79 textFormat: toolTip ? toolTip.textFormat : Text.AutoText 80 opacity: 0.6 81 visible: text != "" 82 maximumLineCount: 8 83 } 84 } 85 } 86} 87 88