insilmaril@636: #include insilmaril@636: insilmaril@616: #include "attribute.h" insilmaril@616: insilmaril@636: using namespace std; insilmaril@636: insilmaril@636: extern bool debug; insilmaril@636: insilmaril@616: Attribute::Attribute() insilmaril@616: { insilmaril@636: table=NULL; insilmaril@636: definition=NULL; insilmaril@616: } insilmaril@616: insilmaril@636: void Attribute::setKey (const QString &k, const AttributeType &t) insilmaril@616: { insilmaril@636: if (!table) insilmaril@636: { insilmaril@636: qWarning (QString("Attribute::setKey (%1) No table defined!\n").arg(k).ascii()); insilmaril@636: return; insilmaril@636: } insilmaril@636: insilmaril@636: if (!definition) insilmaril@636: { insilmaril@636: definition=table->getDef(k); insilmaril@636: if (!definition) insilmaril@636: { insilmaril@636: table->addKey (k,t); insilmaril@636: return; insilmaril@636: } insilmaril@636: } insilmaril@636: qWarning (QString("Attribute::setKey (%1) attribute already defined!\n").arg(k).ascii()); insilmaril@616: } insilmaril@616: insilmaril@616: QString Attribute::getKey () insilmaril@616: { insilmaril@636: if (!table) insilmaril@636: { insilmaril@636: qWarning ("Attribute::getKey () No table defined!"); insilmaril@636: return QString(); insilmaril@636: } insilmaril@636: if (!definition) insilmaril@636: { insilmaril@636: qWarning ("Attribute::getKey () No attribute defined!"); insilmaril@636: return QString (); insilmaril@636: } insilmaril@636: return definition->getKey(); insilmaril@616: } insilmaril@616: insilmaril@616: void Attribute::setValue(const QString &v) insilmaril@616: { insilmaril@636: if (!table) insilmaril@636: { insilmaril@636: qWarning (QString ("Attribute::setValue (%1) No table defined!").arg(v)); insilmaril@636: return; insilmaril@636: } insilmaril@636: if (!definition) insilmaril@636: { insilmaril@636: qWarning (QString ("Attribute::setValue (%1) No attribute defined!").arg(v)); insilmaril@636: return; insilmaril@636: } insilmaril@636: definition->setValue (v); insilmaril@616: } insilmaril@616: insilmaril@636: QVariant Attribute::getValue() insilmaril@616: { insilmaril@636: if (!table) insilmaril@636: { insilmaril@636: qWarning ("Attribute::getValue No table defined!"); insilmaril@636: return QString(); insilmaril@636: } insilmaril@636: if (!definition) insilmaril@636: { insilmaril@636: qWarning ("Attribute::getValue No attribute defined!"); insilmaril@636: return QString(); insilmaril@636: } insilmaril@636: QVariant v= definition->getValue(); insilmaril@636: return v; insilmaril@636: } insilmaril@636: insilmaril@636: void Attribute::setType (const AttributeType &t) insilmaril@636: { insilmaril@636: if (!table) insilmaril@636: { insilmaril@636: qWarning ("Attribute::setType No table defined!"); insilmaril@636: return; insilmaril@636: } insilmaril@636: if (!definition) insilmaril@636: { insilmaril@636: qWarning ("Attribute::setType No attribute defined!"); insilmaril@636: return; insilmaril@636: } insilmaril@636: definition->setType (t); insilmaril@636: } insilmaril@636: insilmaril@636: AttributeType Attribute::getType() insilmaril@636: { insilmaril@636: if (!table) insilmaril@636: { insilmaril@636: qWarning ("Attribute::getType No table defined!"); insilmaril@636: return Undefined; insilmaril@636: } insilmaril@636: if (!definition) insilmaril@636: { insilmaril@636: qWarning ("Attribute::getType No attribute defined!"); insilmaril@636: return Undefined; insilmaril@636: } insilmaril@636: return definition->getType(); insilmaril@636: } insilmaril@636: insilmaril@636: QString Attribute::getTypeString() insilmaril@636: { insilmaril@636: if (!table) insilmaril@636: { insilmaril@636: qWarning ("Attribute::getTypeString No table defined!"); insilmaril@636: return "Undefined"; insilmaril@636: } insilmaril@636: if (!definition) insilmaril@636: { insilmaril@636: qWarning ("Attribute::getTypeString No attribute defined!"); insilmaril@636: return "Undefined"; insilmaril@636: } insilmaril@636: return definition->getTypeString(); insilmaril@616: } insilmaril@616: insilmaril@626: void Attribute::setTable (AttributeTable *at) insilmaril@626: { insilmaril@636: if (at) insilmaril@636: table=at; insilmaril@636: else insilmaril@636: qWarning ("Attribute::setTable table==NULL"); insilmaril@636: insilmaril@626: } insilmaril@626: insilmaril@626: AttributeTable* Attribute::getTable() insilmaril@626: { insilmaril@626: return table; insilmaril@626: } insilmaril@626: insilmaril@616: QString Attribute::getDataXML() insilmaril@616: { insilmaril@636: QString a=beginElement ("attribute"); insilmaril@636: a+=attribut ("key",getKey()); insilmaril@636: a+=attribut ("value",getValue().toString() ); insilmaril@636: a+=attribut ("type",getTypeString () ); insilmaril@636: return a; insilmaril@616: } insilmaril@616: insilmaril@616: insilmaril@616: /////////////////////////////////////////////////////////////// insilmaril@636: AttributeDef::AttributeDef() insilmaril@636: { insilmaril@636: } insilmaril@636: insilmaril@636: AttributeDef::~AttributeDef() insilmaril@636: { insilmaril@636: } insilmaril@636: insilmaril@636: void AttributeDef::setType (const AttributeType &t) insilmaril@636: { insilmaril@636: type=t; insilmaril@636: } insilmaril@636: insilmaril@636: AttributeType AttributeDef::getType () insilmaril@636: { insilmaril@636: return type; insilmaril@636: } insilmaril@636: insilmaril@636: QString AttributeDef::getTypeString () insilmaril@636: { insilmaril@636: if (type==StringList) insilmaril@636: return "StringList"; insilmaril@636: else if (type==FreeString) insilmaril@636: return "FreeString"; insilmaril@636: else if (type==UniqueString) insilmaril@636: return "UniqueString"; insilmaril@636: return "Undefined"; insilmaril@636: } insilmaril@636: insilmaril@636: void AttributeDef::setKey (const QString &k) insilmaril@636: { insilmaril@636: key=k; insilmaril@636: } insilmaril@636: insilmaril@636: void AttributeDef::setValue (const QString &v) insilmaril@636: { insilmaril@636: } insilmaril@636: insilmaril@636: void AttributeDef::setValue (const QVariant &v) insilmaril@636: { insilmaril@636: if (type==Undefined) insilmaril@636: qWarning ("AttributeDef::setValue No type defined!"); insilmaril@636: else if (type==StringList) insilmaril@636: value=v; insilmaril@636: else if (type==UniqueString) insilmaril@636: value=v; insilmaril@636: else insilmaril@636: qWarning ("AttributeDef::setValue Unknown type???"); insilmaril@636: insilmaril@636: } insilmaril@636: insilmaril@636: QVariant AttributeDef::getValue () insilmaril@636: { insilmaril@636: return QVariant (); insilmaril@636: } insilmaril@636: insilmaril@636: QString AttributeDef::getKey () insilmaril@636: { insilmaril@636: return key; insilmaril@636: } insilmaril@636: insilmaril@636: /////////////////////////////////////////////////////////////// insilmaril@616: AttributeTable::AttributeTable() insilmaril@616: { insilmaril@671: typeList insilmaril@671: << "Undefined" insilmaril@671: << "IntList" insilmaril@671: << "FreeInt" insilmaril@671: << "StringList" insilmaril@671: << "FreeString" insilmaril@671: << "UniqueString"; insilmaril@616: } insilmaril@616: insilmaril@616: AttributeTable::~AttributeTable() insilmaril@616: { insilmaril@636: clear(); insilmaril@616: } insilmaril@616: insilmaril@616: void AttributeTable::clear () insilmaril@616: { insilmaril@636: attdefs.clear(); insilmaril@616: } insilmaril@616: insilmaril@636: AttributeDef* AttributeTable::addKey (const QString &k, const AttributeType &t) insilmaril@616: { insilmaril@636: for (int i=0; igetKey()==k ) insilmaril@636: { insilmaril@636: qWarning (QString ("AttributeTable::addKey (%1) already in table\n").arg(k).ascii()); insilmaril@636: return NULL; insilmaril@636: } insilmaril@616: } insilmaril@636: AttributeDef *ad=new AttributeDef; insilmaril@636: ad->setKey (k); insilmaril@636: ad->setType (t); insilmaril@636: attdefs.append (ad); insilmaril@636: return ad; insilmaril@616: } insilmaril@616: insilmaril@616: void AttributeTable::removeKey (const QString &k) insilmaril@616: { insilmaril@636: for (int i=0; igetKey()==k ) insilmaril@636: { insilmaril@636: insilmaril@636: delete (attdefs.at(i)); insilmaril@636: attdefs.removeAt (i); insilmaril@636: return ; insilmaril@636: } insilmaril@616: } insilmaril@636: qWarning (QString ("AttributeTable::removeKey (%1) key not in table\n").arg(k).ascii()); insilmaril@636: } insilmaril@636: insilmaril@671: AttributeDef* AttributeTable::getDef(const QString &key) insilmaril@636: { insilmaril@636: for (int i=0; igetKey()==key ) return attdefs.at(i); insilmaril@671: qWarning (QString ("AttributeTable::getDef (%1) key not in table\n").arg(key).ascii()); insilmaril@636: return NULL; insilmaril@616: } insilmaril@616: insilmaril@626: int AttributeTable::countKeys() insilmaril@626: { insilmaril@636: return attdefs.count(); insilmaril@616: } insilmaril@616: insilmaril@616: QStringList AttributeTable::getKeys () insilmaril@616: { insilmaril@636: QStringList kl; insilmaril@636: for (int i=0; igetKey()); insilmaril@636: return kl; insilmaril@616: } insilmaril@616: insilmaril@671: QStringList AttributeTable::getTypes () insilmaril@671: { insilmaril@671: return typeList; insilmaril@671: } insilmaril@671: insilmaril@616: QString AttributeTable::getDataXML() insilmaril@616: { insilmaril@616: return valueElement ("attributeList","key","value"); insilmaril@616: }