// This file is generated by kconfig_compiler_kf5 from kcalprefs.kcfg.
// All changes you do to this file will be lost.
#ifndef CALENDARSUPPORT_KCALPREFSBASE_H
#define CALENDARSUPPORT_KCALPREFSBASE_H

#include <calendarsupport_export.h>

#include <qglobal.h>
#include <kconfigskeleton.h>
#include <QCoreApplication>
#include <QDebug>

namespace CalendarSupport {

class CALENDARSUPPORT_EXPORT KCalPrefsBase : public KConfigSkeleton
{
  public:
    enum EnumSendPolicy { InvitationPolicySend, InvitationPolicyAsk, InvitationPolicyDontSend };
    enum EnumExpiryUnit { UnitDays, UnitWeeks, UnitMonths };
    enum EnumArchiveAction { actionDelete, actionArchive };

    KCalPrefsBase( );
    ~KCalPrefsBase() override;

    /**
      Set Use email settings from System Settings
    */
    void setEmailControlCenter( bool v )
    {
      if (!isEmailControlCenterImmutable())
        mEmailControlCenter = v;
    }

    /**
      Get Use email settings from System Settings
    */
    bool emailControlCenter() const
    {
      return mEmailControlCenter;
    }

    /**
      Is Use email settings from System Settings Immutable
    */
    bool isEmailControlCenterImmutable() const
    {
      return isImmutable( QStringLiteral( "EmailControlCenter" ) );
    }

    /**
      Get Item object corresponding to EmailControlCenter()
    */
    ItemBool *emailControlCenterItem()
    {
      return mEmailControlCenterItem;
    }

    /**
      Set Default appointment time
    */
    void setStartTime( const QDateTime & v )
    {
      if (!isStartTimeImmutable())
        mStartTime = v;
    }

    /**
      Get Default appointment time
    */
    QDateTime startTime() const
    {
      return mStartTime;
    }

    /**
      Is Default appointment time Immutable
    */
    bool isStartTimeImmutable() const
    {
      return isImmutable( QStringLiteral( "StartTime" ) );
    }

    /**
      Get Item object corresponding to StartTime()
    */
    ItemDateTime *startTimeItem()
    {
      return mStartTimeItem;
    }

    /**
      Set Default duration of new appointment (HH:MM)
    */
    void setDefaultDuration( const QDateTime & v )
    {
      if (!isDefaultDurationImmutable())
        mDefaultDuration = v;
    }

    /**
      Get Default duration of new appointment (HH:MM)
    */
    QDateTime defaultDuration() const
    {
      return mDefaultDuration;
    }

    /**
      Is Default duration of new appointment (HH:MM) Immutable
    */
    bool isDefaultDurationImmutable() const
    {
      return isImmutable( QStringLiteral( "DefaultDuration" ) );
    }

    /**
      Get Item object corresponding to DefaultDuration()
    */
    ItemDateTime *defaultDurationItem()
    {
      return mDefaultDurationItem;
    }

    /**
      Set Enable a default sound file for audio reminders
    */
    void setDefaultAudioFileReminders( bool v )
    {
      if (!isDefaultAudioFileRemindersImmutable())
        mDefaultAudioFileReminders = v;
    }

    /**
      Get Enable a default sound file for audio reminders
    */
    bool defaultAudioFileReminders() const
    {
      return mDefaultAudioFileReminders;
    }

    /**
      Is Enable a default sound file for audio reminders Immutable
    */
    bool isDefaultAudioFileRemindersImmutable() const
    {
      return isImmutable( QStringLiteral( "defaultAudioFileReminders" ) );
    }

    /**
      Get Item object corresponding to defaultAudioFileReminders()
    */
    ItemBool *defaultAudioFileRemindersItem()
    {
      return mDefaultAudioFileRemindersItem;
    }

    /**
      Set Default audio file
    */
    void setAudioFilePath( const QString & v )
    {
      if (!isAudioFilePathImmutable())
        mAudioFilePath = v;
    }

    /**
      Get Default audio file
    */
    QString audioFilePath() const
    {
      return mAudioFilePath;
    }

    /**
      Is Default audio file Immutable
    */
    bool isAudioFilePathImmutable() const
    {
      return isImmutable( QStringLiteral( "audioFilePath" ) );
    }

