// This file is generated by kconfig_compiler_kf6 from projectconfig.kcfg.
// All changes you do to this file will be lost.
#ifndef PROJECTSETTINGS_H
#define PROJECTSETTINGS_H

#include <settings/sessionconfigskeleton.h>

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

#include <QtCore/QDir>

class ProjectSettings : public KDevelop::SessionConfigSkeleton
{
  public:

    static ProjectSettings *self();
    ~ProjectSettings() override;

    /**
      Get Schedule all project source code to be parsed by the language support in the background
    */
    static
    bool parseAllProjectSources()
    {
      return self()->mParseAllProjectSources;
    }

    /**
      Is Schedule all project source code to be parsed by the language support in the background Immutable
    */
    static
    bool isParseAllProjectSourcesImmutable()
    {
      return self()->isImmutable( QStringLiteral( "parseAllProjectSources" ) );
    }

    /**
      Get Item object corresponding to parseAllProjectSources()
    */
    ItemBool *parseAllProjectSourcesItem()
    {
      return mParseAllProjectSourcesItem;
    }

    /**
      Get Projects Base Directory
    */
    static
    QUrl projectsBaseDirectory()
    {
      return self()->mProjectsBaseDirectory;
    }

    /**
      Is Projects Base Directory Immutable
    */
    static
    bool isProjectsBaseDirectoryImmutable()
    {
      return self()->isImmutable( QStringLiteral( "projectsBaseDirectory" ) );
    }

    /**
      Get Item object corresponding to projectsBaseDirectory()
    */
    ItemUrl *projectsBaseDirectoryItem()
    {
      return mProjectsBaseDirectoryItem;
    }

    /**
      Get Save all open documents before building anything
    */
    static
    bool saveDocuments()
    {
      return self()->mSaveDocuments;
    }

    /**
      Is Save all open documents before building anything Immutable
    */
    static
    bool isSaveDocumentsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "saveDocuments" ) );
    }

    /**
      Get Item object corresponding to saveDocuments()
    */
    ItemBool *saveDocumentsItem()
    {
      return mSaveDocumentsItem;
    }

  protected:
    ProjectSettings();
    friend class ProjectSettingsHelper;


    // Project Manager
    bool mParseAllProjectSources;
    QUrl mProjectsBaseDirectory;
    bool mSaveDocuments;

  private:
    ItemBool *mParseAllProjectSourcesItem;
    ItemUrl *mProjectsBaseDirectoryItem;
    ItemBool *mSaveDocumentsItem;
};

#endif

