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

#include <elisaLib_export.h>

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

#include <QDir>
#include <QStandardPaths>

namespace Elisa {

class ElisaConfigurationPrivate;

class ELISALIB_EXPORT ElisaConfiguration : public KConfigSkeleton
{
  Q_OBJECT
  public:
    class EnumEmbeddedView
    {
      public:
      enum type { NoView, AllAlbums, AllArtists, AllGenres, COUNT };
    };
    class EnumInitialView
    {
      public:
      enum type { ContextView, RecentlyPlayed, FrequentlyPlayed, AllAlbums, AllArtists, AllTracks, AllGenres, Files, Radios, COUNT };
    };

    static ElisaConfiguration *self();
    static void instance(const QString& cfgfilename);
    static void instance(KSharedConfig::Ptr config);
    ~ElisaConfiguration() override;

    /**
      Set RootPath
    */
    static
    void setRootPath( const QStringList & v );

    Q_PROPERTY(QStringList rootPath READ rootPath WRITE setRootPath NOTIFY RootPathChanged)
    Q_PROPERTY(bool isRootPathImmutable READ isRootPathImmutable CONSTANT)
    /**
      Get RootPath
    */
    static
    QStringList rootPath();

    /**
      Is RootPath Immutable
    */
    static
    bool isRootPathImmutable();

    /**
      Set ForceUsageOfFastFileSearch
    */
    static
    void setForceUsageOfFastFileSearch( bool v );

    Q_PROPERTY(bool forceUsageOfFastFileSearch READ forceUsageOfFastFileSearch WRITE setForceUsageOfFastFileSearch NOTIFY ForceUsageOfFastFileSearchChanged)
    Q_PROPERTY(bool isForceUsageOfFastFileSearchImmutable READ isForceUsageOfFastFileSearchImmutable CONSTANT)
    /**
      Get ForceUsageOfFastFileSearch
    */
    static
    bool forceUsageOfFastFileSearch();

    /**
      Is ForceUsageOfFastFileSearch Immutable
    */
    static
    bool isForceUsageOfFastFileSearchImmutable();

    /**
      Set ShowNowPlayingBackground
    */
    static
    void setShowNowPlayingBackground( bool v );

    Q_PROPERTY(bool showNowPlayingBackground READ showNowPlayingBackground WRITE setShowNowPlayingBackground NOTIFY ShowNowPlayingBackgroundChanged)
    Q_PROPERTY(bool isShowNowPlayingBackgroundImmutable READ isShowNowPlayingBackgroundImmutable CONSTANT)
    /**
      Get ShowNowPlayingBackground
    */
    static
    bool showNowPlayingBackground();

    /**
      Is ShowNowPlayingBackground Immutable
    */
    static
    bool isShowNowPlayingBackgroundImmutable();

    /**
      Set ShowProgressOnTaskBar
    */
    static
    void setShowProgressOnTaskBar( bool v );

    Q_PROPERTY(bool showProgressOnTaskBar READ showProgressOnTaskBar WRITE setShowProgressOnTaskBar NOTIFY ShowProgressOnTaskBarChanged)
    Q_PROPERTY(bool isShowProgressOnTaskBarImmutable READ isShowProgressOnTaskBarImmutable CONSTANT)
    /**
      Get ShowProgressOnTaskBar
    */
    static
    bool showProgressOnTaskBar();

    /**
      Is ShowProgressOnTaskBar Immutable
    */
    static
    bool isShowProgressOnTaskBarImmutable();

    /**
      Set ShowSystemTrayIcon
    */
    static
    void setShowSystemTrayIcon( bool v );

    Q_PROPERTY(bool showSystemTrayIcon READ showSystemTrayIcon WRITE setShowSystemTrayIcon NOTIFY ShowSystemTrayIconChanged)
    Q_PROPERTY(bool isShowSystemTrayIconImmutable READ isShowSystemTrayIconImmutable CONSTANT)
    /**
      Get ShowSystemTrayIcon
    */
    static
    bool showSystemTrayIcon();

