#ifndef ELANAVIGATIONMODEL_H #define ELANAVIGATIONMODEL_H #include #include #include "ElaDef.h" class ElaNavigationNode; class ElaNavigationModel : public QAbstractItemModel { Q_OBJECT Q_PRIVATE_CREATE(ElaNavigationNode*, SelectedNode) Q_PRIVATE_CREATE(ElaNavigationNode*, SelectedExpandedNode) public: explicit ElaNavigationModel(QObject* parent = nullptr); ~ElaNavigationModel(); QModelIndex parent(const QModelIndex& child) const override; QModelIndex index(int row, int column, const QModelIndex& parent = QModelIndex()) const override; int rowCount(const QModelIndex& parent = QModelIndex()) const override; int columnCount(const QModelIndex& parent = QModelIndex()) const override; QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override; ElaNavigationType::NodeOperateReturnType addExpanderNode(QString expanderTitle, QString& expanderKey, ElaIconType::IconName awesome); ElaNavigationType::NodeOperateReturnType addExpanderNode(QString expanderTitle, QString& expanderKey, QString targetExpanderKey, ElaIconType::IconName awesome); ElaNavigationType::NodeOperateReturnType addPageNode(QString pageTitle, QString& pageKey, ElaIconType::IconName awesome); ElaNavigationType::NodeOperateReturnType addPageNode(QString pageTitle, QString& pageKey, QString targetExpanderKey, ElaIconType::IconName awesome); ElaNavigationType::NodeOperateReturnType addPageNode(QString pageTitle, QString& pageKey, int keyPoints, ElaIconType::IconName awesome); ElaNavigationType::NodeOperateReturnType addPageNode(QString pageTitle, QString& pageKey, QString targetExpanderKey, int keyPoints, ElaIconType::IconName awesome); QStringList removeNavigationNode(QString nodeKey); ElaNavigationNode* getNavigationNode(QString nodeKey) const; QList getRootExpanderNodes() const; QList getRootExpandedNodes() const; private: QMap _nodesMap; ElaNavigationNode* _rootNode{nullptr}; }; #endif // ELANAVIGATIONMODEL_H