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

0001 /*
0002     SPDX-FileCopyrightText: 2014 Sandro Knauß <knauss@kolabsys.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "setupautoconfigkolabfreebusy.h"
0008 #include "ispdb/autoconfigkolabfreebusy.h"
0009 
0010 #include "configfile.h"
0011 
0012 #include <QFileInfo>
0013 
0014 #include <KLocalizedString>
0015 
0016 SetupAutoconfigKolabFreebusy::SetupAutoconfigKolabFreebusy(QObject *parent)
0017     : SetupObject(parent)
0018     , mIspdb(new AutoconfigKolabFreebusy(this))
0019 {
0020     connect(mIspdb, &AutoconfigKolabFreebusy::finished, this, &SetupAutoconfigKolabFreebusy::onIspdbFinished);
0021 }
0022 
0023 SetupAutoconfigKolabFreebusy::~SetupAutoconfigKolabFreebusy()
0024 {
0025     delete mIspdb;
0026 }
0027 
0028 int SetupAutoconfigKolabFreebusy::countFreebusyServers() const
0029 {
0030     return mIspdb->freebusyServers().count();
0031 }
0032 
0033 void SetupAutoconfigKolabFreebusy::fillFreebusyServer(int i, QObject *o) const
0034 {
0035     const freebusy isp = mIspdb->freebusyServers().values().at(i);
0036     auto *korganizer = qobject_cast<ConfigFile *>(o);
0037     QFileInfo path(isp.path);
0038     QString url(QStringLiteral("https://"));
0039 
0040     if (isp.socketType == Ispdb::None) {
0041         url = QStringLiteral("http://");
0042     }
0043 
0044     url += isp.hostname;
0045 
0046     if (isp.port != 80) {
0047         url += QLatin1Char(':');
0048         url += QString::number(isp.port);
0049     }
0050 
0051     if (!isp.path.startsWith(QLatin1Char('/'))) {
0052         url += QLatin1Char('/');
0053     }
0054 
0055     url += path.path();
0056 
0057     bool fullDomainRetrieval = (path.baseName() == QLatin1StringView("$EMAIL$"));
0058 
0059     const QString group(QStringLiteral("FreeBusy Retrieve"));
0060 
0061     korganizer->setConfig(group, QStringLiteral("FreeBusyFullDomainRetrieval"), fullDomainRetrieval ? QStringLiteral("true") : QStringLiteral("false"));
0062     korganizer->setConfig(group, QStringLiteral("FreeBusyRetrieveAuto"), QStringLiteral("true"));
0063     korganizer->setConfig(group, QStringLiteral("FreeBusyRetrieveUrl"), url);
0064     korganizer->setConfig(group, QStringLiteral("FreeBusyRetrieverUser"), isp.username);
0065     korganizer->setConfig(group, QStringLiteral("FreeBusyRetrieverPassword"), isp.password);
0066     if (!isp.password.isEmpty()) {
0067         korganizer->setConfig(group, QStringLiteral("FreeBusyRetrieveSavePassword"), QStringLiteral("true"));
0068     }
0069 }
0070 
0071 void SetupAutoconfigKolabFreebusy::start()
0072 {
0073     mIspdb->start();
0074     Q_EMIT info(i18n("Searching for autoconfiguration..."));
0075 }
0076 
0077 void SetupAutoconfigKolabFreebusy::setEmail(const QString &email)
0078 {
0079     mIspdb->setEmail(email);
0080 }
0081 
0082 void SetupAutoconfigKolabFreebusy::setPassword(const QString &password)
0083 {
0084     mIspdb->setPassword(password);
0085 }
0086 
0087 void SetupAutoconfigKolabFreebusy::create()
0088 {
0089 }
0090 
0091 void SetupAutoconfigKolabFreebusy::destroy()
0092 {
0093 }
0094 
0095 void SetupAutoconfigKolabFreebusy::onIspdbFinished(bool status)
0096 {
0097     Q_EMIT ispdbFinished(status);
0098     if (status) {
0099         Q_EMIT info(i18n("Autoconfiguration found."));
0100     } else {
0101         Q_EMIT info(i18n("Autoconfiguration failed."));
0102     }
0103 }
0104 
0105 #include "moc_setupautoconfigkolabfreebusy.cpp"