]> git.sven.stormbind.net Git - sven/vym.git/blob - slideitem.cpp
Import Upstream version 2.6.11
[sven/vym.git] / slideitem.cpp
1 #include <QStringList>
2
3 #include "slideitem.h"
4
5 #include "slidemodel.h"
6 #include "treeitem.h"
7 #include "vymmodel.h"
8
9 uint SlideItem::idLastSlide=0;    // make instance
10
11 SlideItem::SlideItem(const QVector<QVariant> &data, SlideItem *parent, SlideModel *sm )
12 {
13     parentItem = parent;
14     itemData = data;
15     idLastSlide++;
16     slideID=idLastSlide;
17     treeItemID=-1;
18     zoomFactor=-1;
19     duration=2000;
20     easingCurve.setType (QEasingCurve::OutQuint);
21
22     if (sm)
23         model=sm;
24     else
25         model=parent->getModel();
26
27     if (data.isEmpty()) itemData.append(QVariant("empty"));
28 }
29
30 SlideItem::~SlideItem()
31 {
32     qDeleteAll(childItems);
33 }
34
35 SlideModel* SlideItem::getModel()
36 {
37     return model;
38 }
39
40 uint SlideItem::getID()
41 {
42     return slideID;
43 }
44
45 SlideItem *SlideItem::child(int number)
46 {
47     return childItems.value(number);
48 }
49
50 int SlideItem::childCount() const
51 {
52     return childItems.count();
53 }
54
55 int SlideItem::childNumber() const
56 {
57     if (parentItem)
58         return parentItem->childItems.indexOf(const_cast<SlideItem*>(this));
59
60     return 0;
61 }
62
63 int SlideItem::columnCount() const
64 {
65     return itemData.count();
66 }
67
68 QVariant SlideItem::data(int column) const
69 {
70     return itemData.value(column);
71 }
72
73 int SlideItem::row() const
74 {
75     if (parentItem)
76         return parentItem->childItems.indexOf(const_cast<SlideItem*>(this));
77
78     return 0;
79 }
80
81 void SlideItem::insertItem (int pos, SlideItem *si)
82 {
83     if (pos<0) pos=0;
84     if (pos>childItems.count() ) pos=childItems.count();
85     childItems.insert (pos,si);
86     si->parentItem=this;
87 }
88
89 void SlideItem::removeItem (int pos)
90 {
91     // Remove, but don't delete (needed for relinking)
92     if (pos<0 || pos > childItems.size()-1)
93         qWarning ("TreeItem::removeChild tried to remove non existing item?!");
94     else
95         childItems.removeAt (pos);
96 }
97
98 bool SlideItem::insertChildren(int position, int count, int columns)
99 {
100     if (position < 0 || position > childItems.size())
101         return false;
102
103     for (int row = 0; row < count; ++row) {
104         QVector<QVariant> data(columns);
105         SlideItem *item = new SlideItem(data, this);
106         childItems.insert(position, item);
107     }
108
109     return true;
110 }
111
112 bool SlideItem::insertColumns(int position, int columns)
113 {
114     if (position < 0 || position > itemData.size())
115         return false;
116
117     for (int column = 0; column < columns; ++column)
118         itemData.insert(position, QVariant());
119
120     foreach (SlideItem *child, childItems)
121         child->insertColumns(position, columns);
122
123     return true;
124 }
125
126 SlideItem *SlideItem::parent()
127 {
128     return parentItem;
129 }
130
131 bool SlideItem::removeChildren(int position, int count)
132 {
133     if (position < 0 || position + count > childItems.size())
134         return false;
135
136     for (int row = 0; row < count; ++row)
137         delete childItems.takeAt(position);
138
139     return true;
140 }
141
142 bool SlideItem::removeColumns(int position, int columns)
143 {
144     if (position < 0 || position + columns > itemData.size())
145         return false;
146
147     for (int column = 0; column < columns; ++column)
148         itemData.remove(position);
149
150     foreach (SlideItem *child, childItems)
151         child->removeColumns(position, columns);
152
153     return true;
154 }
155
156 bool SlideItem::setData(int column, const QVariant &value)
157 {
158     if (column < 0 || column >= itemData.size())
159         return false;
160
161     itemData[column] = value;
162     return true;
163 }
164
165 void SlideItem::setName (const QString &n)
166 {
167     setData ( 0, QVariant (n) );
168 }
169
170 QString SlideItem::getName ()
171 {
172     return data(0).toString();
173 }
174
175 void SlideItem::setTreeItem (TreeItem *ti)
176 {
177     if (ti) 
178         treeItemID=ti->getID();
179     else
180         qWarning()<<"SlideItem::setTreeItem no ID!";
181 }
182
183 int SlideItem::getTreeItemID()
184 {
185     return treeItemID;
186 }
187
188 void SlideItem::setInScript (const QString &s)
189 {
190     inScript=s;
191 }
192
193 QString SlideItem::getInScript()
194 {
195     return inScript;
196 }
197
198 void SlideItem::setOutScript (const QString &s)
199 {
200     outScript=s;
201 }
202
203 QString SlideItem::getOutScript()
204 {
205     return outScript;
206 }
207
208 void SlideItem::setZoomFactor (const qreal &zf)
209 {
210     zoomFactor=zf;
211 }
212
213 qreal SlideItem::getZoomFactor()
214 {
215     return zoomFactor;
216 }
217
218 void SlideItem::setRotationAngle (const qreal &zf)
219 {
220     rotationAngle=zf;
221 }
222
223 qreal SlideItem::getRotationAngle()
224 {
225     return rotationAngle;
226 }
227
228 void SlideItem::setDuration (const int  &d)
229 {
230     duration=d;
231 }
232
233 int SlideItem::getDuration()
234 {
235     return duration;
236 }
237
238 void SlideItem::setEasingCurve (const QEasingCurve &c)
239 {
240     easingCurve=c;
241 }
242
243 QEasingCurve SlideItem::getEasingCurve()
244 {
245     return easingCurve;
246 }
247
248 QString SlideItem::saveToDir()
249 {
250     QString att_ins, att_outs;
251     if (inScript.isEmpty()) 
252     {
253         att_ins=attribut ("inScript",QString("select(\"%1\")").arg(model->getVymModel()->getSelectString (treeItemID ) ) );
254     } else
255         att_ins=attribut ("inScript",inScript );
256     if (!outScript.isEmpty()) att_outs=attribut ("outScript",outScript );
257
258     return singleElement ("slide",
259         attribut ("name",data(0).toString() ) +
260         attribut ("zoom",QString().setNum ( zoomFactor) ) +
261         attribut ("rotation",QString().setNum ( rotationAngle ) ) +
262         attribut ("duration",QString().setNum ( duration ) ) +
263         attribut ("curve",QString().setNum ( easingCurve.type() ) ) +
264         attribut ("mapitem",model->getVymModel()->getSelectString (treeItemID ) ) +
265         att_ins +
266         att_outs
267         );
268 }
269