diff --git a/src/calladapter.cpp b/src/calladapter.cpp index c1b32402137e859f39bbcbd847dbe01e7a189a11..6955434a17326ce961c1609bd2a7b1307bfe8f30 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 25768e1875e56c984093b5e1e2cb707aa29c30c5..288ab0afc96101d04e997dd532b04e96043b0158 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 d5cd4b5d9f96db7b75093f0444d765b46acafc1d..e27fc59e41c515308337f10a0de0f8228cf387f9 100644 --- a/src/conversationsadapter.cpp +++ b/src/conversationsadapter.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2020 by Savoir-faire Linux * Author: Edric Ladent Milaret <edric.ladent-milaret@savoirfairelinux.com> - * Author: Anthony Léonard <anthony.leonard@savoirfairelinux.com> + * Author: Anthony Lďż˝onard <anthony.leonard@savoirfairelinux.com> * Author: Olivier Soldano <olivier.soldano@savoirfairelinux.com> * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com> * Author: Isa Nanic <isa.nanic@savoirfairelinux.com> @@ -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 33dea8fcc75b47c475da169893157d776d23af77..9fbcac45910544ce7eab02a76f4f377867216a3c 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 16762f14b93187ce662b0ebd853968fe83c2cbc4..190b3839e2c0821f275abadd2ebef7ed251f7077 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 1aa925be52a2261cf61f4ec34d1f49cd46380845..20311bd56c8558dfa0e1676450709ef80649a61d 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 f3247661b40fca3c5d0d19c2ad43b9601d7be470..5323a13611c5221809031ac97e486c39b2ab2c08 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;