Files
xtree.ng/src/application/xqmainmodel.cpp

82 lines
2.3 KiB
C++
Raw Normal View History

2025-08-22 22:57:06 +02:00
/***************************************************************************
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 <QPersistentModelIndex>
#include <QClipboard>
#include <xqmainmodel.h>
#include <xqexception.h>
#include <xqtreetable.h>
#include <xqitemdelegate.h>
#include <xqitem.h>
#include <xqappdata.h>
#include <xqselectionmodel.h>
#include <xqitemfactory.h>
//! 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 )
{
2025-08-31 23:18:14 +02:00
// wir durchsuchen alle unsere sections nach dem passenden content-type,
// hier: content-type beschreibt den projekt-status
2025-08-23 19:33:29 +02:00
2025-08-22 22:57:06 +02:00
for(const auto& section : _sections )
{
2025-08-27 14:06:31 +02:00
if( contentNode->attribute(c_ContentType) == section.contentType() )
2025-08-22 22:57:06 +02:00
{
2025-08-23 19:33:29 +02:00
qDebug() << " --- add PROJECT: contentNode: " << contentNode->to_string();
2025-08-22 22:57:06 +02:00
// __fixme! das ist mist!
const XQNodePtr sheetNode = section.sheetRootNode()->first_child();
2025-08-31 23:18:14 +02:00
XQItem* newItem = _itemFactory.makeSingleItem( sheetNode, contentNode->attribute( "ProjectName") );
2025-08-22 22:57:06 +02:00
// den neuen eintrag in die passende section der übersicht eintragen ...
2025-08-27 14:06:31 +02:00
section.headerItem().appendRow( newItem );
2025-08-24 22:30:58 +02:00
// erzeuger sheet node speichern
newItem->setSheetNode( sheetNode );
2025-09-01 17:40:08 +02:00
expandNewItem(section.headerItem().index() );
2025-08-24 22:30:58 +02:00
return newItem;
2025-08-22 22:57:06 +02:00
}
}
2025-08-23 19:33:29 +02:00
2025-08-22 22:57:06 +02:00
throw XQException( "addProjectItem: main model should not be empty!" );
}
void XQMainModel::addSectionItem( const XQModelSection& section, XQItem* projectItem )
{
2025-08-31 23:18:14 +02:00
XQNodePtr sheetNode = projectItem->sheetNode()->find_child_by_tag_name("CurrentSection");
XQItem* newItem = _itemFactory.makeSingleItem( sheetNode, section.contentType() );
projectItem->appendRow( newItem );
2025-09-01 17:40:08 +02:00
expandNewItem(projectItem->index() );
2025-08-22 22:57:06 +02:00
}
2025-09-02 16:58:56 +02:00