Fix choice model.
This commit is contained in:
@@ -29,7 +29,7 @@ void XQItemFactory::initItemFactory( const QString& modelSheetFileName )
|
||||
for( const auto& [key,value] : sheetNode->attributes() )
|
||||
{
|
||||
//qDebug() << " --- conf item Type: " << key << " : " << value;
|
||||
setItemDataFromString( *itemType, key, value );
|
||||
setItemTypeDataFromString( *itemType, key, value );
|
||||
}
|
||||
};
|
||||
|
||||
@@ -91,7 +91,7 @@ XQItemType* XQItemFactory::makeItemType(const XQNodePtr& sheetEntry )
|
||||
// wenn ja, überschreiben
|
||||
if( role != XQItem::NoRole )
|
||||
{
|
||||
QVariant newValue = makeVariant(role, attrEntry.second );
|
||||
QVariant newValue = XQItem::makeVariant( itemType, role, attrEntry.second );
|
||||
itemType = itemType->replaceAttribute( newValue, role );
|
||||
}
|
||||
|
||||
@@ -124,133 +124,19 @@ XQNodePtr XQItemFactory::findModelSheet( const QString& modelName ) const
|
||||
|
||||
//! erzeugt eine QVariant aus dem gegebenen string und setzt diese dann via role im item.
|
||||
|
||||
void XQItemFactory::setItemDataFromString( XQItem& item, const QString& roleKey, const QString& source ) const
|
||||
void XQItemFactory::setItemTypeDataFromString( XQItem& item, const QString& roleKey, const QString& source ) const
|
||||
{
|
||||
int dataRole = XQItem::fetchItemDataRole( roleKey );
|
||||
if( dataRole != XQItem::NoRole)
|
||||
{
|
||||
QVariant variant = makeVariant( dataRole, source );
|
||||
QVariant variant = XQItem::makeVariant( &item, dataRole, source );
|
||||
if( !variant.isNull() && variant.isValid() )
|
||||
item.setData( variant, dataRole );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//! erzeugt eine QVariant aus dem gegebenen string
|
||||
|
||||
QVariant XQItemFactory::makeVariant( int dataRole, const QString& source ) const
|
||||
{
|
||||
|
||||
QVariant value;
|
||||
|
||||
switch(dataRole)
|
||||
{
|
||||
// das ist ein pointer auf den original-string aus dem XML
|
||||
case XQItem::ContentRole:
|
||||
{
|
||||
// content() -> QString*
|
||||
value = QVariant::fromValue(&source);
|
||||
break;
|
||||
}
|
||||
|
||||
case XQItem::ItemTypeRole:
|
||||
{
|
||||
// itemType() -> XQItemType*
|
||||
//qDebug() << " --- makeVariant: make ItemType: " << source;
|
||||
XQItemType* itemType = findItemTypeTemplate( source );
|
||||
value = QVariant::fromValue(itemType);
|
||||
break;
|
||||
}
|
||||
|
||||
case XQItem::RenderStyleRole:
|
||||
{
|
||||
XQItem::RenderStyle renderStyle = XQItem::fetchRenderStyle( source );
|
||||
value = QVariant::fromValue(renderStyle);
|
||||
break;
|
||||
}
|
||||
|
||||
case XQItem::EditorTypeRole:
|
||||
{
|
||||
XQItem::EditorType editorType = XQItem::fetchEditorType( source );
|
||||
value = QVariant::fromValue(editorType);
|
||||
break;
|
||||
}
|
||||
|
||||
case XQItem::UnitTypeRole:
|
||||
{
|
||||
//qDebug() << " --- make unit type: " << source;
|
||||
XQItem::UnitType unitType = XQItem::fetchUnitType( source );
|
||||
value = QVariant::fromValue(unitType);
|
||||
break;
|
||||
}
|
||||
|
||||
case XQItem::ContentFormatRole:
|
||||
{
|
||||
// contentFormat() -> QString
|
||||
value = QVariant::fromValue(source);
|
||||
break;
|
||||
}
|
||||
|
||||
case XQItem::FlagsRole:
|
||||
{
|
||||
QFlags itemFlags = Qt::NoItemFlags;
|
||||
const QStringList flagKeys = source.split( '|' );
|
||||
for( const QString& flagKey : flagKeys )
|
||||
{
|
||||
Qt::ItemFlag flag = XQItem::fetchItemFlag( flagKey );
|
||||
itemFlags.setFlag( flag );
|
||||
}
|
||||
value = QVariant::fromValue(itemFlags);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
case XQItem::IconRole:
|
||||
{
|
||||
QIcon typeIcon = XQAppData::typeIcon(source);
|
||||
value = QVariant::fromValue(typeIcon);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
case XQItem::FixedChoicesRole:
|
||||
{
|
||||
const QStringList choices = source.split( '|' );
|
||||
|
||||
QStandardItemModel* fixedChoices = new QStandardItemModel();
|
||||
for( const QString& entry : choices )
|
||||
fixedChoices->appendRow( new QStandardItem( entry ) );
|
||||
value = QVariant::fromValue(fixedChoices);
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
case XQItem::ContentNodeRole:
|
||||
{
|
||||
value = QVariant::fromValue(&source);
|
||||
break;
|
||||
}
|
||||
|
||||
case XQItem::XQItem::SheetNodeRole:
|
||||
{
|
||||
value = QVariant::fromValue(&source);
|
||||
break;
|
||||
}
|
||||
*/
|
||||
|
||||
default:
|
||||
case XQItem::XQItem::NoRole:
|
||||
{
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
//if( !value.toString().isEmpty())
|
||||
// setData( value, dataRole);
|
||||
|
||||
return value;
|
||||
|
||||
}
|
||||
|
||||
///
|
||||
/// ------------------------------------------------
|
||||
|
Reference in New Issue
Block a user