#ifndef LIBPROJECTMANAGER_H #define LIBPROJECTMANAGER_H #include #include #include #include namespace Project { /** * @brief 项目管理 * 项目名称 * ==包名称 * ==文件名称 * ==包名称 * ==包名称 */ class ProjectManager : public QObject { public: ProjectManager(QObject *pins); virtual ~ProjectManager() = default; // 项目操作========================================================= /** * @brief 项目出于打开状态 * @return */ virtual bool isOpen() const = 0; /** * @brief 载入项目组织文件 * @param project_file 组织文件路径 * @return 0-成功,<0各种失败原因 */ virtual int openProject(const QString &project_file) = 0; /** * @brief 指定项目文件夹,建立项目文件,一个文件夹只能建立一个项目 * @param project_dir 项目文件夹 * @param name 项目文件名 * @return 0-成功,<0各种失败原因 */ virtual int newProject(const QString &project_dir, const QString &name) = 0; /** * @brief 关闭当前项目 */ virtual void closeProject() = 0; /** * @brief save 保存当前项目 */ virtual void save() = 0; /** * @brief 获取项目名称 * @return */ virtual QString projectName() const = 0; // 项目内容管理======================================================= /** * @brief 获取项目配置 * @return 配置实例 */ virtual Config::Configration* configraions() const = 0; /** * @brief 项目文件树形组织模型 * @return */ virtual QStandardItemModel* model() const = 0; /** * @brief 在指定包路径下建立创建文本文件 * @param path 指定包路径 * @return 0,成功;-1,指定路径不存在;-2,在文件下建立文件;-3,相同层次名称重复 */ virtual int createFile(const QList &path, const QString &name, const QString &suffix) = 0; /** * @brief 获取所有指定后缀名的文件 * @param suffix 后缀名类型 * @return 文件集合 */ virtual QList> filesWithEnds(const QString &suffix) const = 0; /** * @brief 建立新的包路径 * @param path * @return */ virtual QStandardItem* newPath(const QList &path) = 0; /** * @brief 移动到新的分类中 * @param item * @param target_group * @return */ virtual bool moveTo(const QList &item_path, const QList &target_group, int index=-1) = 0; /** * @brief 删除指定的文件或者层级组织目录 * @param path 节点路径 * @return */ virtual bool deletePath(const QList &path) = 0; /** * @brief 查询节点文件信息 * @param path 树节点路径 * @return 包节点附加文件为空 */ virtual QFileInfo queryWith(const QList &path) = 0; }; inline ProjectManager::ProjectManager(QObject *pins):QObject(pins){} } #endif // LIBPROJECTMANAGER_H