    /**
      Get Item object corresponding to audioFilePath()
    */
    ItemPath *audioFilePathItem()
    {
      return mAudioFilePathItem;
    }

    /**
      Set Enable reminders for new Events
    */
    void setDefaultEventReminders( bool v )
    {
      if (!isDefaultEventRemindersImmutable())
        mDefaultEventReminders = v;
    }

    /**
      Get Enable reminders for new Events
    */
    bool defaultEventReminders() const
    {
      return mDefaultEventReminders;
    }

    /**
      Is Enable reminders for new Events Immutable
    */
    bool isDefaultEventRemindersImmutable() const
    {
      return isImmutable( QStringLiteral( "defaultEventReminders" ) );
    }

    /**
      Get Item object corresponding to defaultEventReminders()
    */
    ItemBool *defaultEventRemindersItem()
    {
      return mDefaultEventRemindersItem;
    }

    /**
      Set Enable reminders for new To-dos
    */
    void setDefaultTodoReminders( bool v )
    {
      if (!isDefaultTodoRemindersImmutable())
        mDefaultTodoReminders = v;
    }

    /**
      Get Enable reminders for new To-dos
    */
    bool defaultTodoReminders() const
    {
      return mDefaultTodoReminders;
    }

    /**
      Is Enable reminders for new To-dos Immutable
    */
    bool isDefaultTodoRemindersImmutable() const
    {
      return isImmutable( QStringLiteral( "defaultTodoReminders" ) );
    }

    /**
      Get Item object corresponding to defaultTodoReminders()
    */
    ItemBool *defaultTodoRemindersItem()
    {
      return mDefaultTodoRemindersItem;
    }

    /**
      Set Default reminder time
    */
    void setReminderTime( int v )
    {
      if (!isReminderTimeImmutable())
        mReminderTime = v;
    }

    /**
      Get Default reminder time
    */
    int reminderTime() const
    {
      return mReminderTime;
    }

    /**
      Is Default reminder time Immutable
    */
    bool isReminderTimeImmutable() const
    {
      return isImmutable( QStringLiteral( "ReminderTime" ) );
    }

    /**
      Get Item object corresponding to ReminderTime()
    */
    ItemInt *reminderTimeItem()
    {
      return mReminderTimeItem;
    }

    /**
      Set Default Reminder Time Units
    */
    void setReminderTimeUnits( int v )
    {
      if (!isReminderTimeUnitsImmutable())
        mReminderTimeUnits = v;
    }

    /**
      Get Default Reminder Time Units
    */
    int reminderTimeUnits() const
    {
      return mReminderTimeUnits;
    }

    /**
      Is Default Reminder Time Units Immutable
    */
    bool isReminderTimeUnitsImmutable() const
    {
      return isImmutable( QStringLiteral( "ReminderTimeUnits" ) );
    }

    /**
      Get Item object corresponding to ReminderTimeUnits()
    */
    ItemInt *reminderTimeUnitsItem()
    {
      return mReminderTimeUnitsItem;
    }

    /**
      Set Day begins at
    */
    void setDayBegins( const QDateTime & v )
    {
      if (!isDayBeginsImmutable())
        mDayBegins = v;
    }

    /**
      Get Day begins at
    */
    QDateTime dayBegins() const
    {
      return mDayBegins;
    }

    /**
      Is Day begins at Immutable
    */
    bool isDayBeginsImmutable() const
    {
      return isImmutable( QStringLiteral( "DayBegins" ) );
    }

    /**
      Get Item object corresponding to DayBegins()
    */
    ItemDateTime *dayBeginsItem()
    {
      return mDayBeginsItem;
    }

    /**
      Set Exclude holidays
    */
    void setExcludeHolidays( bool v )
    {
      if (!isExcludeHolidaysImmutable())
        mExcludeHolidays = v;
    }

    /**
      Get Exclude holidays
    */
    bool excludeHolidays() const
    {
      return mExcludeHolidays;
    }

    /**
      Is Exclude holidays Immutable
    */
    bool isExcludeHolidaysImmutable() const
    {
      return isImmutable( QStringLiteral( "ExcludeHolidays" ) );
    }

    /**
      Get Item object corresponding to ExcludeHolidays()
    */
    ItemBool *excludeHolidaysItem()
    {
      return mExcludeHolidaysItem;
    }

