mit unitType
This commit is contained in:
@@ -69,38 +69,60 @@ void XQItemType::setData(const QVariant& value, int role )
|
||||
return QStandardItem::setData(value,role);
|
||||
}
|
||||
|
||||
//! tested, ob ein attribute (z.B. unitType) hier vorhanden ist
|
||||
int XQItemType::hasAttribute( const QString& attrKey )
|
||||
{
|
||||
int role = XQItem::fetchItemDataRole(attrKey);
|
||||
// gibbed überhaupt eine rolle für unser attribut?
|
||||
if( role == XQItem::NoRole)
|
||||
return XQItem::NoRole;
|
||||
|
||||
// wenn ja, ist die role hier besetzt?
|
||||
QVariant value = data(role);
|
||||
if( !value.isValid() || value.isNull() )
|
||||
return XQItem::NoRole;
|
||||
|
||||
return role;
|
||||
}
|
||||
|
||||
|
||||
//! setzt einen attributwert neu. Ggf. wird ein neuer ItemType erzeugt.
|
||||
|
||||
void XQItemType::replaceAttribute( XQItem* item, const QVariant& newValue, int role )
|
||||
XQItemType* XQItemType::replaceAttribute( const QVariant& newValue, int role )
|
||||
{
|
||||
|
||||
// hat sich überhaupt was geändert?
|
||||
QVariant oldValue = data(role);
|
||||
// ja, es hat
|
||||
if( oldValue != newValue )
|
||||
{
|
||||
XQItemType* myClone = new XQItemType(*this);
|
||||
// Änderungen übernehmen
|
||||
myClone->setData( newValue, role );
|
||||
// Gibt es den geänderten ItemType schon?
|
||||
QString newKey = myClone->makeItemTypeKey();
|
||||
// jawoll
|
||||
if( s_ItemTypeMap.contains( newKey ) )
|
||||
{
|
||||
// nur abräumen, sonst nix
|
||||
delete myClone;
|
||||
}
|
||||
else
|
||||
{
|
||||
// speichern
|
||||
s_ItemTypeMap.insert( newKey, myClone );
|
||||
// und ins item übernehmen
|
||||
item->setItemType( myClone );
|
||||
|
||||
/// Obacht! Der alte, geänderte itemType bleibt erhalten
|
||||
/// und verrottet ggf. ohne Daseinszweck
|
||||
}
|
||||
// nein, es hat nicht
|
||||
if( oldValue == newValue )
|
||||
return this;
|
||||
|
||||
// kopie von mir
|
||||
XQItemType* myClone = new XQItemType(*this);
|
||||
// Änderungen übernehmen
|
||||
myClone->setData( newValue, role );
|
||||
// Gibt es den geänderten ItemType schon?
|
||||
QString newKey = myClone->makeItemTypeKey();
|
||||
// jawoll
|
||||
if( s_ItemTypeMap.contains( newKey ) )
|
||||
{
|
||||
// abräumen ...
|
||||
delete myClone;
|
||||
// und die alte version zurückgegen
|
||||
return s_ItemTypeMap[newKey];
|
||||
}
|
||||
|
||||
// speichern
|
||||
s_ItemTypeMap.insert( newKey, myClone );
|
||||
// und ins item übernehmen
|
||||
//item.setItemType( myClone );
|
||||
|
||||
/// Obacht! Der alte, geänderte itemType bleibt erhalten
|
||||
/// und verrottet ggf. ohne Daseinszweck
|
||||
|
||||
return myClone;
|
||||
|
||||
}
|
||||
|
||||
QVariant XQItemType::formatText( const XQItem& item ) const
|
||||
|
Reference in New Issue
Block a user