File indexing completed on 2025-02-02 05:08:36

0001 // SPDX-FileCopyrightText: 2023 Carl Schwan <carl@carlschwan.eu>
0002 // SPDX-FileCopyrightText: 2023-2024 Laurent Montel <montel.org>
0003 // SPDX-License-Identifier: LGPL-2.0-or-later
0004 
0005 #include "setupmanager.h"
0006 
0007 #include "accountwizard_debug.h"
0008 #include "ispdbservice.h"
0009 #include <KEMailSettings>
0010 
0011 SetupManager::SetupManager(QObject *parent)
0012     : QObject(parent)
0013     , mIdentity(new IdentityImpl(this))
0014     , mIspdbService(new IspdbService(this))
0015     , mConfigurationModel(new ConfigurationModel(this))
0016     , mAccountConfigurationImpl(new AccountConfigurationImpl(this))
0017 {
0018     KEMailSettings emailSettings;
0019     setFullName(emailSettings.getSetting(KEMailSettings::RealName));
0020     setEmail(emailSettings.getSetting(KEMailSettings::EmailAddress));
0021 
0022     connect(mIdentity, &IdentityBase::emailChanged, this, &SetupManager::emailChanged);
0023     connect(mIspdbService, &IspdbService::finished, this, &SetupManager::setEmailProvider);
0024     connect(mIspdbService, &IspdbService::notConfigFound, this, &SetupManager::noConfigFound);
0025 
0026     connect(mAccountConfigurationImpl, &AccountConfigurationBase::error, this, &SetupManager::slotError);
0027     connect(mAccountConfigurationImpl, &AccountConfigurationBase::finished, this, &SetupManager::slotFinished);
0028     connect(mAccountConfigurationImpl, &AccountConfigurationBase::info, this, &SetupManager::slotInfo);
0029 }
0030 
0031 SetupManager::~SetupManager()
0032 {
0033     if (!mAccountCreated) {
0034         mIdentity->destroy();
0035     }
0036 }
0037 
0038 void SetupManager::slotError(const QString &str)
0039 {
0040     mDetails += str + QLatin1Char('\n');
0041     // TODO add color ?
0042     Q_EMIT detailsChanged();
0043 }
0044 
0045 void SetupManager::slotFinished(const QString &str)
0046 {
0047     mDetails += str + QLatin1Char('\n');
0048     // TODO add color ?
0049     Q_EMIT detailsChanged();
0050 }
0051 
0052 void SetupManager::slotInfo(const QString &str)
0053 {
0054     mDetails += str + QLatin1Char('\n');
0055     // TODO add color ?
0056     Q_EMIT detailsChanged();
0057 }
0058 
0059 QString SetupManager::details() const
0060 {
0061     return mDetails;
0062 }
0063 
0064 QString SetupManager::fullName() const
0065 {
0066     return mIdentity->fullName();
0067 }
0068 
0069 void SetupManager::setFullName(const QString &fullName)
0070 {
0071     mIdentity->setFullName(fullName);
0072 }
0073 
0074 QString SetupManager::email() const
0075 {
0076     return mIdentity->email();
0077 }
0078 
0079 void SetupManager::setEmail(const QString &email)
0080 {
0081     mIdentity->setEmail(email);
0082     mAccountConfigurationImpl->setEmail(email);
0083     clearConfiguration();
0084 }
0085 
0086 QString SetupManager::password() const
0087 {
0088     return mPassword;
0089 }
0090 
0091 void SetupManager::setPassword(const QString &password)
0092 {
0093     if (mPassword == password) {
0094         return;
0095     }
0096     mPassword = password;
0097     Q_EMIT passwordChanged();
0098 }
0099 
0100 IdentityBase *SetupManager::identity() const
0101 {
0102     return mIdentity;
0103 }
0104 
0105 ConfigurationModel *SetupManager::configurationModel() const
0106 {
0107     return mConfigurationModel;
0108 }
0109 
0110 void SetupManager::searchConfiguration()
0111 {
0112     clearConfiguration();
0113     KMime::Types::Mailbox box;
0114     box.fromUnicodeString(email());
0115     mIspdbService->start(box.addrSpec());
0116 }
0117 
0118 void SetupManager::createAutomaticAccount()
0119 {
0120     qCDebug(ACCOUNTWIZARD_LOG) << " Create Automatic Account";
0121     mIdentity->create();
0122     const uint id = mIdentity->uoid();
0123     // TODO use password
0124     // TODO use selected account
0125 
0126     mAccountCreated = true;
0127 }
0128 
0129 void SetupManager::createManualAccount()
0130 {
0131     qCDebug(ACCOUNTWIZARD_LOG) << " Create MAnual Account";
0132     mIdentity->create();
0133     const uint id = mIdentity->uoid();
0134     mAccountConfigurationImpl->setIdentityId(id);
0135     mAccountConfigurationImpl->createAccount();
0136     mAccountCreated = true;
0137 }
0138 
0139 void SetupManager::setEmailProvider(const EmailProvider &emailProvider, const QString &messageInfo)
0140 {
0141     qCDebug(ACCOUNTWIZARD_LOG) << " emailProvider " << emailProvider;
0142     mSearchIspdbFoundMessage = messageInfo;
0143     mConfigurationModel->setEmailProvider(emailProvider);
0144     Q_EMIT searchIspdbFoundMessageChanged();
0145 }
0146 
0147 void SetupManager::clearConfiguration()
0148 {
0149     mConfigurationModel->clear();
0150     mSearchIspdbFoundMessage.clear();
0151     Q_EMIT searchIspdbFoundMessageChanged();
0152 
0153     mNoConfigFound = false;
0154     mAccountCreated = false;
0155     Q_EMIT noConfigFoundChanged();
0156 }
0157 
0158 void SetupManager::noConfigFound()
0159 {
0160     mNoConfigFound = true;
0161     Q_EMIT noConfigFoundChanged();
0162 }
0163 
0164 AccountConfigurationBase *SetupManager::accountConfiguration() const
0165 {
0166     return mAccountConfigurationImpl;
0167 }
0168 
0169 #include "moc_setupmanager.cpp"