mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-17 11:28:07 +00:00
Fix group call button in conversation. If the video conference URI has been set, we don't have to limit the participant count of a local group call.
Fix local conference view and waiting ready message. Fix crash on mixing hold call and conference call.
This commit is contained in:
parent
aacf48cf19
commit
0aeaf84ef0
5 changed files with 26 additions and 13 deletions
|
|
@ -147,10 +147,11 @@ bool ConferenceHelperModel::ConferenceAddModel::removeFromConference (const QStr
|
|||
|
||||
void ConferenceHelperModel::ConferenceAddModel::update () {
|
||||
shared_ptr<linphone::Conference> conference = mConferenceHelperModel->mCore->getConference();
|
||||
bool enablingVideo = true;// Video is not yet fully supported by the application in conference
|
||||
bool enablingVideo = false;// Video is not yet fully supported by the application in conference
|
||||
if(!conference){
|
||||
auto parameters = mConferenceHelperModel->mCore->createConferenceParams(conference);
|
||||
parameters->enableVideo(enablingVideo);
|
||||
parameters->setConferenceFactoryAddress(nullptr);// Do a local conference
|
||||
conference = mConferenceHelperModel->mCore->createConferenceWithParams(parameters);
|
||||
}
|
||||
auto currentCalls = CoreManager::getInstance()->getCore()->getCalls();
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@ ConferenceModel::ConferenceModel (std::shared_ptr<linphone::Conference> conferen
|
|||
connect(this, &ConferenceModel::participantDeviceAdded, this, &ConferenceModel::participantDeviceCountChanged);
|
||||
connect(this, &ConferenceModel::participantDeviceRemoved, this, &ConferenceModel::participantDeviceCountChanged);
|
||||
connect(mParticipantListModel.get(), &ParticipantListModel::participantsChanged, this, &ConferenceModel::participantDeviceCountChanged);
|
||||
onConferenceStateChanged(mConference->getState());// Is it already Created like for local conference?
|
||||
}
|
||||
|
||||
ConferenceModel::~ConferenceModel(){
|
||||
|
|
|
|||
|
|
@ -145,8 +145,8 @@ void ParticipantDeviceModel::updateVideoEnabled(){
|
|||
( mParticipantDevice->getStreamCapability(linphone::StreamType::Video) == linphone::MediaDirection::SendRecv
|
||||
|| mParticipantDevice->getStreamCapability(linphone::StreamType::Video) == linphone::MediaDirection::SendOnly
|
||||
)
|
||||
|| isMe());
|
||||
if( mIsVideoEnabled != enabled && mCall && mCall->getCall()->getState() == linphone::Call::State::StreamsRunning) {
|
||||
|| isMe()) && !mIsPaused;
|
||||
if( mIsVideoEnabled != enabled && mCall && mCall->getCall()->getState() == linphone::Call::State::StreamsRunning) {
|
||||
qWarning() << "VideoEnabled: " << enabled << ", old=" << mIsVideoEnabled << (mParticipantDevice ? mParticipantDevice->getAddress()->asString().c_str() : "") << ", me=" << isMe() << ", CallState=" << (mCall ? (int)mCall->getCall()->getState() : -1);
|
||||
mIsVideoEnabled = enabled;
|
||||
emit videoEnabledChanged();
|
||||
|
|
|
|||
|
|
@ -140,7 +140,14 @@ Item{
|
|||
BusyIndicator{// Joining spinner
|
||||
Layout.preferredHeight: 20
|
||||
Layout.preferredWidth: 20
|
||||
running: mainItem._currentDevice && (mainItem._currentDevice.state == LinphoneEnums.ParticipantDeviceStateJoining || mainItem._currentDevice.state == LinphoneEnums.ParticipantDeviceStateScheduledForJoining || mainItem._currentDevice.state == LinphoneEnums.ParticipantDeviceStateAlerting)
|
||||
property bool delayed : false
|
||||
visible: delayed && mainItem._currentDevice && (mainItem._currentDevice.state == LinphoneEnums.ParticipantDeviceStateJoining || mainItem._currentDevice.state == LinphoneEnums.ParticipantDeviceStateScheduledForJoining || mainItem._currentDevice.state == LinphoneEnums.ParticipantDeviceStateAlerting)
|
||||
Timer{// Delay starting spinner (Qt bug)
|
||||
id: indicatorDelay
|
||||
interval: 100
|
||||
onTriggered: parent.delayed = true
|
||||
}
|
||||
Component.onCompleted: indicatorDelay.start()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -204,7 +204,7 @@ ColumnLayout {
|
|||
}
|
||||
*/
|
||||
onTitleClicked: {
|
||||
if(!conversation.isReadOnly) {
|
||||
if(!conversation.chatRoomModel.isReadOnly) {
|
||||
usernameEdit.visible = !usernameEdit.visible
|
||||
usernameEdit.forceActiveFocus()
|
||||
}
|
||||
|
|
@ -224,7 +224,7 @@ ColumnLayout {
|
|||
iconSize:30
|
||||
MouseArea{
|
||||
anchors.fill:parent
|
||||
visible: !conversation.isReadOnly
|
||||
visible: !conversation.chatRoomModel.isReadOnly
|
||||
onClicked : {
|
||||
window.detachVirtualWindow()
|
||||
window.attachVirtualWindow(Qt.resolvedUrl('Dialogs/InfoEncryption.qml')
|
||||
|
|
@ -329,17 +329,21 @@ ColumnLayout {
|
|||
backgroundRadius: 1000
|
||||
colorSet: ConversationStyle.bar.actions.groupChat
|
||||
|
||||
visible: SettingsModel.videoConferenceEnabled && SettingsModel.outgoingCallsEnabled && conversation.haveMoreThanOneParticipants && conversation.haveLessThanMinParticipantsForCall && !conversation.isReadOnly
|
||||
visible: !conversation.chatRoomModel.isReadOnly && conversation.haveMoreThanOneParticipants && SettingsModel.outgoingCallsEnabled && (SettingsModel.videoConferenceEnabled || conversation.haveLessThanMinParticipantsForCall)
|
||||
|
||||
//onClicked: CallsListModel. Logic.openConferenceManager({chatRoomModel:conversation.chatRoomModel, autoCall:true})
|
||||
onClicked:{
|
||||
groupCallButton.toggled = true
|
||||
conferenceInfoModel.isScheduled = false
|
||||
conferenceInfoModel.subject = chatRoomModel.subject
|
||||
if( SettingsModel.videoConferenceEnabled ){
|
||||
groupCallButton.toggled = true
|
||||
conferenceInfoModel.isScheduled = false
|
||||
conferenceInfoModel.subject = chatRoomModel.subject
|
||||
|
||||
conferenceInfoModel.setParticipants(conversation.chatRoomModel.participants)
|
||||
conferenceInfoModel.inviteMode = 0;
|
||||
conferenceInfoModel.createConference(false)// TODO activate it when secure video conference is implemented
|
||||
conferenceInfoModel.setParticipants(conversation.chatRoomModel.participants)
|
||||
conferenceInfoModel.inviteMode = 0;
|
||||
conferenceInfoModel.createConference(false)// TODO activate it when secure video conference is implemented
|
||||
}else{
|
||||
Logic.openConferenceManager({chatRoomModel:conversation.chatRoomModel, autoCall:true})
|
||||
}
|
||||
}
|
||||
//: "Call all chat room's participants" : tooltip on a button for calling all participant in the current chat room
|
||||
tooltipText: qsTr("groupChatCallButton")
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue