// This file is generated by kconfig_compiler_kf5 from parley.kcfg.
// All changes you do to this file will be lost.

#include "prefs.h"

#include <qglobal.h>
#include <QFile>

class PrefsHelper
{
  public:
    PrefsHelper() : q(nullptr) {}
    ~PrefsHelper() { delete q; q = nullptr; }
    PrefsHelper(const PrefsHelper&) = delete;
    PrefsHelper& operator=(const PrefsHelper&) = delete;
    Prefs *q;
};
Q_GLOBAL_STATIC(PrefsHelper, s_globalPrefs)
Prefs *Prefs::self()
{
  if (!s_globalPrefs()->q) {
    new Prefs;
    s_globalPrefs()->q->read();
  }

  return s_globalPrefs()->q;
}

Prefs::Prefs( )
  : KConfigSkeleton( QStringLiteral( "parleyrc" ) )
{
  Q_ASSERT(!s_globalPrefs()->q);
  s_globalPrefs()->q = this;
  setCurrentGroup( QStringLiteral( "General" ) );

  KConfigSkeleton::ItemString  *itemTheme;
  itemTheme = new KConfigSkeleton::ItemString( currentGroup(), QStringLiteral( "Theme" ), mTheme, QStringLiteral( "themes/theme_reference.desktop" ) );
  addItem( itemTheme, QStringLiteral( "Theme" ) );
  KConfigSkeleton::ItemInt  *itemNumPreSetting;
  itemNumPreSetting = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "NumPreSetting" ), mNumPreSetting, 0 );
  addItem( itemNumPreSetting, QStringLiteral( "NumPreSetting" ) );
  KConfigSkeleton::ItemBool  *itemSmartAppend;
  itemSmartAppend = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "SmartAppend" ), mSmartAppend, true );
  addItem( itemSmartAppend, QStringLiteral( "SmartAppend" ) );
  KConfigSkeleton::ItemString  *itemSeparator;
  itemSeparator = new KConfigSkeleton::ItemString( currentGroup(), QStringLiteral( "Separator" ), mSeparator, QChar('\t') );
  addItem( itemSeparator, QStringLiteral( "Separator" ) );
  KConfigSkeleton::ItemInt  *itemEntriesPerLesson;
  itemEntriesPerLesson = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "EntriesPerLesson" ), mEntriesPerLesson, 20 );
  addItem( itemEntriesPerLesson, QStringLiteral( "EntriesPerLesson" ) );
  KConfigSkeleton::ItemBool  *itemAutoOpenLast;
  itemAutoOpenLast = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "AutoOpenLast" ), mAutoOpenLast, false );
  addItem( itemAutoOpenLast, QStringLiteral( "AutoOpenLast" ) );
  KConfigSkeleton::ItemBool  *itemAutoSave;
  itemAutoSave = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "AutoSave" ), mAutoSave, false );
  addItem( itemAutoSave, QStringLiteral( "AutoSave" ) );
  KConfigSkeleton::ItemInt  *itemSeparatorCombo;
  itemSeparatorCombo = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "SeparatorCombo" ), mSeparatorCombo, 0 );
  addItem( itemSeparatorCombo, QStringLiteral( "SeparatorCombo" ) );
  KConfigSkeleton::ItemBool  *itemAutoBackup;
  itemAutoBackup = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "AutoBackup" ), mAutoBackup, false );
  addItem( itemAutoBackup, QStringLiteral( "AutoBackup" ) );
  KConfigSkeleton::ItemInt  *itemBackupTime;
  itemBackupTime = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "BackupTime" ), mBackupTime, 15 );
  addItem( itemBackupTime, QStringLiteral( "BackupTime" ) );
  KConfigSkeleton::ItemBool  *itemAutomaticTranslation;
  itemAutomaticTranslation = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "AutomaticTranslation" ), mAutomaticTranslation, false );
  addItem( itemAutomaticTranslation, QStringLiteral( "AutomaticTranslation" ) );

  setCurrentGroup( QStringLiteral( "PracticeOptions" ) );

  KConfigSkeleton::ItemBool  *itemFlashcardsFrontImage;
  itemFlashcardsFrontImage = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "FlashcardsFrontImage" ), mFlashcardsFrontImage, true );
  addItem( itemFlashcardsFrontImage, QStringLiteral( "FlashcardsFrontImage" ) );
  KConfigSkeleton::ItemBool  *itemFlashcardsBackImage;
  itemFlashcardsBackImage = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "FlashcardsBackImage" ), mFlashcardsBackImage, true );
  addItem( itemFlashcardsBackImage, QStringLiteral( "FlashcardsBackImage" ) );
  KConfigSkeleton::ItemBool  *itemBlock;
  itemBlock = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "Block" ), mBlock, true );
  addItem( itemBlock, QStringLiteral( "Block" ) );
  KConfigSkeleton::ItemBool  *itemExpire;
  itemExpire = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "Expire" ), mExpire, true );
  addItem( itemExpire, QStringLiteral( "Expire" ) );
  KConfigSkeleton::ItemBool  *itemTestOrderLesson;
  itemTestOrderLesson = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "TestOrderLesson" ), mTestOrderLesson, true );
  addItem( itemTestOrderLesson, QStringLiteral( "TestOrderLesson" ) );
  KConfigSkeleton::ItemInt  *itemTestNumberOfEntries;
  itemTestNumberOfEntries = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "TestNumberOfEntries" ), mTestNumberOfEntries, 20 );
  addItem( itemTestNumberOfEntries, QStringLiteral( "TestNumberOfEntries" ) );
  KConfigSkeleton::ItemBool  *itemSwapDirection;
  itemSwapDirection = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "SwapDirection" ), mSwapDirection, false );
  addItem( itemSwapDirection, QStringLiteral( "SwapDirection" ) );
  KConfigSkeleton::ItemBool  *itemPracticeTimeout;
  itemPracticeTimeout = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "PracticeTimeout" ), mPracticeTimeout, false );
  addItem( itemPracticeTimeout, QStringLiteral( "PracticeTimeout" ) );
  QList<KConfigSkeleton::ItemEnum::Choice> valuesPracticeTimeoutMode;
  {
    KConfigSkeleton::ItemEnum::Choice choice;
    choice.name = QStringLiteral("Show");
    valuesPracticeTimeoutMode.append( choice );
  }
  {
    KConfigSkeleton::ItemEnum::Choice choice;
    choice.name = QStringLiteral("Continue");
    valuesPracticeTimeoutMode.append( choice );
  }
  KConfigSkeleton::ItemEnum  *itemPracticeTimeoutMode;
  itemPracticeTimeoutMode = new KConfigSkeleton::ItemEnum( currentGroup(), QStringLiteral( "PracticeTimeoutMode" ), mPracticeTimeoutMode, valuesPracticeTimeoutMode, EnumPracticeTimeoutMode::Show );
  addItem( itemPracticeTimeoutMode, QStringLiteral( "PracticeTimeoutMode" ) );
  KConfigSkeleton::ItemInt  *itemPracticeTimeoutTimePerAnswer;
  itemPracticeTimeoutTimePerAnswer = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "PracticeTimeoutTimePerAnswer" ), mPracticeTimeoutTimePerAnswer, 20 );
  addItem( itemPracticeTimeoutTimePerAnswer, QStringLiteral( "PracticeTimeoutTimePerAnswer" ) );
  KConfigSkeleton::ItemBool  *itemSuggestions;
  itemSuggestions = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "Suggestions" ), mSuggestions, false );
  addItem( itemSuggestions, QStringLiteral( "Suggestions" ) );
  KConfigSkeleton::ItemBool  *itemShowHints;
  itemShowHints = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "ShowHints" ), mShowHints, true );
  addItem( itemShowHints, QStringLiteral( "ShowHints" ) );
  KConfigSkeleton::ItemBool  *itemIgnoreAccentMistakes;
  itemIgnoreAccentMistakes = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "IgnoreAccentMistakes" ), mIgnoreAccentMistakes, false );
  addItem( itemIgnoreAccentMistakes, QStringLiteral( "IgnoreAccentMistakes" ) );
  KConfigSkeleton::ItemBool  *itemIgnoreCapitalizationMistakes;
  itemIgnoreCapitalizationMistakes = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "IgnoreCapitalizationMistakes" ), mIgnoreCapitalizationMistakes, false );
  addItem( itemIgnoreCapitalizationMistakes, QStringLiteral( "IgnoreCapitalizationMistakes" ) );
  KConfigSkeleton::ItemBool  *itemIgnorePunctuationMistakes;
  itemIgnorePunctuationMistakes = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "IgnorePunctuationMistakes" ), mIgnorePunctuationMistakes, false );
  addItem( itemIgnorePunctuationMistakes, QStringLiteral( "IgnorePunctuationMistakes" ) );
  KConfigSkeleton::ItemBool  *itemSplitTranslations;
  itemSplitTranslations = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "SplitTranslations" ), mSplitTranslations, false );
  addItem( itemSplitTranslations, QStringLiteral( "SplitTranslations" ) );
  KConfigSkeleton::ItemBool  *itemPeriods;
  itemPeriods = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "Periods" ), mPeriods, true );
  addItem( itemPeriods, QStringLiteral( "Periods" ) );
  KConfigSkeleton::ItemBool  *itemColons;
  itemColons = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "Colons" ), mColons, false );
  addItem( itemColons, QStringLiteral( "Colons" ) );
  KConfigSkeleton::ItemBool  *itemSemicolons;
  itemSemicolons = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "Semicolons" ), mSemicolons, true );
  addItem( itemSemicolons, QStringLiteral( "Semicolons" ) );
  KConfigSkeleton::ItemBool  *itemCommas;
  itemCommas = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "Commas" ), mCommas, false );
  addItem( itemCommas, QStringLiteral( "Commas" ) );
  KConfigSkeleton::ItemBool  *itemShowMore;
  itemShowMore = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "ShowMore" ), mShowMore, true );
  addItem( itemShowMore, QStringLiteral( "ShowMore" ) );
  KConfigSkeleton::ItemBool  *itemSkipKnownEnabled;
  itemSkipKnownEnabled = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "SkipKnownEnabled" ), mSkipKnownEnabled, true );
  addItem( itemSkipKnownEnabled, QStringLiteral( "SkipKnownEnabled" ) );
  KConfigSkeleton::ItemBool  *itemCountSynonymsAsCorrect;
  itemCountSynonymsAsCorrect = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "CountSynonymsAsCorrect" ), mCountSynonymsAsCorrect, true );
  addItem( itemCountSynonymsAsCorrect, QStringLiteral( "CountSynonymsAsCorrect" ) );
  KConfigSkeleton::ItemBool  *itemPracticeImagesEnabled;
  itemPracticeImagesEnabled = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "PracticeImagesEnabled" ), mPracticeImagesEnabled, true );
  addItem( itemPracticeImagesEnabled, QStringLiteral( "PracticeImagesEnabled" ) );
  KConfigSkeleton::ItemBool  *itemPracticeSoundEnabled;
  itemPracticeSoundEnabled = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "PracticeSoundEnabled" ), mPracticeSoundEnabled, true );
  addItem( itemPracticeSoundEnabled, QStringLiteral( "PracticeSoundEnabled" ) );
  KConfigSkeleton::ItemBool  *itemAllowImageInsteadOfWord;
  itemAllowImageInsteadOfWord = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "AllowImageInsteadOfWord" ), mAllowImageInsteadOfWord, false );
  addItem( itemAllowImageInsteadOfWord, QStringLiteral( "AllowImageInsteadOfWord" ) );
  KConfigSkeleton::ItemInt  *itemSessionMaxSize;
  itemSessionMaxSize = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "SessionMaxSize" ), mSessionMaxSize, 20 );
  addItem( itemSessionMaxSize, QStringLiteral( "SessionMaxSize" ) );
  KConfigSkeleton::ItemInt  *itemSessionMaxNewWords;
  itemSessionMaxNewWords = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "SessionMaxNewWords" ), mSessionMaxNewWords, 5 );
  addItem( itemSessionMaxNewWords, QStringLiteral( "SessionMaxNewWords" ) );
  KConfigSkeleton::ItemBool  *itemSessionLimitWordsInitialPhase;
  itemSessionLimitWordsInitialPhase = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "SessionLimitWordsInitialPhase" ), mSessionLimitWordsInitialPhase, false );
  addItem( itemSessionLimitWordsInitialPhase, QStringLiteral( "SessionLimitWordsInitialPhase" ) );
  KConfigSkeleton::ItemInt  *itemSessionMaxWordsInitialPhase;
  itemSessionMaxWordsInitialPhase = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "SessionMaxWordsInitialPhase" ), mSessionMaxWordsInitialPhase, 20 );
  addItem( itemSessionMaxWordsInitialPhase, QStringLiteral( "SessionMaxWordsInitialPhase" ) );
  KConfigSkeleton::ItemBool  *itemMultipleChoiceWordTypeConsistancy;
  itemMultipleChoiceWordTypeConsistancy = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "MultipleChoiceWordTypeConsistancy" ), mMultipleChoiceWordTypeConsistancy, true );
  addItem( itemMultipleChoiceWordTypeConsistancy, QStringLiteral( "MultipleChoiceWordTypeConsistancy" ) );
  KConfigSkeleton::ItemInt  *itemNumberMultipleChoiceAnswers;
  itemNumberMultipleChoiceAnswers = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "NumberMultipleChoiceAnswers" ), mNumberMultipleChoiceAnswers, 5 );
  addItem( itemNumberMultipleChoiceAnswers, QStringLiteral( "NumberMultipleChoiceAnswers" ) );

  setCurrentGroup( QStringLiteral( "Appearance" ) );

  KConfigSkeleton::ItemBool  *itemShowSearch;
  itemShowSearch = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "ShowSearch" ), mShowSearch, true );
  addItem( itemShowSearch, QStringLiteral( "ShowSearch" ) );
  KConfigSkeleton::ItemBool  *itemShowSublessonentries;
  itemShowSublessonentries = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "ShowSublessonentries" ), mShowSublessonentries, true );
  addItem( itemShowSublessonentries, QStringLiteral( "ShowSublessonentries" ) );
  KConfigSkeleton::ItemBool  *itemTableLessonColumnVisible;
  itemTableLessonColumnVisible = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "TableLessonColumnVisible" ), mTableLessonColumnVisible, false );
  addItem( itemTableLessonColumnVisible, QStringLiteral( "TableLessonColumnVisible" ) );
  KConfigSkeleton::ItemBool  *itemTableActiveColumnVisible;
  itemTableActiveColumnVisible = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "TableActiveColumnVisible" ), mTableActiveColumnVisible, false );
  addItem( itemTableActiveColumnVisible, QStringLiteral( "TableActiveColumnVisible" ) );
  QList<KConfigSkeleton::ItemEnum::Choice> valuesLessonEditingSelection;
  {
    KConfigSkeleton::ItemEnum::Choice choice;
    choice.name = QStringLiteral("CurrentLesson");
    valuesLessonEditingSelection.append( choice );
  }
  {
    KConfigSkeleton::ItemEnum::Choice choice;
    choice.name = QStringLiteral("LessonsInQuery");
    valuesLessonEditingSelection.append( choice );
  }
  {
    KConfigSkeleton::ItemEnum::Choice choice;
    choice.name = QStringLiteral("AllLessons");
    valuesLessonEditingSelection.append( choice );
  }
  {
    KConfigSkeleton::ItemEnum::Choice choice;
    choice.name = QStringLiteral("UserFiltered");
    valuesLessonEditingSelection.append( choice );
  }
  KConfigSkeleton::ItemEnum  *itemLessonEditingSelection;
  itemLessonEditingSelection = new KConfigSkeleton::ItemEnum( currentGroup(), QStringLiteral( "LessonEditingSelection" ), mLessonEditingSelection, valuesLessonEditingSelection, EnumLessonEditingSelection::CurrentLesson );
  addItem( itemLessonEditingSelection, QStringLiteral( "LessonEditingSelection" ) );
  QList<int> defaultMainWindowSplitter;
  defaultMainWindowSplitter.append( 150 );
  defaultMainWindowSplitter.append(  400 );

  KConfigSkeleton::ItemIntList  *itemMainWindowSplitter;
  itemMainWindowSplitter = new KConfigSkeleton::ItemIntList( currentGroup(), QStringLiteral( "MainWindowSplitter" ), mMainWindowSplitter, defaultMainWindowSplitter );
  addItem( itemMainWindowSplitter, QStringLiteral( "MainWindowSplitter" ) );
  KConfigSkeleton::ItemFont  *itemPracticeFont;
  itemPracticeFont = new KConfigSkeleton::ItemFont( currentGroup(), QStringLiteral( "PracticeFont" ), mPracticeFont, QFontDatabase::systemFont(QFontDatabase::GeneralFont) );
  addItem( itemPracticeFont, QStringLiteral( "PracticeFont" ) );
  KConfigSkeleton::ItemFont  *itemIPAFont;
  itemIPAFont = new KConfigSkeleton::ItemFont( currentGroup(), QStringLiteral( "IPAFont" ), mIPAFont, QFontDatabase::systemFont(QFontDatabase::GeneralFont) );
  addItem( itemIPAFont, QStringLiteral( "IPAFont" ) );
  KConfigSkeleton::ItemInt  *itemCurrentCol;
  itemCurrentCol = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "CurrentCol" ), mCurrentCol, 2 );
  addItem( itemCurrentCol, QStringLiteral( "CurrentCol" ) );
  KConfigSkeleton::ItemInt  *itemCurrentRow;
  itemCurrentRow = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "CurrentRow" ), mCurrentRow, 0 );
  addItem( itemCurrentRow, QStringLiteral( "CurrentRow" ) );
  KConfigSkeleton::ItemColor  *itemGradeColor;
  itemGradeColor = new KConfigSkeleton::ItemColor( currentGroup(), QStringLiteral( "GradeColor" ), mGradeColor, QColor( 25, 140, 25 ) );
  addItem( itemGradeColor, QStringLiteral( "GradeColor" ) );
  KConfigSkeleton::ItemColor  *itemPreGradeColor;
  itemPreGradeColor = new KConfigSkeleton::ItemColor( currentGroup(), QStringLiteral( "PreGradeColor" ), mPreGradeColor, QColor( 255, 255, 0 ) );
  addItem( itemPreGradeColor, QStringLiteral( "PreGradeColor" ) );
  KConfigSkeleton::ItemColor  *itemInvalidUnitColor;
  itemInvalidUnitColor = new KConfigSkeleton::ItemColor( currentGroup(), QStringLiteral( "InvalidUnitColor" ), mInvalidUnitColor, QColor( 255, 0, 0 ) );
  addItem( itemInvalidUnitColor, QStringLiteral( "InvalidUnitColor" ) );

  setCurrentGroup( QStringLiteral( "Thresholds" ) );

  KConfigSkeleton::ItemInt  *itemPracticeMinimumTimesAsked;
  itemPracticeMinimumTimesAsked = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "PracticeMinimumTimesAsked" ), mPracticeMinimumTimesAsked, 0 );
  addItem( itemPracticeMinimumTimesAsked, QStringLiteral( "PracticeMinimumTimesAsked" ) );
  KConfigSkeleton::ItemInt  *itemPracticeMaximumTimesAsked;
  itemPracticeMaximumTimesAsked = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "PracticeMaximumTimesAsked" ), mPracticeMaximumTimesAsked, 1000 );
  addItem( itemPracticeMaximumTimesAsked, QStringLiteral( "PracticeMaximumTimesAsked" ) );
  KConfigSkeleton::ItemInt  *itemPracticeMinimumWrongCount;
  itemPracticeMinimumWrongCount = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "PracticeMinimumWrongCount" ), mPracticeMinimumWrongCount, 0 );
  addItem( itemPracticeMinimumWrongCount, QStringLiteral( "PracticeMinimumWrongCount" ) );
  KConfigSkeleton::ItemInt  *itemPracticeMaximumWrongCount;
  itemPracticeMaximumWrongCount = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "PracticeMaximumWrongCount" ), mPracticeMaximumWrongCount, 1000 );
  addItem( itemPracticeMaximumWrongCount, QStringLiteral( "PracticeMaximumWrongCount" ) );
  KConfigSkeleton::ItemInt  *itemPracticeMinimumGrade;
  itemPracticeMinimumGrade = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "PracticeMinimumGrade" ), mPracticeMinimumGrade, 0 );
  addItem( itemPracticeMinimumGrade, QStringLiteral( "PracticeMinimumGrade" ) );
  KConfigSkeleton::ItemInt  *itemPracticeMaximumGrade;
  itemPracticeMaximumGrade = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "PracticeMaximumGrade" ), mPracticeMaximumGrade, 7 );
  addItem( itemPracticeMaximumGrade, QStringLiteral( "PracticeMaximumGrade" ) );
  KConfigSkeleton::ItemBool  *itemWordTypesInPracticeEnabled;
  itemWordTypesInPracticeEnabled = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "WordTypesInPracticeEnabled" ), mWordTypesInPracticeEnabled, false );
  addItem( itemWordTypesInPracticeEnabled, QStringLiteral( "WordTypesInPracticeEnabled" ) );
  KConfigSkeleton::ItemStringList  *itemWordTypesInPractice;
  itemWordTypesInPractice = new KConfigSkeleton::ItemStringList( currentGroup(), QStringLiteral( "WordTypesInPractice" ), mWordTypesInPractice );
  addItem( itemWordTypesInPractice, QStringLiteral( "WordTypesInPractice" ) );
  KConfigSkeleton::ItemStringList  *itemSubWordTypesInPractice;
  itemSubWordTypesInPractice = new KConfigSkeleton::ItemStringList( currentGroup(), QStringLiteral( "SubWordTypesInPractice" ), mSubWordTypesInPractice );
  addItem( itemSubWordTypesInPractice, QStringLiteral( "SubWordTypesInPractice" ) );

  setCurrentGroup( QStringLiteral( "PracticeManager" ) );

  KConfigSkeleton::ItemInt  *itemLearningLanguage;
  itemLearningLanguage = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "LearningLanguage" ), mLearningLanguage, 0 );
  addItem( itemLearningLanguage, QStringLiteral( "LearningLanguage" ) );
  KConfigSkeleton::ItemInt  *itemKnownLanguage;
  itemKnownLanguage = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "KnownLanguage" ), mKnownLanguage, 1 );
  addItem( itemKnownLanguage, QStringLiteral( "KnownLanguage" ) );
  KConfigSkeleton::ItemBool  *itemShowSolutionAfterAnswer;
  itemShowSolutionAfterAnswer = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "ShowSolutionAfterAnswer" ), mShowSolutionAfterAnswer, true );
  addItem( itemShowSolutionAfterAnswer, QStringLiteral( "ShowSolutionAfterAnswer" ) );
  KConfigSkeleton::ItemInt  *itemShowSolutionAfterAnswerTime;
  itemShowSolutionAfterAnswerTime = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "ShowSolutionAfterAnswerTime" ), mShowSolutionAfterAnswerTime, 0 );
  addItem( itemShowSolutionAfterAnswerTime, QStringLiteral( "ShowSolutionAfterAnswerTime" ) );
  QList<KConfigSkeleton::ItemEnum::Choice> valuesPracticeMode;
  {
    KConfigSkeleton::ItemEnum::Choice choice;
    choice.name = QStringLiteral("FlashCardsPractice");
    valuesPracticeMode.append( choice );
  }
  {
    KConfigSkeleton::ItemEnum::Choice choice;
    choice.name = QStringLiteral("MixedLettersPractice");
    valuesPracticeMode.append( choice );
  }
  {
    KConfigSkeleton::ItemEnum::Choice choice;
    choice.name = QStringLiteral("MultipleChoicePractice");
    valuesPracticeMode.append( choice );
  }
  {
    KConfigSkeleton::ItemEnum::Choice choice;
    choice.name = QStringLiteral("WrittenPractice");
    valuesPracticeMode.append( choice );
  }
  {
    KConfigSkeleton::ItemEnum::Choice choice;
    choice.name = QStringLiteral("ExampleSentencesPractice");
    valuesPracticeMode.append( choice );
  }
  {
    KConfigSkeleton::ItemEnum::Choice choice;
    choice.name = QStringLiteral("GenderPractice");
    valuesPracticeMode.append( choice );
  }
  {
    KConfigSkeleton::ItemEnum::Choice choice;
    choice.name = QStringLiteral("ComparisonPractice");
    valuesPracticeMode.append( choice );
  }
  {
    KConfigSkeleton::ItemEnum::Choice choice;
    choice.name = QStringLiteral("ConjugationPractice");
    valuesPracticeMode.append( choice );
  }
  KConfigSkeleton::ItemEnum  *itemPracticeMode;
  itemPracticeMode = new KConfigSkeleton::ItemEnum( currentGroup(), QStringLiteral( "PracticeMode" ), mPracticeMode, valuesPracticeMode, EnumPracticeMode::FlashCardsPractice );
  addItem( itemPracticeMode, QStringLiteral( "PracticeMode" ) );
  QList<KConfigSkeleton::ItemEnum::Choice> valuesPracticeDirection;
  {
    KConfigSkeleton::ItemEnum::Choice choice;
    choice.name = QStringLiteral("KnownToLearning");
    valuesPracticeDirection.append( choice );
  }
  {
    KConfigSkeleton::ItemEnum::Choice choice;
    choice.name = QStringLiteral("LearningToKnown");
    valuesPracticeDirection.append( choice );
  }
  {
    KConfigSkeleton::ItemEnum::Choice choice;
    choice.name = QStringLiteral("MixedDirectionsWordsOnly");
    valuesPracticeDirection.append( choice );
  }
  {
    KConfigSkeleton::ItemEnum::Choice choice;
    choice.name = QStringLiteral("MixedDirectionsWithSound");
    valuesPracticeDirection.append( choice );
  }
  KConfigSkeleton::ItemEnum  *itemPracticeDirection;
  itemPracticeDirection = new KConfigSkeleton::ItemEnum( currentGroup(), QStringLiteral( "PracticeDirection" ), mPracticeDirection, valuesPracticeDirection, EnumPracticeDirection::MixedDirectionsWordsOnly );
  addItem( itemPracticeDirection, QStringLiteral( "PracticeDirection" ) );
  KConfigSkeleton::ItemInt  *itemBlockItem[8];
  itemBlockItem[0] = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "BlockItem0" ), mBlockItem[0], 0 );
  addItem( itemBlockItem[0], QStringLiteral( "BlockItem0" ) );
  itemBlockItem[1] = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "BlockItem1" ), mBlockItem[1], 86400 );
  addItem( itemBlockItem[1], QStringLiteral( "BlockItem1" ) );
  itemBlockItem[2] = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "BlockItem2" ), mBlockItem[2], 172800 );
  addItem( itemBlockItem[2], QStringLiteral( "BlockItem2" ) );
  itemBlockItem[3] = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "BlockItem3" ), mBlockItem[3], 345600 );
  addItem( itemBlockItem[3], QStringLiteral( "BlockItem3" ) );
  itemBlockItem[4] = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "BlockItem4" ), mBlockItem[4], 604800 );
  addItem( itemBlockItem[4], QStringLiteral( "BlockItem4" ) );
  itemBlockItem[5] = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "BlockItem5" ), mBlockItem[5], 1209600 );
  addItem( itemBlockItem[5], QStringLiteral( "BlockItem5" ) );
  itemBlockItem[6] = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "BlockItem6" ), mBlockItem[6], 2592000 );
  addItem( itemBlockItem[6], QStringLiteral( "BlockItem6" ) );
  itemBlockItem[7] = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "BlockItem7" ), mBlockItem[7], 5184000 );
  addItem( itemBlockItem[7], QStringLiteral( "BlockItem7" ) );
  KConfigSkeleton::ItemInt  *itemExpireItem[8];
  itemExpireItem[0] = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "ExpireItem0" ), mExpireItem[0], 0 );
  addItem( itemExpireItem[0], QStringLiteral( "ExpireItem0" ) );
  itemExpireItem[1] = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "ExpireItem1" ), mExpireItem[1], 172800 );
  addItem( itemExpireItem[1], QStringLiteral( "ExpireItem1" ) );
  itemExpireItem[2] = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "ExpireItem2" ), mExpireItem[2], 345600 );
  addItem( itemExpireItem[2], QStringLiteral( "ExpireItem2" ) );
  itemExpireItem[3] = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "ExpireItem3" ), mExpireItem[3], 604800 );
  addItem( itemExpireItem[3], QStringLiteral( "ExpireItem3" ) );
  itemExpireItem[4] = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "ExpireItem4" ), mExpireItem[4], 1209600 );
  addItem( itemExpireItem[4], QStringLiteral( "ExpireItem4" ) );
  itemExpireItem[5] = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "ExpireItem5" ), mExpireItem[5], 2592000 );
  addItem( itemExpireItem[5], QStringLiteral( "ExpireItem5" ) );
  itemExpireItem[6] = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "ExpireItem6" ), mExpireItem[6], 5184000 );
  addItem( itemExpireItem[6], QStringLiteral( "ExpireItem6" ) );
  itemExpireItem[7] = new KConfigSkeleton::ItemInt( currentGroup(), QStringLiteral( "ExpireItem7" ), mExpireItem[7], 10368000 );
  addItem( itemExpireItem[7], QStringLiteral( "ExpireItem7" ) );
  KConfigSkeleton::ItemBool  *itemRememberPracticeDirection;
  itemRememberPracticeDirection = new KConfigSkeleton::ItemBool( currentGroup(), QStringLiteral( "RememberPracticeDirection" ), mRememberPracticeDirection, false );
  addItem( itemRememberPracticeDirection, QStringLiteral( "RememberPracticeDirection" ) );
  QList<int> defaultPracticeDirectionsByPracticeMode;

  KConfigSkeleton::ItemIntList  *itemPracticeDirectionsByPracticeMode;
  itemPracticeDirectionsByPracticeMode = new KConfigSkeleton::ItemIntList( currentGroup(), QStringLiteral( "PracticeDirectionsByPracticeMode" ), mPracticeDirectionsByPracticeMode, defaultPracticeDirectionsByPracticeMode );
  addItem( itemPracticeDirectionsByPracticeMode, QStringLiteral( "PracticeDirectionsByPracticeMode" ) );

  setCurrentGroup( QStringLiteral( "KNewStuff" ) );

  KConfigSkeleton::ItemPath  *itemProvidersUrl;
  itemProvidersUrl = new KConfigSkeleton::ItemPath( currentGroup(), QStringLiteral( "ProvidersUrl" ), mProvidersUrl, QStringLiteral( "\"https://edu.kde.org/parley/newstuff/providers.xml\"" ) );
  addItem( itemProvidersUrl, QStringLiteral( "ProvidersUrl" ) );
  KConfigSkeleton::ItemString  *itemInstallationCommand;
  itemInstallationCommand = new KConfigSkeleton::ItemString( currentGroup(), QStringLiteral( "InstallationCommand" ), mInstallationCommand, QStringLiteral( "parley %f" ) );
  addItem( itemInstallationCommand, QStringLiteral( "InstallationCommand" ) );
  KConfigSkeleton::ItemPath  *itemInstallPath;
  itemInstallPath = new KConfigSkeleton::ItemPath( currentGroup(), QStringLiteral( "InstallPath" ), mInstallPath, QStringLiteral( "$HOME/Vocabularies/" ) );
  addItem( itemInstallPath, QStringLiteral( "InstallPath" ) );
}

Prefs::~Prefs()
{
  if (s_globalPrefs.exists() && !s_globalPrefs.isDestroyed()) {
    s_globalPrefs()->q = nullptr;
  }
}

