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

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

#include <QFontDatabase>
class Prefs : public KConfigSkeleton
{
  public:
    class EnumStartSession
    {
      public:
      enum type { Editor, Flashcard, MultipleChoice, QA, COUNT };
    };
    class EnumPrintStyle
    {
      public:
      enum type { List, Exam, Flashcard, COUNT };
    };
    class EnumTutorTiming
    {
      public:
      enum type { FixedInterval, RandomInterval, COUNT };
    };
    class EnumTutorCardAppearance
    {
      public:
      enum type { Native, Minimalistic, COUNT };
    };

    static Prefs *self();
    ~Prefs();

    /**
      Set Is this the first time KWordQuiz is run?
    */
    static
    void setFirstRun( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "FirstRun" ) ))
        self()->mFirstRun = v;
    }

    /**
      Get Is this the first time KWordQuiz is run?
    */
    static
    bool firstRun()
    {
      return self()->mFirstRun;
    }

    /**
      Set Toggle display of the search bar.
    */
    static
    void setShowSearch( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowSearch" ) ))
        self()->mShowSearch = v;
    }

    /**
      Get Toggle display of the search bar.
    */
    static
    bool showSearch()
    {
      return self()->mShowSearch;
    }

    /**
      Set Type of session to use when opening files
    */
    static
    void setStartSession( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "StartSession" ) ))
        self()->mStartSession = v;
    }

    /**
      Get Type of session to use when opening files
    */
    static
    int startSession()
    {
      return self()->mStartSession;
    }

    /**
      Set Type of printout to generate
    */
    static
    void setPrintStyle( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "PrintStyle" ) ))
        self()->mPrintStyle = v;
    }

    /**
      Get Type of printout to generate
    */
    static
    int printStyle()
    {
      return self()->mPrintStyle;
    }

    /**
      Set Titles for column 1
    */
    static
    void setColumnTitles1( const QStringList & v )
    {
      if (!self()->isImmutable( QStringLiteral( "ColumnTitles1" ) ))
        self()->mColumnTitles1 = v;
    }

    /**
      Get Titles for column 1
    */
    static
    QStringList columnTitles1()
    {
      return self()->mColumnTitles1;
    }

    /**
      Set Titles for column 2
    */
    static
    void setColumnTitles2( const QStringList & v )
    {
      if (!self()->isImmutable( QStringLiteral( "ColumnTitles2" ) ))
        self()->mColumnTitles2 = v;
    }

    /**
      Get Titles for column 2
    */
    static
    QStringList columnTitles2()
    {
      return self()->mColumnTitles2;
    }

    /**
      Set Font used in the editor
    */
    static
    void setEditorFont( const QFont & v )
    {
      if (!self()->isImmutable( QStringLiteral( "EditorFont" ) ))
        self()->mEditorFont = v;
    }

    /**
      Get Font used in the editor
    */
    static
    QFont editorFont()
    {
      return self()->mEditorFont;
    }

    /**
      Set If Fill-in-the-blank should be enabled
    */
    static
    void setEnableBlanks( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "EnableBlanks" ) ))
        self()->mEnableBlanks = v;
    }

    /**
      Get If Fill-in-the-blank should be enabled
    */
    static
    bool enableBlanks()
    {
      return self()->mEnableBlanks;
    }

    /**
      Set Direction the Enter key moves in the editor
    */
    static
    void setEnterMove( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "EnterMove" ) ))
        self()->mEnterMove = v;
    }

    /**
      Get Direction the Enter key moves in the editor
    */
    static
    int enterMove()
    {
      return self()->mEnterMove;
    }

    /**
      Set Characters for the special character toolbar
    */
    static
    void setSpecialCharacters( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "SpecialCharacters" ) ))
        self()->mSpecialCharacters = v;
    }

    /**
      Get Characters for the special character toolbar
    */
    static
    QString specialCharacters()
    {
      return self()->mSpecialCharacters;
    }

    /**
      Set Clear all data in selected entries
    */
    static
    void setClearAll( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ClearAll" ) ))
        self()->mClearAll = v;
    }

    /**
      Get Clear all data in selected entries
    */
    static
    bool clearAll()
    {
      return self()->mClearAll;
    }

    /**
      Set Clear the text in selected entries
    */
    static
    void setClearText( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ClearText" ) ))
        self()->mClearText = v;
    }

    /**
      Get Clear the text in selected entries
    */
    static
    bool clearText()
    {
      return self()->mClearText;
    }

    /**
      Set Clear the image link in selected entries
    */
    static
    void setClearImageLink( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ClearImageLink" ) ))
        self()->mClearImageLink = v;
    }

    /**
      Get Clear the image link in selected entries
    */
    static
    bool clearImageLink()
    {
      return self()->mClearImageLink;
    }

    /**
      Set Clear the sound link in selected entries
    */
    static
    void setClearSoundLink( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ClearSoundLink" ) ))
        self()->mClearSoundLink = v;
    }

    /**
      Get Clear the sound link in selected entries
    */
    static
    bool clearSoundLink()
    {
      return self()->mClearSoundLink;
    }

    /**
      Set Automatically check selected answer in multiple choice
    */
    static
    void setAutoCheck( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "AutoCheck" ) ))
        self()->mAutoCheck = v;
    }

    /**
      Get Automatically check selected answer in multiple choice
    */
    static
    bool autoCheck()
    {
      return self()->mAutoCheck;
    }

    /**
      Set Automatically flip flashcard
    */
    static
    void setAutoFlip( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "AutoFlip" ) ))
        self()->mAutoFlip = v;
    }

    /**
      Get Automatically flip flashcard
    */
    static
    bool autoFlip()
    {
      return self()->mAutoFlip;
    }

    /**
      Set Time delay for flipping flashcard
    */
    static
    void setFlipDelay( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "FlipDelay" ) ))
        self()->mFlipDelay = v;
    }

    /**
      Get Time delay for flipping flashcard
    */
    static
    int flipDelay()
    {
      return self()->mFlipDelay;
    }

    /**
      Set Treat use of hint as error
    */
    static
    void setHintError( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "HintError" ) ))
        self()->mHintError = v;
    }

    /**
      Get Treat use of hint as error
    */
    static
    bool hintError()
    {
      return self()->mHintError;
    }

    /**
      Set Count flashcard as correct or error
    */
    static
    void setKeepDiscard( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "KeepDiscard" ) ))
        self()->mKeepDiscard = v;
    }

    /**
      Get Count flashcard as correct or error
    */
    static
    int keepDiscard()
    {
      return self()->mKeepDiscard;
    }

    /**
      Set Quiz mode
    */
    static
    void setMode( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "Mode" ) ))
        self()->mMode = v;
    }

    /**
      Get Quiz mode
    */
    static
    int mode()
    {
      return self()->mMode;
    }

    /**
      Set Show score as percentage
    */
    static
    void setPercent( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "Percent" ) ))
        self()->mPercent = v;
    }

    /**
      Get Show score as percentage
    */
    static
    bool percent()
    {
      return self()->mPercent;
    }

    /**
      Set Font used for front of flashcard
    */
    static
    void setFrontFont( const QFont & v )
    {
      if (!self()->isImmutable( QStringLiteral( "FrontFont" ) ))
        self()->mFrontFont = v;
    }

    /**
      Get Font used for front of flashcard
    */
    static
    QFont frontFont()
    {
      return self()->mFrontFont;
    }

    /**
      Set Color used for text on front of flashcard
    */
    static
    void setFrontTextColor( const QColor & v )
    {
      if (!self()->isImmutable( QStringLiteral( "FrontTextColor" ) ))
        self()->mFrontTextColor = v;
    }

    /**
      Get Color used for text on front of flashcard
    */
    static
    QColor frontTextColor()
    {
      return self()->mFrontTextColor;
    }

    /**
      Set Color used for front of flashcard
    */
    static
    void setFrontCardColor( const QColor & v )
    {
      if (!self()->isImmutable( QStringLiteral( "FrontCardColor" ) ))
        self()->mFrontCardColor = v;
    }

    /**
      Get Color used for front of flashcard
    */
    static
    QColor frontCardColor()
    {
      return self()->mFrontCardColor;
    }

    /**
      Set Color used for frame on front of flashcard
    */
    static
    void setFrontFrameColor( const QColor & v )
    {
      if (!self()->isImmutable( QStringLiteral( "FrontFrameColor" ) ))
        self()->mFrontFrameColor = v;
    }

    /**
      Get Color used for frame on front of flashcard
    */
    static
    QColor frontFrameColor()
    {
      return self()->mFrontFrameColor;
    }

    /**
      Set Font used for back of flashcard
    */
    static
    void setBackFont( const QFont & v )
    {
      if (!self()->isImmutable( QStringLiteral( "BackFont" ) ))
        self()->mBackFont = v;
    }

    /**
      Get Font used for back of flashcard
    */
    static
    QFont backFont()
    {
      return self()->mBackFont;
    }

    /**
      Set Color used for text on back of flashcard
    */
    static
    void setBackTextColor( const QColor & v )
    {
      if (!self()->isImmutable( QStringLiteral( "BackTextColor" ) ))
        self()->mBackTextColor = v;
    }

    /**
      Get Color used for text on back of flashcard
    */
    static
    QColor backTextColor()
    {
      return self()->mBackTextColor;
    }

    /**
      Set Color used for back of flashcard
    */
    static
    void setBackCardColor( const QColor & v )
    {
      if (!self()->isImmutable( QStringLiteral( "BackCardColor" ) ))
        self()->mBackCardColor = v;
    }

    /**
      Get Color used for back of flashcard
    */
    static
    QColor backCardColor()
    {
      return self()->mBackCardColor;
    }

    /**
      Set Color used for frame on back of flashcard
    */
    static
    void setBackFrameColor( const QColor & v )
    {
      if (!self()->isImmutable( QStringLiteral( "BackFrameColor" ) ))
        self()->mBackFrameColor = v;
    }

    /**
      Get Color used for frame on back of flashcard
    */
    static
    QColor backFrameColor()
    {
      return self()->mBackFrameColor;
    }

    /**
      Set The Providers path for KWordQuiz
    */
    static
    void setProvidersUrl( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "ProvidersUrl" ) ))
        self()->mProvidersUrl = v;
    }

    /**
      Get The Providers path for KWordQuiz
    */
    static
    QString providersUrl()
    {
      return self()->mProvidersUrl;
    }

    /**
      Set The command used to start a downloaded vocabulary
    */
    static
    void setInstallationCommand( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "InstallationCommand" ) ))
        self()->mInstallationCommand = v;
    }

    /**
      Get The command used to start a downloaded vocabulary
    */
    static
    QString installationCommand()
    {
      return self()->mInstallationCommand;
    }

    /**
      Set The folder where downloaded vocabularies are saved by default (relative to $HOME)
    */
    static
    void setInstallPath( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "InstallPath" ) ))
        self()->mInstallPath = v;
    }

    /**
      Get The folder where downloaded vocabularies are saved by default (relative to $HOME)
    */
    static
    QString installPath()
    {
      return self()->mInstallPath;
    }

    /**
      Set Pop up flashcards at fixed or random intervals
    */
    static
    void setTutorTiming( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "TutorTiming" ) ))
        self()->mTutorTiming = v;
    }

    /**
      Get Pop up flashcards at fixed or random intervals
    */
    static
    int tutorTiming()
    {
      return self()->mTutorTiming;
    }

    /**
      Set The interval in minutes at which to pop up a flash card
    */
    static
    void setTutorEvery( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "TutorEvery" ) ))
        self()->mTutorEvery = v;
    }

    /**
      Get The interval in minutes at which to pop up a flash card
    */
    static
    int tutorEvery()
    {
      return self()->mTutorEvery;
    }

    /**
      Set The minimum interval in minutes at which to pop up a flash card
    */
    static
    void setTutorMin( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "TutorMin" ) ))
        self()->mTutorMin = v;
    }

    /**
      Get The minimum interval in minutes at which to pop up a flash card
    */
    static
    int tutorMin()
    {
      return self()->mTutorMin;
    }

    /**
      Set The maximum interval in minutes at which to pop up a flash card
    */
    static
    void setTutorMax( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "TutorMax" ) ))
        self()->mTutorMax = v;
    }

    /**
      Get The maximum interval in minutes at which to pop up a flash card
    */
    static
    int tutorMax()
    {
      return self()->mTutorMax;
    }

    /**
      Set Geometry of the last flash card
    */
    static
    void setTutorFlashCardGeometry( const QRect & v )
    {
      if (!self()->isImmutable( QStringLiteral( "TutorFlashCardGeometry" ) ))
        self()->mTutorFlashCardGeometry = v;
    }

    /**
      Get Geometry of the last flash card
    */
    static
    QRect tutorFlashCardGeometry()
    {
      return self()->mTutorFlashCardGeometry;
    }

    /**
      Set Show flash card in a native KWordQuiz style
    */
    static
    void setTutorCardAppearance( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "TutorCardAppearance" ) ))
        self()->mTutorCardAppearance = v;
    }

    /**
      Get Show flash card in a native KWordQuiz style
    */
    static
    int tutorCardAppearance()
    {
      return self()->mTutorCardAppearance;
    }

    /**
      Set Last open vocabulary file to be opened automatically if none other is specified on the command line
    */
    static
    void setLastVocabFile( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "LastVocabFile" ) ))
        self()->mLastVocabFile = v;
    }

    /**
      Get Last open vocabulary file to be opened automatically if none other is specified on the command line
    */
    static
    QString lastVocabFile()
    {
      return self()->mLastVocabFile;
    }

    /**
      Set Start exercise as soon as the user opens vocabulary file
    */
    static
    void setStartExerciseAsSoonAsFileIsLoaded( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "StartExerciseAsSoonAsFileIsLoaded" ) ))
        self()->mStartExerciseAsSoonAsFileIsLoaded = v;
    }

    /**
      Get Start exercise as soon as the user opens vocabulary file
    */
    static
    bool startExerciseAsSoonAsFileIsLoaded()
    {
      return self()->mStartExerciseAsSoonAsFileIsLoaded;
    }

  protected:
    Prefs();
    friend class PrefsHelper;


    // General
    bool mFirstRun;
    bool mShowSearch;
    int mStartSession;
    int mPrintStyle;

    // Editor
    QStringList mColumnTitles1;
    QStringList mColumnTitles2;
    QFont mEditorFont;
    bool mEnableBlanks;
    int mEnterMove;
    QString mSpecialCharacters;
    bool mClearAll;
    bool mClearText;
    bool mClearImageLink;
    bool mClearSoundLink;

    // Quiz
    bool mAutoCheck;
    bool mAutoFlip;
    int mFlipDelay;
    bool mHintError;
    int mKeepDiscard;
    int mMode;
    bool mPercent;

    // FlashCard
    QFont mFrontFont;
    QColor mFrontTextColor;
    QColor mFrontCardColor;
    QColor mFrontFrameColor;
    QFont mBackFont;
    QColor mBackTextColor;
    QColor mBackCardColor;
    QColor mBackFrameColor;

    // KNewStuff
    QString mProvidersUrl;
    QString mInstallationCommand;
    QString mInstallPath;

    // Tutor
    int mTutorTiming;
    int mTutorEvery;
    int mTutorMin;
    int mTutorMax;
    QRect mTutorFlashCardGeometry;
    int mTutorCardAppearance;
    QString mLastVocabFile;
    bool mStartExerciseAsSoonAsFileIsLoaded;

  private:
};

#endif

