File indexing completed on 2025-02-02 05:02:27

0001 /*
0002     SPDX-FileCopyrightText: 2019 Volker Krause <vkrause@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #ifndef DOCUMENTMANAGER_H
0008 #define DOCUMENTMANAGER_H
0009 
0010 #include <QObject>
0011 
0012 /** Manages documents attached to reservations. */
0013 class DocumentManager : public QObject
0014 {
0015     Q_OBJECT
0016 public:
0017     explicit DocumentManager(QObject *parent = nullptr);
0018     ~DocumentManager() override;
0019 
0020     /** Lists all documents in storage. */
0021     QVector<QString> documents() const;
0022     /** Returns @c true if a document with the given id is present. */
0023     bool hasDocument(const QString &id) const;
0024 
0025     /** Returns the document meta data. */
0026     QVariant documentInfo(const QString &id) const;
0027     /** Returns a file path for opening the document. */
0028     QString documentFilePath(const QString &id) const;
0029 
0030     /** Add a document from raw data. */
0031     void addDocument(const QString &id, const QVariant &info, const QByteArray &data);
0032     /** Add a document from an external file. */
0033     void addDocument(const QString &id, const QVariant &info, const QString &filePath);
0034     /** Remove a document. */
0035     Q_INVOKABLE void removeDocument(const QString &id);
0036 
0037 Q_SIGNALS:
0038     void documentAdded(const QString &id);
0039     void documentRemoved(const QString &id);
0040 
0041 private:
0042     QString basePath() const;
0043 };
0044 
0045 #endif // DOCUMENTMANAGER_H