From cfc1c80e1586a8b8350016b6f7ec5a1d34adb839 Mon Sep 17 00:00:00 2001 From: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com> Date: Wed, 4 Sep 2019 11:43:01 -0400 Subject: [PATCH] callwidget: fix deselection of conversation when changing account Change-Id: If16a9371cfc182cdff7bd87205674483fb596633 --- callwidget.cpp | 8 ++++++-- lrcinstance.h | 4 ++-- settingswidget.cpp | 4 ++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/callwidget.cpp b/callwidget.cpp index 4667a20..1c4d25e 100644 --- a/callwidget.cpp +++ b/callwidget.cpp @@ -798,7 +798,7 @@ CallWidget::setSelectedAccount(const std::string& accountId) // First, we get back to the welcome view (except if in call) if (ui->stackedWidget->currentWidget() != ui->videoPage && ui->stackedWidget->currentWidget() != ui->welcomePage) { - Utils::setStackWidget(ui->stackedWidget, ui->welcomePage); + backToWelcomePage(); } // We setup the ringIdLabel and the QRCode @@ -1176,6 +1176,10 @@ CallWidget::selectConversation( const lrc::api::conversation::Info& item, void CallWidget::deselectConversation() { + if (LRCInstance::getSelectedConvUid().empty()) { + return; + } + auto currentConversationModel = LRCInstance::getCurrentConversationModel(); if (currentConversationModel == nullptr) { @@ -1183,7 +1187,7 @@ CallWidget::deselectConversation() } currentConversationModel->selectConversation(""); - LRCInstance::setSelectedConvId(""); + LRCInstance::setSelectedConvId(); ui->smartList->selectionModel()->clear(); disconnect(imConnection_); diff --git a/lrcinstance.h b/lrcinstance.h index a66f715..9b3b8ac 100644 --- a/lrcinstance.h +++ b/lrcinstance.h @@ -121,7 +121,7 @@ public: return instance().selectedAccountId_; }; - static void setSelectedAccountId(const std::string& accountId) { + static void setSelectedAccountId(const std::string& accountId = {}) { instance().selectedAccountId_ = accountId; QSettings settings("jami.net", "Jami"); settings.setValue(SettingsKey::selectedAccount, QString::fromStdString(accountId)); @@ -131,7 +131,7 @@ public: return instance().selectedConvUid_; }; - static void setSelectedConvId(const std::string& convUid) { + static void setSelectedConvId(const std::string& convUid = {}) { instance().selectedConvUid_ = convUid; }; diff --git a/settingswidget.cpp b/settingswidget.cpp index 68caee5..f961688 100644 --- a/settingswidget.cpp +++ b/settingswidget.cpp @@ -492,13 +492,13 @@ void SettingsWidget::delAccountSlot() auto ret = delDialog.exec(); if (ret == QDialog::Accepted) { - LRCInstance::setSelectedAccountId(""); + LRCInstance::setSelectedAccountId(); if (!LRCInstance::accountModel().getAccountList().size()) { emit NavigationRequested(ScreenEnum::WizardScreen); } else { - LRCInstance::setSelectedConvId(""); + LRCInstance::setSelectedConvId(); emit NavigationRequested(ScreenEnum::CallScreen); } } -- GitLab