DAWorkbench 0.0.1
DAWorkbench API
载入中...
搜索中...
未找到
DAAbstractArchive.h
1#ifndef DAABSTRACTARCHIVE_H
2#define DAABSTRACTARCHIVE_H
3#include "DAGuiAPI.h"
4#include <QString>
5#include <QByteArray>
6#include <QObject>
7#include "DAAbstractArchiveTask.h"
8namespace DA
9{
15class DAGUI_API DAAbstractArchive : public QObject
16{
17 Q_OBJECT
18 DA_DECLARE_PRIVATE(DAAbstractArchive)
19public:
24 {
25 SaveSuccess,
26 SaveFailed,
27 LoadSuccess,
28 LoadFailed
29 };
30
31public:
32 DAAbstractArchive(QObject* par = nullptr);
33 virtual ~DAAbstractArchive();
44 virtual bool setBaseFilePath(const QString& path);
45 QString getBaseFilePath() const;
46
53 virtual bool write(const QString& relatePath, const QByteArray& byte) = 0;
54
60 virtual QByteArray read(const QString& relatePath) = 0;
61
67 virtual bool remove(const QString& relatePath) = 0;
68
69 // 添加任务
70 void appendTask(const std::shared_ptr< DAAbstractArchiveTask >& task);
71 // 获取任务数量
72 int getTaskCount() const;
73 // 是否有任务
74 bool isTaskQueueEmpty() const;
75
76public Q_SLOTS:
77 // 保存所有,执行任务队列
78 virtual void saveAll(const QString& filePath) = 0;
79 // 读取所有,执行任务队列,内个任务的读取结果通过taskProgress信号携带
80 virtual void loadAll(const QString& filePath) = 0;
81
82public:
83 // 转换为临时路径
84 static QString toTemporaryPath(const QString& path);
85 // 替换文件
86 static bool replaceFile(const QString& file, const QString& beReplaceFile);
87
88Q_SIGNALS:
95 void taskProgress(std::shared_ptr< DA::DAAbstractArchiveTask > task, int mode);
96
100 void taskFinished(int resultCode);
101
102protected:
103 // 从顶部提取一个任务
104 std::shared_ptr< DAAbstractArchiveTask > takeTask();
105};
106}
107
108#endif // DAABSTRACTARCHIVE_H
持久化的基类
Definition DAAbstractArchive.h:16
void taskProgress(std::shared_ptr< DA::DAAbstractArchiveTask > task, int mode)
当前进度信号 对于读取操作,这个函数会携带读取的结果
virtual QByteArray read(const QString &relatePath)=0
读取数据
void taskFinished(int resultCode)
任务完成
ResultCode
结果号
Definition DAAbstractArchive.h:24
virtual bool remove(const QString &relatePath)=0
删除文件
virtual bool write(const QString &relatePath, const QByteArray &byte)=0
写数据
序列化类都是带异常的,使用中需要处理异常
Definition AppMainWindow.cpp:44