From 5d77bd257de9aeedaa582510e1c05683891550d9 Mon Sep 17 00:00:00 2001 From: gaelle Date: Wed, 19 Feb 2025 14:11:06 +0100 Subject: [PATCH] revert fix config login page (accounts registration states are not enough specific to use them as indicator of existing accounts) --- Linphone/core/App.cpp | 5 +++- Linphone/core/account/AccountList.cpp | 23 ++----------------- Linphone/model/account/AccountManager.cpp | 1 + Linphone/view/Page/Window/Main/MainWindow.qml | 19 ++++++--------- 4 files changed, 14 insertions(+), 34 deletions(-) diff --git a/Linphone/core/App.cpp b/Linphone/core/App.cpp index fa27c6d5..65709276 100644 --- a/Linphone/core/App.cpp +++ b/Linphone/core/App.cpp @@ -486,7 +486,10 @@ void App::initCore() { mEngine->setObjectOwnership(settings.get(), QQmlEngine::CppOwnership); mEngine->setObjectOwnership(this, QQmlEngine::CppOwnership); if (!mAccountList) setAccountList(AccountList::create()); - else mAccountList->lUpdate(); + else { + mAccountList->setInitialized(false); + mAccountList->lUpdate(true); + } if (!mCallList) setCallList(CallList::create()); else mCallList->lUpdate(); if (!mSettings) { diff --git a/Linphone/core/account/AccountList.cpp b/Linphone/core/account/AccountList.cpp index 7e2f4044..48c19f33 100644 --- a/Linphone/core/account/AccountList.cpp +++ b/Linphone/core/account/AccountList.cpp @@ -64,27 +64,8 @@ void AccountList::setSelf(QSharedPointer me) { } mModelConnection->invokeToCore([this, accounts, defaultAccountCore, isInitialization]() { mustBeInMainThread(getClassName()); - auto reallyHaveAccount = [this]() -> bool { - // When an account is trying to connect, we don't want to display the features - // provided for the accounts that really stays in the account list - // (for example the back button to return on the main page in the login page) - for (auto &account : getSharedList()) { - if (account->getRegistrationState() != LinphoneEnums::RegistrationState::Progress && - account->getRegistrationState() != LinphoneEnums::RegistrationState::None) { - return true; - } - } - return false; - }; - for (auto &account : getSharedList()) { - disconnect(account.get(), &AccountCore::registrationStateChanged, this, nullptr); - } resetData(*accounts); - for (auto &account : getSharedList()) { - connect(account.get(), &AccountCore::registrationStateChanged, this, - [this, reallyHaveAccount] { setHaveAccount(reallyHaveAccount()); }); - } - setHaveAccount(reallyHaveAccount()); + setHaveAccount(accounts->size() > 0); setDefaultAccount(defaultAccountCore); if (isInitialization) setInitialized(true); delete accounts; @@ -102,7 +83,7 @@ void AccountList::setSelf(QSharedPointer me) { } else mModelConnection->invokeToCore([this]() { setDefaultAccount(nullptr); }); }); mModelConnection->makeConnectToModel(&CoreModel::accountRemoved, [this] { emit lUpdate(); }); - mModelConnection->makeConnectToModel(&CoreModel::accountAdded, [this] { emit lUpdate(); }); + mModelConnection->makeConnectToModel(&CoreModel::accountAdded, [this] { emit lUpdate(true); }); mModelConnection->makeConnectToModel( &CoreModel::globalStateChanged, diff --git a/Linphone/model/account/AccountManager.cpp b/Linphone/model/account/AccountManager.cpp index fb46af09..8201d896 100644 --- a/Linphone/model/account/AccountManager.cpp +++ b/Linphone/model/account/AccountManager.cpp @@ -143,6 +143,7 @@ bool AccountManager::login(QString username, auto status = core->addAccount(account); if (status == -1) { *errorMessage = tr("Impossible d'ajouter le compte."); + core->removeAuthInfo(authInfo); return false; } return true; diff --git a/Linphone/view/Page/Window/Main/MainWindow.qml b/Linphone/view/Page/Window/Main/MainWindow.qml index e554ba9c..79059ad1 100644 --- a/Linphone/view/Page/Window/Main/MainWindow.qml +++ b/Linphone/view/Page/Window/Main/MainWindow.qml @@ -90,7 +90,7 @@ AbstractWindow { Connections { target: SettingsCpp function onAssistantGoDirectlyToThirdPartySipAccountLoginChanged() { - initStackViewItem() + initStackViewItem() } function onIsSavedChanged() { if (SettingsCpp.isSaved) UtilsCpp.showInformationPopup(qsTr("Succès"), qsTr("Les changements ont été sauvegardés"), true, mainWindow) @@ -112,13 +112,10 @@ AbstractWindow { active: AppCpp.coreStarted sourceComponent: AccountProxy { sourceModel: AppCpp.accounts - onInitializedChanged: if (isInitialized) { + onInitializedChanged: if (isInitialized) { mainWindow.accountProxy = this mainWindow.initStackViewItem() - } - onHaveAccountChanged: { - if (isInitialized) mainWindow.initStackViewItem() - } + } } } @@ -126,10 +123,6 @@ AbstractWindow { id: mainWindowStackView anchors.fill: parent initialItem: splashScreen - Component.onCompleted: { - clear() - push(splashScreen) - } } Component { id: splashScreen @@ -161,7 +154,8 @@ AbstractWindow { onGoBack: openMainPage() onUseSIPButtonClicked: mainWindowStackView.push(sipLoginPage) onGoToRegister: mainWindowStackView.replace(registerPage) - showBackButton: accountProxy?.haveAccount + showBackButton: false + StackView.onActivated: if (mainWindow.accountProxy?.haveAccount) showBackButton = true } } Component { @@ -175,7 +169,8 @@ AbstractWindow { mainWindowStackView.pop() } onGoToRegister: mainWindowStackView.replace(registerPage) - showBackButton: !SettingsCpp.assistantGoDirectlyToThirdPartySipAccountLogin || accountProxy?.haveAccount + showBackButton: false + StackView.onActivated: if (!SettingsCpp.assistantGoDirectlyToThirdPartySipAccountLogin || mainWindow.accountProxy?.haveAccount) showBackButton = true } } Component {