diff --git a/linphone-app/src/components/timeline/TimelineListModel.cpp b/linphone-app/src/components/timeline/TimelineListModel.cpp index 444837228..84e36ae91 100644 --- a/linphone-app/src/components/timeline/TimelineListModel.cpp +++ b/linphone-app/src/components/timeline/TimelineListModel.cpp @@ -317,6 +317,15 @@ void TimelineListModel::removeChatRoomModel(std::shared_ptr 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 &chatRoom,linphone::ChatRoom::State state){ if( state == linphone::ChatRoom::State::Created && !getTimeline(chatRoom, false)){// Create a new Timeline if needed diff --git a/linphone-app/src/components/timeline/TimelineListModel.hpp b/linphone-app/src/components/timeline/TimelineListModel.hpp index 295ec9b88..2e422e226 100644 --- a/linphone-app/src/components/timeline/TimelineListModel.hpp +++ b/linphone-app/src/components/timeline/TimelineListModel.hpp @@ -54,6 +54,8 @@ public: // Remove a chatroom Q_INVOKABLE void remove (TimelineModel *importer); void remove(std::shared_ptr model); + + Q_INVOKABLE void select(ChatRoomModel * chatRoomModel); int mSelectedCount; bool mAutoSelectAfterCreation = false;// Request to select the next chat room after creation diff --git a/linphone-app/ui/views/App/Main/ContactEdit.qml b/linphone-app/ui/views/App/Main/ContactEdit.qml index 3a7fb4e26..8d03e7f20 100644 --- a/linphone-app/ui/views/App/Main/ContactEdit.qml +++ b/linphone-app/ui/views/App/Main/ContactEdit.qml @@ -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) }) + } } } diff --git a/linphone-app/ui/views/App/Main/MainWindow.js b/linphone-app/ui/views/App/Main/MainWindow.js index cb5eb7348..acf2f46dc 100644 --- a/linphone-app/ui/views/App/Main/MainWindow.js +++ b/linphone-app/ui/views/App/Main/MainWindow.js @@ -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) } diff --git a/linphone-app/ui/views/App/Main/MainWindow.qml b/linphone-app/ui/views/App/Main/MainWindow.qml index 98c55bf75..eb2a78de6 100644 --- a/linphone-app/ui/views/App/Main/MainWindow.qml +++ b/linphone-app/ui/views/App/Main/MainWindow.qml @@ -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) } // --------------------------------------------------------------------------- diff --git a/linphone-sdk b/linphone-sdk index 4fc3a75e0..9ce33db5f 160000 --- a/linphone-sdk +++ b/linphone-sdk @@ -1 +1 @@ -Subproject commit 4fc3a75e0ec829ebc5e042f1f606c59bb8cab35b +Subproject commit 9ce33db5f105dc81578faae25c2bdd66f857361b