    /**
      Is ShowSystemTrayIcon Immutable
    */
    static
    bool isShowSystemTrayIconImmutable();

    /**
      Set PlayAtStartup
    */
    static
    void setPlayAtStartup( bool v );

    Q_PROPERTY(bool playAtStartup READ playAtStartup WRITE setPlayAtStartup NOTIFY PlayAtStartupChanged)
    Q_PROPERTY(bool isPlayAtStartupImmutable READ isPlayAtStartupImmutable CONSTANT)
    /**
      Get PlayAtStartup
    */
    static
    bool playAtStartup();

    /**
      Is PlayAtStartup Immutable
    */
    static
    bool isPlayAtStartupImmutable();

    /**
      Set ScanAtStartup
    */
    static
    void setScanAtStartup( bool v );

    Q_PROPERTY(bool scanAtStartup READ scanAtStartup WRITE setScanAtStartup NOTIFY ScanAtStartupChanged)
    Q_PROPERTY(bool isScanAtStartupImmutable READ isScanAtStartupImmutable CONSTANT)
    /**
      Get ScanAtStartup
    */
    static
    bool scanAtStartup();

    /**
      Is ScanAtStartup Immutable
    */
    static
    bool isScanAtStartupImmutable();

    /**
      Set UseFavoriteStyleRatings
    */
    static
    void setUseFavoriteStyleRatings( bool v );

    Q_PROPERTY(bool useFavoriteStyleRatings READ useFavoriteStyleRatings WRITE setUseFavoriteStyleRatings NOTIFY UseFavoriteStyleRatingsChanged)
    Q_PROPERTY(bool isUseFavoriteStyleRatingsImmutable READ isUseFavoriteStyleRatingsImmutable CONSTANT)
    /**
      Get UseFavoriteStyleRatings
    */
    static
    bool useFavoriteStyleRatings();

    /**
      Is UseFavoriteStyleRatings Immutable
    */
    static
    bool isUseFavoriteStyleRatingsImmutable();

    /**
      Set AlwaysUseAbsolutePlaylistPaths
    */
    static
    void setAlwaysUseAbsolutePlaylistPaths( bool v );

    Q_PROPERTY(bool alwaysUseAbsolutePlaylistPaths READ alwaysUseAbsolutePlaylistPaths WRITE setAlwaysUseAbsolutePlaylistPaths NOTIFY AlwaysUseAbsolutePlaylistPathsChanged)
    Q_PROPERTY(bool isAlwaysUseAbsolutePlaylistPathsImmutable READ isAlwaysUseAbsolutePlaylistPathsImmutable CONSTANT)
    /**
      Get AlwaysUseAbsolutePlaylistPaths
    */
    static
    bool alwaysUseAbsolutePlaylistPaths();

    /**
      Is AlwaysUseAbsolutePlaylistPaths Immutable
    */
    static
    bool isAlwaysUseAbsolutePlaylistPathsImmutable();

    /**
      Set EmbeddedView
    */
    static
    void setEmbeddedView( int v );

    Q_PROPERTY(int embeddedView READ embeddedView WRITE setEmbeddedView NOTIFY EmbeddedViewChanged)
    Q_PROPERTY(bool isEmbeddedViewImmutable READ isEmbeddedViewImmutable CONSTANT)
    /**
      Get EmbeddedView
    */
    static
    int embeddedView();

    /**
      Is EmbeddedView Immutable
    */
    static
    bool isEmbeddedViewImmutable();

    /**
      Set InitialView
    */
    static
    void setInitialView( int v );

    Q_PROPERTY(int initialView READ initialView WRITE setInitialView NOTIFY InitialViewChanged)
    Q_PROPERTY(bool isInitialViewImmutable READ isInitialViewImmutable CONSTANT)
    /**
      Get InitialView
    */
    static
    int initialView();

    /**
      Is InitialView Immutable
    */
    static
    bool isInitialViewImmutable();

    /**
      Set InitialFilesViewPath
    */
    static
    void setInitialFilesViewPath( const QString & v );

