123 lines
3.5 KiB
C++
123 lines
3.5 KiB
C++
#ifndef LIBPROJECTMANAGER_H
|
|
#define LIBPROJECTMANAGER_H
|
|
|
|
#include <libConfig.h>
|
|
|
|
#include <QFileInfo>
|
|
#include <QObject>
|
|
#include <QStandardItemModel>
|
|
|
|
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,在文件下建立文件
|
|
*/
|
|
virtual int createFile(const QList<QString> &path, const QString &name, const QString &suffix) = 0;
|
|
|
|
/**
|
|
* @brief 获取所有指定后缀名的文件
|
|
* @param suffix 后缀名类型
|
|
* @return 文件集合
|
|
*/
|
|
virtual QList<std::tuple<QFileInfo, QString>> filesWithEnds(const QString &suffix) const = 0;
|
|
|
|
/**
|
|
* @brief 建立新的包路径
|
|
* @param path
|
|
* @return
|
|
*/
|
|
virtual QStandardItem* newPath(const QList<QString> &path) = 0;
|
|
|
|
/**
|
|
* @brief 移动到新的分类中
|
|
* @param item
|
|
* @param target_group
|
|
* @return
|
|
*/
|
|
virtual bool moveTo(const QList<QString> &item_path, const QList<QString> &target_group, int index=-1) = 0;
|
|
|
|
/**
|
|
* @brief 删除指定的文件或者层级组织目录
|
|
* @param path 节点路径
|
|
* @return
|
|
*/
|
|
virtual bool deletePath(const QList<QString> &path) = 0;
|
|
|
|
/**
|
|
* @brief 查询节点文件信息
|
|
* @param path 树节点路径
|
|
* @return 包节点附加文件为空
|
|
*/
|
|
virtual QFileInfo queryWith(const QList<QString> &path) = 0;
|
|
|
|
};
|
|
|
|
inline ProjectManager::ProjectManager(QObject *pins):QObject(pins){}
|
|
|
|
}
|
|
|
|
#endif // LIBPROJECTMANAGER_H
|