rework xqitem::setData, part I

This commit is contained in:
2025-08-06 17:30:30 +02:00
parent f41b00d8ff
commit 20b9ba967d
5 changed files with 51 additions and 21 deletions

View File

@@ -37,18 +37,18 @@ XQItem::XQItemFlagMap XQItem::s_ItemFlagMap
XQItem::XQItemDataRoleMap XQItem::s_ItemDataRoleMap
{
{"ItemType", ItemTypeRole},
{"Content", ContentRole},
{"RenderStyle", RenderStyleRole},
{"EditorType", EditorTypeRole},
{"ItemFlags", FlagsRole},
{"UnitType", UnitTypeRole},
{"ContentFormat", ContentFormatRole},
{"FlagsRole", FlagsRole},
{"Icon", IconRole},
{"FixedChoices", FixedChoicesRole},
{"DataNode", ContentNodeRole},
{"SheetNode", SheetNodeRole}
{"ItemTypeRole", ItemTypeRole},
{"ContentRole", ContentRole},
{"RenderStyleRole", RenderStyleRole},
{"EditorTypeRole", EditorTypeRole},
{"ItemFlagsRole", FlagsRole},
{"UnitTypeRole", UnitTypeRole},
{"ContentFormatRole", ContentFormatRole},
{"FlagsRoleRole", FlagsRole},
{"IconRole", IconRole},
{"FixedChoicesRole", FixedChoicesRole},
{"DataNodeRole", ContentNodeRole},
{"SheetNodeRole", SheetNodeRole}
};
// No bi-map needed here, qmap.key() is sufficient for the job
@@ -388,7 +388,12 @@ bool XQItem::isHeaderStyle()
}
QString XQItem::dataRoleName(int role)
{
if( role < XQItem::NoRole && model() )
return model()->roleNames()[role];
return XQItem::fetchItemDataRoleName(role);
}
QVariant XQItem::data(int role ) const
{
@@ -470,7 +475,8 @@ QVariant XQItem::data(int role ) const
void XQItem::setData(const QVariant& value, int role )
{
//replaceAttribute( XQItem* item, XQItem::ItemDataRole role, const QVariant& newValue)
//qDebug() << " -- item set data: " << value.toString() << " for: " << role << ": " << dataRoleName(role);
//emitDataChanged()
switch(role)
@@ -489,19 +495,34 @@ void XQItem::setData(const QVariant& value, int role )
itemType().replaceAttribute( this, value, role );
break;
case ContentNodeRole:
case SheetNodeRole:
case TypeKeyRole:
case Qt::DisplayRole :
case Qt::EditRole :
// return the raw, unformatted data
case ContentRole:
{
//qDebug() << " -- item set data xxx: " << value.toString() << " for: " << role;
break;
QString* contentPtr = QStandardItem::data( XQItem::ContentRole ).value<QString*>();
if(contentPtr)
{
contentPtr->operator=( value.toString() );
}
return;
}
// what to do here?
case ContentNodeRole:
case SheetNodeRole:
case TypeKeyRole:
default:
QStandardItem::setData( value,role);
break;
}
QStandardItem::setData( value,role);
}
@@ -534,6 +555,8 @@ int XQItem::fetchItemDataRole( const QString& dataRoleKey )
QString XQItem::fetchItemDataRoleName( int dataRole )
{
//if( dataRole < XQItem::NoRole)
// return this->model()->
return s_ItemDataRoleMap.key(dataRole);
}