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

#include <kgpginterface.h>

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

#include <QFontDatabase>
#include <kgpg.h>
class KGpgSettings : public KConfigSkeleton
{
  public:
    class EnumPhotoProperties
    {
      public:
      enum type { Disable, Small, Medium, Big, COUNT };
    };
    class EnumTrustLevel
    {
      public:
      enum type { Unknown, Undefined, Marginal, Full, Ultimate, COUNT };
    };
    class EnumLeftClick
    {
      public:
      enum type { KeyManager, Editor, COUNT };
    };
    class EnumEncryptedDropEvent
    {
      public:
      enum type { DecryptAndSave, DecryptAndOpen, Ask, COUNT };
    };
    class EnumUnencryptedDropEvent
    {
      public:
      enum type { Encrypt, Sign, Ask, COUNT };
    };
    class EnumSignMenu
    {
      public:
      enum type { Disabled, AllFiles, COUNT };
    };
    class EnumDecryptMenu
    {
      public:
      enum type { Disabled, AllFiles, EncryptedFiles, COUNT };
    };
    class EnumEmailSorting
    {
      public:
      enum type { Alphabetical, TLDfirst, DomainFirst, FQDNFirst, COUNT };
    };
    class EnumMailUats
    {
      public:
      enum type { All, First, None, COUNT };
    };

    static KGpgSettings *self();
    ~KGpgSettings();

