File indexing completed on 2024-12-01 04:36:39

0001 /*
0002    SPDX-FileCopyrightText: 2020-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "createnewserverwidget.h"
0008 #include "common/authenticationloginwidget.h"
0009 #include "common/authenticationoauthwidget.h"
0010 
0011 #include <KLocalizedString>
0012 #include <QVBoxLayout>
0013 
0014 CreateNewServerWidget::CreateNewServerWidget(QWidget *parent)
0015     : QWidget(parent)
0016     , mAuthenticationWidget(new AuthenticationOauthWidget(this))
0017     , mAuthenticationLoginWidget(new AuthenticationLoginWidget(this))
0018 {
0019     // TODO add icon from server
0020     // TODO add info from server ?
0021     auto mainLayout = new QVBoxLayout(this);
0022     mainLayout->setObjectName(QStringLiteral("mainLayout"));
0023     mainLayout->setContentsMargins({});
0024 
0025     mAuthenticationLoginWidget->setObjectName(QStringLiteral("mAuthenticationLoginWidget"));
0026     mAuthenticationWidget->setObjectName(QStringLiteral("mAuthenticationWidget"));
0027     mainLayout->addWidget(mAuthenticationLoginWidget);
0028     mainLayout->addWidget(mAuthenticationWidget);
0029     // TODO add support for two factor ?
0030 
0031     connect(mAuthenticationLoginWidget, &AuthenticationLoginWidget::updateOkButton, this, &CreateNewServerWidget::updateOkButton);
0032     connect(mAuthenticationWidget, &AuthenticationOauthWidget::authentication, this, &CreateNewServerWidget::authentication);
0033 }
0034 
0035 CreateNewServerWidget::~CreateNewServerWidget() = default;
0036 
0037 AccountManager::AccountManagerInfo CreateNewServerWidget::accountInfo()
0038 {
0039     return mAuthenticationLoginWidget->accountInfo();
0040 }
0041 
0042 void CreateNewServerWidget::setAccountInfo(const AccountManager::AccountManagerInfo &accountInfo)
0043 {
0044     mAuthenticationLoginWidget->hide();
0045     mAuthenticationWidget->hide();
0046     for (const auto &info : accountInfo.authenticationInfos) {
0047         if (info.oauthType() == AuthenticationManager::AuthMethodType::Password) {
0048             mAuthenticationLoginWidget->show();
0049             mAuthenticationLoginWidget->setAccountInfo(accountInfo);
0050         } else {
0051             mAuthenticationWidget->show();
0052             mAuthenticationWidget->addAuthenticationMethod(info);
0053         }
0054     }
0055 }
0056 
0057 void CreateNewServerWidget::setExistingAccountName(const QStringList &lst)
0058 {
0059     mAuthenticationLoginWidget->setExistingAccountName(lst);
0060 }
0061 
0062 #include "moc_createnewserverwidget.cpp"