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

#include "core_export.h"

#include <qglobal.h>
#include <kcoreconfigskeleton.h>
#include <QCoreApplication>
#include <QDebug>

#include <QDir>
#include <fileexcludefilters.h>

class BALOO_CORE_EXPORT BalooSettings : public KCoreConfigSkeleton
{
  Q_OBJECT
  public:

    BalooSettings( QObject *parent = nullptr );
    ~BalooSettings();

    /**
      Set Indexing-Enabled
    */
    void setIndexingEnabled( bool v )
    {
      if (v != mIndexingEnabled && !isIndexingEnabledImmutable()) {
        mIndexingEnabled = v;
        Q_EMIT indexingEnabledChanged();
      }
    }

    Q_PROPERTY(bool indexingEnabled READ indexingEnabled WRITE setIndexingEnabled NOTIFY indexingEnabledChanged)
    Q_PROPERTY(bool isIndexingEnabledImmutable READ isIndexingEnabledImmutable CONSTANT)
    /**
      Get Indexing-Enabled
    */
    bool indexingEnabled() const
    {
      return mIndexingEnabled;
    }

    /**
      Is Indexing-Enabled Immutable
    */
    bool isIndexingEnabledImmutable() const
    {
      return isImmutable( QStringLiteral( "indexingEnabled" ) );
    }

    /**
      Get Indexing-Enabled default value
    */
    bool defaultIndexingEnabledValue() const
    {
        return defaultIndexingEnabledValue_helper();
    }

    /**
      Set index hidden folders
    */
    void setIndexHiddenFolders( bool v )
    {
      if (v != mIndexHiddenFolders && !isIndexHiddenFoldersImmutable()) {
        mIndexHiddenFolders = v;
        Q_EMIT indexHiddenFoldersChanged();
      }
    }

    Q_PROPERTY(bool indexHiddenFolders READ indexHiddenFolders WRITE setIndexHiddenFolders NOTIFY indexHiddenFoldersChanged)
    Q_PROPERTY(bool isIndexHiddenFoldersImmutable READ isIndexHiddenFoldersImmutable CONSTANT)
    /**
      Get index hidden folders
    */
    bool indexHiddenFolders() const
    {
      return mIndexHiddenFolders;
    }

    /**
      Is index hidden folders Immutable
    */
    bool isIndexHiddenFoldersImmutable() const
    {
      return isImmutable( QStringLiteral( "indexHiddenFolders" ) );
    }

    /**
      Get index hidden folders default value
    */
    bool defaultIndexHiddenFoldersValue() const
    {
        return defaultIndexHiddenFoldersValue_helper();
    }

    /**
      Set db version
    */
    void setDbVersion( int v )
    {
      if (v != mDbVersion && !isDbVersionImmutable()) {
        mDbVersion = v;
        Q_EMIT dbVersionChanged();
      }
    }

    Q_PROPERTY(int dbVersion READ dbVersion WRITE setDbVersion NOTIFY dbVersionChanged)
    Q_PROPERTY(bool isDbVersionImmutable READ isDbVersionImmutable CONSTANT)
    /**
      Get db version
    */
    int dbVersion() const
    {
      return mDbVersion;
    }

    /**
      Is db version Immutable
    */
    bool isDbVersionImmutable() const
    {
      return isImmutable( QStringLiteral( "dbVersion" ) );
    }

    /**
      Get db version default value
    */
    int defaultDbVersionValue() const
    {
        return defaultDbVersionValue_helper();
    }

    /**
      Set only basic indexing
    */
    void setOnlyBasicIndexing( bool v )
    {
      if (v != mOnlyBasicIndexing && !isOnlyBasicIndexingImmutable()) {
        mOnlyBasicIndexing = v;
        Q_EMIT onlyBasicIndexingChanged();
      }
    }

    Q_PROPERTY(bool onlyBasicIndexing READ onlyBasicIndexing WRITE setOnlyBasicIndexing NOTIFY onlyBasicIndexingChanged)
    Q_PROPERTY(bool isOnlyBasicIndexingImmutable READ isOnlyBasicIndexingImmutable CONSTANT)
    /**
      Get only basic indexing
    */
    bool onlyBasicIndexing() const
    {
      return mOnlyBasicIndexing;
    }