    /**
      Set Use holiday regions:
    */
    void setHolidays( const QStringList & v )
    {
      if (!isHolidaysImmutable())
        mHolidays = v;
    }

    /**
      Get Use holiday regions:
    */
    QStringList holidays() const
    {
      return mHolidays;
    }

    /**
      Is Use holiday regions: Immutable
    */
    bool isHolidaysImmutable() const
    {
      return isImmutable( QStringLiteral( "Holidays" ) );
    }

    /**
      Get Item object corresponding to Holidays()
    */
    ItemStringList *holidaysItem()
    {
      return mHolidaysItem;
    }

    /**
      Set Use Groupware communication
    */
    void setUseGroupwareCommunication( bool v )
    {
      if (!isUseGroupwareCommunicationImmutable())
        mUseGroupwareCommunication = v;
    }

    /**
      Get Use Groupware communication
    */
    bool useGroupwareCommunication() const
    {
      return mUseGroupwareCommunication;
    }

    /**
      Is Use Groupware communication Immutable
    */
    bool isUseGroupwareCommunicationImmutable() const
    {
      return isImmutable( QStringLiteral( "UseGroupwareCommunication" ) );
    }

    /**
      Get Item object corresponding to UseGroupwareCommunication()
    */
    ItemBool *useGroupwareCommunicationItem()
    {
      return mUseGroupwareCommunicationItem;
    }

    /**
      Set Default policy for invitations to other users:
    */
    void setSendPolicy( int v )
    {
      if (!isSendPolicyImmutable())
        mSendPolicy = v;
    }

    /**
      Get Default policy for invitations to other users:
    */
    int sendPolicy() const
    {
      return mSendPolicy;
    }

    /**
      Is Default policy for invitations to other users: Immutable
    */
    bool isSendPolicyImmutable() const
    {
      return isImmutable( QStringLiteral( "SendPolicy" ) );
    }

    /**
      Get Item object corresponding to SendPolicy()
    */
    ItemEnum *sendPolicyItem()
    {
      return mSendPolicyItem;
    }

    /**
      Set AdditionalMails
    */
    void setAdditionalMails( const QStringList & v )
    {
      if (!isAdditionalMailsImmutable())
        mAdditionalMails = v;
    }

    /**
      Get AdditionalMails
    */
    QStringList additionalMails() const
    {
      return mAdditionalMails;
    }

    /**
      Is AdditionalMails Immutable
    */
    bool isAdditionalMailsImmutable() const
    {
      return isImmutable( QStringLiteral( "AdditionalMails" ) );
    }

    /**
      Get Item object corresponding to AdditionalMails()
    */
    ItemStringList *additionalMailsItem()
    {
      return mAdditionalMailsItem;
    }

    /**
      Set Show timezone selectors in the event and todo editor dialog.
    */
    void setShowTimeZoneSelectorInIncidenceEditor( bool v )
    {
      if (!isShowTimeZoneSelectorInIncidenceEditorImmutable())
        mShowTimeZoneSelectorInIncidenceEditor = v;
    }

    /**
      Get Show timezone selectors in the event and todo editor dialog.
    */
    bool showTimeZoneSelectorInIncidenceEditor() const
    {
      return mShowTimeZoneSelectorInIncidenceEditor;
    }

    /**
      Is Show timezone selectors in the event and todo editor dialog. Immutable
    */
    bool isShowTimeZoneSelectorInIncidenceEditorImmutable() const
    {
      return isImmutable( QStringLiteral( "ShowTimeZoneSelectorInIncidenceEditor" ) );
    }

    /**
      Get Item object corresponding to ShowTimeZoneSelectorInIncidenceEditor()
    */
    ItemBool *showTimeZoneSelectorInIncidenceEditorItem()
    {
      return mShowTimeZoneSelectorInIncidenceEditorItem;
    }

    /**
      Set Regularly archive events
    */
    void setAutoArchive( bool v )
    {
      if (!isAutoArchiveImmutable())
        mAutoArchive = v;
    }

    /**
      Get Regularly archive events
    */
    bool autoArchive() const
    {
      return mAutoArchive;
    }

