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

#include <../kv_resource.h>
#include <../kvt-core/kvoctrainexpr.h>

#include <tdeconfigskeleton.h>
#include <kdebug.h>

class TDE_EXPORT Prefs : public TDEConfigSkeleton
{
  public:
    class EnumHeaderResizeMode
    {
      public:
      enum type { Automatic, Fixed, Percent, COUNT };
    };
    class EnumQueryTimeout
    {
      public:
      enum type { NoTimeout, Show, Continue, COUNT };
    };
    class EnumCompType
    {
      public:
      enum type { DontCare, MoreEqThan, MoreThan, Before, Within, WorseThan, WorseEqThan, EqualTo, NotEqual, LessEqThan, LessThan, BetterThan, BetterEqThan, Current, NotAssigned, NotQueried, Auto_Time, Auto_Count, OneOf, NotOneOf, COUNT };
    };
    class EnumType
    {
      public:
      enum type { Date, Lesson, Query, Bad, WordType, Grade, COUNT };
      static const char* const enumToString[];
    };

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

    /**
      Set Number of stored setting profiles
    */
    static
    void setNumPreSetting( int v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "NumPreSetting" ) ))
        self()->mNumPreSetting = v;
    }

    /**
      Get Number of stored setting profiles
    */
    static
    int numPreSetting()
    {
      return self()->mNumPreSetting;
    }

    /**
      Set Number of defined languages
    */
    static
    void setNumLangSet( int v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "NumLangSet" ) ))
        self()->mNumLangSet = v;
    }

    /**
      Get Number of defined languages
    */
    static
    int numLangSet()
    {
      return self()->mNumLangSet;
    }

    /**
      Set AutoEntryApply
    */
    static
    void setAutoEntryApply( bool v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "AutoEntryApply" ) ))
        self()->mAutoEntryApply = v;
    }

    /**
      Get AutoEntryApply
    */
    static
    bool autoEntryApply()
    {
      return self()->mAutoEntryApply;
    }

    /**
      Set If true, when using the entry dialog, new rows will be appended as needed
    */
    static
    void setSmartAppend( bool v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "SmartAppend" ) ))
        self()->mSmartAppend = v;
    }

    /**
      Get If true, when using the entry dialog, new rows will be appended as needed
    */
    static
    bool smartAppend()
    {
      return self()->mSmartAppend;
    }

    /**
      Set If true, it uses the same language order as the current document for the clipboard
    */
    static
    void setUseCurrent( bool v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "UseCurrent" ) ))
        self()->mUseCurrent = v;
    }

    /**
      Get If true, it uses the same language order as the current document for the clipboard
    */
    static
    bool useCurrent()
    {
      return self()->mUseCurrent;
    }

    /**
      Set This sets the separator used when copying/pasting text, default is Tab
    */
    static
    void setSeparator( const TQString & v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "Separator" ) ))
        self()->mSeparator = v;
    }

    /**
      Get This sets the separator used when copying/pasting text, default is Tab
    */
    static
    TQString separator()
    {
      return self()->mSeparator;
    }

    /**
      Set The order in which languages get pasted
    */
    static
    void setPasteOrder( const TQStringList & v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "PasteOrder" ) ))
        self()->mPasteOrder = v;
    }

    /**
      Get The order in which languages get pasted
    */
    static
    TQStringList pasteOrder()
    {
      return self()->mPasteOrder;
    }

    /**
      Set The number of entries per lesson
    */
    static
    void setEntriesPerLesson( int v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "EntriesPerLesson" ) ))
        self()->mEntriesPerLesson = v;
    }

    /**
      Get The number of entries per lesson
    */
    static
    int entriesPerLesson()
    {
      return self()->mEntriesPerLesson;
    }

    /**
      Set If true, vocabularies are automatically saved on close and exit
    */
    static
    void setAutoSave( bool v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "AutoSave" ) ))
        self()->mAutoSave = v;
    }

    /**
      Get If true, vocabularies are automatically saved on close and exit
    */
    static
    bool autoSave()
    {
      return self()->mAutoSave;
    }

    /**
      Set If true, a backup is save every BackupTime minutes
    */
    static
    void setAutoBackup( bool v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "AutoBackup" ) ))
        self()->mAutoBackup = v;
    }

    /**
      Get If true, a backup is save every BackupTime minutes
    */
    static
    bool autoBackup()
    {
      return self()->mAutoBackup;
    }

    /**
      Set Time interval between two automatic backups
    */
    static
    void setBackupTime( int v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "BackupTime" ) ))
        self()->mBackupTime = v;
    }

    /**
      Get Time interval between two automatic backups
    */
    static
    int backupTime()
    {
      return self()->mBackupTime;
    }

    /**
      Set How the columns should be resized.
    */
    static
    void setHeaderResizeMode( int v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "HeaderResizeMode" ) ))
        self()->mHeaderResizeMode = v;
    }

    /**
      Get How the columns should be resized.
    */
    static
    int headerResizeMode()
    {
      return self()->mHeaderResizeMode;
    }

    /**
      Set In Blocking Query Tab Dialog, if checked then the Query is blocked
    */
    static
    void setBlock( bool v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "Block" ) ))
        self()->mBlock = v;
    }

    /**
      Get In Blocking Query Tab Dialog, if checked then the Query is blocked
    */
    static
    bool block()
    {
      return self()->mBlock;
    }

    /**
      Set In Blocking Query Tab Dialog, if checked then the Query accepts an expiring time
    */
    static
    void setExpire( bool v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "Expire" ) ))
        self()->mExpire = v;
    }

    /**
      Get In Blocking Query Tab Dialog, if checked then the Query accepts an expiring time
    */
    static
    bool expire()
    {
      return self()->mExpire;
    }

    /**
      Set Use the Leitner learning method
    */
    static
    void setAltLearn( bool v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "AltLearn" ) ))
        self()->mAltLearn = v;
    }

    /**
      Get Use the Leitner learning method
    */
    static
    bool altLearn()
    {
      return self()->mAltLearn;
    }

    /**
      Set Swap direction randomly
    */
    static
    void setSwapDirection( bool v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "SwapDirection" ) ))
        self()->mSwapDirection = v;
    }

    /**
      Get Swap direction randomly
    */
    static
    bool swapDirection()
    {
      return self()->mSwapDirection;
    }

    /**
      Set Get a progress bar to show remaining time if true.
    */
    static
    void setShowCounter( bool v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "ShowCounter" ) ))
        self()->mShowCounter = v;
    }

    /**
      Get Get a progress bar to show remaining time if true.
    */
    static
    bool showCounter()
    {
      return self()->mShowCounter;
    }

    /**
      Set If true, there is no time set to answer each query
    */
    static
    void setQueryTimeout( int v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "QueryTimeout" ) ))
        self()->mQueryTimeout = v;
    }

    /**
      Get If true, there is no time set to answer each query
    */
    static
    int queryTimeout()
    {
      return self()->mQueryTimeout;
    }

    /**
      Set Maximum time allowed per query
    */
    static
    void setMaxTimePer( int v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "MaxTimePer" ) ))
        self()->mMaxTimePer = v;
    }

    /**
      Get Maximum time allowed per query
    */
    static
    int maxTimePer()
    {
      return self()->mMaxTimePer;
    }

    /**
      Set Enable suggestion lists in Random Query.
    */
    static
    void setSuggestions( bool v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "Suggestions" ) ))
        self()->mSuggestions = v;
    }

    /**
      Get Enable suggestion lists in Random Query.
    */
    static
    bool suggestions()
    {
      return self()->mSuggestions;
    }

    /**
      Set Split translations in Random Query.
    */
    static
    void setSplit( bool v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "Split" ) ))
        self()->mSplit = v;
    }

    /**
      Get Split translations in Random Query.
    */
    static
    bool split()
    {
      return self()->mSplit;
    }

    /**
      Set Split translations at periods.
    */
    static
    void setPeriods( bool v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "Periods" ) ))
        self()->mPeriods = v;
    }

    /**
      Get Split translations at periods.
    */
    static
    bool periods()
    {
      return self()->mPeriods;
    }

    /**
      Set Split translations at colons.
    */
    static
    void setColons( bool v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "Colons" ) ))
        self()->mColons = v;
    }

    /**
      Get Split translations at colons.
    */
    static
    bool colons()
    {
      return self()->mColons;
    }

    /**
      Set Split translations at semicolons.
    */
    static
    void setSemicolons( bool v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "Semicolons" ) ))
        self()->mSemicolons = v;
    }

    /**
      Get Split translations at semicolons.
    */
    static
    bool semicolons()
    {
      return self()->mSemicolons;
    }

    /**
      Set Split translations at commas.
    */
    static
    void setCommas( bool v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "Commas" ) ))
        self()->mCommas = v;
    }

    /**
      Get Split translations at commas.
    */
    static
    bool commas()
    {
      return self()->mCommas;
    }

    /**
      Set Maximum number of fields to split translations into.
    */
    static
    void setFields( int v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "Fields" ) ))
        self()->mFields = v;
    }

    /**
      Get Maximum number of fields to split translations into.
    */
    static
    int fields()
    {
      return self()->mFields;
    }

    /**
      Set Enable Show More button in Random Query.
    */
    static
    void setShowMore( bool v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "ShowMore" ) ))
        self()->mShowMore = v;
    }

    /**
      Get Enable Show More button in Random Query.
    */
    static
    bool showMore()
    {
      return self()->mShowMore;
    }

    /**
      Set Enable I Know button in Random Query.
    */
    static
    void setIKnow( bool v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "IKnow" ) ))
        self()->mIKnow = v;
    }

    /**
      Get Enable I Know button in Random Query.
    */
    static
    bool iKnow()
    {
      return self()->mIKnow;
    }

    /**
      Set The font used in the vocabulary table
    */
    static
    void setTableFont( const TQFont & v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "TableFont" ) ))
        self()->mTableFont = v;
    }

    /**
      Get The font used in the vocabulary table
    */
    static
    TQFont tableFont()
    {
      return self()->mTableFont;
    }

    /**
      Set The font used for phonetics
    */
    static
    void setIPAFont( const TQFont & v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "IPAFont" ) ))
        self()->mIPAFont = v;
    }

    /**
      Get The font used for phonetics
    */
    static
    TQFont iPAFont()
    {
      return self()->mIPAFont;
    }

    /**
      Set Currently selected column
    */
    static
    void setCurrentCol( int v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "CurrentCol" ) ))
        self()->mCurrentCol = v;
    }

    /**
      Get Currently selected column
    */
    static
    int currentCol()
    {
      return self()->mCurrentCol;
    }

    /**
      Set Currently selected row
    */
    static
    void setCurrentRow( int v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "CurrentRow" ) ))
        self()->mCurrentRow = v;
    }

    /**
      Get Currently selected row
    */
    static
    int currentRow()
    {
      return self()->mCurrentRow;
    }

    /**
      Set Use your own colors
    */
    static
    void setUseGradeCol( bool v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "UseGradeCol" ) ))
        self()->mUseGradeCol = v;
    }

    /**
      Get Use your own colors
    */
    static
    bool useGradeCol()
    {
      return self()->mUseGradeCol;
    }

    /**
      Set Colors used to display different grades
    */
    static
    void setGradeCol( int i, const TQColor & v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "GradeCol%1" ).arg( i ) ))
        self()->mGradeCol[i] = v;
    }

    /**
      Get Colors used to display different grades
    */
    static
    TQColor gradeCol( int i )
    {
      return self()->mGradeCol[i];
    }

    /**
      Set Types of comparisons
    */
    static
    void setCompType( int i, int v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "CompType%1" ).arg( TQString::fromLatin1( EnumType::enumToString[i] ) ) ))
        self()->mCompType[i] = v;
    }

    /**
      Get Types of comparisons
    */
    static
    int compType( int i )
    {
      return self()->mCompType[i];
    }

    /**
      Set DateItem
    */
    static
    void setDateItem( int v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "DateItem" ) ))
        self()->mDateItem = v;
    }

    /**
      Get DateItem
    */
    static
    int dateItem()
    {
      return self()->mDateItem;
    }

    /**
      Set BadItem
    */
    static
    void setBadItem( int v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "BadItem" ) ))
        self()->mBadItem = v;
    }

    /**
      Get BadItem
    */
    static
    int badItem()
    {
      return self()->mBadItem;
    }

    /**
      Set QueryItem
    */
    static
    void setQueryItem( int v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "QueryItem" ) ))
        self()->mQueryItem = v;
    }

    /**
      Get QueryItem
    */
    static
    int queryItem()
    {
      return self()->mQueryItem;
    }

    /**
      Set GradeItem
    */
    static
    void setGradeItem( int v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "GradeItem" ) ))
        self()->mGradeItem = v;
    }

    /**
      Get GradeItem
    */
    static
    int gradeItem()
    {
      return self()->mGradeItem;
    }

    /**
      Set TypeItem
    */
    static
    void setTypeItem( const TQString & v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "TypeItem" ) ))
        self()->mTypeItem = v;
    }

    /**
      Get TypeItem
    */
    static
    TQString typeItem()
    {
      return self()->mTypeItem;
    }

    /**
      Set Amount of time different grades should be blocked
    */
    static
    void setBlockItem( int i, int v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "BlockItem%1" ).arg( i ) ))
        self()->mBlockItem[i] = v;
    }

    /**
      Get Amount of time different grades should be blocked
    */
    static
    int blockItem( int i )
    {
      return self()->mBlockItem[i];
    }

    /**
      Set Amount of time after which different grades should expire
    */
    static
    void setExpireItem( int i, int v )
    {
      if (!self()->isImmutable( TQString::fromLatin1( "ExpireItem%1" ).arg( i ) ))
        self()->mExpireItem[i] = v;
    }

    /**
      Get Amount of time after which different grades should expire
    */
    static
    int expireItem( int i )
    {
      return self()->mExpireItem[i];
    }

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

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

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

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

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

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

    static
    void writeConfig()
    {
      static_cast<TDEConfigSkeleton*>(self())->writeConfig();
    }
  protected:
    Prefs();
    static Prefs *mSelf;


    // General
    int mNumPreSetting;
    int mNumLangSet;
    bool mAutoEntryApply;
    bool mSmartAppend;
    bool mUseCurrent;
    TQString mSeparator;
    TQStringList mPasteOrder;
    int mEntriesPerLesson;
    bool mAutoSave;
    bool mAutoBackup;
    int mBackupTime;
    int mHeaderResizeMode;

    // QueryProperties
    bool mBlock;
    bool mExpire;
    bool mAltLearn;
    bool mSwapDirection;
    bool mShowCounter;
    int mQueryTimeout;
    int mMaxTimePer;
    bool mSuggestions;
    bool mSplit;
    bool mPeriods;
    bool mColons;
    bool mSemicolons;
    bool mCommas;
    int mFields;
    bool mShowMore;
    bool mIKnow;

    // Appearance
    TQFont mTableFont;
    TQFont mIPAFont;
    int mCurrentCol;
    int mCurrentRow;
    bool mUseGradeCol;
    TQColor mGradeCol[8];

    // QueryManager
    int mCompType[6];
    int mDateItem;
    int mBadItem;
    int mQueryItem;
    int mGradeItem;
    TQString mTypeItem;
    int mBlockItem[8];
    int mExpireItem[8];

    // TDENewStuff
    TQString mProvidersUrl;
    TQString mInstallationCommand;
    TQString mInstallPath;

  private:
};

#endif

