From 7371b877b371e06b9ae2d203d15b2f34a49a1600 Mon Sep 17 00:00:00 2001 From: Julien Wadel Date: Tue, 31 Oct 2023 15:24:39 +0100 Subject: [PATCH] If the default account is selected, `Me` is all local accounts. This is useful to display all chat rooms and get rid of unread messages. Display chat rooms on removed account --- .../src/components/settings/AccountSettingsModel.cpp | 2 +- linphone-app/src/components/settings/SettingsModel.cpp | 5 +++++ linphone-app/src/components/settings/SettingsModel.hpp | 2 ++ .../src/components/timeline/TimelineProxyModel.cpp | 2 +- linphone-app/src/utils/Utils.cpp | 7 +++++-- 5 files changed, 14 insertions(+), 4 deletions(-) diff --git a/linphone-app/src/components/settings/AccountSettingsModel.cpp b/linphone-app/src/components/settings/AccountSettingsModel.cpp index 7afd971dd..09040585c 100644 --- a/linphone-app/src/components/settings/AccountSettingsModel.cpp +++ b/linphone-app/src/components/settings/AccountSettingsModel.cpp @@ -87,7 +87,7 @@ shared_ptr AccountSettingsModel::getUsedSipAddress () const { return account ? account->getParams()->getIdentityAddress()->clone() : core->createPrimaryContactParsed(); } - std::shared_ptr AccountSettingsModel::findAccount(shared_ptr address) const { +std::shared_ptr AccountSettingsModel::findAccount(shared_ptr address) const { if(!address) return nullptr; shared_ptr core = CoreManager::getInstance()->getCore(); diff --git a/linphone-app/src/components/settings/SettingsModel.cpp b/linphone-app/src/components/settings/SettingsModel.cpp index 806c3aa4d..634a2470f 100644 --- a/linphone-app/src/components/settings/SettingsModel.cpp +++ b/linphone-app/src/components/settings/SettingsModel.cpp @@ -68,6 +68,7 @@ SettingsModel::SettingsModel (QObject *parent) : QObject(parent) { connect(coreManager->getAccountSettingsModel(), &AccountSettingsModel::defaultAccountChanged, this, &SettingsModel::groupChatEnabledChanged); connect(coreManager->getAccountSettingsModel(), &AccountSettingsModel::defaultAccountChanged, this, &SettingsModel::videoConferenceEnabledChanged); connect(coreManager->getAccountSettingsModel(), &AccountSettingsModel::defaultAccountChanged, this, &SettingsModel::secureChatEnabledChanged); + connect(coreManager->getAccountSettingsModel(), &AccountSettingsModel::defaultAccountChanged, this, &SettingsModel::onDefaultAccountChanged); connect(coreManager->getAccountSettingsModel(), &AccountSettingsModel::accountSettingsUpdated, this, &SettingsModel::groupChatEnabledChanged); connect(coreManager->getAccountSettingsModel(), &AccountSettingsModel::accountSettingsUpdated, this, &SettingsModel::videoConferenceEnabledChanged); @@ -2015,3 +2016,7 @@ bool SettingsModel::isReadOnly(const std::string& section, const std::string& na std::string SettingsModel::getEntryFullName(const std::string& section, const std::string& name) const { return isReadOnly(section, name)?name+"/readonly" : name; } + +void SettingsModel::onDefaultAccountChanged(){ + mConfig->setInt("misc", "hide_chat_rooms_from_removed_proxies", CoreManager::getInstance()->getCore()->getDefaultAccount() != nullptr); +} diff --git a/linphone-app/src/components/settings/SettingsModel.hpp b/linphone-app/src/components/settings/SettingsModel.hpp index cd5ccd0b7..b7c9bdf82 100644 --- a/linphone-app/src/components/settings/SettingsModel.hpp +++ b/linphone-app/src/components/settings/SettingsModel.hpp @@ -703,6 +703,8 @@ public: bool isReadOnly(const std::string& section, const std::string& name) const; std::string getEntryFullName(const std::string& section, const std::string& name) const; // Return the full name of the entry : 'name/readonly' or 'name' + void onDefaultAccountChanged(); + static const std::string UiSection; static const std::string ContactsSection; diff --git a/linphone-app/src/components/timeline/TimelineProxyModel.cpp b/linphone-app/src/components/timeline/TimelineProxyModel.cpp index 5067d3530..acf82907f 100644 --- a/linphone-app/src/components/timeline/TimelineProxyModel.cpp +++ b/linphone-app/src/components/timeline/TimelineProxyModel.cpp @@ -142,7 +142,7 @@ bool TimelineProxyModel::filterAcceptsRow (int sourceRow, const QModelIndex &sou //|| timeline->getChatRoomModel()->getFullPeerAddress().contains(search); not enough significant? } if(show) - show = timeline->getChatRoomModel()->isCurrentAccount(); + show = !CoreManager::getInstance()->getCore()->getDefaultAccount() || timeline->getChatRoomModel()->isCurrentAccount(); return show; } diff --git a/linphone-app/src/utils/Utils.cpp b/linphone-app/src/utils/Utils.cpp index 37c227765..69f36ff20 100644 --- a/linphone-app/src/utils/Utils.cpp +++ b/linphone-app/src/utils/Utils.cpp @@ -671,11 +671,14 @@ QString Utils::computeUserAgent(const std::shared_ptr& config) } bool Utils::isMe(const QString& address){ - return !address.isEmpty() ? CoreManager::getInstance()->getAccountSettingsModel()->getUsedSipAddress()->weakEqual(Utils::interpretUrl(address)) : false; + return !address.isEmpty() ? isMe(Utils::interpretUrl(address)) : false; } bool Utils::isMe(const std::shared_ptr& address){ - return address ? CoreManager::getInstance()->getAccountSettingsModel()->getUsedSipAddress()->weakEqual(address) : false; + if( !CoreManager::getInstance()->getCore()->getDefaultAccount()){// Default account is selected : Me is all local accounts. + return CoreManager::getInstance()->getAccountSettingsModel()->findAccount(address) != nullptr; + }else + return address ? CoreManager::getInstance()->getAccountSettingsModel()->getUsedSipAddress()->weakEqual(address) : false; } bool Utils::isAnimatedImage(const QString& path){