123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- #ifndef INOTEBOOKBACKEND_H
- #define INOTEBOOKBACKEND_H
- #include <QObject>
- #include <utils/pathutils.h>
- class QByteArray;
- class QJsonObject;
- namespace vnotex
- {
- // Abstract class for notebook backend, which is responsible for file access
- // and synchronization.
- class INotebookBackend : public QObject
- {
- Q_OBJECT
- public:
- INotebookBackend(const QString &p_rootPath, QObject *p_parent = nullptr)
- : QObject(p_parent),
- m_rootPath(PathUtils::absolutePath(p_rootPath))
- {
- }
- virtual ~INotebookBackend()
- {
- }
- virtual QString getName() const = 0;
- virtual QString getDisplayName() const = 0;
- virtual QString getDescription() const = 0;
- const QString &getRootPath() const
- {
- return m_rootPath;
- }
- void setRootPath(const QString &p_rootPath)
- {
- m_rootPath = p_rootPath;
- }
- // Whether @p_dirPath is an empty directory.
- virtual bool isEmptyDir(const QString &p_dirPath) const = 0;
- // Create the directory path @p_dirPath. Create all parent directories if necessary.
- virtual void makePath(const QString &p_dirPath) = 0;
- // Write @p_data to @p_filePath.
- virtual void writeFile(const QString &p_filePath, const QByteArray &p_data) = 0;
- // Write @p_text to @p_filePath.
- virtual void writeFile(const QString &p_filePath, const QString &p_text) = 0;
- // Write @p_jobj to @p_filePath.
- virtual void writeFile(const QString &p_filePath, const QJsonObject &p_jobj) = 0;
- // Read content from @p_filePath.
- virtual QString readTextFile(const QString &p_filePath) = 0;
- // Read file @p_filePath.
- virtual QByteArray readFile(const QString &p_filePath) = 0;
- QString getFullPath(const QString &p_path) const;
- virtual bool exists(const QString &p_path) const = 0;
- virtual bool childExistsCaseInsensitive(const QString &p_dirPath, const QString &p_name) const = 0;
- virtual bool isFile(const QString &p_path) const = 0;
- virtual void renameFile(const QString &p_filePath, const QString &p_name) = 0;
- virtual void renameDir(const QString &p_dirPath, const QString &p_name) = 0;
- // Copy @p_filePath to @p_destPath.
- // @p_filePath could be outside notebook.
- virtual void copyFile(const QString &p_filePath, const QString &p_destPath) = 0;
- // Delete @p_filePath from disk.
- virtual void removeFile(const QString &p_filePath) = 0;
- // Copy @p_dirPath to as @p_destPath.
- virtual void copyDir(const QString &p_dirPath, const QString &p_destPath) = 0;
- // Delete @p_dirPath from disk if it is empty.
- // Return false if it is not deleted due to non-empty.
- virtual bool removeDirIfEmpty(const QString &p_dirPath) = 0;
- virtual void removeDir(const QString &p_dirPath) = 0;
- virtual QString renameIfExistsCaseInsensitive(const QString &p_path) const = 0;
- // Add one file to backend.
- virtual void addFile(const QString &p_path) = 0;
- virtual void removeEmptyDir(const QString &p_dirPath) = 0;
- protected:
- // Constrain @p_path within root path of the notebook.
- void constrainPath(const QString &p_path) const;
- private:
- // Root path of the notebook.
- QString m_rootPath;
- };
- } // ns vnotex
- #endif // INOTEBOOKBACKEND_H
|