From d3f2cbeaecd60465d77d6cd97d200aec3bf1c7c5 Mon Sep 17 00:00:00 2001 From: "PANIK\\chris" Date: Wed, 13 Aug 2025 22:25:01 +0200 Subject: [PATCH] Still works... --- src/application/xqappdata.cpp | 4 +- src/application/xqchildmodel.cpp | 13 +++--- src/application/xqchildmodel.h | 3 -- src/application/xqmainmodel.cpp | 25 +---------- src/application/xqmainmodel.h | 1 - src/items/xqitemfactory.cpp | 2 +- src/model/xqviewmodel.cpp | 54 +++++++--------------- src/model/xqviewmodel.h | 3 +- xml/modelsheets.xml | 77 +++++++++++++++++++++++++++++++- 9 files changed, 106 insertions(+), 76 deletions(-) diff --git a/src/application/xqappdata.cpp b/src/application/xqappdata.cpp index 7cc6c9e..b7027c9 100644 --- a/src/application/xqappdata.cpp +++ b/src/application/xqappdata.cpp @@ -71,7 +71,7 @@ namespace XQAppData insert( "icn29Dummy", QApplication::style()->standardIcon(QStyle::SP_BrowserReload)); insert( "icn30Dummy", QApplication::style()->standardIcon(QStyle::SP_DriveFDIcon)); insert( "icn31Dummy", QApplication::style()->standardIcon(QStyle::SP_MessageBoxInformation)); - insert( "icn32Dummy", QApplication::style()->standardIcon(QStyle::SP_BrowserStop)); + insert( "BrowserStop", QApplication::style()->standardIcon(QStyle::SP_BrowserStop)); insert( "icn33Dummy", QApplication::style()->standardIcon(QStyle::SP_DriveHDIcon)); insert( "icn34Dummy", QApplication::style()->standardIcon(QStyle::SP_MessageBoxQuestion)); insert( "icn35Dummy", QApplication::style()->standardIcon(QStyle::SP_CommandLink)); @@ -249,3 +249,5 @@ namespace XQAppData } */ }; // namespace XQAppData + + diff --git a/src/application/xqchildmodel.cpp b/src/application/xqchildmodel.cpp index c22b44b..74f9404 100644 --- a/src/application/xqchildmodel.cpp +++ b/src/application/xqchildmodel.cpp @@ -32,7 +32,7 @@ XQChildModel::XQChildModel( QObject *parent ) //! erzeugt die basisstruktur des models. - +/* void XQChildModel::initModel(const QString& modelName) { @@ -84,16 +84,17 @@ void XQChildModel::initModel(const QString& modelName) } - /* + // empty row: - XQNodePtr contentNode = XQNode::make_node( sheetNode->tag_name() ); - XQItemList emptyRow = _itemFactory.makeEmptyRow( contentNode, sheetNode ); - appendRow( emptyRow ); - */ + // XQNodePtr contentNode = XQNode::make_node( sheetNode->tag_name() ); + // XQItemList emptyRow = _itemFactory.makeEmptyRow( contentNode, sheetNode ); + // appendRow( emptyRow ); + } // for } +*/ //! erzegut den sichtbaren inhalt des models aus einem root-datenknoten. diff --git a/src/application/xqchildmodel.h b/src/application/xqchildmodel.h index 40dae0b..2e0681c 100644 --- a/src/application/xqchildmodel.h +++ b/src/application/xqchildmodel.h @@ -29,13 +29,10 @@ public: explicit XQChildModel(QObject *parent = nullptr); virtual ~XQChildModel() = default; - void initModel(const QString& modelName) override; void setContent(const XQNodePtr& contentRoot ); protected: - - //void setupViewProperties() override; void initContextMenu() override; diff --git a/src/application/xqmainmodel.cpp b/src/application/xqmainmodel.cpp index d8378c0..018dbf7 100644 --- a/src/application/xqmainmodel.cpp +++ b/src/application/xqmainmodel.cpp @@ -34,29 +34,6 @@ XQMainModel::XQMainModel(QObject *parent ) } -//! initialisiert dieses model über den namen. - -void XQMainModel::initModel(const QString& modelName) -{ - - // model rootnode finden -> - XQNodePtr modelSheet = _itemFactory.findModelSheet( modelName ); // throws - - // #1: über alle sections - for( auto& section : modelSheet->children() ) - { - // #2: (optionalen) header erzeugen - const XQNodePtr header = section->find_child_by_tag_name( "Header"); - if( header ) - { - XQItemList list = _itemFactory.makeHeader( header ); - Q_ASSERT(!list.isEmpty()); - addSection(list, section ); - } - - } -} - //! erzeugt einen eintrag in der baum-übersicht. @@ -79,7 +56,7 @@ XQItem* XQMainModel::createTreeEntry( XQNodePtr contentNode ) return newTreeentry; } } - throw XQException( "createTreeEntry: main model should not be emtpy!" ); + throw XQException( "createTreeEntry: main model should not be empty!" ); } //! leere default implementation diff --git a/src/application/xqmainmodel.h b/src/application/xqmainmodel.h index dfd4856..443b7dd 100644 --- a/src/application/xqmainmodel.h +++ b/src/application/xqmainmodel.h @@ -32,7 +32,6 @@ public: explicit XQMainModel(QObject *parent = nullptr); virtual ~XQMainModel() = default; - void initModel(const QString& modelName) override; XQItem* createTreeEntry( XQNodePtr contentNode ); public slots: diff --git a/src/items/xqitemfactory.cpp b/src/items/xqitemfactory.cpp index 718097e..bd522cc 100644 --- a/src/items/xqitemfactory.cpp +++ b/src/items/xqitemfactory.cpp @@ -319,7 +319,7 @@ XQItemList XQItemFactory::makeHeader( const XQNodePtr& headerNode ) { XQItemList list; - + // über alle kinder der
sektion for( const auto& headerEntry : headerNode->children() ) { qDebug() << " --- headerEntry: " << headerEntry->tag_name() << ": " << headerEntry->attribute( "ItemType") << headerEntry->attribute( "Caption"); diff --git a/src/model/xqviewmodel.cpp b/src/model/xqviewmodel.cpp index 2fab942..56d3c10 100644 --- a/src/model/xqviewmodel.cpp +++ b/src/model/xqviewmodel.cpp @@ -83,57 +83,37 @@ XQItem& XQViewModel::xqFirstItem(int row) const return *static_cast( QStandardItemModel::item(row) ); } -//! create the own model structure -void XQViewModel::initModel( const QString& modelName) + +//! initialisiert dieses model über den namen. Es wird hier +//! nur die strukur erzeugt, keine inhalte. + +void XQViewModel::initModel(const QString& modelName) { /* model section header + data section ... */ + // model rootnode finden -> + XQNodePtr modelSheet = _itemFactory.findModelSheet( modelName ); // throws - /* - // #0: Wir suchen die Model-Beschreibung - XQNodePtr modelSheet = _itemFactory.findModelSheet( modelName ); // throws - - // #1: Wir erzeugen die Model-Struktur: Jedes Kind beschreibt einen - // XML-Datentyp, z.B. , - // Jeder XML-Knoten entspricht einer Zeile im späteren Model, jedes - // Attribut wird einem eigenen Feld (XQItem) abgebildet. - - for( const auto& sheetNode : modelSheet->children() ) + // #1: über alle sections + for( auto& section : modelSheet->children() ) { - - - XQItemList list = _itemFactory.makeHeaderRow( sheetNode ); - - // für jeden XML-Knotentyp in der Modelbeschreibung erzeugen wir eine section - addSection(list, sheetNode ); - - // jedes kind kann enthält einen itemType und einen headerItemType. Für - // diese sind eventuell weitere attribute vorhanden, die die im type - // enthaltenen defualt-werte überschreiben. - - for( const auto& sheetChild : sheetNode->children() ) + // #2: (optionalen) header erzeugen + const XQNodePtr header = section->find_child_by_tag_name( "Header"); + if( header ) { - //qDebug() << "---- kloppo: " << sheetChild->tag_name() << ": " << sheetChild->to_string(); - extendItemType( sheetChild ); + XQItemList list = _itemFactory.makeHeader( header ); + Q_ASSERT(!list.isEmpty()); + addSection(list, section ); } - - - // empty row: - //XQNodePtr contentNode = XQNode::make_node( sheetNode->tag_name() ); - //XQItemList emptyRow = _itemFactory.makeEmptyRow( contentNode, sheetNode ); - //appendRow( emptyRow ); - - - } // for - */ - + } } diff --git a/src/model/xqviewmodel.h b/src/model/xqviewmodel.h index 585253f..6085a88 100644 --- a/src/model/xqviewmodel.h +++ b/src/model/xqviewmodel.h @@ -48,7 +48,6 @@ public: QUndoStack* undoStack(); void setUndoStack( QUndoStack* undoStack ); - //! create the own model structure virtual void initModel( const QString& modelName); //little helpers @@ -73,7 +72,7 @@ public: /*! - Derzeit wir die default-implementierung von data/setData genutzt. hier wäre dann die + Derzeit wird die default-implementierung von data/setData genutzt. hier wäre dann die Stelle um setData & data an externe 'handler' umzubiegen, siehe giovannies 'model-injection' QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override diff --git a/xml/modelsheets.xml b/xml/modelsheets.xml index 39d9351..9b61535 100644 --- a/xml/modelsheets.xml +++ b/xml/modelsheets.xml @@ -71,8 +71,83 @@ + +
+
+ + + + + + + + + +
+ + + + + + + + + + + + + +
+ +
+
+ + + + + + + +
+ + + + + + + + + +
+ +
+
+ + + + + + + +
+ + + + + + + + + +
+ +
+ + + + @@ -105,4 +180,4 @@
- +