    Q_PROPERTY(QString initialFilesViewPath READ initialFilesViewPath WRITE setInitialFilesViewPath NOTIFY InitialFilesViewPathChanged)
    Q_PROPERTY(bool isInitialFilesViewPathImmutable READ isInitialFilesViewPathImmutable CONSTANT)
    /**
      Get InitialFilesViewPath
    */
    static
    QString initialFilesViewPath();

    /**
      Is InitialFilesViewPath Immutable
    */
    static
    bool isInitialFilesViewPathImmutable();

    /**
      Set SortRolePreferences
    */
    static
    void setSortRolePreferences( const QStringList & v );

    Q_PROPERTY(QStringList sortRolePreferences READ sortRolePreferences WRITE setSortRolePreferences NOTIFY SortRolePreferencesChanged)
    Q_PROPERTY(bool isSortRolePreferencesImmutable READ isSortRolePreferencesImmutable CONSTANT)
    /**
      Get SortRolePreferences
    */
    static
    QStringList sortRolePreferences();

    /**
      Is SortRolePreferences Immutable
    */
    static
    bool isSortRolePreferencesImmutable();

    /**
      Set SortOrderPreferences
    */
    static
    void setSortOrderPreferences( const QStringList & v );

    Q_PROPERTY(QStringList sortOrderPreferences READ sortOrderPreferences WRITE setSortOrderPreferences NOTIFY SortOrderPreferencesChanged)
    Q_PROPERTY(bool isSortOrderPreferencesImmutable READ isSortOrderPreferencesImmutable CONSTANT)
    /**
      Get SortOrderPreferences
    */
    static
    QStringList sortOrderPreferences();

    /**
      Is SortOrderPreferences Immutable
    */
    static
    bool isSortOrderPreferencesImmutable();

    /**
      Set ViewStylePreferences
    */
    static
    void setViewStylePreferences( const QStringList & v );

    Q_PROPERTY(QStringList viewStylePreferences READ viewStylePreferences WRITE setViewStylePreferences NOTIFY ViewStylePreferencesChanged)
    Q_PROPERTY(bool isViewStylePreferencesImmutable READ isViewStylePreferencesImmutable CONSTANT)
    /**
      Get ViewStylePreferences
    */
    static
    QStringList viewStylePreferences();

    /**
      Is ViewStylePreferences Immutable
    */
    static
    bool isViewStylePreferencesImmutable();


    enum {
      signalRootPathChanged = 1,
      signalForceUsageOfFastFileSearchChanged = 2,
      signalShowNowPlayingBackgroundChanged = 3,
      signalShowProgressOnTaskBarChanged = 4,
      signalShowSystemTrayIconChanged = 5,
      signalPlayAtStartupChanged = 6,
      signalScanAtStartupChanged = 7,
      signalUseFavoriteStyleRatingsChanged = 8,
      signalAlwaysUseAbsolutePlaylistPathsChanged = 9,
      signalEmbeddedViewChanged = 10,
      signalInitialViewChanged = 11,
      signalInitialFilesViewPathChanged = 12,
      signalSortRolePreferencesChanged = 13,
      signalSortOrderPreferencesChanged = 14,
      signalViewStylePreferencesChanged = 15
    };

  Q_SIGNALS:
    void RootPathChanged();

    void ForceUsageOfFastFileSearchChanged();

    void ShowNowPlayingBackgroundChanged();

    void ShowProgressOnTaskBarChanged();

    void ShowSystemTrayIconChanged();

    void PlayAtStartupChanged();

    void ScanAtStartupChanged();

    void UseFavoriteStyleRatingsChanged();

    void AlwaysUseAbsolutePlaylistPathsChanged();

    void EmbeddedViewChanged();

    void InitialViewChanged();

    void InitialFilesViewPathChanged();

    void SortRolePreferencesChanged();

    void SortOrderPreferencesChanged();

    void ViewStylePreferencesChanged();

  private:
    void itemChanged(quint64 signalFlag);

  protected:
    ElisaConfiguration(KSharedConfig::Ptr config);
    friend class ElisaConfigurationHelper;

  private:
    ElisaConfigurationPrivate *d;
};

}

#endif

