]> git.sven.stormbind.net Git - sven/vym.git/blobdiff - src/attributeitem.cpp
New upstream version 2.9.22
[sven/vym.git] / src / attributeitem.cpp
diff --git a/src/attributeitem.cpp b/src/attributeitem.cpp
new file mode 100644 (file)
index 0000000..d4961d0
--- /dev/null
@@ -0,0 +1,132 @@
+#include "attributeitem.h"
+
+#include <QDebug>
+
+extern bool debug;
+
+AttributeItem::AttributeItem(TreeItem *parent)
+    : BranchItem(parent)
+{
+    //qDebug() << "Constr. AttrItem (parent)";
+    TreeItem::setType(Attribute);
+    internal = false;
+    attrType = Undefined;
+}
+
+AttributeItem::AttributeItem(const QString &k, const QString &v, TreeItem *parent)
+    : BranchItem(parent)
+{
+    //qDebug() << "Constr. AttrItem (k, v, parent)";
+    TreeItem::setType(Attribute);
+    internal = false;
+
+    set(k, v);
+}
+
+AttributeItem::~AttributeItem() {
+    //qDebug() << "Destr. AttrItem";
+}
+
+void AttributeItem::copy(AttributeItem *other)
+{
+    key = other->key;
+    value = other->value;
+    attrType = other->attrType;
+}
+
+void AttributeItem::set(const QString &k, const QString &v)
+{
+    key = k;
+    value = QVariant(v);
+    attrType = String;
+    createHeading();
+}
+
+void AttributeItem::get(QString &k, QString &v, Type &t) // FIXME-3  Better use return tuple
+    // https://stackoverflow.com/questions/321068/returning-multiple-values-from-a-c-function
+{
+    k = key;
+    v = value.toString();
+    t = attrType;
+}
+
+void AttributeItem::setKey(const QString &k) // FIXME-3 Check if key aready exists in branch?
+{
+    key = k;
+    createHeading();
+}
+
+QString AttributeItem::getKey()
+{
+    return key;
+}
+
+void AttributeItem::setValue(const QString &v)
+{
+    value = v;
+    attrType = String;
+    createHeading();
+}
+
+void AttributeItem::setValue(const qlonglong &n)
+{
+    value = n;
+    attrType = Integer;
+    createHeading();
+}
+
+void AttributeItem::setValue(const QDateTime &dt)
+{
+    value = dt;
+    attrType = DateTime;
+    createHeading();
+}
+
+QVariant AttributeItem::getValue()
+{
+    return value;
+}
+
+void AttributeItem::setAttributeType(const Type &t)
+{
+    attrType = t;
+}
+
+AttributeItem::Type AttributeItem::getAttributeType()
+{
+    return attrType;
+}
+
+QString AttributeItem::getAttributeTypeString()
+{
+    switch (attrType) {
+        case Integer:
+            return "Integer";
+        case String:
+            return "String";
+        case DateTime:
+            return "DateTime";
+        default:
+            break;
+    }
+    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", getAttributeTypeString());
+    return singleElement("attribute", a);
+}
+
+void AttributeItem::createHeading() // FIXME-3 Visible in TreeEditor, should not go to MapEditor
+{
+    setHeadingPlainText(
+        QString("[Attr] %1: %2").arg(key).arg(value.toString()));
+}