    /**
      Is Regularly archive events Immutable
    */
    bool isAutoArchiveImmutable() const
    {
      return isImmutable( QStringLiteral( "AutoArchive" ) );
    }

    /**
      Get Item object corresponding to AutoArchive()
    */
    ItemBool *autoArchiveItem()
    {
      return mAutoArchiveItem;
    }

    /**
      Set If auto-archiving is enabled, events older than this amount will be archived. The unit of this value is specified in another field.
    */
    void setExpiryTime( int v )
    {
      if (!isExpiryTimeImmutable())
        mExpiryTime = v;
    }

    /**
      Get If auto-archiving is enabled, events older than this amount will be archived. The unit of this value is specified in another field.
    */
    int expiryTime() const
    {
      return mExpiryTime;
    }

    /**
      Is If auto-archiving is enabled, events older than this amount will be archived. The unit of this value is specified in another field. Immutable
    */
    bool isExpiryTimeImmutable() const
    {
      return isImmutable( QStringLiteral( "ExpiryTime" ) );
    }

    /**
      Get Item object corresponding to ExpiryTime()
    */
    ItemInt *expiryTimeItem()
    {
      return mExpiryTimeItem;
    }

    /**
      Set The unit in which the expiry time is expressed.
    */
    void setExpiryUnit( int v )
    {
      if (!isExpiryUnitImmutable())
        mExpiryUnit = v;
    }

    /**
      Get The unit in which the expiry time is expressed.
    */
    int expiryUnit() const
    {
      return mExpiryUnit;
    }

    /**
      Is The unit in which the expiry time is expressed. Immutable
    */
    bool isExpiryUnitImmutable() const
    {
      return isImmutable( QStringLiteral( "ExpiryUnit" ) );
    }

    /**
      Get Item object corresponding to ExpiryUnit()
    */
    ItemEnum *expiryUnitItem()
    {
      return mExpiryUnitItem;
    }

    /**
      Set URL of the file where old events should be archived
    */
    void setArchiveFile( const QString & v )
    {
      if (!isArchiveFileImmutable())
        mArchiveFile = v;
    }

    /**
      Get URL of the file where old events should be archived
    */
    QString archiveFile() const
    {
      return mArchiveFile;
    }

    /**
      Is URL of the file where old events should be archived Immutable
    */
    bool isArchiveFileImmutable() const
    {
      return isImmutable( QStringLiteral( "ArchiveFile" ) );
    }

    /**
      Get Item object corresponding to ArchiveFile()
    */
    ItemString *archiveFileItem()
    {
      return mArchiveFileItem;
    }

    /**
      Set Archive events
    */
    void setArchiveEvents( bool v )
    {
      if (!isArchiveEventsImmutable())
        mArchiveEvents = v;
    }

    /**
      Get Archive events
    */
    bool archiveEvents() const
    {
      return mArchiveEvents;
    }

    /**
      Is Archive events Immutable
    */
    bool isArchiveEventsImmutable() const
    {
      return isImmutable( QStringLiteral( "ArchiveEvents" ) );
    }

    /**
      Get Item object corresponding to ArchiveEvents()
    */
    ItemBool *archiveEventsItem()
    {
      return mArchiveEventsItem;
    }

    /**
      Set Archive to-dos
    */
    void setArchiveTodos( bool v )
    {
      if (!isArchiveTodosImmutable())
        mArchiveTodos = v;
    }

    /**
      Get Archive to-dos
    */
    bool archiveTodos() const
    {
      return mArchiveTodos;
    }

    /**
      Is Archive to-dos Immutable
    */
    bool isArchiveTodosImmutable() const
    {
      return isImmutable( QStringLiteral( "ArchiveTodos" ) );
    }

    /**
      Get Item object corresponding to ArchiveTodos()
    */
    ItemBool *archiveTodosItem()
    {
      return mArchiveTodosItem;
    }

    /**
      Set What to do when archiving
    */
    void setArchiveAction( int v )
    {
      if (!isArchiveActionImmutable())
        mArchiveAction = v;
    }

    /**
      Get What to do when archiving
    */
    int archiveAction() const
    {
      return mArchiveAction;
    }

    /**
      Is What to do when archiving Immutable
    */
    bool isArchiveActionImmutable() const
    {
      return isImmutable( QStringLiteral( "ArchiveAction" ) );
    }

