#ifndef BUFFERMGR_H #define BUFFERMGR_H #include #include #include #include #include "namebasedserver.h" namespace vnotex { class IBufferFactory; class Node; class Buffer; struct FileOpenParameters; class BufferMgr : public QObject { Q_OBJECT public: explicit BufferMgr(QObject *p_parent = nullptr); ~BufferMgr(); void init(); public slots: void open(Node *p_node, const QSharedPointer &p_paras); void open(const QString &p_filePath, const QSharedPointer &p_paras); signals: void bufferRequested(Buffer *p_buffer, const QSharedPointer &p_paras); private: void initBufferServer(); Buffer *findBuffer(const Node *p_node) const; Buffer *findBuffer(const QString &p_filePath) const; void addBuffer(Buffer *p_buffer); // Try to load @p_path as a node if it is within one notebook. QSharedPointer loadNodeByPath(const QString &p_path); QSharedPointer> m_bufferServer; // Managed by QObject. QVector m_buffers; }; } // ns vnotex #endif // BUFFERMGR_H