clipboard history using cliphist
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
import QtQuick
|
||||
import qs.Config
|
||||
|
||||
CustomRect {
|
||||
id: root
|
||||
|
||||
enum ButtonType {
|
||||
Filled,
|
||||
Tonal,
|
||||
Text
|
||||
}
|
||||
|
||||
property color activeColor
|
||||
property color activeOnColor
|
||||
property bool checked
|
||||
property real checkedRadius: Appearance.rounding.medium
|
||||
property real defaultRadius: Appearance.rounding.large
|
||||
property color disabledColor: Qt.alpha(DynamicColors.palette.m3onSurface, 0.1)
|
||||
property color disabledOnColor: Qt.alpha(DynamicColors.palette.m3onSurface, 0.38)
|
||||
property bool fillWidth
|
||||
property real horizontalPadding: padding
|
||||
readonly property alias hovered: stateLayer.containsMouse
|
||||
required implicitHeight
|
||||
required implicitWidth
|
||||
property color inactiveColor
|
||||
property color inactiveOnColor
|
||||
property bool internalChecked
|
||||
property bool isRound
|
||||
property bool isToggle
|
||||
readonly property color onColor: !enabled ? disabledOnColor : internalChecked ? activeOnColor : inactiveOnColor
|
||||
property real padding
|
||||
readonly property alias pressed: stateLayer.pressed
|
||||
property real pressedRadius: Appearance.rounding.small
|
||||
readonly property alias radiusAnim: radiusAnim
|
||||
property bool radiusMorph: true
|
||||
property alias shapeMorph: stateLayer.shapeMorph
|
||||
property real shapeMorphExpansion: shapeMorph && pressed ? 24 : 0
|
||||
readonly property alias stateLayer: stateLayer
|
||||
property int type: ButtonBase.Filled
|
||||
property real verticalPadding: padding
|
||||
|
||||
signal clicked
|
||||
|
||||
color: type === ButtonBase.Text ? "transparent" : !enabled ? disabledColor : internalChecked ? activeColor : inactiveColor
|
||||
radius: {
|
||||
if (radiusMorph && pressed)
|
||||
return pressedRadius;
|
||||
if (internalChecked)
|
||||
return checkedRadius;
|
||||
if (isRound)
|
||||
return (height || implicitHeight) / 2 * Math.min(1, Appearance.rounding.scale);
|
||||
return defaultRadius;
|
||||
}
|
||||
|
||||
Behavior on radius {
|
||||
Anim {
|
||||
id: radiusAnim
|
||||
|
||||
type: Anim.DefaultEffects
|
||||
}
|
||||
}
|
||||
Behavior on shapeMorphExpansion {
|
||||
Anim {
|
||||
type: Anim.FastSpatial
|
||||
}
|
||||
}
|
||||
|
||||
onCheckedChanged: internalChecked = checked
|
||||
|
||||
StateLayer {
|
||||
id: stateLayer
|
||||
|
||||
color: root.internalChecked ? root.activeOnColor : root.inactiveOnColor
|
||||
enabled: enabled
|
||||
|
||||
onClicked: {
|
||||
if (root.isToggle)
|
||||
root.internalChecked = !root.internalChecked;
|
||||
root.clicked();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user