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

#include "kmm_settings_export.h"
#include "kmymoneysettings_addon.h"

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

class KMM_SETTINGS_EXPORT KMyMoneySettings : public KConfigSkeleton
{
  public:
    enum PositionType { Day, Month, Year };

    static KMyMoneySettings *self();
    ~KMyMoneySettings();

    /**
      Set Always show a No. field in transaction form
    */
    static
    void setAlwaysShowNrField( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "AlwaysShowNrField" ) ))
        self()->mAlwaysShowNrField = v;
    }

    /**
      Get Always show a No. field in transaction form
    */
    static
    bool alwaysShowNrField()
    {
      return self()->mAlwaysShowNrField;
    }

    /**
      Set Auto fill with previous transaction data
    */
    static
    void setAutoFillTransaction( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "AutoFillTransaction" ) ))
        self()->mAutoFillTransaction = v;
    }

    /**
      Get Auto fill with previous transaction data
    */
    static
    int autoFillTransaction()
    {
      return self()->mAutoFillTransaction;
    }

    /**
      Set Treat two transactions as identical, if amount differs by less than
    */
    static
    void setAutoFillDifference( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "AutoFillDifference" ) ))
        self()->mAutoFillDifference = v;
    }

    /**
      Get Treat two transactions as identical, if amount differs by less than
    */
    static
    int autoFillDifference()
    {
      return self()->mAutoFillDifference;
    }

    /**
      Set When auto fill with previous transaction data use the memos
    */
    static
    void setAutoFillUseMemos( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "AutoFillUseMemos" ) ))
        self()->mAutoFillUseMemos = v;
    }

    /**
      Get When auto fill with previous transaction data use the memos
    */
    static
    bool autoFillUseMemos()
    {
      return self()->mAutoFillUseMemos;
    }

    /**
      Set Auto increment check number
    */
    static
    void setAutoIncCheckNumber( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "AutoIncCheckNumber" ) ))
        self()->mAutoIncCheckNumber = v;
    }

    /**
      Get Auto increment check number
    */
    static
    bool autoIncCheckNumber()
    {
      return self()->mAutoIncCheckNumber;
    }

    /**
      Set Autosave file periodically
    */
    static
    void setAutoSaveFile( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "AutoSaveFile" ) ))
        self()->mAutoSaveFile = v;
    }

    /**
      Get Autosave file periodically
    */
    static
    bool autoSaveFile()
    {
      return self()->mAutoSaveFile;
    }

    /**
      Set Automatically find which transactions match the given reconciliation data
    */
    static
    void setAutoReconciliation( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "AutoReconciliation" ) ))
        self()->mAutoReconciliation = v;
    }

    /**
      Get Automatically find which transactions match the given reconciliation data
    */
    static
    bool autoReconciliation()
    {
      return self()->mAutoReconciliation;
    }

    /**
      Set Number of backup files to keep
    */
    static
    void setAutoBackupCopies( int v )
    {
      if (v < 0)
      {
        qDebug() << "setAutoBackupCopies: value " << v << " is less than the minimum value of 0";
        v = 0;
      }

      if (v > 20)
      {
        qDebug() << "setAutoBackupCopies: value " << v << " is greater than the maximum value of 20";
        v = 20;
      }

      if (!self()->isImmutable( QStringLiteral( "AutoBackupCopies" ) ))
        self()->mAutoBackupCopies = v;
    }

    /**
      Get Number of backup files to keep
    */
    static
    int autoBackupCopies()
    {
      return self()->mAutoBackupCopies;
    }

    /**
      Set Autosave interval in minutes
    */
    static
    void setAutoSavePeriod( int v )
    {
      if (v < 0)
      {
        qDebug() << "setAutoSavePeriod: value " << v << " is less than the minimum value of 0";
        v = 0;
      }

      if (v > 60)
      {
        qDebug() << "setAutoSavePeriod: value " << v << " is greater than the maximum value of 60";
        v = 60;
      }

      if (!self()->isImmutable( QStringLiteral( "AutoSavePeriod" ) ))
        self()->mAutoSavePeriod = v;
    }

    /**
      Get Autosave interval in minutes
    */
    static
    int autoSavePeriod()
    {
      return self()->mAutoSavePeriod;
    }

    /**
      Set Autosave file upon close
    */
    static
    void setAutoSaveOnClose( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "AutoSaveOnClose" ) ))
        self()->mAutoSaveOnClose = v;
    }

    /**
      Get Autosave file upon close
    */
    static
    bool autoSaveOnClose()
    {
      return self()->mAutoSaveOnClose;
    }

    /**
      Set Check schedules upon startup
    */
    static
    void setCheckSchedule( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "CheckSchedule" ) ))
        self()->mCheckSchedule = v;
    }

    /**
      Get Check schedules upon startup
    */
    static
    bool checkSchedule()
    {
      return self()->mCheckSchedule;
    }

    /**
      Set Enter transactions this number of days in advance
    */
    static
    void setCheckSchedulePreview( int v )
    {
      if (v < 0)
      {
        qDebug() << "setCheckSchedulePreview: value " << v << " is less than the minimum value of 0";
        v = 0;
      }

      if (v > 999)
      {
        qDebug() << "setCheckSchedulePreview: value " << v << " is greater than the maximum value of 999";
        v = 999;
      }

      if (!self()->isImmutable( QStringLiteral( "CheckSchedulePreview" ) ))
        self()->mCheckSchedulePreview = v;
    }

    /**
      Get Enter transactions this number of days in advance
    */
    static
    int checkSchedulePreview()
    {
      return self()->mCheckSchedulePreview;
    }

    /**
      Set Name of external calculator program
    */
    static
    void setExternalCalculator( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "ExternalCalculator" ) ))
        self()->mExternalCalculator = v;
    }

    /**
      Get Name of external calculator program
    */
    static
    QString externalCalculator()
    {
      return self()->mExternalCalculator;
    }

    /**
      Set Name of region used for non-processing days
    */
    static
    void setHolidayRegion( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "HolidayRegion" ) ))
        self()->mHolidayRegion = v;
    }

    /**
      Get Name of region used for non-processing days
    */
    static
    QString holidayRegion()
    {
      return self()->mHolidayRegion;
    }

    /**
      Set Number of days to preview schedules in ledger
    */
    static
    void setSchedulePreview( int v )
    {
      if (v < 0)
      {
        qDebug() << "setSchedulePreview: value " << v << " is less than the minimum value of 0";
        v = 0;
      }

      if (v > 999)
      {
        qDebug() << "setSchedulePreview: value " << v << " is greater than the maximum value of 999";
        v = 999;
      }

      if (!self()->isImmutable( QStringLiteral( "SchedulePreview" ) ))
        self()->mSchedulePreview = v;
    }

    /**
      Get Number of days to preview schedules in ledger
    */
    static
    int schedulePreview()
    {
      return self()->mSchedulePreview;
    }

    /**
      Set Insert transaction type into No. field for new transactions
    */
    static
    void setCopyTypeToNr( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "CopyTypeToNr" ) ))
        self()->mCopyTypeToNr = v;
    }

    /**
      Get Insert transaction type into No. field for new transactions
    */
    static
    bool copyTypeToNr()
    {
      return self()->mCopyTypeToNr;
    }

    /**
      Set Keep changes when selecting a different transaction/split
    */
    static
    void setFocusChangeIsEnter( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "FocusChangeIsEnter" ) ))
        self()->mFocusChangeIsEnter = v;
    }

    /**
      Get Keep changes when selecting a different transaction/split
    */
    static
    bool focusChangeIsEnter()
    {
      return self()->mFocusChangeIsEnter;
    }

    /**
      Set Using the Enter key moves between the fields
    */
    static
    void setEnterMovesBetweenFields( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "EnterMovesBetweenFields" ) ))
        self()->mEnterMovesBetweenFields = v;
    }

    /**
      Get Using the Enter key moves between the fields
    */
    static
    bool enterMovesBetweenFields()
    {
      return self()->mEnterMovesBetweenFields;
    }

    /**
      Set Use the ledger lens
    */
    static
    void setLedgerLens( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "LedgerLens" ) ))
        self()->mLedgerLens = v;
    }

    /**
      Get Use the ledger lens
    */
    static
    bool ledgerLens()
    {
      return self()->mLedgerLens;
    }

    /**
      Set Update price history
    */
    static
    void setPriceHistoryUpdate( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "PriceHistoryUpdate" ) ))
        self()->mPriceHistoryUpdate = v;
    }

    /**
      Get Update price history
    */
    static
    bool priceHistoryUpdate()
    {
      return self()->mPriceHistoryUpdate;
    }

    /**
      Set Show transaction form
    */
    static
    void setTransactionForm( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "TransactionForm" ) ))
        self()->mTransactionForm = v;
    }

    /**
      Get Show transaction form
    */
    static
    bool transactionForm()
    {
      return self()->mTransactionForm;
    }

    /**
      Set Start with last selected view or homepage
    */
    static
    void setStartLastViewSelected( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "StartLastViewSelected" ) ))
        self()->mStartLastViewSelected = v;
    }

    /**
      Get Start with last selected view or homepage
    */
    static
    int startLastViewSelected()
    {
      return self()->mStartLastViewSelected;
    }

    /**
      Set The last selected view
    */
    static
    void setLastViewSelected( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "LastViewSelected" ) ))
        self()->mLastViewSelected = v;
    }

    /**
      Get The last selected view
    */
    static
    int lastViewSelected()
    {
      return self()->mLastViewSelected;
    }

    /**
      Set Use GPG to encrypt data file
    */
    static
    void setWriteDataEncrypted( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "WriteDataEncrypted" ) ))
        self()->mWriteDataEncrypted = v;
    }

    /**
      Get Use GPG to encrypt data file
    */
    static
    bool writeDataEncrypted()
    {
      return self()->mWriteDataEncrypted;
    }

    /**
      Set Also encrypt against recover key
    */
    static
    void setEncryptRecover( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "EncryptRecover" ) ))
        self()->mEncryptRecover = v;
    }

    /**
      Get Also encrypt against recover key
    */
    static
    bool encryptRecover()
    {
      return self()->mEncryptRecover;
    }

    /**
      Set GPG User ID (deprecated)
    */
    static
    void setGpgRecipient( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "GpgRecipient" ) ))
        self()->mGpgRecipient = v;
    }

    /**
      Get GPG User ID (deprecated)
    */
    static
    QString gpgRecipient()
    {
      return self()->mGpgRecipient;
    }

    /**
      Set GPG User ID
    */
    static
    void setGpgRecipientList( const QStringList & v )
    {
      if (!self()->isImmutable( QStringLiteral( "GpgRecipientList" ) ))
        self()->mGpgRecipientList = v;
    }

    /**
      Get GPG User ID
    */
    static
    QStringList gpgRecipientList()
    {
      return self()->mGpgRecipientList;
    }

    /**
      Set Run in expert (accountant) mode
    */
    static
    void setExpertMode( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ExpertMode" ) ))
        self()->mExpertMode = v;
    }

    /**
      Get Run in expert (accountant) mode
    */
    static
    bool expertMode()
    {
      return self()->mExpertMode;
    }

    /**
      Set Show splash screen during startup
    */
    static
    void setShowSplash( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowSplash" ) ))
        self()->mShowSplash = v;
    }

    /**
      Get Show splash screen during startup
    */
    static
    bool showSplash()
    {
      return self()->mShowSplash;
    }

    /**
      Set Synchronize account in ledger and investment view
    */
    static
    void setSyncLedgerInvestment( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "syncLedgerInvestment" ) ))
        self()->mSyncLedgerInvestment = v;
    }

    /**
      Get Synchronize account in ledger and investment view
    */
    static
    bool syncLedgerInvestment()
    {
      return self()->mSyncLedgerInvestment;
    }

    /**
      Set The type of the KMyMoney view
    */
    static
    void setViewType( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "viewType" ) ))
        self()->mViewType = v;
    }

    /**
      Get The type of the KMyMoney view
    */
    static
    int viewType()
    {
      return self()->mViewType;
    }

    /**
      Set First time switch to start new user wizard
    */
    static
    void setFirstTimeRun( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "firstTimeRun" ) ))
        self()->mFirstTimeRun = v;
    }

    /**
      Get First time switch to start new user wizard
    */
    static
    bool firstTimeRun()
    {
      return self()->mFirstTimeRun;
    }

    /**
      Set Show title bar on each view
    */
    static
    void setShowTitleBar( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "showTitleBar" ) ))
        self()->mShowTitleBar = v;
    }

    /**
      Get Show title bar on each view
    */
    static
    bool showTitleBar()
    {
      return self()->mShowTitleBar;
    }

    /**
      Set Match strings in auto-completion only from the first letter on. A substring behind the first letter is not found.
    */
    static
    void setStringMatchFromStart( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "stringMatchFromStart" ) ))
        self()->mStringMatchFromStart = v;
    }

    /**
      Get Match strings in auto-completion only from the first letter on. A substring behind the first letter is not found.
    */
    static
    bool stringMatchFromStart()
    {
      return self()->mStringMatchFromStart;
    }

    /**
      Set Tab order of edit widgets in transaction form
    */
    static
    void setStdTransactionFormTabOrder( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "stdTransactionFormTabOrder" ) ))
        self()->mStdTransactionFormTabOrder = v;
    }

    /**
      Get Tab order of edit widgets in transaction form
    */
    static
    QString stdTransactionFormTabOrder()
    {
      return self()->mStdTransactionFormTabOrder;
    }

    /**
      Set Tab order of edit widgets in register
    */
    static
    void setStdTransactionRegisterTabOrder( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "stdTransactionRegisterTabOrder" ) ))
        self()->mStdTransactionRegisterTabOrder = v;
    }

    /**
      Get Tab order of edit widgets in register
    */
    static
    QString stdTransactionRegisterTabOrder()
    {
      return self()->mStdTransactionRegisterTabOrder;
    }

    /**
      Set Order of items on homepage
    */
    static
    void setItemList( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "ItemList" ) ))
        self()->mItemList = v;
    }

    /**
      Get Order of items on homepage
    */
    static
    QString itemList()
    {
      return self()->mItemList;
    }

    /**
      Set Zoom factor used for home view HTML page
    */
    static
    void setZoomFactor( double v )
    {
      if (!self()->isImmutable( QStringLiteral( "ZoomFactor" ) ))
        self()->mZoomFactor = v;
    }

    /**
      Get Zoom factor used for home view HTML page
    */
    static
    double zoomFactor()
    {
      return self()->mZoomFactor;
    }

    /**
      Set Remember (manually adjusted) zoom factor in home view on program end.
    */
    static
    void setRememberZoomFactor( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "RememberZoomFactor" ) ))
        self()->mRememberZoomFactor = v;
    }

    /**
      Get Remember (manually adjusted) zoom factor in home view on program end.
    */
    static
    bool rememberZoomFactor()
    {
      return self()->mRememberZoomFactor;
    }

    /**
      Set Show account limit information on the Homepage
    */
    static
    void setShowLimitInfo( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowLimitInfo" ) ))
        self()->mShowLimitInfo = v;
    }

    /**
      Get Show account limit information on the Homepage
    */
    static
    bool showLimitInfo()
    {
      return self()->mShowLimitInfo;
    }

    /**
      Set Show balance status on the Homepage for accounts where data imports include balance information.
    */
    static
    void setShowBalanceStatusOfOnlineAccounts( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowBalanceStatusOfOnlineAccounts" ) ))
        self()->mShowBalanceStatusOfOnlineAccounts = v;
    }

    /**
      Get Show balance status on the Homepage for accounts where data imports include balance information.
    */
    static
    bool showBalanceStatusOfOnlineAccounts()
    {
      return self()->mShowBalanceStatusOfOnlineAccounts;
    }

    /**
      Set Show number of not marked transactions per account on the Homepage [!M]
    */
    static
    void setShowCountOfUnmarkedTransactions( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowCountOfUnmarkedTransactions" ) ))
        self()->mShowCountOfUnmarkedTransactions = v;
    }

    /**
      Get Show number of not marked transactions per account on the Homepage [!M]
    */
    static
    bool showCountOfUnmarkedTransactions()
    {
      return self()->mShowCountOfUnmarkedTransactions;
    }

    /**
      Set Show number of cleared transactions per account on the Homepage [C]
    */
    static
    void setShowCountOfClearedTransactions( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowCountOfClearedTransactions" ) ))
        self()->mShowCountOfClearedTransactions = v;
    }

    /**
      Get Show number of cleared transactions per account on the Homepage [C]
    */
    static
    bool showCountOfClearedTransactions()
    {
      return self()->mShowCountOfClearedTransactions;
    }

    /**
      Set Show number of not reconciled (not marked + cleared) transactions per account on the Homepage [!R]
    */
    static
    void setShowCountOfNotReconciledTransactions( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowCountOfNotReconciledTransactions" ) ))
        self()->mShowCountOfNotReconciledTransactions = v;
    }

    /**
      Get Show number of not reconciled (not marked + cleared) transactions per account on the Homepage [!R]
    */
    static
    bool showCountOfNotReconciledTransactions()
    {
      return self()->mShowCountOfNotReconciledTransactions;
    }

    /**
      Set Show date of last reconciliation on the Homepage
    */
    static
    void setShowDateOfLastReconciliation( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowDateOfLastReconciliation" ) ))
        self()->mShowDateOfLastReconciliation = v;
    }

    /**
      Get Show date of last reconciliation on the Homepage
    */
    static
    bool showDateOfLastReconciliation()
    {
      return self()->mShowDateOfLastReconciliation;
    }

    /**
      Set Hide zero balance liabilities on the Homepage
    */
    static
    void setHideZeroBalanceLiabilities( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "HideZeroBalanceLiabilities" ) ))
        self()->mHideZeroBalanceLiabilities = v;
    }

    /**
      Get Hide zero balance liabilities on the Homepage
    */
    static
    bool hideZeroBalanceLiabilities()
    {
      return self()->mHideZeroBalanceLiabilities;
    }

    /**
      Set Use custom colors
    */
    static
    void setUseCustomColors( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "useCustomColors" ) ))
        self()->mUseCustomColors = v;
    }

    /**
      Get Use custom colors
    */
    static
    bool useCustomColors()
    {
      return self()->mUseCustomColors;
    }

    /**
      Set Background color for imported transactions
    */
    static
    void setTransactionImportedColor( const QColor & v )
    {
      if (!self()->isImmutable( QStringLiteral( "transactionImportedColor" ) ))
        self()->mTransactionImportedColor = v;
    }

    /**
      Get Background color for imported transactions
    */
    static
    QColor transactionImportedColor()
    {
      return self()->mTransactionImportedColor;
    }

    /**
      Set Background color for matched transactions
    */
    static
    void setTransactionMatchedColor( const QColor & v )
    {
      if (!self()->isImmutable( QStringLiteral( "transactionMatchedColor" ) ))
        self()->mTransactionMatchedColor = v;
    }

    /**
      Get Background color for matched transactions
    */
    static
    QColor transactionMatchedColor()
    {
      return self()->mTransactionMatchedColor;
    }

    /**
      Set List color for erroneous transactions
    */
    static
    void setTransactionErroneousColor( const QColor & v )
    {
      if (!self()->isImmutable( QStringLiteral( "transactionErroneousColor" ) ))
        self()->mTransactionErroneousColor = v;
    }

    /**
      Get List color for erroneous transactions
    */
    static
    QColor transactionErroneousColor()
    {
      return self()->mTransactionErroneousColor;
    }

    /**
      Set List color for missing conversion rate
    */
    static
    void setMissingConversionRateColor( const QColor & v )
    {
      if (!self()->isImmutable( QStringLiteral( "missingConversionRateColor" ) ))
        self()->mMissingConversionRateColor = v;
    }

    /**
      Get List color for missing conversion rate
    */
    static
    QColor missingConversionRateColor()
    {
      return self()->mMissingConversionRateColor;
    }

    /**
      Set Background color for group marker
    */
    static
    void setGroupMarkerColor( const QColor & v )
    {
      if (!self()->isImmutable( QStringLiteral( "groupMarkerColor" ) ))
        self()->mGroupMarkerColor = v;
    }

    /**
      Get Background color for group marker
    */
    static
    QColor groupMarkerColor()
    {
      return self()->mGroupMarkerColor;
    }

    /**
      Set Background color for required fields
    */
    static
    void setFieldRequiredColor( const QColor & v )
    {
      if (!self()->isImmutable( QStringLiteral( "fieldRequiredColor" ) ))
        self()->mFieldRequiredColor = v;
    }

    /**
      Get Background color for required fields
    */
    static
    QColor fieldRequiredColor()
    {
      return self()->mFieldRequiredColor;
    }

    /**
      Set Hide unused categories
    */
    static
    void setHideUnusedCategory( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "HideUnusedCategory" ) ))
        self()->mHideUnusedCategory = v;
    }

    /**
      Get Hide unused categories
    */
    static
    bool hideUnusedCategory()
    {
      return self()->mHideUnusedCategory;
    }

    /**
      Set Hide closed accounts
    */
    static
    void setHideClosedAccounts( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "HideClosedAccounts" ) ))
        self()->mHideClosedAccounts = v;
    }

    /**
      Get Hide closed accounts
    */
    static
    bool hideClosedAccounts()
    {
      return self()->mHideClosedAccounts;
    }

    /**
      Set Show all accounts
    */
    static
    void setShowAllAccounts( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowAllAccounts" ) ))
        self()->mShowAllAccounts = v;
    }

    /**
      Get Show all accounts
    */
    static
    bool showAllAccounts()
    {
      return self()->mShowAllAccounts;
    }

    /**
      Set Show categories in the accounts view
    */
    static
    void setShowCategoriesInAccountsView( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowCategoriesInAccountsView" ) ))
        self()->mShowCategoriesInAccountsView = v;
    }

    /**
      Get Show categories in the accounts view
    */
    static
    bool showCategoriesInAccountsView()
    {
      return self()->mShowCategoriesInAccountsView;
    }

    /**
      Set Hide zero balance equities
    */
    static
    void setHideZeroBalanceEquities( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "HideZeroBalanceEquities" ) ))
        self()->mHideZeroBalanceEquities = v;
    }

    /**
      Get Hide zero balance equities
    */
    static
    bool hideZeroBalanceEquities()
    {
      return self()->mHideZeroBalanceEquities;
    }

    /**
      Set Hide finished schedules
    */
    static
    void setHideFinishedSchedules( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "HideFinishedSchedules" ) ))
        self()->mHideFinishedSchedules = v;
    }

    /**
      Get Hide finished schedules
    */
    static
    bool hideFinishedSchedules()
    {
      return self()->mHideFinishedSchedules;
    }

    /**
      Set Hide reconciled transactions
    */
    static
    void setHideReconciledTransactions( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "HideReconciledTransactions" ) ))
        self()->mHideReconciledTransactions = v;
    }

    /**
      Get Hide reconciled transactions
    */
    static
    bool hideReconciledTransactions()
    {
      return self()->mHideReconciledTransactions;
    }

    /**
      Set Show all register entries in full detail
    */
    static
    void setShowRegisterDetailed( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowRegisterDetailed" ) ))
        self()->mShowRegisterDetailed = v;
    }

    /**
      Get Show all register entries in full detail
    */
    static
    bool showRegisterDetailed()
    {
      return self()->mShowRegisterDetailed;
    }

    /**
      Set Show schedules with planned date
    */
    static
    void setShowPlannedScheduleDates( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowPlannedScheduleDates" ) ))
        self()->mShowPlannedScheduleDates = v;
    }

    /**
      Get Show schedules with planned date
    */
    static
    bool showPlannedScheduleDates()
    {
      return self()->mShowPlannedScheduleDates;
    }

    /**
      Set Show a grid in the register
    */
    static
    void setShowGrid( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowGrid" ) ))
        self()->mShowGrid = v;
    }

    /**
      Get Show a grid in the register
    */
    static
    bool showGrid()
    {
      return self()->mShowGrid;
    }

    /**
      Set Show fancy group markers
    */
    static
    void setShowFancyMarker( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowFancyMarker" ) ))
        self()->mShowFancyMarker = v;
    }

    /**
      Get Show fancy group markers
    */
    static
    bool showFancyMarker()
    {
      return self()->mShowFancyMarker;
    }

    /**
      Set Show fancy markers for previous and current fiscal year
    */
    static
    void setShowFiscalMarker( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowFiscalMarker" ) ))
        self()->mShowFiscalMarker = v;
    }

    /**
      Get Show fancy markers for previous and current fiscal year
    */
    static
    bool showFiscalMarker()
    {
      return self()->mShowFiscalMarker;
    }

    /**
      Set Starting month of the fiscal year
    */
    static
    void setFiscalYearBegin( int v )
    {
      if (v < 0)
      {
        qDebug() << "setFiscalYearBegin: value " << v << " is less than the minimum value of 0";
        v = 0;
      }

      if (v > 11)
      {
        qDebug() << "setFiscalYearBegin: value " << v << " is greater than the maximum value of 11";
        v = 11;
      }

      if (!self()->isImmutable( QStringLiteral( "FiscalYearBegin" ) ))
        self()->mFiscalYearBegin = v;
    }

    /**
      Get Starting month of the fiscal year
    */
    static
    int fiscalYearBegin()
    {
      return self()->mFiscalYearBegin;
    }

    /**
      Set Starting day of the fiscal year
    */
    static
    void setFiscalYearBeginDay( int v )
    {
      if (v < 1)
      {
        qDebug() << "setFiscalYearBeginDay: value " << v << " is less than the minimum value of 1";
        v = 1;
      }

      if (v > 28)
      {
        qDebug() << "setFiscalYearBeginDay: value " << v << " is greater than the maximum value of 28";
        v = 28;
      }

      if (!self()->isImmutable( QStringLiteral( "FiscalYearBeginDay" ) ))
        self()->mFiscalYearBeginDay = v;
    }

    /**
      Get Starting day of the fiscal year
    */
    static
    int fiscalYearBeginDay()
    {
      return self()->mFiscalYearBeginDay;
    }

    /**
      Set Start date
    */
    static
    void setStartDate( const QDateTime & v )
    {
      if (!self()->isImmutable( QStringLiteral( "StartDate" ) ))
        self()->mStartDate = v;
    }

    /**
      Get Start date
    */
    static
    QDateTime startDate()
    {
      return self()->mStartDate;
    }

    /**
      Set Log file path
    */
    static
    void setLogPath( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "logPath" ) ))
        self()->mLogPath = v;
    }

    /**
      Get Log file path
    */
    static
    QString logPath()
    {
      return self()->mLogPath;
    }

    /**
      Set Log imported statements
    */
    static
    void setLogImportedStatements( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "logImportedStatements" ) ))
        self()->mLogImportedStatements = v;
    }

    /**
      Get Log imported statements
    */
    static
    bool logImportedStatements()
    {
      return self()->mLogImportedStatements;
    }

    /**
      Set Log OFX transactions
    */
    static
    void setLogOfxTransactions( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "logOfxTransactions" ) ))
        self()->mLogOfxTransactions = v;
    }

    /**
      Get Log OFX transactions
    */
    static
    bool logOfxTransactions()
    {
      return self()->mLogOfxTransactions;
    }

    /**
      Set Use system font
    */
    static
    void setUseSystemFont( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "useSystemFont" ) ))
        self()->mUseSystemFont = v;
    }

    /**
      Get Use system font
    */
    static
    bool useSystemFont()
    {
      return self()->mUseSystemFont;
    }

    /**
      Set Cell font
    */
    static
    void setListCellFont( const QFont & v )
    {
      if (!self()->isImmutable( QStringLiteral( "listCellFont" ) ))
        self()->mListCellFont = v;
    }

    /**
      Get Cell font
    */
    static
    QFont listCellFont()
    {
      return self()->mListCellFont;
    }

    /**
      Set Header font
    */
    static
    void setListHeaderFont( const QFont & v )
    {
      if (!self()->isImmutable( QStringLiteral( "listHeaderFont" ) ))
        self()->mListHeaderFont = v;
    }

    /**
      Get Header font
    */
    static
    QFont listHeaderFont()
    {
      return self()->mListHeaderFont;
    }

    /**
      Set Icon theme
    */
    static
    void setIconsTheme( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "IconsTheme" ) ))
        self()->mIconsTheme = v;
    }

    /**
      Get Icon theme
    */
    static
    QString iconsTheme()
    {
      return self()->mIconsTheme;
    }

    /**
      Set Sort order of register in normal view
    */
    static
    void setSortNormalView( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "sortNormalView" ) ))
        self()->mSortNormalView = v;
    }

    /**
      Get Sort order of register in normal view
    */
    static
    QString sortNormalView()
    {
      return self()->mSortNormalView;
    }

    /**
      Set Sort order of register in normal view
    */
    static
    void setSortReconcileView( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "sortReconcileView" ) ))
        self()->mSortReconcileView = v;
    }

    /**
      Get Sort order of register in normal view
    */
    static
    QString sortReconcileView()
    {
      return self()->mSortReconcileView;
    }

    /**
      Set Sort order of register in search dialog
    */
    static
    void setSortSearchView( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "sortSearchView" ) ))
        self()->mSortSearchView = v;
    }

    /**
      Get Sort order of register in search dialog
    */
    static
    QString sortSearchView()
    {
      return self()->mSortSearchView;
    }

    /**
      Set Initial cursor position within the date field
    */
    static
    void setInitialDateFieldCursorPosition( PositionType v )
    {
      if (!self()->isImmutable( QStringLiteral( "initialDateFieldCursorPosition" ) ))
        self()->mInitialDateFieldCursorPosition = v;
    }

    /**
      Get Initial cursor position within the date field
    */
    static
    PositionType initialDateFieldCursorPosition()
    {
      return static_cast<PositionType>(self()->mInitialDateFieldCursorPosition);
    }

    /**
      Set Default reconciliation state for transactions entered during reconciliation
    */
    static
    void setDefaultReconciliationState( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "defaultReconciliationState" ) ))
        self()->mDefaultReconciliationState = v;
    }

    /**
      Get Default reconciliation state for transactions entered during reconciliation
    */
    static
    int defaultReconciliationState()
    {
      return self()->mDefaultReconciliationState;
    }

    /**
      Set Number of days (plus/minus) to search for matching transactions
    */
    static
    void setMatchInterval( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "matchInterval" ) ))
        self()->mMatchInterval = v;
    }

    /**
      Get Number of days (plus/minus) to search for matching transactions
    */
    static
    int matchInterval()
    {
      return self()->mMatchInterval;
    }

    /**
      Set During import, ask for a new payee's default category
    */
    static
    void setAskForPayeeCategory( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "askForPayeeCategory" ) ))
        self()->mAskForPayeeCategory = v;
    }

    /**
      Get During import, ask for a new payee's default category
    */
    static
    bool askForPayeeCategory()
    {
      return self()->mAskForPayeeCategory;
    }

    /**
      Set additional names for cash account
    */
    static
    void setQifCash( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "qifCash" ) ))
        self()->mQifCash = v;
    }

    /**
      Get additional names for cash account
    */
    static
    QString qifCash()
    {
      return self()->mQifCash;
    }

    /**
      Set additional names for checking account
    */
    static
    void setQifBank( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "qifBank" ) ))
        self()->mQifBank = v;
    }

    /**
      Get additional names for checking account
    */
    static
    QString qifBank()
    {
      return self()->mQifBank;
    }

    /**
      Set additional names for credit card account
    */
    static
    void setQifCreditCard( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "qifCreditCard" ) ))
        self()->mQifCreditCard = v;
    }

    /**
      Get additional names for credit card account
    */
    static
    QString qifCreditCard()
    {
      return self()->mQifCreditCard;
    }

    /**
      Set additional names for asset account
    */
    static
    void setQifAsset( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "qifAsset" ) ))
        self()->mQifAsset = v;
    }

    /**
      Get additional names for asset account
    */
    static
    QString qifAsset()
    {
      return self()->mQifAsset;
    }

    /**
      Set additional names for opening balance payee
    */
    static
    void setQifOpeningBalance( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "qifOpeningBalance" ) ))
        self()->mQifOpeningBalance = v;
    }

    /**
      Get additional names for opening balance payee
    */
    static
    QString qifOpeningBalance()
    {
      return self()->mQifOpeningBalance;
    }

    /**
      Set additional names for invoice accounts
    */
    static
    void setQifInvoice( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "qifInvoice" ) ))
        self()->mQifInvoice = v;
    }

    /**
      Get additional names for invoice accounts
    */
    static
    QString qifInvoice()
    {
      return self()->mQifInvoice;
    }

    /**
      Set Show accounts view expanded when loaded
    */
    static
    void setShowAccountsExpanded( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "showAccountsExpanded" ) ))
        self()->mShowAccountsExpanded = v;
    }

    /**
      Get Show accounts view expanded when loaded
    */
    static
    bool showAccountsExpanded()
    {
      return self()->mShowAccountsExpanded;
    }

    /**
      Set Maximum quantity of legend items to display on charts
    */
    static
    void setMaximumLegendItems( int v )
    {
      if (v < 0)
      {
        qDebug() << "setMaximumLegendItems: value " << v << " is less than the minimum value of 0";
        v = 0;
      }

      if (v > 100)
      {
        qDebug() << "setMaximumLegendItems: value " << v << " is greater than the maximum value of 100";
        v = 100;
      }

      if (!self()->isImmutable( QStringLiteral( "MaximumLegendItems" ) ))
        self()->mMaximumLegendItems = v;
    }

    /**
      Get Maximum quantity of legend items to display on charts
    */
    static
    int maximumLegendItems()
    {
      return self()->mMaximumLegendItems;
    }

    /**
      Set Line width for diagrams, in pixels
    */
    static
    void setLineWidth( int v )
    {
      if (v < 0)
      {
        qDebug() << "setLineWidth: value " << v << " is less than the minimum value of 0";
        v = 0;
      }

      if (v > 256)
      {
        qDebug() << "setLineWidth: value " << v << " is greater than the maximum value of 256";
        v = 256;
      }

      if (!self()->isImmutable( QStringLiteral( "LineWidth" ) ))
        self()->mLineWidth = v;
    }

    /**
      Get Line width for diagrams, in pixels
    */
    static
    int lineWidth()
    {
      return self()->mLineWidth;
    }

    /**
      Set The palette used to render charts
    */
    static
    void setChartsPalette( int v )
    {
      if (v < 0)
      {
        qDebug() << "setChartsPalette: value " << v << " is less than the minimum value of 0";
        v = 0;
      }

      if (v > 2)
      {
        qDebug() << "setChartsPalette: value " << v << " is greater than the maximum value of 2";
        v = 2;
      }

      if (!self()->isImmutable( QStringLiteral( "ChartsPalette" ) ))
        self()->mChartsPalette = v;
    }

    /**
      Get The palette used to render charts
    */
    static
    int chartsPalette()
    {
      return self()->mChartsPalette;
    }

    /**
      Set Name of default CSS file
    */
    static
    void setCssFileDefault( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "CssFileDefault" ) ))
        self()->mCssFileDefault = v;
    }

    /**
      Get Name of default CSS file
    */
    static
    QString cssFileDefault()
    {
      return self()->mCssFileDefault;
    }

    /**
      Set Method to calculate forecast
    */
    static
    void setForecastMethod( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "forecastMethod" ) ))
        self()->mForecastMethod = v;
    }

    /**
      Get Method to calculate forecast
    */
    static
    int forecastMethod()
    {
      return self()->mForecastMethod;
    }

    /**
      Set Days to forecast
    */
    static
    void setForecastDays( qint64 v )
    {
      if (v < 1)
      {
        qDebug() << "setForecastDays: value " << v << " is less than the minimum value of 1";
        v = 1;
      }

      if (v > 999)
      {
        qDebug() << "setForecastDays: value " << v << " is greater than the maximum value of 999";
        v = 999;
      }

      if (!self()->isImmutable( QStringLiteral( "forecastDays" ) ))
        self()->mForecastDays = v;
    }

    /**
      Get Days to forecast
    */
    static
    qint64 forecastDays()
    {
      return self()->mForecastDays;
    }

    /**
      Set Days of normal account cycle
    */
    static
    void setForecastAccountCycle( qint64 v )
    {
      if (v < 1)
      {
        qDebug() << "setForecastAccountCycle: value " << v << " is less than the minimum value of 1";
        v = 1;
      }

      if (v > 999)
      {
        qDebug() << "setForecastAccountCycle: value " << v << " is greater than the maximum value of 999";
        v = 999;
      }

      if (!self()->isImmutable( QStringLiteral( "forecastAccountCycle" ) ))
        self()->mForecastAccountCycle = v;
    }

    /**
      Get Days of normal account cycle
    */
    static
    qint64 forecastAccountCycle()
    {
      return self()->mForecastAccountCycle;
    }

    /**
      Set Number of historic cycles to use in forecast
    */
    static
    void setForecastCycles( qint64 v )
    {
      if (v < 1)
      {
        qDebug() << "setForecastCycles: value " << v << " is less than the minimum value of 1";
        v = 1;
      }

      if (v > 999)
      {
        qDebug() << "setForecastCycles: value " << v << " is greater than the maximum value of 999";
        v = 999;
      }

      if (!self()->isImmutable( QStringLiteral( "forecastCycles" ) ))
        self()->mForecastCycles = v;
    }

    /**
      Get Number of historic cycles to use in forecast
    */
    static
    qint64 forecastCycles()
    {
      return self()->mForecastCycles;
    }

    /**
      Set Day of month to start forecast
    */
    static
    void setBeginForecastDay( qint64 v )
    {
      if (v < 0)
      {
        qDebug() << "setBeginForecastDay: value " << v << " is less than the minimum value of 0";
        v = 0;
      }

      if (v > 31)
      {
        qDebug() << "setBeginForecastDay: value " << v << " is greater than the maximum value of 31";
        v = 31;
      }

      if (!self()->isImmutable( QStringLiteral( "beginForecastDay" ) ))
        self()->mBeginForecastDay = v;
    }

    /**
      Get Day of month to start forecast
    */
    static
    qint64 beginForecastDay()
    {
      return self()->mBeginForecastDay;
    }

    /**
      Set Method to calculate history-based forecast
    */
    static
    void setHistoryMethod( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "historyMethod" ) ))
        self()->mHistoryMethod = v;
    }

    /**
      Get Method to calculate history-based forecast
    */
    static
    int historyMethod()
    {
      return self()->mHistoryMethod;
    }

    /**
      Set Skip opening date when fetching transactions
    */
    static
    void setSkipOpeningDate( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "skipOpeningDate" ) ))
        self()->mSkipOpeningDate = v;
    }

    /**
      Get Skip opening date when fetching transactions
    */
    static
    bool skipOpeningDate()
    {
      return self()->mSkipOpeningDate;
    }

    /**
      Set Include future transaction when using Schedule Forecast
    */
    static
    void setIncludeFutureTransactions( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "includeFutureTransactions" ) ))
        self()->mIncludeFutureTransactions = v;
    }

    /**
      Get Include future transaction when using Schedule Forecast
    */
    static
    bool includeFutureTransactions()
    {
      return self()->mIncludeFutureTransactions;
    }

    /**
      Set Include scheduled transactions when using Schedule Forecast
    */
    static
    void setIncludeScheduledTransactions( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "includeScheduledTransactions" ) ))
        self()->mIncludeScheduledTransactions = v;
    }

    /**
      Get Include scheduled transactions when using Schedule Forecast
    */
    static
    bool includeScheduledTransactions()
    {
      return self()->mIncludeScheduledTransactions;
    }

  protected:
    KMyMoneySettings();
    friend class KMyMoneySettingsHelper;


    // General Options
    bool mAlwaysShowNrField;
    int mAutoFillTransaction;
    int mAutoFillDifference;
    bool mAutoFillUseMemos;
    bool mAutoIncCheckNumber;
    bool mAutoSaveFile;
    bool mAutoReconciliation;
    int mAutoBackupCopies;
    int mAutoSavePeriod;
    bool mAutoSaveOnClose;
    bool mCheckSchedule;
    int mCheckSchedulePreview;
    QString mExternalCalculator;
    QString mHolidayRegion;
    int mSchedulePreview;
    bool mCopyTypeToNr;
    bool mFocusChangeIsEnter;
    bool mEnterMovesBetweenFields;
    bool mLedgerLens;
    bool mPriceHistoryUpdate;
    bool mTransactionForm;
    int mStartLastViewSelected;
    int mLastViewSelected;
    bool mWriteDataEncrypted;
    bool mEncryptRecover;
    QString mGpgRecipient;
    QStringList mGpgRecipientList;
    bool mExpertMode;
    bool mShowSplash;
    bool mSyncLedgerInvestment;
    int mViewType;
    bool mFirstTimeRun;
    bool mShowTitleBar;
    bool mStringMatchFromStart;
    QString mStdTransactionFormTabOrder;
    QString mStdTransactionRegisterTabOrder;

    // Homepage Options
    QString mItemList;
    double mZoomFactor;
    bool mRememberZoomFactor;
    bool mShowLimitInfo;
    bool mShowBalanceStatusOfOnlineAccounts;
    bool mShowCountOfUnmarkedTransactions;
    bool mShowCountOfClearedTransactions;
    bool mShowCountOfNotReconciledTransactions;
    bool mShowDateOfLastReconciliation;
    bool mHideZeroBalanceLiabilities;

    // Color Options
    bool mUseCustomColors;
    QColor mTransactionImportedColor;
    QColor mTransactionMatchedColor;
    QColor mTransactionErroneousColor;
    QColor mMissingConversionRateColor;
    QColor mGroupMarkerColor;
    QColor mFieldRequiredColor;

    // List Options
    bool mHideUnusedCategory;
    bool mHideClosedAccounts;
    bool mShowAllAccounts;
    bool mShowCategoriesInAccountsView;
    bool mHideZeroBalanceEquities;
    bool mHideFinishedSchedules;
    bool mHideReconciledTransactions;
    bool mShowRegisterDetailed;
    bool mShowPlannedScheduleDates;
    bool mShowGrid;
    bool mShowFancyMarker;
    bool mShowFiscalMarker;
    int mFiscalYearBegin;
    int mFiscalYearBeginDay;
    QDateTime mStartDate;
    QString mLogPath;
    bool mLogImportedStatements;
    bool mLogOfxTransactions;
    bool mUseSystemFont;
    QFont mListCellFont;
    QFont mListHeaderFont;
    QString mIconsTheme;
    QString mSortNormalView;
    QString mSortReconcileView;
    QString mSortSearchView;
    int mInitialDateFieldCursorPosition;
    int mDefaultReconciliationState;

    // Import options
    int mMatchInterval;
    bool mAskForPayeeCategory;

    // QIF Options
    QString mQifCash;
    QString mQifBank;
    QString mQifCreditCard;
    QString mQifAsset;
    QString mQifOpeningBalance;
    QString mQifInvoice;

    // Account View Settings
    bool mShowAccountsExpanded;

    // Chart Settings
    int mMaximumLegendItems;
    int mLineWidth;
    int mChartsPalette;
    QString mCssFileDefault;

    // Forecast Options
    int mForecastMethod;
    qint64 mForecastDays;
    qint64 mForecastAccountCycle;
    qint64 mForecastCycles;
    qint64 mBeginForecastDay;
    int mHistoryMethod;
    bool mSkipOpeningDate;
    bool mIncludeFutureTransactions;
    bool mIncludeScheduledTransactions;

  private:
    // Include custom additions
    #include "kmymoneysettings_addons.h"
};

#endif

