]> git.sven.stormbind.net Git - sven/vym.git/blob - src/attributeitem.cpp
Replace Pierre as the maintainer
[sven/vym.git] / src / attributeitem.cpp
1 #include "attributeitem.h"
2
3 #include <QDebug>
4
5 extern bool debug;
6
7 AttributeItem::AttributeItem(TreeItem *parent)
8     : BranchItem(parent)
9 {
10     //qDebug() << "Constr. AttrItem (parent)";
11     TreeItem::setType(Attribute);
12     internal = false;
13     attrType = Undefined;
14 }
15
16 AttributeItem::AttributeItem(const QString &k, const QString &v, TreeItem *parent)
17     : BranchItem(parent)
18 {
19     //qDebug() << "Constr. AttrItem (k, v, parent)";
20     TreeItem::setType(Attribute);
21     internal = false;
22
23     set(k, v);
24 }
25
26 AttributeItem::~AttributeItem() {
27     //qDebug() << "Destr. AttrItem";
28 }
29
30 void AttributeItem::copy(AttributeItem *other)
31 {
32     key = other->key;
33     value = other->value;
34     attrType = other->attrType;
35 }
36
37 void AttributeItem::set(const QString &k, const QString &v)
38 {
39     key = k;
40     value = QVariant(v);
41     attrType = String;
42     createHeading();
43 }
44
45 void AttributeItem::get(QString &k, QString &v, Type &t) // FIXME-3  Better use return tuple
46     // https://stackoverflow.com/questions/321068/returning-multiple-values-from-a-c-function
47 {
48     k = key;
49     v = value.toString();
50     t = attrType;
51 }
52
53 void AttributeItem::setKey(const QString &k) // FIXME-3 Check if key aready exists in branch?
54 {
55     key = k;
56     createHeading();
57 }
58
59 QString AttributeItem::getKey()
60 {
61     return key;
62 }
63
64 void AttributeItem::setValue(const QString &v)
65 {
66     value = v;
67     attrType = String;
68     createHeading();
69 }
70
71 void AttributeItem::setValue(const qlonglong &n)
72 {
73     value = n;
74     attrType = Integer;
75     createHeading();
76 }
77
78 void AttributeItem::setValue(const QDateTime &dt)
79 {
80     value = dt;
81     attrType = DateTime;
82     createHeading();
83 }
84
85 QVariant AttributeItem::getValue()
86 {
87     return value;
88 }
89
90 void AttributeItem::setAttributeType(const Type &t)
91 {
92     attrType = t;
93 }
94
95 AttributeItem::Type AttributeItem::getAttributeType()
96 {
97     return attrType;
98 }
99
100 QString AttributeItem::getAttributeTypeString()
101 {
102     switch (attrType) {
103         case Integer:
104             return "Integer";
105         case String:
106             return "String";
107         case DateTime:
108             return "DateTime";
109         default:
110             break;
111     }
112     return "Undefined";
113 }
114
115 void AttributeItem::setInternal(bool b) { internal = b; }
116
117 bool AttributeItem::isInternal() { return internal; }
118
119 QString AttributeItem::getDataXML()
120 {
121     QString a;
122     a = attribut("key", getKey());
123     a += attribut("value", getValue().toString());
124     a += attribut("type", getAttributeTypeString());
125     return singleElement("attribute", a);
126 }
127
128 void AttributeItem::createHeading() // FIXME-3 Visible in TreeEditor, should not go to MapEditor
129 {
130     setHeadingPlainText(
131         QString("[Attr] %1: %2").arg(key).arg(value.toString()));
132 }