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"