added XQStaticItem

This commit is contained in:
2025-08-19 22:26:38 +02:00
parent c870ef8801
commit 123dc695d9
5 changed files with 74 additions and 30 deletions

View File

@@ -43,8 +43,8 @@ void XQChildModel::setContent( const XQNodePtr& contentRoot )
// Die Datenbasis als shared_ptr sichern
_contentRoot = contentRoot;
// Wir gehen über alle Einträge, die verschiedenen Typen
// haben, hier: <Panel>. <Battery> ...
// Wir gehen über alle Einträge, die auch unterschiedliche Typen
// haben können, hier: <Panel>. <Battery> ...
for (const auto& contentEntry : _contentRoot->children())
{
// Das ist hier der Typ des Eintrags: Panel, Battery ...

View File

@@ -80,8 +80,6 @@ XQItem* XQMainModel::addProjectItem( XQNodePtr contentNode )
void XQMainModel::addSectionItem( const XQModelSection& section, XQItem* projectItem )
{
//XQNodePtr sheetNode = projectParent->sheetNode();
//XQItem* newItem = _itemFactory.makeItem(sheetNode, contentPtr );
XQNodePtr sheetNode = projectItem->sheetNode()->find_child_by_tag_name("CurrentSection");
XQItem* newItem = _itemFactory.makeItem(sheetNode, &section.contentType() );
projectItem->appendRow( newItem );

View File

@@ -136,14 +136,6 @@ XQItem::XQItem(XQItemType* itemType, const QString *content )
setContent(content);
}
// Warum beides?
XQItem::XQItem(XQItemType* itemType, const QString *content, const XQNodePtr& contentNode )
: XQItem{ itemType, content }
{
setContentNode(contentNode);
}
//! ruft den copy-konstruktor auf.
XQItem* XQItem::clone() const
@@ -166,7 +158,10 @@ bool XQItem::isValid() const
XQNodePtr XQItem::contentNode() const
{
return data( ContentNodeRole ).value<XQNodePtr>();
XQNodePtr node = data( ContentNodeRole ).value<XQNodePtr>();
if( node )
return node;
throw XQException("XQItem::contentNode() nullptr");
}
@@ -344,15 +339,10 @@ void XQItem::setUnitType(UnitType unitType)
//! gibt den content-string zurück. das ist ein derefenzierter pointer
//! auf das zu diesem item gehörige daten-attribut 'useres' datenknotens.
const QString& XQItem::content() const
QString XQItem::content() const
{
const QString* contentPtr = QStandardItem::data( XQItem::ContentRole ).value<const QString*>();
if(contentPtr)
return *contentPtr;
static const QString s_dummyContent("-");
return s_dummyContent;
// umleitung auf text()
return data( Qt::EditRole ).toString();
}
@@ -366,7 +356,7 @@ void XQItem::setContent( const QString* content )
//! holt den schlüssel bzw. bezeicher des content() string aus 'unserem' content knoten.
const QString& XQItem::contentKey() const
QString XQItem::contentKey() const
{
return contentNode()->attributes().key_of( content() );
}
@@ -487,7 +477,13 @@ QVariant XQItem::data(int role ) const
case Qt::EditRole :
case XQItem::ContentRole:
{
return content();
const QString* contentPtr = QStandardItem::data( XQItem::ContentRole ).value<const QString*>();
if(contentPtr)
return *contentPtr;
static const QString s_dummyContent("-");
return s_dummyContent;
}
case Qt::ToolTipRole:
@@ -730,5 +726,38 @@ QString XQItem::fetchUnitTypeToString( UnitType unitType)
return s_UnitTypeMap[unitType];
}
/// ---
/// ---
/// ---
XQStaticItem::XQStaticItem()
: XQItem{XQItemType::staticItemType()}
{
}
XQStaticItem::XQStaticItem( XQItemType* itemType )
{
setItemType( itemType );
}
XQStaticItem::XQStaticItem(XQItemType* itemType, const QString& content )
: XQItem{ itemType }
{
setText(content);
}
QVariant XQStaticItem::data(int role ) const
{
}
void XQStaticItem::setData(const QVariant &value, int role )
{
}

View File

@@ -126,10 +126,8 @@ public:
XQItem();
XQItem( XQItemType* itemType );
XQItem( XQItemType* itemType, const QString* content );
XQItem( XQItemType* itemType, const QString* content, const XQNodePtr& contentNode );
virtual ~XQItem() = default;
@@ -143,8 +141,6 @@ public:
// shortcuts auf XQNodePtr
//! gibt den zu diesem item gehörigen datenknoten
virtual XQNodePtr contentNode() const;
virtual void setContentNode(const XQNodePtr& contentNode );
virtual XQNodePtr sheetNode() const;
@@ -167,8 +163,8 @@ public:
// XQNodePtr, also unserem contentNode(). Das wird hier direkt aufgelöst und nicht auf
// data() umgeleitet.
const QString& content() const;
const QString& contentKey() const;
QString content() const;
QString contentKey() const;
void setContent( const QString* content );
//
@@ -265,6 +261,27 @@ protected:
};
class XQStaticItem : public XQItem
{
public:
XQStaticItem();
XQStaticItem( XQItemType* itemType );
XQStaticItem( XQItemType* itemType, const QString& content );
virtual ~XQStaticItem() = default;
QVariant data(int role = Qt::DisplayRole ) const override;
void setData(const QVariant &value, int role ) override;
};
Q_DECLARE_METATYPE(XQItem::RenderStyle);
Q_DECLARE_METATYPE(XQItem::EditorType);
Q_DECLARE_METATYPE(XQItem::UnitType);

View File

@@ -9,7 +9,7 @@
<ItemTypes>
<TreeParentType RenderStyle="PlainStyle" ItemFlags="IsEnabled|IsDropEnabled" Icon="DirIcon" />
<TreeChildType RenderStyle="PlainStyle" ItemFlags="IsEnabled" Icon="DesktopIcon"/>
<TreeSectionType RenderStyle="PlainStyle" ItemFlags="IsUserCheckable|IsEnabled" Icon="DirIcon"/>
<TreeSectionType RenderStyle="PlainStyle" ItemFlags="IsUserCheckable|IsEnabled" Icon="DirIcon"/>
<HeaderType RenderStyle="HeaderStyle" ItemFlags="IsEnabled"/>
<HiddenType RenderStyle="HiddenStyle"/>
<StaticType RenderStyle="PlainStyle"/>