/*************************************************************************** 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. ***************************************************************************/ #include #include #include #include #include #include #include #include #include #include //! default konstruktor. XQMainModel::XQMainModel(QObject *parent ) : XQViewModel{parent} { } //! leere default implementation void XQMainModel::initContextMenu() { } //! erzeugt einen eintrag in der baum-übersicht. XQItem* XQMainModel::addProjectItem( XQNodePtr contentNode ) { // wir durchsuchen alle unsere sections nach dem passenden content-type, // hier: content-type beschreibt den projekt-status const QString& sectionKey = contentNode->attribute(c_ContentType); if( _sections.hasValidSection( sectionKey ) ) { const XQModelSection& section = _sections.sectionByKey( sectionKey ); qDebug() << " --- add PROJECT: contentNode: " << contentNode->to_string(); // __fixme! das ist mist! const XQNodePtr sheetNode = section.sheetRootNode()->first_child(); XQItem* newItem = _itemFactory.makeSingleItem( sheetNode, contentNode->attribute( "ProjectName") ); // den neuen eintrag in die passende section der übersicht eintragen ... section.headerItem().appendRow( newItem ); // erzeuger sheet node speichern newItem->setSheetNode( sheetNode ); expandNewItem(section.headerItem().index() ); return newItem; } /* for(const auto& section : _sections ) { if( contentNode->attribute(c_ContentType) == section.contentType() ) { qDebug() << " --- add PROJECT: contentNode: " << contentNode->to_string(); // __fixme! das ist mist! const XQNodePtr sheetNode = section.sheetRootNode()->first_child(); XQItem* newItem = _itemFactory.makeSingleItem( sheetNode, contentNode->attribute( "ProjectName") ); // den neuen eintrag in die passende section der übersicht eintragen ... section.headerItem().appendRow( newItem ); // erzeuger sheet node speichern newItem->setSheetNode( sheetNode ); expandNewItem(section.headerItem().index() ); return newItem; } } */ throw XQException( "addProjectItem: main model should not be empty!" ); } void XQMainModel::addSectionItem( const XQModelSection& section, XQItem* projectItem ) { XQNodePtr sheetNode = projectItem->sheetNode()->find_child_by_tag_name("CurrentSection"); XQItem* newItem = _itemFactory.makeSingleItem( sheetNode, section.contentType() ); projectItem->appendRow( newItem ); expandNewItem(projectItem->index() ); }