Fix double popup on confirmation when reverting contact edition.

This commit is contained in:
Julien Wadel 2021-09-24 15:04:31 +02:00
parent 3a7f494473
commit 5c5bbbd343
6 changed files with 27 additions and 13 deletions

View file

@ -317,6 +317,15 @@ void TimelineListModel::removeChatRoomModel(std::shared_ptr<ChatRoomModel> model
}
}
void TimelineListModel::select(ChatRoomModel * chatRoomModel){
if(chatRoomModel) {
auto timeline = getTimeline(chatRoomModel->getChatRoom(), false);
if(timeline){
timeline->setSelected(true);
}
}
}
void TimelineListModel::onChatRoomStateChanged(const std::shared_ptr<linphone::ChatRoom> &chatRoom,linphone::ChatRoom::State state){
if( state == linphone::ChatRoom::State::Created
&& !getTimeline(chatRoom, false)){// Create a new Timeline if needed

View file

@ -54,6 +54,8 @@ public:
// Remove a chatroom
Q_INVOKABLE void remove (TimelineModel *importer);
void remove(std::shared_ptr<TimelineModel> model);
Q_INVOKABLE void select(ChatRoomModel * chatRoomModel);
int mSelectedCount;
bool mAutoSelectAfterCreation = false;// Request to select the next chat room after creation

View file

@ -169,14 +169,16 @@ ColumnLayout {
relativeY: infoBar.height
sipAddresses: _contact ? _contact.vcard.sipAddresses : [ contactEdit.sipAddress ]
onSipAddressClicked: {
var entry = CallsListModel.createChatRoom( "", false, [sipAddress], true )
if(entry)
var entry = CallsListModel.createChatRoom( "", false, [sipAddress], false )
if(entry){
window.setView('Conversation', {
chatRoomModel:entry.chatRoomModel
chatRoomModel:entry.chatRoomModel
}, function(){
TimelineListModel.select(entry.chatRoomModel)
})
}
}
}

View file

@ -58,8 +58,8 @@ function unlockView () {
window._lockedInfo = undefined
}
function setView (view, props) {
function apply (view, props, showWindow) {
function setView (view, props, callback) {
function apply (view, props, showWindow, callback) {
if(showWindow)
Linphone.App.smartShowWindow(window)
@ -68,20 +68,21 @@ function setView (view, props) {
updateSelectedEntry(view, props)
window._currentView = view
item.contentLoader.setSource(view + '.qml', props || {})
if(callback)
callback()
}
var lockedInfo = window._lockedInfo
if (!lockedInfo) {
apply(view, props, false)
apply(view, props, false, callback)
return
}
window.attachVirtualWindow(Utils.buildDialogUri('ConfirmDialog'), {
descriptionText: lockedInfo.descriptionText,
}, function (status) {
if (status) {
unlockView()
apply(view, props, true)
apply(view, props, true, callback)
} else {
updateSelectedEntry(window._currentView, props)
}

View file

@ -30,8 +30,8 @@ ApplicationWindow {
Logic.unlockView()
}
function setView (view, props) {
Logic.setView(view, props)
function setView (view, props, callback) {
Logic.setView(view, props, callback)
}
// ---------------------------------------------------------------------------

@ -1 +1 @@
Subproject commit 4fc3a75e0ec829ebc5e042f1f606c59bb8cab35b
Subproject commit 9ce33db5f105dc81578faae25c2bdd66f857361b