    /**
      Get Item object corresponding to ArchiveAction()
    */
    ItemEnum *archiveActionItem()
    {
      return mArchiveActionItem;
    }

    /**
      Set Work Week Mask
    */
    void setWorkWeekMask( int v )
    {
      if (!isWorkWeekMaskImmutable())
        mWorkWeekMask = v;
    }

    /**
      Get Work Week Mask
    */
    int workWeekMask() const
    {
      return mWorkWeekMask;
    }

    /**
      Is Work Week Mask Immutable
    */
    bool isWorkWeekMaskImmutable() const
    {
      return isImmutable( QStringLiteral( "WorkWeekMask" ) );
    }

    /**
      Get Item object corresponding to WorkWeekMask()
    */
    ItemInt *workWeekMaskItem()
    {
      return mWorkWeekMaskItem;
    }

    /**
      Set Full &name
    */
    void setUserName( const QString & v )
    {
      if (!isUserNameImmutable())
        mUserName = v;
    }

    /**
      Get Full &name
    */
    QString userName() const
    {
      return mUserName;
    }

    /**
      Is Full &name Immutable
    */
    bool isUserNameImmutable() const
    {
      return isImmutable( QStringLiteral( "UserName" ) );
    }

    /**
      Get Item object corresponding to UserName()
    */
    ItemString *userNameItem()
    {
      return mUserNameItem;
    }

    /**
      Set E&mail address
    */
    void setUserEmail( const QString & v )
    {
      if (!isUserEmailImmutable())
        mUserEmail = v;
    }

    /**
      Get E&mail address
    */
    QString userEmail() const
    {
      return mUserEmail;
    }

    /**
      Is E&mail address Immutable
    */
    bool isUserEmailImmutable() const
    {
      return isImmutable( QStringLiteral( "UserEmail" ) );
    }

    /**
      Get Item object corresponding to UserEmail()
    */
    ItemString *userEmailItem()
    {
      return mUserEmailItem;
    }

    /**
      Set EventTemplates
    */
    void setEventTemplates( const QStringList & v )
    {
      if (!isEventTemplatesImmutable())
        mEventTemplates = v;
    }

    /**
      Get EventTemplates
    */
    QStringList eventTemplates() const
    {
      return mEventTemplates;
    }

    /**
      Is EventTemplates Immutable
    */
    bool isEventTemplatesImmutable() const
    {
      return isImmutable( QStringLiteral( "EventTemplates" ) );
    }

    /**
      Get Item object corresponding to EventTemplates()
    */
    ItemStringList *eventTemplatesItem()
    {
      return mEventTemplatesItem;
    }

    /**
      Set TodoTemplates
    */
    void setTodoTemplates( const QStringList & v )
    {
      if (!isTodoTemplatesImmutable())
        mTodoTemplates = v;
    }

    /**
      Get TodoTemplates
    */
    QStringList todoTemplates() const
    {
      return mTodoTemplates;
    }

    /**
      Is TodoTemplates Immutable
    */
    bool isTodoTemplatesImmutable() const
    {
      return isImmutable( QStringLiteral( "TodoTemplates" ) );
    }

    /**
      Get Item object corresponding to TodoTemplates()
    */
    ItemStringList *todoTemplatesItem()
    {
      return mTodoTemplatesItem;
    }

    /**
      Set JournalTemplates
    */
    void setJournalTemplates( const QStringList & v )
    {
      if (!isJournalTemplatesImmutable())
        mJournalTemplates = v;
    }

    /**
      Get JournalTemplates
    */
    QStringList journalTemplates() const
    {
      return mJournalTemplates;
    }

    /**
      Is JournalTemplates Immutable
    */
    bool isJournalTemplatesImmutable() const
    {
      return isImmutable( QStringLiteral( "JournalTemplates" ) );
    }

    /**
      Get Item object corresponding to JournalTemplates()
    */
    ItemStringList *journalTemplatesItem()
    {
      return mJournalTemplatesItem;
    }

    /**
      Set ActiveDesignerFields
    */
    void setActiveDesignerFields( const QStringList & v )
    {
      if (!isActiveDesignerFieldsImmutable())
        mActiveDesignerFields = v;
    }

