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

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

#include <KColorScheme>
#include <QFontDatabase>
#include "timeformat.h"

class KronometerConfig : public KConfigSkeleton
{
  Q_OBJECT
  public:

    static KronometerConfig *self();
    ~KronometerConfig() override;

    /**
      Set startTimerImmediately
    */
    static
    void setStartTimerImmediately( bool v )
    {
      if (v != self()->mStartTimerImmediately && !self()->isStartTimerImmediatelyImmutable()) {
        self()->mStartTimerImmediately = v;
        Q_EMIT self()->startTimerImmediatelyChanged();
      }
    }

    Q_PROPERTY(bool startTimerImmediately READ startTimerImmediately WRITE setStartTimerImmediately NOTIFY startTimerImmediatelyChanged)
    Q_PROPERTY(bool isStartTimerImmediatelyImmutable READ isStartTimerImmediatelyImmutable CONSTANT)
    /**
      Get startTimerImmediately
    */
    static
    bool startTimerImmediately()
    {
      return self()->mStartTimerImmediately;
    }

    /**
      Is startTimerImmediately Immutable
    */
    static
    bool isStartTimerImmediatelyImmutable()
    {
      return self()->isImmutable( QStringLiteral( "startTimerImmediately" ) );
    }

    /**
      Set showHours
    */
    static
    void setShowHours( bool v )
    {
      if (v != self()->mShowHours && !self()->isShowHoursImmutable()) {
        self()->mShowHours = v;
        Q_EMIT self()->showHoursChanged();
      }
    }

    Q_PROPERTY(bool showHours READ showHours WRITE setShowHours NOTIFY showHoursChanged)
    Q_PROPERTY(bool isShowHoursImmutable READ isShowHoursImmutable CONSTANT)
    /**
      Get showHours
    */
    static
    bool showHours()
    {
      return self()->mShowHours;
    }

    /**
      Is showHours Immutable
    */
    static
    bool isShowHoursImmutable()
    {
      return self()->isImmutable( QStringLiteral( "showHours" ) );
    }

    /**
      Set showMinutes
    */
    static
    void setShowMinutes( bool v )
    {
      if (v != self()->mShowMinutes && !self()->isShowMinutesImmutable()) {
        self()->mShowMinutes = v;
        Q_EMIT self()->showMinutesChanged();
      }
    }

    Q_PROPERTY(bool showMinutes READ showMinutes WRITE setShowMinutes NOTIFY showMinutesChanged)
    Q_PROPERTY(bool isShowMinutesImmutable READ isShowMinutesImmutable CONSTANT)
    /**
      Get showMinutes
    */
    static
    bool showMinutes()
    {
      return self()->mShowMinutes;
    }

    /**
      Is showMinutes Immutable
    */
    static
    bool isShowMinutesImmutable()
    {
      return self()->isImmutable( QStringLiteral( "showMinutes" ) );
    }

    /**
      Set showSecondFractions
    */
    static
    void setShowSecondFractions( bool v )
    {
      if (v != self()->mShowSecondFractions && !self()->isShowSecondFractionsImmutable()) {
        self()->mShowSecondFractions = v;
        Q_EMIT self()->showSecondFractionsChanged();
      }
    }

    Q_PROPERTY(bool showSecondFractions READ showSecondFractions WRITE setShowSecondFractions NOTIFY showSecondFractionsChanged)
    Q_PROPERTY(bool isShowSecondFractionsImmutable READ isShowSecondFractionsImmutable CONSTANT)
    /**
      Get showSecondFractions
    */
    static
    bool showSecondFractions()
    {
      return self()->mShowSecondFractions;
    }

