#pragma once #include "IxSerDes.h" #include "Defines.h" #include "mProjectManager_global.h" class ZxDataProject; class M_PROJECTMANAGER_EXPORT mProjectFile : public QObject, virtual public IxSerDes { Q_OBJECT public: mProjectFile(); mProjectFile(ZxDataProject* p); ~mProjectFile(); virtual void onSerialize(ZxSerializer* ser); virtual void onDeserialize(ZxSerializer* ser); /// @brief 根据wtf或db文件,解析出来工区名称、以及工区文件夹的上一级目录 /// @param sUrl:wtf或db文件,全路径 /// @param sDir: 工区文件夹的上一级目录 /// @param sProjName:工区名称 static bool parseProjUrl(const QString& sUrl, QString& sDir, QString& sProjName); /// @brief 根据wtf或db文件,确认目录结构是否一致 /// @param sUrl:wtf或db文件,全路径 /// @note 如果Url文件名称,与其所在的目录名称,不一致, /// 那么是无法正常打开的,需要重命名一下wtf或db文件 /// 由用户决定如何继续 static bool makesureProjUrl(QString& sUrl); private: public: // sFullPathFile 指的是,自定义格式的文件,非db文件 bool save(ZxDataProject* p, bool ignoreIfExists = true); bool save(QString sDir, QString sName, bool ignoreIfExists = true); bool save(QString sFullPathFile, bool ignoreIfExists = true); bool load(ZxDataProject* p); bool load(QString sDir, QString sName); bool load(QString sFullPathFile); private: bool makesureDbUrl(QString sFullPathFile, bool bLoad); bool saveProj(QString sProj); bool loadProj(QString sProj); void initByProj(ZxDataProject* p); QString getWtjFile(ZxDataProject* p); QString getWtjFile(QString sDir, QString sName, QString sExt = "wtf"); protected: ZxDataProject* m_pDataProject; //设置的Obj QString m_sProjName; QString m_sDbUrl; };