    /**
      Set Custom decryption command.
    */
    static
    void setCustomDecrypt( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "CustomDecrypt" ) ))
        self()->mCustomDecrypt = v;
    }

    /**
      Get Custom decryption command.
    */
    static
    QString customDecrypt()
    {
      return self()->mCustomDecrypt;
    }

    /**
      Set Custom encryption options
    */
    static
    void setCustomEncryptionOptions( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "CustomEncryptionOptions" ) ))
        self()->mCustomEncryptionOptions = v;
    }

    /**
      Get Custom encryption options
    */
    static
    QString customEncryptionOptions()
    {
      return self()->mCustomEncryptionOptions;
    }

    /**
      Set Allow custom encryption options
    */
    static
    void setAllowCustomEncryptionOptions( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "AllowCustomEncryptionOptions" ) ))
        self()->mAllowCustomEncryptionOptions = v;
    }

    /**
      Get Allow custom encryption options
    */
    static
    bool allowCustomEncryptionOptions()
    {
      return self()->mAllowCustomEncryptionOptions;
    }

    /**
      Set File encryption key.
    */
    static
    void setFileEncryptionKey( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "FileEncryptionKey" ) ))
        self()->mFileEncryptionKey = v;
    }

    /**
      Get File encryption key.
    */
    static
    QString fileEncryptionKey()
    {
      return self()->mFileEncryptionKey;
    }

    /**
      Set Encrypt files
    */
    static
    void setEncryptFilesTo( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "EncryptFilesTo" ) ))
        self()->mEncryptFilesTo = v;
    }

    /**
      Get Encrypt files
    */
    static
    bool encryptFilesTo()
    {
      return self()->mEncryptFilesTo;
    }

    /**
      Set Use ASCII armored encryption.
    */
    static
    void setAsciiArmor( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "AsciiArmor" ) ))
        self()->mAsciiArmor = v;
    }

    /**
      Get Use ASCII armored encryption.
    */
    static
    bool asciiArmor()
    {
      return self()->mAsciiArmor;
    }

    /**
      Set Allow encryption with untrusted keys.
    */
    static
    void setAllowUntrustedKeys( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "AllowUntrustedKeys" ) ))
        self()->mAllowUntrustedKeys = v;
    }

    /**
      Get Allow encryption with untrusted keys.
    */
    static
    bool allowUntrustedKeys()
    {
      return self()->mAllowUntrustedKeys;
    }

    /**
      Set Allow untrusted keys to become members of key groups.
    */
    static
    void setAllowUntrustedGroupMembers( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "AllowUntrustedGroupMembers" ) ))
        self()->mAllowUntrustedGroupMembers = v;
    }

    /**
      Get Allow untrusted keys to become members of key groups.
    */
    static
    bool allowUntrustedGroupMembers()
    {
      return self()->mAllowUntrustedGroupMembers;
    }

    /**
      Set Hide the user ID.
    */
    static
    void setHideUserID( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "HideUserID" ) ))
        self()->mHideUserID = v;
    }

    /**
      Get Hide the user ID.
    */
    static
    bool hideUserID()
    {
      return self()->mHideUserID;
    }

    /**
      Set Enable PGP 6 compatibility.
    */
    static
    void setPgpCompatibility( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "PgpCompatibility" ) ))
        self()->mPgpCompatibility = v;
    }

    /**
      Get Enable PGP 6 compatibility.
    */
    static
    bool pgpCompatibility()
    {
      return self()->mPgpCompatibility;
    }

    /**
      Set Use *.pgp extension for encrypted files.
    */
    static
    void setPgpExtension( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "PgpExtension" ) ))
        self()->mPgpExtension = v;
    }

    /**
      Get Use *.pgp extension for encrypted files.
    */
    static
    bool pgpExtension()
    {
      return self()->mPgpExtension;
    }

    /**
      Set The path of the gpg configuration file.
    */
    static
    void setGpgConfigPath( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "GpgConfigPath" ) ))
        self()->mGpgConfigPath = v;
    }

    /**
      Get The path of the gpg configuration file.
    */
    static
    QString gpgConfigPath()
    {
      return self()->mGpgConfigPath;
    }

    /**
      Set The path of the gpg binary used by KGpg.
    */
    static
    void setGpgBinaryPath( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "GpgBinaryPath" ) ))
        self()->mGpgBinaryPath = v;
    }

    /**
      Get The path of the gpg binary used by KGpg.
    */
    static
    QString gpgBinaryPath()
    {
      return self()->mGpgBinaryPath;
    }

    /**
      Set photo properties
    */
    static
    void setPhotoProperties( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "PhotoProperties" ) ))
        self()->mPhotoProperties = v;
    }

    /**
      Get photo properties
    */
    static
    int photoProperties()
    {
      return self()->mPhotoProperties;
    }

    /**
      Set Is the first time the application runs.
    */
    static
    void setFirstRun( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "FirstRun" ) ))
        self()->mFirstRun = v;
    }

    /**
      Get Is the first time the application runs.
    */
    static
    bool firstRun()
    {
      return self()->mFirstRun;
    }

    /**
      Set The size of the editor window.
    */
    static
    void setEditorGeometry( const QSize & v )
    {
      if (!self()->isImmutable( QStringLiteral( "EditorGeometry" ) ))
        self()->mEditorGeometry = v;
    }

    /**
      Get The size of the editor window.
    */
    static
    QSize editorGeometry()
    {
      return self()->mEditorGeometry;
    }

    /**
      Set Show the trust value in key manager.
    */
    static
    void setShowTrust( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowTrust" ) ))
        self()->mShowTrust = v;
    }

    /**
      Get Show the trust value in key manager.
    */
    static
    bool showTrust()
    {
      return self()->mShowTrust;
    }

    /**
      Set Show the expiration value in key manager.
    */
    static
    void setShowExpi( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowExpi" ) ))
        self()->mShowExpi = v;
    }

    /**
      Get Show the expiration value in key manager.
    */
    static
    bool showExpi()
    {
      return self()->mShowExpi;
    }

    /**
      Set Show the size value in key manager.
    */
    static
    void setShowSize( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowSize" ) ))
        self()->mShowSize = v;
    }

    /**
      Get Show the size value in key manager.
    */
    static
    bool showSize()
    {
      return self()->mShowSize;
    }

    /**
      Set Show the creation value in key manager.
    */
    static
    void setShowCreat( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowCreat" ) ))
        self()->mShowCreat = v;
    }

    /**
      Get Show the creation value in key manager.
    */
    static
    bool showCreat()
    {
      return self()->mShowCreat;
    }

    /**
      Set Show only secret keys in key manager.
    */
    static
    void setShowSecret( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowSecret" ) ))
        self()->mShowSecret = v;
    }

    /**
      Get Show only secret keys in key manager.
    */
    static
    bool showSecret()
    {
      return self()->mShowSecret;
    }

    /**
      Set Show long key id in key manager.
    */
    static
    void setShowLongKeyId( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowLongKeyId" ) ))
        self()->mShowLongKeyId = v;
    }

    /**
      Get Show long key id in key manager.
    */
    static
    bool showLongKeyId()
    {
      return self()->mShowLongKeyId;
    }

    /**
      Set Show only keys with at least that trust level in key manager.
    */
    static
    void setTrustLevel( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "TrustLevel" ) ))
        self()->mTrustLevel = v;
    }

    /**
      Get Show only keys with at least that trust level in key manager.
    */
    static
    int trustLevel()
    {
      return self()->mTrustLevel;
    }

    /**
      Set Use the mouse selection instead of the clipboard.
    */
    static
    void setUseMouseSelection( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "UseMouseSelection" ) ))
        self()->mUseMouseSelection = v;
    }

    /**
      Get Use the mouse selection instead of the clipboard.
    */
    static
    bool useMouseSelection()
    {
      return self()->mUseMouseSelection;
    }

    /**
      Set Start KGpg automatically at KDE startup.
    */
    static
    void setAutoStart( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "AutoStart" ) ))
        self()->mAutoStart = v;
    }

    /**
      Get Start KGpg automatically at KDE startup.
    */
    static
    bool autoStart()
    {
      return self()->mAutoStart;
    }

    /**
      Set Display a warning before creating temporary files during remote file operations.
    */
    static
    void setRemoteFileWarn( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "RemoteFileWarn" ) ))
        self()->mRemoteFileWarn = v;
    }

    /**
      Get Display a warning before creating temporary files during remote file operations.
    */
    static
    bool remoteFileWarn()
    {
      return self()->mRemoteFileWarn;
    }

    /**
      Set Choose default left-click behavior
    */
    static
    void setLeftClick( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "LeftClick" ) ))
        self()->mLeftClick = v;
    }

    /**
      Get Choose default left-click behavior
    */
    static
    int leftClick()
    {
      return self()->mLeftClick;
    }

    /**
      Set Handle encrypted drops
    */
    static
    void setEncryptedDropEvent( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "EncryptedDropEvent" ) ))
        self()->mEncryptedDropEvent = v;
    }

    /**
      Get Handle encrypted drops
    */
    static
    int encryptedDropEvent()
    {
      return self()->mEncryptedDropEvent;
    }

    /**
      Set Handle unencrypted drops
    */
    static
    void setUnencryptedDropEvent( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "UnencryptedDropEvent" ) ))
        self()->mUnencryptedDropEvent = v;
    }

    /**
      Get Handle unencrypted drops
    */
    static
    int unencryptedDropEvent()
    {
      return self()->mUnencryptedDropEvent;
    }

    /**
      Set Show the "sign file" service menu.
    */
    static
    void setSignMenu( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "SignMenu" ) ))
        self()->mSignMenu = v;
    }

    /**
      Get Show the "sign file" service menu.
    */
    static
    int signMenu()
    {
      return self()->mSignMenu;
    }

    /**
      Set Show the "decrypt file" service menu.
    */
    static
    void setDecryptMenu( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "DecryptMenu" ) ))
        self()->mDecryptMenu = v;
    }

    /**
      Get Show the "decrypt file" service menu.
    */
    static
    int decryptMenu()
    {
      return self()->mDecryptMenu;
    }

    /**
      Set Show the systray icon
    */
    static
    void setShowSystray( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowSystray" ) ))
        self()->mShowSystray = v;
    }

    /**
      Get Show the systray icon
    */
    static
    bool showSystray()
    {
      return self()->mShowSystray;
    }

    /**
      Set The number of recently opened files shown in the editor menu.
    */
    static
    void setRecentFiles( uint v )
    {
      if (!self()->isImmutable( QStringLiteral( "RecentFiles" ) ))
        self()->mRecentFiles = v;
    }

    /**
      Get The number of recently opened files shown in the editor menu.
    */
    static
    uint recentFiles()
    {
      return self()->mRecentFiles;
    }

    /**
      Set Show tip of the day.
    */
    static
    void setShowTipOfDay( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "ShowTipOfDay" ) ))
        self()->mShowTipOfDay = v;
    }

    /**
      Get Show tip of the day.
    */
    static
    bool showTipOfDay()
    {
      return self()->mShowTipOfDay;
    }

    /**
      Set Color used for trusted keys.
    */
    static
    void setColorGood( const QColor & v )
    {
      if (!self()->isImmutable( QStringLiteral( "ColorGood" ) ))
        self()->mColorGood = v;
    }

    /**
      Get Color used for trusted keys.
    */
    static
    QColor colorGood()
    {
      return self()->mColorGood;
    }

    /**
      Set Color used for revoked keys.
    */
    static
    void setColorRev( const QColor & v )
    {
      if (!self()->isImmutable( QStringLiteral( "ColorRev" ) ))
        self()->mColorRev = v;
    }

    /**
      Get Color used for revoked keys.
    */
    static
    QColor colorRev()
    {
      return self()->mColorRev;
    }

    /**
      Set Color used for unknown keys.
    */
    static
    void setColorUnknown( const QColor & v )
    {
      if (!self()->isImmutable( QStringLiteral( "ColorUnknown" ) ))
        self()->mColorUnknown = v;
    }

    /**
      Get Color used for unknown keys.
    */
    static
    QColor colorUnknown()
    {
      return self()->mColorUnknown;
    }

    /**
      Set Color used for untrusted keys.
    */
    static
    void setColorBad( const QColor & v )
    {
      if (!self()->isImmutable( QStringLiteral( "ColorBad" ) ))
        self()->mColorBad = v;
    }

    /**
      Get Color used for untrusted keys.
    */
    static
    QColor colorBad()
    {
      return self()->mColorBad;
    }

    /**
      Set Color used for ultimately trusted keys.
    */
    static
    void setColorUltimate( const QColor & v )
    {
      if (!self()->isImmutable( QStringLiteral( "ColorUltimate" ) ))
        self()->mColorUltimate = v;
    }

    /**
      Get Color used for ultimately trusted keys.
    */
    static
    QColor colorUltimate()
    {
      return self()->mColorUltimate;
    }

    /**
      Set Color used for marginally trusted keys.
    */
    static
    void setColorMarginal( const QColor & v )
    {
      if (!self()->isImmutable( QStringLiteral( "ColorMarginal" ) ))
        self()->mColorMarginal = v;
    }

    /**
      Get Color used for marginally trusted keys.
    */
    static
    QColor colorMarginal()
    {
      return self()->mColorMarginal;
    }

    /**
      Set Color used for expired keys.
    */
    static
    void setColorExpired( const QColor & v )
    {
      if (!self()->isImmutable( QStringLiteral( "ColorExpired" ) ))
        self()->mColorExpired = v;
    }

    /**
      Get Color used for expired keys.
    */
    static
    QColor colorExpired()
    {
      return self()->mColorExpired;
    }

    /**
      Set Font
    */
    static
    void setFont( const QFont & v )
    {
      if (!self()->isImmutable( QStringLiteral( "Font" ) ))
        self()->mFont = v;
    }

    /**
      Get Font
    */
    static
    QFont font()
    {
      return self()->mFont;
    }

    /**
      Set EmailSorting
    */
    static
    void setEmailSorting( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "EmailSorting" ) ))
        self()->mEmailSorting = v;
    }

    /**
      Get EmailSorting
    */
    static
    int emailSorting()
    {
      return self()->mEmailSorting;
    }

    /**
      Set Key servers used by KGpg. The first server in the list is the default server.
    */
    static
    void setKeyServers( const QStringList & v )
    {
      if (!self()->isImmutable( QStringLiteral( "KeyServers" ) ))
        self()->mKeyServers = v;
    }

    /**
      Get Key servers used by KGpg. The first server in the list is the default server.
    */
    static
    QStringList keyServers()
    {
      return self()->mKeyServers;
    }

    /**
      Set List of URLs that show details and analysis of the given key. The first server in the list is the default server.
    */
    static
    void setInfoServers( const QStringList & v )
    {
      if (!self()->isImmutable( QStringLiteral( "InfoServers" ) ))
        self()->mInfoServers = v;
    }

    /**
      Get List of URLs that show details and analysis of the given key. The first server in the list is the default server.
    */
    static
    QStringList infoServers()
    {
      return self()->mInfoServers;
    }

    /**
      Set Use HTTP proxy when available.
    */
    static
    void setUseProxy( bool v )
    {
      if (!self()->isImmutable( QStringLiteral( "UseProxy" ) ))
        self()->mUseProxy = v;
    }

    /**
      Get Use HTTP proxy when available.
    */
    static
    bool useProxy()
    {
      return self()->mUseProxy;
    }

    /**
      Set This is the text of the email sent by the "Sign and Mail User ID" action.
    */
    static
    void setEmailTemplate( const QString & v )
    {
      if (!self()->isImmutable( QStringLiteral( "EmailTemplate" ) ))
        self()->mEmailTemplate = v;
    }

    /**
      Get This is the text of the email sent by the "Sign and Mail User ID" action.
    */
    static
    QString emailTemplate()
    {
      return self()->mEmailTemplate;
    }

    /**
      Set Mail_Uats
    */
    static
    void setMailUats( int v )
    {
      if (!self()->isImmutable( QStringLiteral( "MailUats" ) ))
        self()->mMailUats = v;
    }

    /**
      Get Mail_Uats
    */
    static
    int mailUats()
    {
      return self()->mMailUats;
    }

  protected:
    KGpgSettings();
    friend class KGpgSettingsHelper;


    // Decryption
    QString mCustomDecrypt;

    // Encryption
    QString mCustomEncryptionOptions;
    bool mAllowCustomEncryptionOptions;
    QString mFileEncryptionKey;
    bool mEncryptFilesTo;
    bool mAsciiArmor;
    bool mAllowUntrustedKeys;
    bool mAllowUntrustedGroupMembers;
    bool mHideUserID;
    bool mPgpCompatibility;
    bool mPgpExtension;

    // GPG Settings
    QString mGpgConfigPath;
    QString mGpgBinaryPath;

    // General Options
    int mPhotoProperties;
    bool mFirstRun;
    QSize mEditorGeometry;
    bool mShowTrust;
    bool mShowExpi;
    bool mShowSize;
    bool mShowCreat;
    bool mShowSecret;
    bool mShowLongKeyId;
    int mTrustLevel;

    // User Interface
    bool mUseMouseSelection;
    bool mAutoStart;
    bool mRemoteFileWarn;
    int mLeftClick;
    int mEncryptedDropEvent;
    int mUnencryptedDropEvent;
    int mSignMenu;
    int mDecryptMenu;
    bool mShowSystray;
    uint mRecentFiles;

    // TipOfDay
    bool mShowTipOfDay;

    // Key Colors
    QColor mColorGood;
    QColor mColorRev;
    QColor mColorUnknown;
    QColor mColorBad;
    QColor mColorUltimate;
    QColor mColorMarginal;
    QColor mColorExpired;

    // Text Font
    QFont mFont;

    // Key List
    int mEmailSorting;

    // Servers
    QStringList mKeyServers;
    QStringList mInfoServers;

    // Key Servers
    bool mUseProxy;

    // Key Signing
    QString mEmailTemplate;
    int mMailUats;

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

#endif

