#include "attributeitem.h"


extern bool debug;

AttributeItem::AttributeItem(const QList<QVariant> &data, TreeItem *parent):BranchItem (data,parent)
{
    TreeItem::setType (Attribute);
    internal=false;
}

AttributeItem::~AttributeItem()
{
}

void AttributeItem::set (const QString &k, const QString &v, const Type &)
{
    key=k;
    value=QVariant (v);
    createHeading();
}

void AttributeItem::get (QString &k, QString &v, Type &t)
{
    k=key;
    v=value.toString();
    t=attrType;
}

void AttributeItem::setKey (const QString &k)
{
/*
    if (!table)
    {
	qWarning (QString("AttributeItem::setKey (%1)  No table defined!\n").arg(k).ascii());
	return;	
    }
    
    if (!definition)
    {
	definition=table->getDef(k);
	if (!definition)
	{
	    table->addKey (k,t);
	    return; 
	}
    }	
    qWarning (QString("AttributeItem::setKey (%1)  attribute already defined!\n").arg(k).ascii());
    */
    key=k;
    createHeading();
}

QString AttributeItem::getKey ()
{
/*
    if (!table)
    {
	qWarning ("AttributeItem::getKey ()  No table defined!");
	return QString();   
    }
    if (!definition)
    {
	qWarning ("AttributeItem::getKey ()  No attribute defined!");
	return QString ();  
    }	
    return definition->getKey();
    */
    return key;
}

void AttributeItem::setValue(const QString &v)
{
/*
    if (!table)
    {
	qWarning (QString ("AttributeItem::setValue (%1)  No table defined!").arg(v));
	return;	
    }
    if (!definition)
    {
	qWarning (QString ("AttributeItem::setValue (%1)  No attribute defined!").arg(v));
	return;	
    }	
    definition->setValue (v);
*/
    value=v;
    createHeading();
}

QVariant AttributeItem::getValue()
{
/*
    if (!table)
    {
	qWarning ("AttributeItem::getValue  No table defined!");
	return QString();   
    }
    if (!definition)
    {
	qWarning ("AttributeItem::getValue  No attribute defined!");
	return QString();   
    }	
    QVariant v= definition->getValue();
    return v;
    */
    return value;
}

void AttributeItem::setType (const Type &t)
{
/*
    if (!table)
    {
	qWarning ("AttributeItem::setType  No table defined!");
	return;
    }
    if (!definition)
    {
	qWarning ("Attribute::setType  No attribute defined!");
	return; 
    }	
    definition->setType (t);
*/
    attrType=t;
}

AttributeItem::Type AttributeItem::getAttributeType()
{
/*
    if (!table)
    {
	qWarning ("AttributeItem::getType  No table defined!");
	return Undefined;   
    }
    if (!definition)
    {
	qWarning ("AttributeItem::getType  No attribute defined!");
	return Undefined;   
    }	
    return definition->getType();
*/
    return attrType;
}

QString AttributeItem::getTypeString()
{
/*
    if (!table)
    {
	qWarning ("AttributeItem::getTypeString  No table defined!");
	return "Undefined"; 
    }
    if (!definition)
    {
	qWarning ("Attribute::getTypeString  No AttributeItem defined!");
	return "Undefined"; 
    }	
    return definition->getTypeString();
*/  
    switch (attrType)
    {
	case IntList: return "IntList";
	case FreeInt: return "FreeInt";
	case StringList:return "StringList";
	case FreeString:return "FreeString";
	case UniqueString: return "UniqueString";
	default: return "Undefined";
    }
}

void AttributeItem::setInternal(bool b)
{
    internal=b;
}

bool AttributeItem::isInternal()
{
    return internal;
}

QString AttributeItem::getDataXML()
{
    QString a;
    a=attribut ("key",getKey());
    a+=attribut ("value",getValue().toString() );
    a+=attribut ("type",getTypeString () );
    return singleElement ("attribute",a);
}

void AttributeItem::createHeading()
{
    setHeadingPlainText (QString ("K: %1 | V: %2").arg(key).arg(value.toString()));
}