    /**
      Is showSecondFractions Immutable
    */
    static
    bool isShowSecondFractionsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "showSecondFractions" ) );
    }

    /**
      Set fractionsType
    */
    static
    void setFractionsType( TimeFormat::SecondFraction v )
    {
      if (v != self()->mFractionsType && !self()->isFractionsTypeImmutable()) {
        self()->mFractionsType = v;
        Q_EMIT self()->fractionsTypeChanged();
      }
    }

    Q_PROPERTY(TimeFormat::SecondFraction fractionsType READ fractionsType WRITE setFractionsType NOTIFY fractionsTypeChanged)
    Q_PROPERTY(bool isFractionsTypeImmutable READ isFractionsTypeImmutable CONSTANT)
    /**
      Get fractionsType
    */
    static
    TimeFormat::SecondFraction fractionsType()
    {
      return static_cast<TimeFormat::SecondFraction>(self()->mFractionsType);
    }

    /**
      Is fractionsType Immutable
    */
    static
    bool isFractionsTypeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "fractionsType" ) );
    }

    /**
      Set isLapsRecordingEnabled
    */
    static
    void setIsLapsRecordingEnabled( bool v )
    {
      if (v != self()->mIsLapsRecordingEnabled && !self()->isIsLapsRecordingEnabledImmutable()) {
        self()->mIsLapsRecordingEnabled = v;
        Q_EMIT self()->isLapsRecordingEnabledChanged();
      }
    }

    Q_PROPERTY(bool isLapsRecordingEnabled READ isLapsRecordingEnabled WRITE setIsLapsRecordingEnabled NOTIFY isLapsRecordingEnabledChanged)
    Q_PROPERTY(bool isIsLapsRecordingEnabledImmutable READ isIsLapsRecordingEnabledImmutable CONSTANT)
    /**
      Get isLapsRecordingEnabled
    */
    static
    bool isLapsRecordingEnabled()
    {
      return self()->mIsLapsRecordingEnabled;
    }

    /**
      Is isLapsRecordingEnabled Immutable
    */
    static
    bool isIsLapsRecordingEnabledImmutable()
    {
      return self()->isImmutable( QStringLiteral( "isLapsRecordingEnabled" ) );
    }

    /**
      Set showLapHours
    */
    static
    void setShowLapHours( bool v )
    {
      if (v != self()->mShowLapHours && !self()->isShowLapHoursImmutable()) {
        self()->mShowLapHours = v;
        Q_EMIT self()->showLapHoursChanged();
      }
    }

    Q_PROPERTY(bool showLapHours READ showLapHours WRITE setShowLapHours NOTIFY showLapHoursChanged)
    Q_PROPERTY(bool isShowLapHoursImmutable READ isShowLapHoursImmutable CONSTANT)
    /**
      Get showLapHours
    */
    static
    bool showLapHours()
    {
      return self()->mShowLapHours;
    }

    /**
      Is showLapHours Immutable
    */
    static
    bool isShowLapHoursImmutable()
    {
      return self()->isImmutable( QStringLiteral( "showLapHours" ) );
    }

    /**
      Set showLapMinutes
    */
    static
    void setShowLapMinutes( bool v )
    {
      if (v != self()->mShowLapMinutes && !self()->isShowLapMinutesImmutable()) {
        self()->mShowLapMinutes = v;
        Q_EMIT self()->showLapMinutesChanged();
      }
    }

    Q_PROPERTY(bool showLapMinutes READ showLapMinutes WRITE setShowLapMinutes NOTIFY showLapMinutesChanged)
    Q_PROPERTY(bool isShowLapMinutesImmutable READ isShowLapMinutesImmutable CONSTANT)
    /**
      Get showLapMinutes
    */
    static
    bool showLapMinutes()
    {
      return self()->mShowLapMinutes;
    }

    /**
      Is showLapMinutes Immutable
    */
    static
    bool isShowLapMinutesImmutable()
    {
      return self()->isImmutable( QStringLiteral( "showLapMinutes" ) );
    }

    /**
      Set showLapSecondFractions
    */
    static
    void setShowLapSecondFractions( bool v )
    {
      if (v != self()->mShowLapSecondFractions && !self()->isShowLapSecondFractionsImmutable()) {
        self()->mShowLapSecondFractions = v;
        Q_EMIT self()->showLapSecondFractionsChanged();
      }
    }

    Q_PROPERTY(bool showLapSecondFractions READ showLapSecondFractions WRITE setShowLapSecondFractions NOTIFY showLapSecondFractionsChanged)
    Q_PROPERTY(bool isShowLapSecondFractionsImmutable READ isShowLapSecondFractionsImmutable CONSTANT)
    /**
      Get showLapSecondFractions
    */
    static
    bool showLapSecondFractions()
    {
      return self()->mShowLapSecondFractions;
    }

    /**
      Is showLapSecondFractions Immutable
    */
    static
    bool isShowLapSecondFractionsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "showLapSecondFractions" ) );
    }

    /**
      Set lapFractionsType
    */
    static
    void setLapFractionsType( TimeFormat::SecondFraction v )
    {
      if (v != self()->mLapFractionsType && !self()->isLapFractionsTypeImmutable()) {
        self()->mLapFractionsType = v;
        Q_EMIT self()->lapFractionsTypeChanged();
      }
    }

    Q_PROPERTY(TimeFormat::SecondFraction lapFractionsType READ lapFractionsType WRITE setLapFractionsType NOTIFY lapFractionsTypeChanged)
    Q_PROPERTY(bool isLapFractionsTypeImmutable READ isLapFractionsTypeImmutable CONSTANT)
    /**
      Get lapFractionsType
    */
    static
    TimeFormat::SecondFraction lapFractionsType()
    {
      return static_cast<TimeFormat::SecondFraction>(self()->mLapFractionsType);
    }

    /**
      Is lapFractionsType Immutable
    */
    static
    bool isLapFractionsTypeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "lapFractionsType" ) );
    }

    /**
      Set showLapAbsoluteTimes
    */
    static
    void setShowLapAbsoluteTimes( bool v )
    {
      if (v != self()->mShowLapAbsoluteTimes && !self()->isShowLapAbsoluteTimesImmutable()) {
        self()->mShowLapAbsoluteTimes = v;
        Q_EMIT self()->showLapAbsoluteTimesChanged();
      }
    }

    Q_PROPERTY(bool showLapAbsoluteTimes READ showLapAbsoluteTimes WRITE setShowLapAbsoluteTimes NOTIFY showLapAbsoluteTimesChanged)
    Q_PROPERTY(bool isShowLapAbsoluteTimesImmutable READ isShowLapAbsoluteTimesImmutable CONSTANT)
    /**
      Get showLapAbsoluteTimes
    */
    static
    bool showLapAbsoluteTimes()
    {
      return self()->mShowLapAbsoluteTimes;
    }

    /**
      Is showLapAbsoluteTimes Immutable
    */
    static
    bool isShowLapAbsoluteTimesImmutable()
    {
      return self()->isImmutable( QStringLiteral( "showLapAbsoluteTimes" ) );
    }

    /**
      Set showLapNotes
    */
    static
    void setShowLapNotes( bool v )
    {
      if (v != self()->mShowLapNotes && !self()->isShowLapNotesImmutable()) {
        self()->mShowLapNotes = v;
        Q_EMIT self()->showLapNotesChanged();
      }
    }

    Q_PROPERTY(bool showLapNotes READ showLapNotes WRITE setShowLapNotes NOTIFY showLapNotesChanged)
    Q_PROPERTY(bool isShowLapNotesImmutable READ isShowLapNotesImmutable CONSTANT)
    /**
      Get showLapNotes
    */
    static
    bool showLapNotes()
    {
      return self()->mShowLapNotes;
    }

    /**
      Is showLapNotes Immutable
    */
    static
    bool isShowLapNotesImmutable()
    {
      return self()->isImmutable( QStringLiteral( "showLapNotes" ) );
    }

    /**
      Set menuBarNeverShown
    */
    static
    void setMenuBarNeverShown( bool v )
    {
      if (v != self()->mMenuBarNeverShown && !self()->isMenuBarNeverShownImmutable()) {
        self()->mMenuBarNeverShown = v;
        Q_EMIT self()->menuBarNeverShownChanged();
      }
    }

    Q_PROPERTY(bool menuBarNeverShown READ menuBarNeverShown WRITE setMenuBarNeverShown NOTIFY menuBarNeverShownChanged)
    Q_PROPERTY(bool isMenuBarNeverShownImmutable READ isMenuBarNeverShownImmutable CONSTANT)
    /**
      Get menuBarNeverShown
    */
    static
    bool menuBarNeverShown()
    {
      return self()->mMenuBarNeverShown;
    }

    /**
      Is menuBarNeverShown Immutable
    */
    static
    bool isMenuBarNeverShownImmutable()
    {
      return self()->isImmutable( QStringLiteral( "menuBarNeverShown" ) );
    }

    /**
      Set hourFont
    */
    static
    void setHourFont( const QFont & v )
    {
      if (v != self()->mHourFont && !self()->isHourFontImmutable()) {
        self()->mHourFont = v;
        Q_EMIT self()->hourFontChanged();
      }
    }

    Q_PROPERTY(QFont hourFont READ hourFont WRITE setHourFont NOTIFY hourFontChanged)
    Q_PROPERTY(bool isHourFontImmutable READ isHourFontImmutable CONSTANT)
    /**
      Get hourFont
    */
    static
    QFont hourFont()
    {
      return self()->mHourFont;
    }

    /**
      Is hourFont Immutable
    */
    static
    bool isHourFontImmutable()
    {
      return self()->isImmutable( QStringLiteral( "hourFont" ) );
    }

    /**
      Set minFont
    */
    static
    void setMinFont( const QFont & v )
    {
      if (v != self()->mMinFont && !self()->isMinFontImmutable()) {
        self()->mMinFont = v;
        Q_EMIT self()->minFontChanged();
      }
    }

    Q_PROPERTY(QFont minFont READ minFont WRITE setMinFont NOTIFY minFontChanged)
    Q_PROPERTY(bool isMinFontImmutable READ isMinFontImmutable CONSTANT)
    /**
      Get minFont
    */
    static
    QFont minFont()
    {
      return self()->mMinFont;
    }

    /**
      Is minFont Immutable
    */
    static
    bool isMinFontImmutable()
    {
      return self()->isImmutable( QStringLiteral( "minFont" ) );
    }

    /**
      Set secFont
    */
    static
    void setSecFont( const QFont & v )
    {
      if (v != self()->mSecFont && !self()->isSecFontImmutable()) {
        self()->mSecFont = v;
        Q_EMIT self()->secFontChanged();
      }
    }

    Q_PROPERTY(QFont secFont READ secFont WRITE setSecFont NOTIFY secFontChanged)
    Q_PROPERTY(bool isSecFontImmutable READ isSecFontImmutable CONSTANT)
    /**
      Get secFont
    */
    static
    QFont secFont()
    {
      return self()->mSecFont;
    }

    /**
      Is secFont Immutable
    */
    static
    bool isSecFontImmutable()
    {
      return self()->isImmutable( QStringLiteral( "secFont" ) );
    }

    /**
      Set fracFont
    */
    static
    void setFracFont( const QFont & v )
    {
      if (v != self()->mFracFont && !self()->isFracFontImmutable()) {
        self()->mFracFont = v;
        Q_EMIT self()->fracFontChanged();
      }
    }

    Q_PROPERTY(QFont fracFont READ fracFont WRITE setFracFont NOTIFY fracFontChanged)
    Q_PROPERTY(bool isFracFontImmutable READ isFracFontImmutable CONSTANT)
    /**
      Get fracFont
    */
    static
    QFont fracFont()
    {
      return self()->mFracFont;
    }

    /**
      Is fracFont Immutable
    */
    static
    bool isFracFontImmutable()
    {
      return self()->isImmutable( QStringLiteral( "fracFont" ) );
    }

    /**
      Set backgroundColor
    */
    static
    void setBackgroundColor( const QColor & v )
    {
      if (v != self()->mBackgroundColor && !self()->isBackgroundColorImmutable()) {
        self()->mBackgroundColor = v;
        Q_EMIT self()->backgroundColorChanged();
      }
    }

    Q_PROPERTY(QColor backgroundColor READ backgroundColor WRITE setBackgroundColor NOTIFY backgroundColorChanged)
    Q_PROPERTY(bool isBackgroundColorImmutable READ isBackgroundColorImmutable CONSTANT)
    /**
      Get backgroundColor
    */
    static
    QColor backgroundColor()
    {
      return self()->mBackgroundColor;
    }

    /**
      Is backgroundColor Immutable
    */
    static
    bool isBackgroundColorImmutable()
    {
      return self()->isImmutable( QStringLiteral( "backgroundColor" ) );
    }

    /**
      Set textColor
    */
    static
    void setTextColor( const QColor & v )
    {
      if (v != self()->mTextColor && !self()->isTextColorImmutable()) {
        self()->mTextColor = v;
        Q_EMIT self()->textColorChanged();
      }
    }

    Q_PROPERTY(QColor textColor READ textColor WRITE setTextColor NOTIFY textColorChanged)
    Q_PROPERTY(bool isTextColorImmutable READ isTextColorImmutable CONSTANT)
    /**
      Get textColor
    */
    static
    QColor textColor()
    {
      return self()->mTextColor;
    }

    /**
      Is textColor Immutable
    */
    static
    bool isTextColorImmutable()
    {
      return self()->isImmutable( QStringLiteral( "textColor" ) );
    }


    enum {
      signalStartTimerImmediatelyChanged = 1,
      signalShowHoursChanged = 2,
      signalShowMinutesChanged = 3,
      signalShowSecondFractionsChanged = 4,
      signalFractionsTypeChanged = 5,
      signalIsLapsRecordingEnabledChanged = 6,
      signalShowLapHoursChanged = 7,
      signalShowLapMinutesChanged = 8,
      signalShowLapSecondFractionsChanged = 9,
      signalLapFractionsTypeChanged = 10,
      signalShowLapAbsoluteTimesChanged = 11,
      signalShowLapNotesChanged = 12,
      signalMenuBarNeverShownChanged = 13,
      signalHourFontChanged = 14,
      signalMinFontChanged = 15,
      signalSecFontChanged = 16,
      signalFracFontChanged = 17,
      signalBackgroundColorChanged = 18,
      signalTextColorChanged = 19
    };

  Q_SIGNALS:
    void startTimerImmediatelyChanged();

    void showHoursChanged();

    void showMinutesChanged();

    void showSecondFractionsChanged();

    void fractionsTypeChanged();

    void isLapsRecordingEnabledChanged();

    void showLapHoursChanged();

    void showLapMinutesChanged();

    void showLapSecondFractionsChanged();

    void lapFractionsTypeChanged();

    void showLapAbsoluteTimesChanged();

    void showLapNotesChanged();

    void menuBarNeverShownChanged();

    void hourFontChanged();

    void minFontChanged();

    void secFontChanged();

    void fracFontChanged();

    void backgroundColorChanged();

    void textColorChanged();

  private:
    void itemChanged(quint64 signalFlag);

  protected:
    KronometerConfig();
    friend class KronometerConfigHelper;


    // General
    bool mStartTimerImmediately;
    bool mShowHours;
    bool mShowMinutes;
    bool mShowSecondFractions;
    int mFractionsType;
    bool mIsLapsRecordingEnabled;
    bool mShowLapHours;
    bool mShowLapMinutes;
    bool mShowLapSecondFractions;
    int mLapFractionsType;
    bool mShowLapAbsoluteTimes;
    bool mShowLapNotes;
    bool mMenuBarNeverShown;

    // Font
    QFont mHourFont;
    QFont mMinFont;
    QFont mSecFont;
    QFont mFracFont;

    // Color
    QColor mBackgroundColor;
    QColor mTextColor;

  private:
};

#endif

