QtNovelUI/libProjectManager/libProjectManager.h

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