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

#include <okularcore_export.h>

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

#include <kuser.h>

namespace Okular {

class SettingsCorePrivate;

class OKULARCORE_EXPORT SettingsCore : public KConfigSkeleton
{
  Q_OBJECT
  public:
    class EnumMemoryLevel
    {
      public:
      enum type { Low, Normal, Aggressive, Greedy, COUNT };
    };
    class EnumTextAntialias
    {
      public:
      enum type { Disabled, Enabled, COUNT };
    };
    class EnumGraphicsAntialias
    {
      public:
      enum type { Disabled, Enabled, COUNT };
    };
    class EnumTextHinting
    {
      public:
      enum type { Disabled, Enabled, COUNT };
    };
    class EnumRenderMode
    {
      public:
      enum type { Inverted, Paper, Recolor, BlackWhite, InvertLightness, InvertLuma, InvertLumaSymmetric, HueShiftPositive, HueShiftNegative, COUNT };
    };
    class EnumExternalEditor
    {
      public:
      enum type { Custom, Kate, Kile, Scite, Emacsclient, Lyxclient, Texstudio, Texifyidea, COUNT };
    };
    class EnumSlidesTapNavigation
    {
      public:
      enum type { ForwardBackward, Forward, Disabled, COUNT };
    };

    static SettingsCore *self();
    static void instance(const QString& cfgfilename);
    static void instance(KSharedConfig::Ptr config);
    ~SettingsCore() override;

    /**
      Set MemoryLevel
    */
    static
    void setMemoryLevel( int v );

    /**
      Get MemoryLevel
    */
    static
    int memoryLevel();

    /**
      Is MemoryLevel Immutable
    */
    static
    bool isMemoryLevelImmutable();

    /**
      Set EnableThreading
    */
    static
    void setEnableThreading( bool v );

    /**
      Get EnableThreading
    */
    static
    bool enableThreading();

    /**
      Is EnableThreading Immutable
    */
    static
    bool isEnableThreadingImmutable();

    /**
      Set TextAntialias
    */
    static
    void setTextAntialias( int v );

    /**
      Get TextAntialias
    */
    static
    int textAntialias();

    /**
      Is TextAntialias Immutable
    */
    static
    bool isTextAntialiasImmutable();

    /**
      Set GraphicsAntialias
    */
    static
    void setGraphicsAntialias( int v );

    /**
      Get GraphicsAntialias
    */
    static
    int graphicsAntialias();

    /**
      Is GraphicsAntialias Immutable
    */
    static
    bool isGraphicsAntialiasImmutable();

    /**
      Set TextHinting
    */
    static
    void setTextHinting( int v );

    /**
      Get TextHinting
    */
    static
    int textHinting();

    /**
      Is TextHinting Immutable
    */
    static
    bool isTextHintingImmutable();

    /**
      Set PaperColor
    */
    static
    void setPaperColor( const QColor & v );

    /**
      Get PaperColor
    */
    static
    QColor paperColor();

    /**
      Is PaperColor Immutable
    */
    static
    bool isPaperColorImmutable();

    /**
      Set ChangeColors
    */
    static
    void setChangeColors( bool v );

    /**
      Get ChangeColors
    */
    static
    bool changeColors();

    /**
      Is ChangeColors Immutable
    */
    static
    bool isChangeColorsImmutable();

    /**
      Set RenderMode
    */
    static
    void setRenderMode( int v );

    /**
      Get RenderMode
    */
    static
    int renderMode();

    /**
      Is RenderMode Immutable
    */
    static
    bool isRenderModeImmutable();

    /**
      Set ObeyDRM
    */
    static
    void setObeyDRM( bool v );

    /**
      Get ObeyDRM
    */
    static
    bool obeyDRM();

    /**
      Is ObeyDRM Immutable
    */
    static
    bool isObeyDRMImmutable();

    /**
      Set ChooseGenerators
    */
    static
    void setChooseGenerators( bool v );

    /**
      Get ChooseGenerators
    */
    static
    bool chooseGenerators();

    /**
      Is ChooseGenerators Immutable
    */
    static
    bool isChooseGeneratorsImmutable();

    /**
      Set ExternalEditor
    */
    static
    void setExternalEditor( int v );

    /**
      Get ExternalEditor
    */
    static
    int externalEditor();

    /**
      Is ExternalEditor Immutable
    */
    static
    bool isExternalEditorImmutable();

    /**
      Set ExternalEditorCommand
    */
    static
    void setExternalEditorCommand( const QString & v );

    /**
      Get ExternalEditorCommand
    */
    static
    QString externalEditorCommand();

    /**
      Is ExternalEditorCommand Immutable
    */
    static
    bool isExternalEditorCommandImmutable();

    /**
      Set SlidesAdvance
    */
    static
    void setSlidesAdvance( bool v );

    /**
      Get SlidesAdvance
    */
    static
    bool slidesAdvance();

    /**
      Is SlidesAdvance Immutable
    */
    static
    bool isSlidesAdvanceImmutable();

    /**
      Set SlidesAdvanceTime
    */
    static
    void setSlidesAdvanceTime( uint v );

    /**
      Get SlidesAdvanceTime
    */
    static
    uint slidesAdvanceTime();

    /**
      Is SlidesAdvanceTime Immutable
    */
    static
    bool isSlidesAdvanceTimeImmutable();

    /**
      Set SlidesLoop
    */
    static
    void setSlidesLoop( bool v );

    /**
      Get SlidesLoop
    */
    static
    bool slidesLoop();

    /**
      Is SlidesLoop Immutable
    */
    static
    bool isSlidesLoopImmutable();

    /**
      Set SlidesTapNavigation
    */
    static
    void setSlidesTapNavigation( int v );

    /**
      Get SlidesTapNavigation
    */
    static
    int slidesTapNavigation();

    /**
      Is SlidesTapNavigation Immutable
    */
    static
    bool isSlidesTapNavigationImmutable();


    enum {
      signalColorModesChanged = 0x1
    };

  Q_SIGNALS:
    void colorModesChanged();

  private:
    void itemChanged(quint64 flags);

  protected:
    SettingsCore(KSharedConfig::Ptr config);
    friend class SettingsCoreHelper;

    bool usrSave() override;
  private:
    SettingsCorePrivate *d;
};

}

#endif