    /**
      Get ActiveDesignerFields
    */
    QStringList activeDesignerFields() const
    {
      return mActiveDesignerFields;
    }

    /**
      Is ActiveDesignerFields Immutable
    */
    bool isActiveDesignerFieldsImmutable() const
    {
      return isImmutable( QStringLiteral( "ActiveDesignerFields" ) );
    }

    /**
      Get Item object corresponding to ActiveDesignerFields()
    */
    ItemStringList *activeDesignerFieldsItem()
    {
      return mActiveDesignerFieldsItem;
    }

    /**
      Set "No tag" color (for "Only tag" drawing schemes)
    */
    void setUnsetCategoryColor( const QColor & v )
    {
      if (!isUnsetCategoryColorImmutable())
        mUnsetCategoryColor = v;
    }

    /**
      Get "No tag" color (for "Only tag" drawing schemes)
    */
    QColor unsetCategoryColor() const
    {
      return mUnsetCategoryColor;
    }

    /**
      Is "No tag" color (for "Only tag" drawing schemes) Immutable
    */
    bool isUnsetCategoryColorImmutable() const
    {
      return isImmutable( QStringLiteral( "UnsetCategoryColor" ) );
    }

    /**
      Get Item object corresponding to UnsetCategoryColor()
    */
    ItemColor *unsetCategoryColorItem()
    {
      return mUnsetCategoryColorItem;
    }

  protected:
  public:

    // Personal Settings
    bool mEmailControlCenter;

    // Default Datetimes
    QDateTime mStartTime;
    QDateTime mDefaultDuration;
    bool mDefaultAudioFileReminders;
    QString mAudioFilePath;
    bool mDefaultEventReminders;
    bool mDefaultTodoReminders;
    int mReminderTime;
    int mReminderTimeUnits;

    // Time & Date
    QDateTime mDayBegins;
    bool mExcludeHolidays;
    QStringList mHolidays;

    // Group Scheduling
    bool mUseGroupwareCommunication;
    int mSendPolicy;
    QStringList mAdditionalMails;

    // Hidden Options
    bool mShowTimeZoneSelectorInIncidenceEditor;

    // Archive Dialog
    bool mAutoArchive;
    int mExpiryTime;
    int mExpiryUnit;
    QString mArchiveFile;
    bool mArchiveEvents;
    bool mArchiveTodos;
    int mArchiveAction;

    // Internal Settings
    int mWorkWeekMask;
    QString mUserName;
    QString mUserEmail;
    QStringList mEventTemplates;
    QStringList mTodoTemplates;
    QStringList mJournalTemplates;
    QStringList mActiveDesignerFields;

    // Colors
    QColor mUnsetCategoryColor;

  private:
    ItemBool *mEmailControlCenterItem;
    ItemDateTime *mStartTimeItem;
    ItemDateTime *mDefaultDurationItem;
    ItemBool *mDefaultAudioFileRemindersItem;
    ItemPath *mAudioFilePathItem;
    ItemBool *mDefaultEventRemindersItem;
    ItemBool *mDefaultTodoRemindersItem;
    ItemInt *mReminderTimeItem;
    ItemInt *mReminderTimeUnitsItem;
    ItemDateTime *mDayBeginsItem;
    ItemBool *mExcludeHolidaysItem;
    ItemStringList *mHolidaysItem;
    ItemBool *mUseGroupwareCommunicationItem;
    ItemEnum *mSendPolicyItem;
    ItemStringList *mAdditionalMailsItem;
    ItemBool *mShowTimeZoneSelectorInIncidenceEditorItem;
    ItemBool *mAutoArchiveItem;
    ItemInt *mExpiryTimeItem;
    ItemEnum *mExpiryUnitItem;
    ItemString *mArchiveFileItem;
    ItemBool *mArchiveEventsItem;
    ItemBool *mArchiveTodosItem;
    ItemEnum *mArchiveActionItem;
    ItemInt *mWorkWeekMaskItem;
    ItemString *mUserNameItem;
    ItemString *mUserEmailItem;
    ItemStringList *mEventTemplatesItem;
    ItemStringList *mTodoTemplatesItem;
    ItemStringList *mJournalTemplatesItem;
    ItemStringList *mActiveDesignerFieldsItem;
    ItemColor *mUnsetCategoryColorItem;
};

}

#endif