    /**
      Is only basic indexing Immutable
    */
    bool isOnlyBasicIndexingImmutable() const
    {
      return isImmutable( QStringLiteral( "onlyBasicIndexing" ) );
    }

    /**
      Get only basic indexing default value
    */
    bool defaultOnlyBasicIndexingValue() const
    {
        return defaultOnlyBasicIndexingValue_helper();
    }

    /**
      Set disable initial update (deprecated)
    */
    void setDisableInitialUpdate( bool v )
    {
      if (v != mDisableInitialUpdate && !isDisableInitialUpdateImmutable()) {
        mDisableInitialUpdate = v;
        Q_EMIT disableInitialUpdateChanged();
      }
    }

    Q_PROPERTY(bool disableInitialUpdate READ disableInitialUpdate WRITE setDisableInitialUpdate NOTIFY disableInitialUpdateChanged)
    Q_PROPERTY(bool isDisableInitialUpdateImmutable READ isDisableInitialUpdateImmutable CONSTANT)
    /**
      Get disable initial update (deprecated)
    */
    bool disableInitialUpdate() const
    {
      return mDisableInitialUpdate;
    }

    /**
      Is disable initial update (deprecated) Immutable
    */
    bool isDisableInitialUpdateImmutable() const
    {
      return isImmutable( QStringLiteral( "disableInitialUpdate" ) );
    }

    /**
      Get disable initial update (deprecated) default value
    */
    bool defaultDisableInitialUpdateValue() const
    {
        return defaultDisableInitialUpdateValue_helper();
    }

    /**
      Set exclude folders
    */
    void setExcludedFolders( const QStringList & v )
    {
      if (v != mExcludedFolders && !isExcludedFoldersImmutable()) {
        mExcludedFolders = v;
        Q_EMIT excludedFoldersChanged();
      }
    }

    Q_PROPERTY(QStringList excludedFolders READ excludedFolders WRITE setExcludedFolders NOTIFY excludedFoldersChanged)
    Q_PROPERTY(bool isExcludedFoldersImmutable READ isExcludedFoldersImmutable CONSTANT)
    /**
      Get exclude folders
    */
    QStringList excludedFolders() const
    {
      return mExcludedFolders;
    }

    /**
      Is exclude folders Immutable
    */
    bool isExcludedFoldersImmutable() const
    {
      return isImmutable( QStringLiteral( "excludedFolders" ) );
    }

    /**
      Get exclude folders default value
    */
    QStringList defaultExcludedFoldersValue() const
    {
        return defaultExcludedFoldersValue_helper();
    }

    /**
      Set folders
    */
    void setFolders( const QStringList & v )
    {
      if (v != mFolders && !isFoldersImmutable()) {
        mFolders = v;
        Q_EMIT foldersChanged();
      }
    }

    Q_PROPERTY(QStringList folders READ folders WRITE setFolders NOTIFY foldersChanged)
    Q_PROPERTY(bool isFoldersImmutable READ isFoldersImmutable CONSTANT)
    /**
      Get folders
    */
    QStringList folders() const
    {
      return mFolders;
    }

    /**
      Is folders Immutable
    */
    bool isFoldersImmutable() const
    {
      return isImmutable( QStringLiteral( "folders" ) );
    }

    /**
      Get folders default value
    */
    QStringList defaultFoldersValue() const
    {
        return defaultFoldersValue_helper();
    }

    /**
      Set exclude mimetypes
    */
    void setExcludedMimetypes( const QStringList & v )
    {
      if (v != mExcludedMimetypes && !isExcludedMimetypesImmutable()) {
        mExcludedMimetypes = v;
        Q_EMIT excludedMimetypesChanged();
      }
    }

    Q_PROPERTY(QStringList excludedMimetypes READ excludedMimetypes WRITE setExcludedMimetypes NOTIFY excludedMimetypesChanged)
    Q_PROPERTY(bool isExcludedMimetypesImmutable READ isExcludedMimetypesImmutable CONSTANT)
    /**
      Get exclude mimetypes
    */
    QStringList excludedMimetypes() const
    {
      return mExcludedMimetypes;
    }

    /**
      Is exclude mimetypes Immutable
    */
    bool isExcludedMimetypesImmutable() const
    {
      return isImmutable( QStringLiteral( "excludedMimetypes" ) );
    }

