kgantt

KGanttItem.h
1#ifndef _KGANTTITEM_H_
2#define _KGANTTITEM_H_
3
4/*
5
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version.
10
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details.
15
16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 Boston, MA 02110-1301, USA.
20
21 author : jh, jochen@ifb.bv.tu-berlin.de
22
23 file : KGanttItem.h
24 date : 26 oct 2000
25
26
27 changelog : 26 dec 2000, jh
28 09 jan 2001, jh - added signal destroyed(xTQTask*)
29
30 11 jan 2001, jh changed to kde : xTQTask -> KGanttItem
31
32*/
33
34
35#include <tqobject.h>
36#include <tqdatetime.h>
37#include <tqtextstream.h>
38#include <tqptrlist.h>
39#include <tqpainter.h>
40
41#include <tdemacros.h>
42
43#include "KGanttRelation.h"
44
45
46
48
54class TDE_EXPORT KGanttItem : public TQObject
56{
57
58 TQ_OBJECT
59
60
61
62public:
63
64 enum Change {
65 NoChange = 0,
66 StartChanged = 1,
67 EndChanged = 2,
68
71 HeightChanged = 4,
72
77 TotalHeightChanged = 8,
78
80 StyleChanged = 16,
81 TextChanged = 32,
82 ModeChanged = 64,
83 MinChanged = 128,
84 MaxChanged = 256,
85
87 Opened = 512,
88
90 Closed = 1024,
91
93 Selected = 2048,
94
96 Unselected = 4096,
97
99 Unknown = 8192,
100
102 RelationAdded = 16384,
103
105 RelationRemoved = 32768
106
107 };
108
109
110
111 enum Style {
113 DrawNothing = 0,
114
116 DrawBorder = 1,
117
118 // Fill item with brush.
119 DrawFilled = 2,
120 DrawText = 4,
121
122 // Draw handlke for opening/closing item.
123 DrawHandle = 16,
124
126 DrawHandleWSubitems = 32,
127
128 DrawAll = 255
129 };
130
131
132 enum Mode {
133 Normal,
134 Rubberband
135 };
136
137
139
142 KGanttItem(KGanttItem* parentItem, const TQString& text,
143 const TQDateTime& start, const TQDateTime& end);
144
145
146
148
151 KGanttItem(KGanttItem* parentItem, const TQString& text,
152 const TQDateTime& start, long durationMin);
153
154
155
157 /*
158 * Emits signal destroyed(KGanttItem* this).
159 */
160 ~KGanttItem();
161
162
163
165 /*
166 *
167 */
168 KGanttRelation* addRelation(KGanttItem* from, KGanttItem* to,
169 const TQString& text);
170
171
172
173
175
178 bool isOpen() {
179 return _open;
180 }
181
182
183
185
188 void open(bool f);
189
190
191
193
199 void setEditable(bool f) {
200 _editable = f;
201 }
202
203
204
206
209 bool isEditable() {
210 return _editable;
211 }
212
213
214
216
219 bool isSelected() {
220 return _selected;
221 }
222
223
224
226
229 void select(bool f);
230
231
232
234
240 void setMode(Mode flag);
241
242
243
245
248 void setStyle(int flag, bool includeSubitems = false);
249
250
251
253
256 int getStyle() {
257 return _style;
258 }
259
260
261
263
266 void setBrush(const TQBrush& brush);
267
268
269
271
274 TQBrush& getBrush() {
275 return _brush;
276 }
277
278
279
281
284 TQBrush& getSelectBrush() {
285 return _selectBrush;
286 }
287
288
289
291
294 void setPen(const TQPen& pen);
295
296
297
299
302 TQPen& getPen() {
303 return _pen;
304 }
305
306
307
309
312 void setTextPen(const TQPen& pen) {
313 _textPen = pen;
314 }
315
316
317
319
322 TQPen& getTextPen() {
323 return _textPen;
324 }
325
326
327
329
332 void setText(const TQString& text);
333
334
335
337
340 TQString getText() { return _text; }
341
342
343
345
350 TQDateTime getStart();
351
352
353
355
358 TQDateTime getEnd();
359
360
361
363
366 void setStart(const TQDateTime& start);
367
368
369
371
374 void setEnd(const TQDateTime& end);
375
376
377
379
383 void setHeight(int h);
384
385
386
388
393 int getHeight() {
394 return _height;
395 }
396
397
398
400
405 int getTotalHeight();
406
407
408
410
413 int getWidth();
414
415
416
418
421 TQPtrList<KGanttItem>& getSubItems() {
422 return _subitems;
423 }
424
425
426
428
431 TQPtrList<KGanttRelation>& getRelations() {
432 return _relations;
433 }
434
435
436
438
442 blockSignals(true);
443 }
444
445
446
448
453 void endTransaction();
454
455
456
458
461 static TQString ChangeAsString(Change c);
462
463
464
465
467
470 void dump(TQTextOStream& cout, const TQString& pre);
471
472
473signals:
474
476
481
482
483
485
490
491
492
493private slots:
494
495 void subItemChanged(KGanttItem*, KGanttItem::Change);
496
497 void removeRelation(KGanttRelation* rel);
498
499
500private:
501
502 void registerItem(KGanttItem* item);
503 void unregisterItem(KGanttItem* item);
504
505 void init(KGanttItem* parentItem, const TQString& text,
506 const TQDateTime& start, const TQDateTime& end);
507
508
509 // set min/max date and time according to subitems
510 Change adjustMinMax();
511
512 /* if min < start set start to _min,
513 if max > end set end to max */
514 Change adjustStartEnd();
515
516
517 // is item open/closed
518 bool _open;
519 bool _selected;
520
521
522 // is this item editable by the user, if it is false, invoking
523 // of some methods has no effect
524 bool _editable;
525
526 int _height, _style, _mode;
527
528
529 KGanttItem* _parentItem;
530 TQPtrList<KGanttItem> _subitems;
531 TQPtrList<KGanttRelation> _relations;
532
533
534 // start/end date.
535 // start must always be earlier then _minDateTime
536 // end must always be later then _maxDateTime
537 TQDateTime _start, _end, _minDateTime, _maxDateTime;
538
539 TQString _text;
540
541 TQBrush _brush;
542 TQPen _pen, _textPen;
543
544 static TQBrush _selectBrush;
545
546
547};
548
549#endif
KGanttItem.
Definition: KGanttItem.h:56
void destroyed(KGanttItem *)
Item will be deleted.
TQPtrList< KGanttItem > & getSubItems()
Get list of subitems.
Definition: KGanttItem.h:421
void startTransaction()
Start a transaction.
Definition: KGanttItem.h:441
TQBrush & getSelectBrush()
Get brush which has to be used for drawing this item as selected.
Definition: KGanttItem.h:284
bool isOpen()
Returns true if item is open (subitems has to be drawn)
Definition: KGanttItem.h:178
int getHeight()
Get height.
Definition: KGanttItem.h:393
TQPtrList< KGanttRelation > & getRelations()
Get list of relations.
Definition: KGanttItem.h:431
bool isEditable()
Returns if item is editable.
Definition: KGanttItem.h:209
TQString getText()
Get text.
Definition: KGanttItem.h:340
void changed(KGanttItem *, KGanttItem::Change)
Item has changed.
TQBrush & getBrush()
Get brush that is used for filling the item.
Definition: KGanttItem.h:274
void setEditable(bool f)
Set item editable or not.
Definition: KGanttItem.h:199
bool isSelected()
Returns true if item is selected.
Definition: KGanttItem.h:219
int getStyle()
Get drawing style.
Definition: KGanttItem.h:256
KGanttRelation.