linphone-desktop/linphone-app/ui/modules/Linphone/Sticker/Sticker.qml
Julien Wadel 6325f6885c - Update to new API on participant joined/left.
- Move active speaker managment to list instead of proxy (to be next to the new API state changes).
- Update participants on conference created event to avoid losing me and other devices (SDK callbakcs are not usable before create event).
- Fix selected active speaker when being in conference without participants.
- Fix active speaker on new/left participants.
- Protect mosaic transitions from deletion.
- Username selection from IncallAvatar.
- Deletion protection on camera when changing layouts by introducing a minor delay.
- Shutdown preview when going out from waiting room.
- Update design of waiting room.
- Change flipping transition to opacity.
- Update SDK (fix the camera reset of Active speaker when new participant)
- Fix blanks lines in chat menu.
2022-07-08 22:36:47 +02:00

120 lines
3.3 KiB
QML

import QtQuick 2.7
import QtQuick.Layouts 1.3
import QtGraphicalEffects 1.12
import App.Styles 1.0
import Common 1.0
import Common.Styles 1.0
import Linphone 1.0
import Linphone.Styles 1.0
import 'qrc:/ui/scripts/Utils/utils.js' as Utils
import UtilsCpp 1.0
// A sticker display the avatar or its camera view
// =============================================================================
Item{
id: mainItem
property bool flipped : deactivateCamera && camera.isReady
property bool showCustomButton: false
property bool showUsername: true
property bool customButtonToggled: false
property QtObject customButtonColorSet: StickerStyle.custom
property alias currentDevice: camera.currentDevice
property alias callModel: camera.callModel
property alias isPaused: camera.isPaused
property alias isPreview: camera.isPreview
property alias showCloseButton: camera.showCloseButton
property alias showActiveSpeakerOverlay: camera.showActiveSpeakerOverlay
property alias isCameraFromDevice: camera.isCameraFromDevice
property alias deactivateCamera: camera.deactivateCamera
property alias image: avatar.image
property alias avatarBackgroundColor: avatar.avatarBackgroundColor
property alias avatarStickerBackgroundColor: avatar.color
property alias avatarRatio: avatar.avatarRatio
property alias showAvatarBorder: avatar.showAvatarBorder
property alias avatarUsername: avatar.avatarUsername
property alias conferenceInfoModel: avatar.conferenceInfoModel
signal videoDefinitionChanged()
signal customButtonClicked()
property alias username: avatar.username
function resetCamera(){
camera.resetCamera()
}
clip:false
state: mainItem.flipped ? 'back' : 'front'
states: [State {
name: "front"
}, State {
name: "back"
}
]
property bool quickTransition : false
property alias cameraOpacity: camera.opacity
transitions: [Transition {
from: 'front'
to: 'back'
SequentialAnimation {
NumberAnimation { target: mainItem; duration: quickTransition ? 0 : 400 }
NumberAnimation { target: camera; property: 'opacity'; to:1.0; duration: 100;}
}
},
Transition {
from: 'back'
to: 'front'
SequentialAnimation {
NumberAnimation { target: mainItem; duration: 0 }
NumberAnimation { target: camera; property: 'opacity'; to:0.0; duration: 100;}
}
}
]
AvatarSticker{
id: avatar
currentDevice: mainItem.currentDevice
callModel: mainItem.callModel
isPaused: mainItem.isPaused
isPreview: mainItem.isPreview
showCloseButton: mainItem.showCloseButton
showActiveSpeakerOverlay: mainItem.showActiveSpeakerOverlay
showUsername: mainItem.showUsername
showCustomButton: mainItem.showCustomButton
customButtonToggled: mainItem.customButtonToggled
customButtonColorSet: mainItem.customButtonColorSet
height: mainItem.height
width: mainItem.width
onCustomButtonClicked: mainItem.customButtonClicked()
}
CameraSticker{
id: camera
height: mainItem.height
width: mainItem.width
opacity: 0.0
username: mainItem.username
showUsername: mainItem.showUsername
showCustomButton: mainItem.showCustomButton
customButtonToggled: mainItem.customButtonToggled
customButtonColorSet: mainItem.customButtonColorSet
onVideoDefinitionChanged: mainItem.videoDefinitionChanged()
onCustomButtonClicked: mainItem.customButtonClicked()
}
}