File indexing completed on 2025-02-02 05:05:40
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 "vcarddirsettingswidget.h" 0009 0010 #include "settings.h" 0011 0012 #include <KConfigDialogManager> 0013 #include <KLocalizedString> 0014 #include <QUrl> 0015 0016 #include <QPushButton> 0017 #include <QTimer> 0018 0019 VcardDirSettingsWidget::VcardDirSettingsWidget(const KSharedConfigPtr &config, QWidget *parent, const QVariantList &args) 0020 : Akonadi::AgentConfigurationBase(config, parent, args) 0021 { 0022 VcardDirResourceSettings::instance(config); 0023 0024 auto mainWidget = new QWidget(parent); 0025 0026 ui.setupUi(mainWidget); 0027 parent->layout()->addWidget(mainWidget); 0028 0029 ui.kcfg_Path->setMode(KFile::LocalOnly | KFile::Directory); 0030 0031 connect(ui.kcfg_Path, &KUrlRequester::textChanged, this, &VcardDirSettingsWidget::validate); 0032 connect(ui.kcfg_ReadOnly, &QCheckBox::toggled, this, &VcardDirSettingsWidget::validate); 0033 0034 ui.kcfg_Path->setUrl(QUrl::fromLocalFile(VcardDirResourceSettings::self()->path())); 0035 ui.kcfg_AutosaveInterval->setSuffix(ki18np(" minute", " minutes")); 0036 mManager = new KConfigDialogManager(mainWidget, VcardDirResourceSettings::self()); 0037 } 0038 0039 void VcardDirSettingsWidget::validate() 0040 { 0041 const QUrl currentUrl = ui.kcfg_Path->url(); 0042 if (currentUrl.isEmpty()) { 0043 Q_EMIT enableOkButton(false); 0044 return; 0045 } 0046 0047 const QFileInfo file(currentUrl.toLocalFile()); 0048 if (file.exists() && !file.isWritable()) { 0049 ui.kcfg_ReadOnly->setEnabled(false); 0050 ui.kcfg_ReadOnly->setChecked(true); 0051 } else { 0052 ui.kcfg_ReadOnly->setEnabled(true); 0053 } 0054 Q_EMIT enableOkButton(true); 0055 } 0056 0057 void VcardDirSettingsWidget::load() 0058 { 0059 mManager->updateWidgets(); 0060 QTimer::singleShot(0, this, &VcardDirSettingsWidget::validate); 0061 } 0062 0063 bool VcardDirSettingsWidget::save() const 0064 { 0065 mManager->updateSettings(); 0066 VcardDirResourceSettings::self()->setPath(ui.kcfg_Path->url().toLocalFile()); 0067 VcardDirResourceSettings::self()->save(); 0068 return true; 0069 } 0070 0071 #include "moc_vcarddirsettingswidget.cpp"