mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-30 18:39:23 +00:00
Fix missing camera button in one-one when video has been deactivated. Test video enabled state on params instead of currentParams in order to know if we are in audio only mode. Add a loading page when conference is not ready or if we are alone in the conference in audio only mode. Remove outgoing call when calling a conference. Fix crash on shutdown. Fix closing window request after calling a conference from smart search bar.
84 lines
2.6 KiB
QML
84 lines
2.6 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 UtilsCpp 1.0
|
|
|
|
import 'qrc:/ui/scripts/Utils/utils.js' as Utils
|
|
|
|
// =============================================================================
|
|
Item {
|
|
id: container
|
|
property bool isCameraFromDevice: true
|
|
property ParticipantDeviceModel currentDevice
|
|
property CallModel callModel
|
|
property bool isPreview: (!callModel && !container.currentDevice) || ( container.currentDevice && container.currentDevice.isMe)
|
|
property bool isFullscreen: false
|
|
property bool hideCamera: false
|
|
property bool isPaused: false
|
|
property bool deactivateCamera: false
|
|
property bool isVideoEnabled: !deactivateCamera && (!callModel || callModel.videoEnabled)
|
|
&& (!container.currentDevice || callModel && (container.currentDevice
|
|
&& (container.currentDevice.videoEnabled || (container.currentDevice.isMe && callModel.cameraEnabled))))
|
|
|
|
property bool a : callModel && callModel.videoEnabled
|
|
property bool b: container.currentDevice && container.currentDevice.videoEnabled
|
|
property bool c: container.currentDevice && container.currentDevice.isMe
|
|
property bool d : callModel && callModel.cameraEnabled
|
|
property bool isReady: cameraLoader.item && cameraLoader.item.isReady
|
|
|
|
property bool hadCall : false
|
|
onCallModelChanged: if(callModel) hadCall = true
|
|
|
|
signal videoDefinitionChanged()
|
|
|
|
onCurrentDeviceChanged: {if(container.isCameraFromDevice) resetActive()}
|
|
Component.onDestruction: if(!hadCall || (hadCall && callModel) ){isVideoEnabled=false}
|
|
function resetActive(){
|
|
resetTimer.resetActive()
|
|
}
|
|
|
|
Loader {
|
|
id: cameraLoader
|
|
property bool resetActive: false
|
|
|
|
anchors.fill: parent
|
|
|
|
active: !resetActive && container.isVideoEnabled
|
|
sourceComponent: container.isVideoEnabled && !container.isPaused? camera : null
|
|
|
|
Timer{
|
|
id: resetTimer
|
|
interval: 100
|
|
repeat: false
|
|
onTriggered: if(!cameraLoader.active){
|
|
cameraLoader.resetActive = false
|
|
}else{
|
|
start() // Let some more time to propagate active event
|
|
}
|
|
function resetActive(){
|
|
start()// Do it first to avoid deleting caller while processing
|
|
cameraLoader.resetActive = true
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: camera
|
|
Camera {
|
|
participantDeviceModel: container.currentDevice
|
|
call: container.isCameraFromDevice ? null : container.callModel
|
|
anchors.fill: parent
|
|
isPreview: container.isPreview
|
|
|
|
onRequestNewRenderer: {resetTimer.resetActive()}
|
|
onVideoDefinitionChanged: container.videoDefinitionChanged()
|
|
}
|
|
}
|
|
}
|
|
}
|