8 import QtQuick.Controls 2.15 as QQC2
9 import org.kde.kirigami 2.20 as Kirigami
50 property alias focusSequence: focusShortcut.sequence
59 property list<QtObject> leftActions
68 property list<QtObject> rightActions
70 property alias _leftActionsRow: leftActionsRow
71 property alias _rightActionsRow: rightActionsRow
76 horizontalAlignment: TextInput.AlignLeft
78 leftPadding: Kirigami.Units.smallSpacing + (root.effectiveHorizontalAlignment === TextInput.AlignRight ? rightActionsRow : leftActionsRow).width
79 rightPadding: Kirigami.Units.smallSpacing + (root.effectiveHorizontalAlignment === TextInput.AlignRight ? leftActionsRow : rightActionsRow).width
81 Behavior on leftPadding {
83 duration: Kirigami.Units.longDuration
84 easing.type: Easing.InOutQuad
88 Behavior on rightPadding {
90 duration: Kirigami.Units.longDuration
91 easing.type: Easing.InOutQuad
98 root.forceActiveFocus(
Qt.ShortcutFocusReason)
104 visible: focusShortcut.nativeText.length > 0 && root.text.length === 0 && !rightActionsRow.hovered && !leftActionsRow.hovered && hovered
105 text: focusShortcut.nativeText
108 component ActionIconMouseArea: MouseArea {
110 activeFocusOnTab:
true
111 cursorShape:
Qt.PointingHandCursor
113 Accessible.role: Accessible.Button
114 Keys.onPressed:
event => {
121 event.accepted =
true;
129 padding: Kirigami.Units.smallSpacing
130 spacing: Kirigami.Units.smallSpacing
131 layoutDirection:
Qt.LeftToRight
132 LayoutMirroring.enabled: root.effectiveHorizontalAlignment === TextInput.AlignRight
133 anchors.left: parent.left
134 anchors.leftMargin: Kirigami.Units.smallSpacing
135 anchors.top: parent.top
136 anchors.topMargin: parent.topPadding
137 anchors.bottom: parent.bottom
138 anchors.bottomMargin: parent.bottomPadding
140 model: root.leftActions
142 implicitWidth: Kirigami.Units.iconSizes.sizeForLabels
143 implicitHeight: Kirigami.Units.iconSizes.sizeForLabels
145 anchors.verticalCenter: parent.verticalCenter
147 source: modelData.icon.name.length > 0 ? modelData.icon.name : modelData.icon.source
148 active: leftActionArea.containsPress || leftActionArea.activeFocus
149 visible: !(modelData instanceof Kirigami.Action) || modelData.visible
150 enabled: modelData.enabled
152 ActionIconMouseArea {
154 Accessible.name: modelData.text
155 onClicked: mouse => modelData.trigger()
159 visible: (rightActionArea.containsMouse || rightActionArea.activeFocus) && (modelData.text.length > 0)
168 padding: Kirigami.Units.smallSpacing
169 spacing: Kirigami.Units.smallSpacing
170 layoutDirection:
Qt.RightToLeft
171 LayoutMirroring.enabled: root.effectiveHorizontalAlignment === TextInput.AlignRight
172 anchors.right: parent.right
173 anchors.rightMargin: Kirigami.Units.smallSpacing
174 anchors.top: parent.top
175 anchors.topMargin: parent.topPadding
176 anchors.bottom: parent.bottom
177 anchors.bottomMargin: parent.bottomPadding
179 model: root.rightActions
181 implicitWidth: Kirigami.Units.iconSizes.sizeForLabels
182 implicitHeight: Kirigami.Units.iconSizes.sizeForLabels
184 anchors.verticalCenter: parent.verticalCenter
186 source: modelData.icon.name.length > 0 ? modelData.icon.name : modelData.icon.source
187 active: rightActionArea.containsPress || rightActionArea.activeFocus
188 visible: !(modelData instanceof Kirigami.Action) || modelData.visible
189 enabled: modelData.enabled
191 ActionIconMouseArea {
193 Accessible.name: modelData.text
194 onClicked: mouse => modelData.trigger()
198 visible: (rightActionArea.containsMouse || rightActionArea.activeFocus) && (modelData.text.length > 0)