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"