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;