9import QtQuick.Window 2.15
10import org.kde.kirigami 2.15 as Kirigami
11import org.kde.kirigamiaddons.components 1.0 as Components
22 AdaptiveImageOrInitals,
45 property alias source: avatarImage.source
56 property alias iconSource: avatarIcon.source
67 property int initialsMode: Avatar.InitialsMode.UseInitials
82 property int imageMode: Avatar.ImageMode.AdaptiveImageOrInitals
89 property alias cache: avatarImage.cache
97 property alias asynchronous: avatarImage.asynchronous
104 property alias sourceSize: avatarImage.sourceSize
113 property color color: Components.NameUtils.colorsFromString(name)
123 property color initialsColor: defaultInitialsColor
132 readonly property alias defaultInitialsColor: root.__textColor
140 readonly property alias clippedContent: clippedContent
142 implicitWidth: Kirigami.Units.iconSizes.large
143 implicitHeight: Kirigami.Units.iconSizes.large
145 Accessible.role: Accessible.Graphic
146 Accessible.name: name
148 readonly property real __diameter: Math.min(root.width, root.height)
150 readonly property color __textColor: Kirigami.ColorUtils.brightnessForColor(root.color) === Kirigami.ColorUtils.Light
154 readonly
property bool __showImage: {
155 switch (root.imageMode) {
156 case Avatar.ImageMode.AlwaysShowImage:
158 case Avatar.ImageMode.AdaptiveImageOrInitals:
159 return avatarImage.status === Image.Ready;
160 case Avatar.ImageMode.AlwaysShowInitials:
166 readonly
property bool __unsuitableForInitials: Components.NameUtils.isStringUnsuitableForInitials(root.name)
171 anchors.centerIn: parent
173 width: root.__diameter
174 height: root.__diameter
179 visible: !root.__showImage
181 radius: root.__diameter
184 border.color: root.color
185 color:
Kirigami.ColorUtils.tintWithAlpha(
Kirigami.Theme.backgroundColor, border.color, 0.07)
191 visible: root.initialsMode ===
Avatar.InitialsMode.UseInitials &&
193 !root.__unsuitableForInitials &&
194 root.width >
Kirigami.Units.gridUnit
196 text: Components.NameUtils.initialsFromString(root.name)
197 textFormat:
Text.PlainText
205 fontSizeMode:
Text.Fit
206 verticalAlignment:
Text.AlignVCenter
207 horizontalAlignment:
Text.AlignHCenter
214 anchors.margins:
Kirigami.Units.largeSpacing
216 visible: !root.__showImage
217 && (root.initialsMode ===
Avatar.InitialsMode.UseIcon
218 || root.__unsuitableForInitials)
220 color: root.__textColor
229 visible: root.__showImage
231 fillMode: Image.PreserveAspectCrop
235 width: root.__diameter * root.Screen.devicePixelRatio
236 height: root.__diameter * root.Screen.devicePixelRatio
239 enabled: GraphicsInfo.api !== GraphicsInfo.Software
241 radius: root.__diameter
An element that represents a user, either with initials, an icon, or a profile image.
qreal pixelSize(qreal scale)