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

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

class FontsSettings : public KConfigSkeleton
{
  Q_OBJECT
  public:

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

    /**
      Set General font
    */
    void setFont( const QFont & v )
    {
      if (v != mFont && !isFontImmutable()) {
        mFont = v;
        Q_EMIT fontChanged();
      }
    }

    Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY fontChanged)
    Q_PROPERTY(bool isFontImmutable READ isFontImmutable CONSTANT)
    Q_PROPERTY(QFont defaultFontValue READ defaultFontValue CONSTANT)
    /**
      Get General font
    */
    QFont font() const
    {
      return mFont;
    }

    /**
      Is General font Immutable
    */
    bool isFontImmutable() const
    {
      return isImmutable( QStringLiteral( "font" ) );
    }

    /**
      Get General font default value
    */
    QFont defaultFontValue() const
    {
        return defaultFontValue_helper();
    }

    /**
      Set Fixed width font
    */
    void setFixed( const QFont & v )
    {
      if (v != mFixed && !isFixedImmutable()) {
        mFixed = v;
        Q_EMIT fixedChanged();
      }
    }

    Q_PROPERTY(QFont fixed READ fixed WRITE setFixed NOTIFY fixedChanged)
    Q_PROPERTY(bool isFixedImmutable READ isFixedImmutable CONSTANT)
    Q_PROPERTY(QFont defaultFixedValue READ defaultFixedValue CONSTANT)
    /**
      Get Fixed width font
    */
    QFont fixed() const
    {
      return mFixed;
    }

    /**
      Is Fixed width font Immutable
    */
    bool isFixedImmutable() const
    {
      return isImmutable( QStringLiteral( "fixed" ) );
    }

    /**
      Get Fixed width font default value
    */
    QFont defaultFixedValue() const
    {
        return defaultFixedValue_helper();
    }

    /**
      Set Small font
    */
    void setSmallestReadableFont( const QFont & v )
    {
      if (v != mSmallestReadableFont && !isSmallestReadableFontImmutable()) {
        mSmallestReadableFont = v;
        Q_EMIT smallestReadableFontChanged();
      }
    }

    Q_PROPERTY(QFont smallestReadableFont READ smallestReadableFont WRITE setSmallestReadableFont NOTIFY smallestReadableFontChanged)
    Q_PROPERTY(bool isSmallestReadableFontImmutable READ isSmallestReadableFontImmutable CONSTANT)
    Q_PROPERTY(QFont defaultSmallestReadableFontValue READ defaultSmallestReadableFontValue CONSTANT)
    /**
      Get Small font
    */
    QFont smallestReadableFont() const
    {
      return mSmallestReadableFont;
    }

    /**
      Is Small font Immutable
    */
    bool isSmallestReadableFontImmutable() const
    {
      return isImmutable( QStringLiteral( "smallestReadableFont" ) );
    }

    /**
      Get Small font default value
    */
    QFont defaultSmallestReadableFontValue() const
    {
        return defaultSmallestReadableFontValue_helper();
    }

    /**
      Set Tool bar font
    */
    void setToolBarFont( const QFont & v )
    {
      if (v != mToolBarFont && !isToolBarFontImmutable()) {
        mToolBarFont = v;
        Q_EMIT toolBarFontChanged();
      }
    }

    Q_PROPERTY(QFont toolBarFont READ toolBarFont WRITE setToolBarFont NOTIFY toolBarFontChanged)
    Q_PROPERTY(bool isToolBarFontImmutable READ isToolBarFontImmutable CONSTANT)
    Q_PROPERTY(QFont defaultToolBarFontValue READ defaultToolBarFontValue CONSTANT)
    /**
      Get Tool bar font
    */
    QFont toolBarFont() const
    {
      return mToolBarFont;
    }

    /**
      Is Tool bar font Immutable
    */
    bool isToolBarFontImmutable() const
    {
      return isImmutable( QStringLiteral( "toolBarFont" ) );
    }

    /**
      Get Tool bar font default value
    */
    QFont defaultToolBarFontValue() const
    {
        return defaultToolBarFontValue_helper();
    }

    /**
      Set Menu font
    */
    void setMenuFont( const QFont & v )
    {
      if (v != mMenuFont && !isMenuFontImmutable()) {
        mMenuFont = v;
        Q_EMIT menuFontChanged();
      }
    }

    Q_PROPERTY(QFont menuFont READ menuFont WRITE setMenuFont NOTIFY menuFontChanged)
    Q_PROPERTY(bool isMenuFontImmutable READ isMenuFontImmutable CONSTANT)
    Q_PROPERTY(QFont defaultMenuFontValue READ defaultMenuFontValue CONSTANT)
    /**
      Get Menu font
    */
    QFont menuFont() const
    {
      return mMenuFont;
    }

    /**
      Is Menu font Immutable
    */
    bool isMenuFontImmutable() const
    {
      return isImmutable( QStringLiteral( "menuFont" ) );
    }

    /**
      Get Menu font default value
    */
    QFont defaultMenuFontValue() const
    {
        return defaultMenuFontValue_helper();
    }

    /**
      Set Window title font
    */
    void setActiveFont( const QFont & v )
    {
      if (v != mActiveFont && !isActiveFontImmutable()) {
        mActiveFont = v;
        Q_EMIT activeFontChanged();
      }
    }

    Q_PROPERTY(QFont activeFont READ activeFont WRITE setActiveFont NOTIFY activeFontChanged)
    Q_PROPERTY(bool isActiveFontImmutable READ isActiveFontImmutable CONSTANT)
    Q_PROPERTY(QFont defaultActiveFontValue READ defaultActiveFontValue CONSTANT)
    /**
      Get Window title font
    */
    QFont activeFont() const
    {
      return mActiveFont;
    }

    /**
      Is Window title font Immutable
    */
    bool isActiveFontImmutable() const
    {
      return isImmutable( QStringLiteral( "activeFont" ) );
    }

    /**
      Get Window title font default value
    */
    QFont defaultActiveFontValue() const
    {
        return defaultActiveFontValue_helper();
    }


    enum {
      signalFontChanged = 1,
      signalFixedChanged = 2,
      signalSmallestReadableFontChanged = 3,
      signalToolBarFontChanged = 4,
      signalMenuFontChanged = 5,
      signalActiveFontChanged = 6
    };

  Q_SIGNALS:
    void fontChanged();

    void fixedChanged();

    void smallestReadableFontChanged();

    void toolBarFontChanged();

    void menuFontChanged();

    void activeFontChanged();

  private:
    void itemChanged(quint64 signalFlag);

  protected:

    // General
    QFont mFont;
    QFont defaultFontValue_helper() const;
    QFont mFixed;
    QFont defaultFixedValue_helper() const;
    QFont mSmallestReadableFont;
    QFont defaultSmallestReadableFontValue_helper() const;
    QFont mToolBarFont;
    QFont defaultToolBarFontValue_helper() const;
    QFont mMenuFont;
    QFont defaultMenuFontValue_helper() const;

    // WM
    QFont mActiveFont;
    QFont defaultActiveFontValue_helper() const;
};

#endif

