qml: reconnect models on account's change

Change-Id: I7e88828308c8d64ea30e8ad15db950e0605d86dc
diff --git a/src/calladapter.cpp b/src/calladapter.cpp
index c1b3240..6955434 100644
--- a/src/calladapter.cpp
+++ b/src/calladapter.cpp
@@ -42,6 +42,10 @@
             &BehaviorController::showIncomingCallView,
             this,
             &CallAdapter::slotShowIncomingCallView);
+    connect(&LRCInstance::instance(),
+            &LRCInstance::currentAccountChanged,
+            this,
+            &CallAdapter::slotAccountChanged);
     connect(&LRCInstance::behaviorController(),
             &BehaviorController::showCallView,
             this,
@@ -49,6 +53,12 @@
 }
 
 void
+CallAdapter::slotAccountChanged()
+{
+    connectCallModel(LRCInstance::getCurrAccId());
+}
+
+void
 CallAdapter::placeAudioOnlyCall()
 {
     auto convInfo = LRCInstance::getCurrentConversation();
diff --git a/src/calladapter.h b/src/calladapter.h
index 25768e1..288ab0a 100644
--- a/src/calladapter.h
+++ b/src/calladapter.h
@@ -86,6 +86,7 @@
     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 d5cd4b5..e27fc59 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,11 +45,21 @@
             [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()
 {
     deselectConversation();
diff --git a/src/conversationsadapter.h b/src/conversationsadapter.h
index 33dea8f..9fbcac4 100644
--- a/src/conversationsadapter.h
+++ b/src/conversationsadapter.h
@@ -47,6 +47,9 @@
     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 16762f1..190b383 100644
--- a/src/lrcinstance.h
+++ b/src/lrcinstance.h
@@ -284,6 +284,7 @@
     setSelectedAccountId(const QString &accountId = {})
     {
         instance().selectedAccountId_ = accountId;
+        emit instance().currentAccountChanged();
         QSettings settings("jami.net", "Jami");
         settings.setValue(SettingsKey::selectedAccount, accountId);
 
@@ -454,6 +455,7 @@
 
 signals:
     void accountListChanged();
+    void currentAccountChanged();
 
 private:
     LRCInstance(migrateCallback willMigrateCb = {}, migrateCallback didMigrateCb = {})
diff --git a/src/messagesadapter.cpp b/src/messagesadapter.cpp
index 1aa925b..20311bd 100644
--- a/src/messagesadapter.cpp
+++ b/src/messagesadapter.cpp
@@ -41,6 +41,16 @@
 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 f324766..5323a13 100644
--- a/src/messagesadapter.h
+++ b/src/messagesadapter.h
@@ -91,6 +91,7 @@
     void slotUpdateDraft(const QString &content);
     void slotMessagesCleared();
     void slotMessagesLoaded();
+    void slotAccountChanged();
 
 private:
     void initQmlObject() override final;