File indexing completed on 2024-06-02 05:26:13

0001 /*
0002   This file is part of KOrganizer.
0003 
0004   SPDX-FileCopyrightText: 2000-2003 Cornelius Schumacher <schumacher@kde.org>
0005   SPDX-FileCopyrightText: 2003-2004 Reinhold Kainhofer <reinhold@kainhofer.com>
0006 
0007   SPDX-License-Identifier: GPL-2.0-or-later WITH Qt-Commercial-exception-1.0
0008 */
0009 
0010 #include "koprefsdialogmain.h"
0011 #include "koprefs.h"
0012 #include <KPluginFactory>
0013 #include <QFormLayout>
0014 #include <QGroupBox>
0015 #include <QTabWidget>
0016 #include <QVBoxLayout>
0017 
0018 #include <CalendarSupport/KCalPrefs>
0019 
0020 #include <Akonadi/ManageAccountWidget>
0021 #include <IncidenceEditor/IncidenceEditorSettings>
0022 #include <akonadi/calendarsettings.h>
0023 
0024 #include <KLocalizedString>
0025 #include <QCheckBox>
0026 #include <QLabel>
0027 
0028 K_PLUGIN_CLASS_WITH_JSON(KOPrefsDialogMain, "korganizer_configmain.json")
0029 
0030 KOPrefsDialogMain::KOPrefsDialogMain(QObject *parent, const KPluginMetaData &data)
0031     : Korganizer::KPrefsModule(KOPrefs::instance(), parent, data)
0032 {
0033     auto topTopLayout = new QVBoxLayout(widget());
0034     topTopLayout->setContentsMargins({});
0035     auto tabWidget = new QTabWidget(widget());
0036     tabWidget->setDocumentMode(true);
0037     topTopLayout->addWidget(tabWidget);
0038 
0039     // Personal Settings
0040     auto personalFrame = new QWidget(widget());
0041     auto personalLayout = new QVBoxLayout(personalFrame);
0042     tabWidget->addTab(personalFrame, QIcon::fromTheme(QStringLiteral("preferences-desktop-personal")), i18nc("@title:tab personal settings", "Personal"));
0043 
0044     Korganizer::KPrefsWidBool *emailControlCenter = addWidBool(CalendarSupport::KCalPrefs::instance()->emailControlCenterItem(), personalFrame);
0045     connect(emailControlCenter->checkBox(), &QAbstractButton::toggled, this, &KOPrefsDialogMain::toggleEmailSettings);
0046     personalLayout->addWidget(emailControlCenter->checkBox());
0047 
0048     mUserEmailSettings = new QGroupBox(i18nc("@title:group email settings", "Email Settings"), personalFrame);
0049 
0050     personalLayout->addWidget(mUserEmailSettings);
0051     auto emailSettingsLayout = new QFormLayout(mUserEmailSettings);
0052     Korganizer::KPrefsWidString *s = addWidString(CalendarSupport::KCalPrefs::instance()->userNameItem(), mUserEmailSettings);
0053     emailSettingsLayout->addRow(s->label(), s->lineEdit());
0054 
0055     s = addWidString(CalendarSupport::KCalPrefs::instance()->userEmailItem(), mUserEmailSettings);
0056     emailSettingsLayout->addRow(s->label(), s->lineEdit());
0057 
0058     Korganizer::KPrefsWidRadios *defaultEmailAttachMethod =
0059         addWidRadios(IncidenceEditorNG::IncidenceEditorSettings::self()->defaultEmailAttachMethodItem(), personalFrame);
0060     personalLayout->addWidget(defaultEmailAttachMethod->groupBox());
0061 
0062     auto remindersGroup = new QGroupBox(i18nc("@title:group", "Reminders"), personalFrame);
0063     auto remindersLayout = new QFormLayout(remindersGroup);
0064     Korganizer::KPrefsWidBool *onlyMyReminders = addWidBool(Akonadi::CalendarSettings::self()->onlyShowRemindersForMyEventsItem(), remindersGroup);
0065     remindersLayout->addWidget(onlyMyReminders->checkBox());
0066     personalLayout->addWidget(remindersGroup);
0067     personalLayout->addStretch(1);
0068 
0069     // Save Settings
0070     auto saveFrame = new QFrame(widget());
0071     tabWidget->addTab(saveFrame, QIcon::fromTheme(QStringLiteral("document-save")), i18nc("@title:tab", "Save"));
0072     auto saveLayout = new QVBoxLayout(saveFrame);
0073 
0074     Korganizer::KPrefsWidBool *confirmItem = addWidBool(KOPrefs::instance()->confirmItem(), saveFrame);
0075     saveLayout->addWidget(confirmItem->checkBox());
0076     Korganizer::KPrefsWidRadios *destinationItem = addWidRadios(KOPrefs::instance()->destinationItem(), saveFrame);
0077 
0078     saveLayout->addWidget(destinationItem->groupBox());
0079     saveLayout->addStretch(1);
0080 
0081     // Calendar Account
0082     auto calendarFrame = new QFrame(widget());
0083     tabWidget->addTab(calendarFrame, QIcon::fromTheme(QStringLiteral("office-calendar")), i18nc("@title:tab calendar account settings", "Calendars"));
0084     auto calendarFrameLayout = new QHBoxLayout;
0085     calendarFrame->setLayout(calendarFrameLayout);
0086     auto manageAccountWidget = new Akonadi::ManageAccountWidget(widget());
0087     manageAccountWidget->setDescriptionLabelText(i18nc("@title", "Calendar Accounts"));
0088     calendarFrameLayout->addWidget(manageAccountWidget);
0089 
0090     manageAccountWidget->setMimeTypeFilter(QStringList() << QStringLiteral("text/calendar"));
0091     // show only resources, no agents
0092     manageAccountWidget->setCapabilityFilter(QStringList() << QStringLiteral("Resource"));
0093 
0094     load();
0095 }
0096 
0097 void KOPrefsDialogMain::usrWriteConfig()
0098 {
0099     Korganizer::KPrefsModule::usrWriteConfig();
0100     IncidenceEditorNG::IncidenceEditorSettings::self()->save();
0101 }
0102 
0103 void KOPrefsDialogMain::toggleEmailSettings(bool on)
0104 {
0105     mUserEmailSettings->setEnabled(!on);
0106     /*  if (on) {
0107         KEMailSettings settings;
0108         mNameEdit->setText( settings.getSetting(KEMailSettings::RealName) );
0109         mEmailEdit->setText( settings.getSetting(KEMailSettings::EmailAddress) );
0110       } else {
0111         mNameEdit->setText( CalendarSupport::KCalPrefs::instance()->mName );
0112         mEmailEdit->setText( CalendarSupport::KCalPrefs::instance()->mEmail );
0113       }*/
0114 }
0115 
0116 #include "koprefsdialogmain.moc"
0117 
0118 #include "moc_koprefsdialogmain.cpp"