/*************************************************************************** source::worx xtree Copyright © 2024-2025 c.holzheuer christoph.holzheuer@gmail.com This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. ***************************************************************************/ #ifndef XQSECTIONMANAGER_H #define XQSECTIONMANAGER_H #include #include #include //! Daten zur beschreibung einer 'sektion' des models. class XQModelSection { public: XQModelSection() = default; XQModelSection(const QModelIndex& modelIndex, XQNodePtr sheetNode ); bool operator==(const XQModelSection& other) const; bool isValid() const; int firstRow() const; QModelIndex startIndex() const; XQNodePtr sectionRootNode() const; XQNodePtr sheetRootNode() const; XQNodePtr contentRootNode() const; void setContentRootNode( const XQNodePtr dataRootNode ) const; const QString& contentType() const; XQItem& headerItem() const; protected: QPersistentModelIndex _modelIndex; mutable XQNodePtr _sectionSheetRootNode{}; mutable XQNodePtr _contentRootNode{}; }; Q_DECLARE_METATYPE(XQModelSection) //! Erste und letzte ziele einer XQModelSection struct XQSectionRange { int firstRow{-1}; int lastRow{-1}; }; //! struktur, die alle sections enthält class XQSectionManager { public: bool hasValidSection(const QString& sectionKey) const; const XQModelSection& sectionByKey( const QString& sectionKey ) const; const XQModelSection& sectionByRow( int row ) const; const XQModelSection& createSection(const QModelIndex& modelIndex, XQNodePtr sheetNode); int lastRow(const XQModelSection& section ) const; XQSectionRange sectionRange(const XQModelSection §ion) const; void dump()const; protected: XQMaptor _sections; }; #endif // XQSECTIONMANAGER_H