// This file is generated by kconfig_compiler_kf6 from donotdisturbsettings.kcfg.
// All changes you do to this file will be lost.
#ifndef NOTIFICATIONMANAGER_DONOTDISTURBSETTINGS_H
#define NOTIFICATIONMANAGER_DONOTDISTURBSETTINGS_H

#include "notificationmanager_export.h"

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

namespace NotificationManager {

class NOTIFICATIONMANAGER_EXPORT DoNotDisturbSettings : public KConfigSkeleton
{
  Q_OBJECT
  public:

    DoNotDisturbSettings( QObject *parent = nullptr );
    ~DoNotDisturbSettings() override;

    /**
      Set Until
    */
    void setUntil( const QDateTime & v )
    {
      if (v != mUntil && !isUntilImmutable()) {
        mUntil = v;
        Q_EMIT UntilChanged();
      }
    }

    Q_PROPERTY(QDateTime until READ until WRITE setUntil NOTIFY UntilChanged)
    Q_PROPERTY(bool isUntilImmutable READ isUntilImmutable CONSTANT)
    /**
      Get Until
    */
    QDateTime until() const
    {
      return mUntil;
    }

    /**
      Is Until Immutable
    */
    bool isUntilImmutable() const
    {
      return isImmutable( QStringLiteral( "Until" ) );
    }

    /**
      Set WhenScreensMirrored
    */
    void setWhenScreensMirrored( bool v )
    {
      if (v != mWhenScreensMirrored && !isWhenScreensMirroredImmutable()) {
        mWhenScreensMirrored = v;
        Q_EMIT WhenScreensMirroredChanged();
      }
    }

    Q_PROPERTY(bool whenScreensMirrored READ whenScreensMirrored WRITE setWhenScreensMirrored NOTIFY WhenScreensMirroredChanged)
    Q_PROPERTY(bool isWhenScreensMirroredImmutable READ isWhenScreensMirroredImmutable CONSTANT)
    Q_PROPERTY(bool defaultWhenScreensMirroredValue READ defaultWhenScreensMirroredValue CONSTANT)
    /**
      Get WhenScreensMirrored
    */
    bool whenScreensMirrored() const
    {
      return mWhenScreensMirrored;
    }

    /**
      Is WhenScreensMirrored Immutable
    */
    bool isWhenScreensMirroredImmutable() const
    {
      return isImmutable( QStringLiteral( "WhenScreensMirrored" ) );
    }

    /**
      Get WhenScreensMirrored default value
    */
    bool defaultWhenScreensMirroredValue() const
    {
        return defaultWhenScreensMirroredValue_helper();
    }

    /**
      Set WhenScreenSharing
    */
    void setWhenScreenSharing( bool v )
    {
      if (v != mWhenScreenSharing && !isWhenScreenSharingImmutable()) {
        mWhenScreenSharing = v;
        Q_EMIT WhenScreenSharingChanged();
      }
    }

    Q_PROPERTY(bool whenScreenSharing READ whenScreenSharing WRITE setWhenScreenSharing NOTIFY WhenScreenSharingChanged)
    Q_PROPERTY(bool isWhenScreenSharingImmutable READ isWhenScreenSharingImmutable CONSTANT)
    Q_PROPERTY(bool defaultWhenScreenSharingValue READ defaultWhenScreenSharingValue CONSTANT)
    /**
      Get WhenScreenSharing
    */
    bool whenScreenSharing() const
    {
      return mWhenScreenSharing;
    }

    /**
      Is WhenScreenSharing Immutable
    */
    bool isWhenScreenSharingImmutable() const
    {
      return isImmutable( QStringLiteral( "WhenScreenSharing" ) );
    }

    /**
      Get WhenScreenSharing default value
    */
    bool defaultWhenScreenSharingValue() const
    {
        return defaultWhenScreenSharingValue_helper();
    }

    /**
      Set WhenFullscreen
    */
    void setWhenFullscreen( bool v )
    {
      if (v != mWhenFullscreen && !isWhenFullscreenImmutable()) {
        mWhenFullscreen = v;
        Q_EMIT WhenFullscreenChanged();
      }
    }

    Q_PROPERTY(bool whenFullscreen READ whenFullscreen WRITE setWhenFullscreen NOTIFY WhenFullscreenChanged)
    Q_PROPERTY(bool isWhenFullscreenImmutable READ isWhenFullscreenImmutable CONSTANT)
    Q_PROPERTY(bool defaultWhenFullscreenValue READ defaultWhenFullscreenValue CONSTANT)
    /**
      Get WhenFullscreen
    */
    bool whenFullscreen() const
    {
      return mWhenFullscreen;
    }

    /**
      Is WhenFullscreen Immutable
    */
    bool isWhenFullscreenImmutable() const
    {
      return isImmutable( QStringLiteral( "WhenFullscreen" ) );
    }

    /**
      Get WhenFullscreen default value
    */
    bool defaultWhenFullscreenValue() const
    {
        return defaultWhenFullscreenValue_helper();
    }

    /**
      Set NotificationSoundsMuted
    */
    void setNotificationSoundsMuted( bool v )
    {
      if (v != mNotificationSoundsMuted && !isNotificationSoundsMutedImmutable()) {
        mNotificationSoundsMuted = v;
        Q_EMIT NotificationSoundsMutedChanged();
      }
    }

    Q_PROPERTY(bool notificationSoundsMuted READ notificationSoundsMuted WRITE setNotificationSoundsMuted NOTIFY NotificationSoundsMutedChanged)
    Q_PROPERTY(bool isNotificationSoundsMutedImmutable READ isNotificationSoundsMutedImmutable CONSTANT)
    Q_PROPERTY(bool defaultNotificationSoundsMutedValue READ defaultNotificationSoundsMutedValue CONSTANT)
    /**
      Get NotificationSoundsMuted
    */
    bool notificationSoundsMuted() const
    {
      return mNotificationSoundsMuted;
    }

    /**
      Is NotificationSoundsMuted Immutable
    */
    bool isNotificationSoundsMutedImmutable() const
    {
      return isImmutable( QStringLiteral( "NotificationSoundsMuted" ) );
    }

    /**
      Get NotificationSoundsMuted default value
    */
    bool defaultNotificationSoundsMutedValue() const
    {
        return defaultNotificationSoundsMutedValue_helper();
    }


    enum {
      signalUntilChanged = 1,
      signalWhenScreensMirroredChanged = 2,
      signalWhenScreenSharingChanged = 3,
      signalWhenFullscreenChanged = 4,
      signalNotificationSoundsMutedChanged = 5
    };

  Q_SIGNALS:
    void UntilChanged();

    void WhenScreensMirroredChanged();

    void WhenScreenSharingChanged();

    void WhenFullscreenChanged();

    void NotificationSoundsMutedChanged();

  private:
    void itemChanged(quint64 signalFlag);

  protected:

    // DoNotDisturb
    QDateTime mUntil;
    QDateTime defaultUntilValue_helper() const;
    bool mWhenScreensMirrored;
    bool defaultWhenScreensMirroredValue_helper() const;
    bool mWhenScreenSharing;
    bool defaultWhenScreenSharingValue_helper() const;
    bool mWhenFullscreen;
    bool defaultWhenFullscreenValue_helper() const;
    bool mNotificationSoundsMuted;
    bool defaultNotificationSoundsMutedValue_helper() const;

  private:
};

}

#endif

