93 lines
2.1 KiB
C++
93 lines
2.1 KiB
C++
/***************************************************************************
|
|
|
|
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 <QPersistentModelIndex>
|
|
|
|
#include <xqmaptor.h>
|
|
#include <xqitem.h>
|
|
|
|
|
|
|
|
|
|
//! 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<XQModelSection> _sections;
|
|
|
|
};
|
|
|
|
#endif // XQSECTIONMANAGER_H
|