From ef7cb1b080da48edea0c52841f7743d6bad8385c Mon Sep 17 00:00:00 2001
From: Ming Rui Zhang <mingrui.zhang@savoirfairelinux.com>
Date: Fri, 19 Jul 2019 14:04:21 -0400
Subject: [PATCH] settingwidget: fix the issue where sometimes account setting
 does not match account type

- create a pastAccount, if pastAccount matches the current account,
  setSelected will return as usual, and if not, it will reselect
  the correct account setting widget

Change-Id: I870eb6d52d7e5f352489ddbd9347c3a5437e918d
---
 settingswidget.cpp | 6 +++++-
 settingswidget.h   | 1 +
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/settingswidget.cpp b/settingswidget.cpp
index 1cd2a43..97bcd7c 100644
--- a/settingswidget.cpp
+++ b/settingswidget.cpp
@@ -172,7 +172,9 @@ void SettingsWidget::setSelected(Button sel)
         ui->accountSettingsButton->setChecked(true);
         ui->generalSettingsButton->setChecked(false);
         ui->mediaSettingsButton->setChecked(false);
-        if (pastButton_ == sel) { return; }
+        if (pastButton_ == sel && pastAccount_ == LRCInstance::getCurrentAccountInfo().profileInfo.type) {
+            return;
+        }
 
         if (!LRCInstance::getActiveCalls().size()) {
             QtConcurrent::run( [this] { LRCInstance::avModel().stopPreview(); });
@@ -183,11 +185,13 @@ void SettingsWidget::setSelected(Button sel)
             if (advancedSIPSettingsDropped_) {
                 toggleAdvancedSIPSettings();
             }
+            pastAccount_ = lrc::api::profile::Type::SIP;
         } else {
             ui->stackedWidget->setCurrentWidget(ui->currentAccountSettingsScrollWidget);
             if (advancedSettingsDropped_) {
                 toggleAdvancedSettings();
             }
+            pastAccount_ = lrc::api::profile::Type::RING;
         }
 
         break;
diff --git a/settingswidget.h b/settingswidget.h
index 43cbd6f..7c7f9ee 100644
--- a/settingswidget.h
+++ b/settingswidget.h
@@ -93,6 +93,7 @@ private:
     AdvancedSettingsWidget* advancedSettingsWidget_;
     QScrollArea* scrollArea_;
     Button pastButton_ = Button::generalSettingsButton;
+    lrc::api::profile::Type pastAccount_ = lrc::api::profile::Type::INVALID;
     bool advancedSettingsDropped_ = false;
     QList<QPair<std::string, float>> formatIndexList_;
     std::string currentDisplayedVideoDevice_;
-- 
GitLab