File indexing completed on 2024-06-02 05:21:05

0001 /*
0002     SPDX-FileCopyrightText: 2009 Tobias Koenig <tokoe@kde.org>
0003     SPDX-FileCopyrightText: 2018-2024 Laurent Montel <montel@kde.org>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #include "icaldirsettingswidget.h"
0009 
0010 #include "settings.h"
0011 
0012 #include <KConfigDialogManager>
0013 #include <KLocalizedString>
0014 #include <QUrl>
0015 
0016 #include <QFontDatabase>
0017 #include <QPushButton>
0018 #include <QTimer>
0019 
0020 IcalDirSettingsWidget::IcalDirSettingsWidget(const KSharedConfigPtr &config, QWidget *parent, const QVariantList &args)
0021     : Akonadi::AgentConfigurationBase(config, parent, args)
0022 {
0023     IcalDirResourceSettings::instance(config);
0024 
0025     auto mainWidget = new QWidget(parent);
0026 
0027     ui.setupUi(mainWidget);
0028     parent->layout()->addWidget(mainWidget);
0029 
0030     ui.kcfg_Path->setMode(KFile::LocalOnly | KFile::Directory);
0031 
0032     connect(ui.kcfg_Path, &KUrlRequester::textChanged, this, &IcalDirSettingsWidget::validate);
0033     connect(ui.kcfg_ReadOnly, &QCheckBox::toggled, this, &IcalDirSettingsWidget::validate);
0034 
0035     ui.kcfg_Path->setUrl(QUrl::fromLocalFile(IcalDirResourceSettings::self()->path()));
0036     ui.kcfg_AutosaveInterval->setSuffix(ki18np(" minute", " minutes"));
0037     mManager = new KConfigDialogManager(mainWidget, IcalDirResourceSettings::self());
0038     ui.readOnlyLabel->setFont(QFontDatabase::systemFont(QFontDatabase::SmallestReadableFont));
0039     ui.runingLabel->setFont(QFontDatabase::systemFont(QFontDatabase::SmallestReadableFont));
0040     ui.pathLabel->setFont(QFontDatabase::systemFont(QFontDatabase::SmallestReadableFont));
0041 }
0042 
0043 void IcalDirSettingsWidget::validate()
0044 {
0045     const QUrl currentUrl = ui.kcfg_Path->url();
0046     if (currentUrl.isEmpty()) {
0047         Q_EMIT enableOkButton(false);
0048         return;
0049     }
0050 
0051     const QFileInfo file(currentUrl.toLocalFile());
0052     if (file.exists() && !file.isWritable()) {
0053         ui.kcfg_ReadOnly->setEnabled(false);
0054         ui.kcfg_ReadOnly->setChecked(true);
0055     } else {
0056         ui.kcfg_ReadOnly->setEnabled(true);
0057     }
0058     Q_EMIT enableOkButton(true);
0059 }
0060 
0061 void IcalDirSettingsWidget::load()
0062 {
0063     mManager->updateWidgets();
0064     QTimer::singleShot(0, this, &IcalDirSettingsWidget::validate);
0065 }
0066 
0067 bool IcalDirSettingsWidget::save() const
0068 {
0069     mManager->updateSettings();
0070     IcalDirResourceSettings::self()->setPath(ui.kcfg_Path->url().toLocalFile());
0071     IcalDirResourceSettings::self()->save();
0072     return true;
0073 }
0074 
0075 #include "moc_icaldirsettingswidget.cpp"