    /**
      Get exclude mimetypes default value
    */
    QStringList defaultExcludedMimetypesValue() const
    {
        return defaultExcludedMimetypesValue_helper();
    }

    /**
      Set exclude filters
    */
    void setExcludedFilters( const QStringList & v )
    {
      if (v != mExcludedFilters && !isExcludedFiltersImmutable()) {
        mExcludedFilters = v;
        Q_EMIT excludedFiltersChanged();
      }
    }

    Q_PROPERTY(QStringList excludedFilters READ excludedFilters WRITE setExcludedFilters NOTIFY excludedFiltersChanged)
    Q_PROPERTY(bool isExcludedFiltersImmutable READ isExcludedFiltersImmutable CONSTANT)
    /**
      Get exclude filters
    */
    QStringList excludedFilters() const
    {
      return mExcludedFilters;
    }

    /**
      Is exclude filters Immutable
    */
    bool isExcludedFiltersImmutable() const
    {
      return isImmutable( QStringLiteral( "excludedFilters" ) );
    }

    /**
      Get exclude filters default value
    */
    QStringList defaultExcludedFiltersValue() const
    {
        return defaultExcludedFiltersValue_helper();
    }

    /**
      Set exclude filters version
    */
    void setExcludedFiltersVersion( int v )
    {
      if (v != mExcludedFiltersVersion && !isExcludedFiltersVersionImmutable()) {
        mExcludedFiltersVersion = v;
        Q_EMIT excludedFiltersVersionChanged();
      }
    }

    Q_PROPERTY(int excludedFiltersVersion READ excludedFiltersVersion WRITE setExcludedFiltersVersion NOTIFY excludedFiltersVersionChanged)
    Q_PROPERTY(bool isExcludedFiltersVersionImmutable READ isExcludedFiltersVersionImmutable CONSTANT)
    /**
      Get exclude filters version
    */
    int excludedFiltersVersion() const
    {
      return mExcludedFiltersVersion;
    }

    /**
      Is exclude filters version Immutable
    */
    bool isExcludedFiltersVersionImmutable() const
    {
      return isImmutable( QStringLiteral( "excludedFiltersVersion" ) );
    }

    /**
      Get exclude filters version default value
    */
    int defaultExcludedFiltersVersionValue() const
    {
        return defaultExcludedFiltersVersionValue_helper();
    }


    enum {
      signalIndexingEnabledChanged = 0x1,
      signalIndexHiddenFoldersChanged = 0x2,
      signalDbVersionChanged = 0x4,
      signalOnlyBasicIndexingChanged = 0x8,
      signalDisableInitialUpdateChanged = 0x10,
      signalExcludedFoldersChanged = 0x20,
      signalFoldersChanged = 0x40,
      signalExcludedMimetypesChanged = 0x80,
      signalExcludedFiltersChanged = 0x100,
      signalExcludedFiltersVersionChanged = 0x200
    };

  Q_SIGNALS:
    void indexingEnabledChanged();

    void indexHiddenFoldersChanged();

    void dbVersionChanged();

    void onlyBasicIndexingChanged();

    void disableInitialUpdateChanged();

    void excludedFoldersChanged();

    void foldersChanged();

    void excludedMimetypesChanged();

    void excludedFiltersChanged();

    void excludedFiltersVersionChanged();

  private:
    void itemChanged(quint64 flags);

  protected:

    // Basic Settings
    bool mIndexingEnabled;
    bool defaultIndexingEnabledValue_helper() const;

    // General
    bool mIndexHiddenFolders;
    bool defaultIndexHiddenFoldersValue_helper() const;
    int mDbVersion;
    int defaultDbVersionValue_helper() const;
    bool mOnlyBasicIndexing;
    bool defaultOnlyBasicIndexingValue_helper() const;
    bool mDisableInitialUpdate;
    bool defaultDisableInitialUpdateValue_helper() const;
    QStringList mExcludedFolders;
    QStringList defaultExcludedFoldersValue_helper() const;
    QStringList mFolders;
    QStringList defaultFoldersValue_helper() const;
    QStringList mExcludedMimetypes;
    QStringList defaultExcludedMimetypesValue_helper() const;
    QStringList mExcludedFilters;
    QStringList defaultExcludedFiltersValue_helper() const;
    int mExcludedFiltersVersion;
    int defaultExcludedFiltersVersionValue_helper() const;

  private:
};

#endif

