opaque/Portrait.qml

93 lines
2.6 KiB
QML

import QtGraphicalEffects 1.0
import QtQuick 2.7
import QtQuick.Controls 2.4
import QtQuick.Controls.Material 2.0
import QtQuick.Layouts 1.3
import CustomQmlTypes 1.0
import "theme"
Item {
id: imgProfile
property string source
property alias badgeColor: badge.color
height: Theme.contactPortraitSize
width: Theme.contactPortraitSize
implicitWidth: Theme.contactPortraitSize
implicitHeight: Theme.contactPortraitSize
property alias portraitBorderColor: mainImage.color
property alias portraitColor: imageInner.color
property alias badgeVisible: badge.visible
property alias badgeContent: badge.content
property bool performTransform: false
property alias overlayColor: iconColorOverlay.color
property real rotationAngle: 0.0
Rectangle {
id: mainImage
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
width: parent.width * 0.8
height: width
color: Theme.portraitOfflineBorderColor
radius: width / 2
Rectangle {
id: imageInner
width: parent.width - 4
height: width
color: Theme.portraitOfflineBorderColor
radius: width / 2
anchors.centerIn:parent
Image { // PROFILE IMAGE
id: img
source: imgProfile.source == "" ? "" : gcd.assetPath + imgProfile.source
anchors.fill: parent
fillMode: Image.PreserveAspectFit
visible: false
sourceSize.width: imageInner.width*2
sourceSize.height: imageInner.height*2
}
ColorOverlay{
id: iconColorOverlay
anchors.fill: img
source: img
visible: false
antialiasing: true
smooth: true
transform: Rotation { origin.x: width/2; origin.y: height / 2; angle: rotationAngle}
}
Image { // CIRCLE MASK
id: mask
fillMode: Image.PreserveAspectFit
visible: false
source: "qrc:/qml/opaque/images/clipcircle.png"
}
OpacityMask {
anchors.fill: img
source: performTransform ? iconColorOverlay : img
maskSource: mask
}
}
}
Badge {
id: badge
size: parent.width * 0.25
anchors.right: parent.right
anchors.bottom: parent.bottom
anchors.margins: parent.width * 0.09
}
}