#ifndef PQ_APPPATH_H
#define PQ_APPPATH_H

#include <QObject>
#include <QDir>

namespace PQ {
// 程序数据的保存目录，默认基本目录为： {用户目录}/.{程序名}
class AppPath : public QObject
{
    Q_OBJECT
private:
    explicit AppPath();

signals:
    void pathChanged(); // 目录变更通知
public:
    static AppPath * this_();

    // 更改默认目录，日志，配置，缓存，数据也会跟着变，但是数据不会迁移，当前日志不会变更，需要去PQLogManger里设置
    bool setBaseDir(const QDir &dir);

    //基本目录，默认为： {用户目录}/.{程序名}
    inline const QDir & baseDir() const{return _baseDir;}

    //配置目录，为： {基本目录}/config
    inline const QDir & configDir() const{return _configDir;}

    //缓存目录，为： {基本目录}/cache
    inline const QDir & cacheDir() const{return _cacheDir;}

    //数据目录，为： {基本目录}/data
    inline const QDir & dataDir() const{return _dataDir;}

    //临时目录，为： {系统TMP目录}/{程序名}.{程序PID}
    inline const QDir & tmpDir() const {return _tmpDir;}

    //日志目录，为： {基本目录}/log
    inline const QDir & logDir() const {return _logDir;}
private:
    QDir _baseDir;
    QDir _configDir;
    QDir _cacheDir;
    QDir _dataDir;
    QDir _logDir;
    QDir _tmpDir;
};

}
#endif // APPPATH_H
