|
@@ -15,43 +15,44 @@ Item
|
|
|
|
|
|
property alias source: profileImage.source
|
|
property alias source: profileImage.source
|
|
property alias outlineColor: profileImageOutline.color
|
|
property alias outlineColor: profileImageOutline.color
|
|
|
|
+
|
|
|
|
+ // This should be set to the color behind the image
|
|
|
|
+ // It fills the space around a rectangular avatar to make the image under it look circular
|
|
|
|
+ property alias maskColor: profileImageMask.color
|
|
property bool hasAvatar: source != ""
|
|
property bool hasAvatar: source != ""
|
|
|
|
|
|
|
|
+ Rectangle
|
|
|
|
+ {
|
|
|
|
+ id: profileImageBackground
|
|
|
|
+ anchors.fill: parent
|
|
|
|
+ radius: width
|
|
|
|
+ color: "white"
|
|
|
|
+ }
|
|
|
|
+
|
|
Image
|
|
Image
|
|
{
|
|
{
|
|
id: profileImage
|
|
id: profileImage
|
|
anchors.fill: parent
|
|
anchors.fill: parent
|
|
fillMode: Image.PreserveAspectCrop
|
|
fillMode: Image.PreserveAspectCrop
|
|
- visible: false
|
|
|
|
|
|
+ visible: hasAvatar
|
|
mipmap: true
|
|
mipmap: true
|
|
}
|
|
}
|
|
|
|
|
|
- Rectangle
|
|
|
|
|
|
+ UM.ColorImage
|
|
{
|
|
{
|
|
|
|
+ // This image is a rectangle with a hole in the middle.
|
|
|
|
+ // Since we don't have access to proper masking in QT6 yet this is used as a primitive masking replacement
|
|
id: profileImageMask
|
|
id: profileImageMask
|
|
anchors.fill: parent
|
|
anchors.fill: parent
|
|
- radius: width
|
|
|
|
- color: hasAvatar ? "white" : "transparent"
|
|
|
|
|
|
+ source: UM.Theme.getIcon("CircleMask")
|
|
}
|
|
}
|
|
|
|
|
|
- /*
|
|
|
|
- TODO: Reimplement this without OpacityMask.
|
|
|
|
- OpacityMask
|
|
|
|
- {
|
|
|
|
- anchors.fill: parent
|
|
|
|
- source: profileImage
|
|
|
|
- maskSource: profileImageMask
|
|
|
|
- visible: hasAvatar
|
|
|
|
- cached: true
|
|
|
|
- }*/
|
|
|
|
-
|
|
|
|
UM.ColorImage
|
|
UM.ColorImage
|
|
{
|
|
{
|
|
|
|
+ // This creates the circle outline around the image
|
|
id: profileImageOutline
|
|
id: profileImageOutline
|
|
- anchors.centerIn: parent
|
|
|
|
- // Make it a bit bigger than it has to, otherwise it sometimes shows a white border.
|
|
|
|
- width: parent.width + 2
|
|
|
|
- height: parent.height + 2
|
|
|
|
|
|
+ anchors.fill: parent
|
|
|
|
+ anchors.margins: .25
|
|
visible: hasAvatar
|
|
visible: hasAvatar
|
|
source: UM.Theme.getIcon("CircleOutline")
|
|
source: UM.Theme.getIcon("CircleOutline")
|
|
color: UM.Theme.getColor("account_widget_outline_active")
|
|
color: UM.Theme.getColor("account_widget_outline_active")
|