diff --git a/src/calladapter.cpp b/src/calladapter.cpp index c1b32402..6955434a 100644 --- a/src/calladapter.cpp +++ b/src/calladapter.cpp @@ -42,12 +42,22 @@ CallAdapter::initQmlObject() &BehaviorController::showIncomingCallView, this, &CallAdapter::slotShowIncomingCallView); + connect(&LRCInstance::instance(), + &LRCInstance::currentAccountChanged, + this, + &CallAdapter::slotAccountChanged); connect(&LRCInstance::behaviorController(), &BehaviorController::showCallView, this, &CallAdapter::slotShowCallView); } +void +CallAdapter::slotAccountChanged() +{ + connectCallModel(LRCInstance::getCurrAccId()); +} + void CallAdapter::placeAudioOnlyCall() { diff --git a/src/calladapter.h b/src/calladapter.h index 25768e18..288ab0af 100644 --- a/src/calladapter.h +++ b/src/calladapter.h @@ -86,6 +86,7 @@ public slots: void slotShowIncomingCallView(const QString &accountId, const lrc::api::conversation::Info &convInfo); void slotShowCallView(const QString &accountId, const lrc::api::conversation::Info &convInfo); + void slotAccountChanged(); private: void updateCall(const QString &convUid = {}, diff --git a/src/conversationsadapter.cpp b/src/conversationsadapter.cpp index d5cd4b5d..e27fc59e 100644 --- a/src/conversationsadapter.cpp +++ b/src/conversationsadapter.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2020 by Savoir-faire Linux * Author: Edric Ladent Milaret - * Author: Anthony Léonard + * Author: Anthony L�onard * Author: Olivier Soldano * Author: Andreas Traczyk * Author: Isa Nanic @@ -45,10 +45,20 @@ ConversationsAdapter::initQmlObject() [this](const QString &accountId, lrc::api::conversation::Info convInfo) { emit showChatView(accountId, convInfo.uid); }); + connect(&LRCInstance::instance(), + &LRCInstance::currentAccountChanged, + this, + &ConversationsAdapter::slotAccountChanged); connectConversationModel(); } +void +ConversationsAdapter::slotAccountChanged() +{ + connectConversationModel(); +} + void ConversationsAdapter::backToWelcomePage() { diff --git a/src/conversationsadapter.h b/src/conversationsadapter.h index 33dea8fc..9fbcac45 100644 --- a/src/conversationsadapter.h +++ b/src/conversationsadapter.h @@ -47,6 +47,9 @@ signals: void showChatView(const QString &accountId, const QString &convUid); void showConversationTabs(bool visible); +public slots: + void slotAccountChanged(); + private: void initQmlObject() override; void setConversationFilter(lrc::api::profile::Type filter); diff --git a/src/lrcinstance.h b/src/lrcinstance.h index 16762f14..190b3839 100644 --- a/src/lrcinstance.h +++ b/src/lrcinstance.h @@ -284,6 +284,7 @@ public: setSelectedAccountId(const QString &accountId = {}) { instance().selectedAccountId_ = accountId; + emit instance().currentAccountChanged(); QSettings settings("jami.net", "Jami"); settings.setValue(SettingsKey::selectedAccount, accountId); @@ -454,6 +455,7 @@ public: signals: void accountListChanged(); + void currentAccountChanged(); private: LRCInstance(migrateCallback willMigrateCb = {}, migrateCallback didMigrateCb = {}) diff --git a/src/messagesadapter.cpp b/src/messagesadapter.cpp index 1aa925be..20311bd5 100644 --- a/src/messagesadapter.cpp +++ b/src/messagesadapter.cpp @@ -40,6 +40,16 @@ MessagesAdapter::~MessagesAdapter() {} void MessagesAdapter::initQmlObject() +{ + connect(&LRCInstance::instance(), + &LRCInstance::currentAccountChanged, + this, + &MessagesAdapter::slotAccountChanged); + connectConversationModel(); +} + +void +MessagesAdapter::slotAccountChanged() { connectConversationModel(); } diff --git a/src/messagesadapter.h b/src/messagesadapter.h index f3247661..5323a136 100644 --- a/src/messagesadapter.h +++ b/src/messagesadapter.h @@ -91,6 +91,7 @@ public slots: void slotUpdateDraft(const QString &content); void slotMessagesCleared(); void slotMessagesLoaded(); + void slotAccountChanged(); private: void initQmlObject() override final;