36#ifndef KDGANTTVIEWSUBWIDGETS_H
37#define KDGANTTVIEWSUBWIDGETS_H
41#include <tqlistview.h>
42#include <tqsplitter.h>
44#include <tqvaluelist.h>
46#include <tqwhatsthis.h>
47#include <tqpopupmenu.h>
50#include <tqgroupbox.h>
51#include <tqvgroupbox.h>
56#include <tqdockwindow.h>
59#include "KDGanttView.h"
60#include "KDGanttViewTaskLink.h"
61#include "KDGanttViewTaskLinkGroup.h"
62#include "KDGanttViewSummaryItem.h"
63#include "KDGanttSemiSizingControl.h"
64#include "KDGanttViewItemDrag.h"
66#define Type_is_KDGanttGridItem 1
67#define Type_is_KDGanttViewItem 2
68#define Type_is_KDGanttTaskLink 3
70class KDCanvasWhatsThis;
72class KDCanvasRectangle;
73class KDTimeHeaderToolTip;
75class KDTimeHeaderWidget :
public TQWidget
84 struct DateTimeColor {
91 KDCanvasRectangle* canvasRect;
93 typedef TQValueList<DateTimeColor> ColumnColorList;
94 typedef TQValueList<DateTimeColor> IntervalColorList;
101 KDTimeHeaderWidget (TQWidget* parent,KDGanttView* gant);
102 ~KDTimeHeaderWidget();
104 TQString getToolTipText(TQPoint p);
106 void zoom(
double,
bool absolute =
true);
107 void zoomToSelection( TQDateTime startTime, TQDateTime endTime);
109 void setAutoScaleMinorTickCount(
int count );
110 int autoScaleMinorTickCount();
111 void setHorizonStart(
const TQDateTime& start );
112 TQDateTime horizonStart()
const;
113 void setHorizonEnd(
const TQDateTime& start );
114 TQDateTime horizonEnd()
const;
116 void setMaximumScale( Scale );
117 KDTimeHeaderWidget::Scale maximumScale()
const;
118 void setMinimumScale( Scale );
119 KDTimeHeaderWidget::Scale minimumScale()
const;
120 KDTimeHeaderWidget::Scale scale()
const;
121 void setMajorScaleCount(
int count );
122 int majorScaleCount()
const;
123 void setMinorScaleCount(
int count );
124 int minorScaleCount()
const;
125 void setMinimumColumnWidth(
int width );
126 int minimumColumnWidth()
const;
127 void setYearFormat( YearFormat format );
128 KDTimeHeaderWidget::YearFormat yearFormat()
const;
129 void setHourFormat( HourFormat format );
130 KDTimeHeaderWidget::HourFormat hourFormat()
const;
131 void setShowMajorTicks(
bool );
132 bool showMajorTicks()
const;
133 void setShowMinorTicks(
bool );
134 void setScale( Scale unit);
135 bool showMinorTicks()
const;
136 void setColumnBackgroundColor(
const TQDateTime& column,
137 const TQColor& color,
138 Scale mini = KDGanttView::Minute ,
139 Scale maxi = KDGanttView::Month);
140 void setIntervalBackgroundColor(
const TQDateTime& start,
141 const TQDateTime& end,
142 const TQColor& color,
143 Scale mini = KDGanttView::Minute ,
144 Scale maxi = KDGanttView::Month);
145 bool changeBackgroundInterval(
const TQDateTime& oldstart,
146 const TQDateTime& oldend,
147 const TQDateTime& newstart,
148 const TQDateTime& newend );
149 bool deleteBackgroundInterval(
const TQDateTime& start,
150 const TQDateTime& end );
151 void clearBackgroundColor();
152 TQColor columnBackgroundColor(
const TQDateTime& column )
const;
153 void setWeekendBackgroundColor(
const TQColor& color );
154 TQColor weekendBackgroundColor()
const;
155 void setWeekdayBackgroundColor(
const TQColor& color,
int weekday );
156 TQColor weekdayBackgroundColor(
int weekday)
const;
157 void setWeekendDays(
int start,
int end );
158 void weekendDays(
int& start,
int& end )
const;
159 void computeTicks(
bool doNotComputeRealScale =
false);
160 void paintEvent(TQPaintEvent *);
161 int getCoordX(TQDate);
162 int getCoordX(TQDateTime);
163 TQDateTime getDateTimeForIndex(
int coordX,
bool local =
true );
164 void setShowPopupMenu(
bool show,
bool showZoom,
bool showScale,
bool showTime,
165 bool showYear,
bool showGrid,
bool showPrint);
166 bool registerStartTime();
167 bool registerEndTime();
168 bool showPopupMenu()
const;
169 ColumnColorList columnBackgroundColorList()
const {
172 TQColor weekdayColor[8];
173 void repaintMe(
int left,
int wid, TQPainter *p = 0);
175 void centerDateTime(
const TQDateTime& center );
178 void setSettings(
int);
179 void checkWidth(
int );
180 void addTickRight(
int num = 1 );
181 void addTickLeft(
int num = 1 );
182 void preparePopupMenu();
184 void sizeChanged(
int );
187 friend class KDTimeTableWidget;
188 friend class KDGanttViewItem;
189 friend class KDGanttView;
190 virtual void mousePressEvent ( TQMouseEvent * e );
191 virtual void mouseReleaseEvent ( TQMouseEvent * e );
192 virtual void mouseDoubleClickEvent ( TQMouseEvent * e );
193 virtual void mouseMoveEvent ( TQMouseEvent * e );
194 double secsFromTo( TQDateTime begin, TQDateTime end );
195 void updateTimeTable();
196 void computeIntervals(
int height );
197 bool getColumnColor(TQColor& col,
int coordLow,
int coordHigh);
198 void moveTimeLineTo(
int x);
200 void resizeEvent ( TQResizeEvent * ) ;
201 TQValueList<int> majorTicks;
202 TQValueList<TQString> minorText;
203 TQValueList<TQString> majorText;
204 TQDateTime myHorizonStart, myHorizonEnd, myRealEnd,myRealStart;
205 TQDateTime myCenterDateTime;
206 void saveCenterDateTime();
207 Scale myScale,myRealScale,myMaxScale,myMinScale;
208 YearFormat myYearFormat;
209 HourFormat myHourFormat;
210 int myMinimumColumWidth;
211 bool flagShowMajorTicks, flagShowMinorTicks, flagShowPopupMenu;
212 bool flagShowZoom, flagShowScale ,flagShowTime ,flagShowYear;
213 bool flagShowGrid ,flagShowPrint;
214 bool flagStartTimeSet,flagEndTimeSet;
215 TQColor myWeekendBackgroundColor;
216 int myWeekendDaysStart, myWeekendDaysEnd;
217 ColumnColorList ccList;
218 IntervalColorList icList;
219 int myMinorScaleCount,myMajorScaleCount;
220 int myRealMinorScaleCount,myRealMajorScaleCount;
221 bool flagDoNotRecomputeAfterChange,flagDoNotRepaintAfterChange;
222 TQString getYear(TQDate);
223 TQString getHour(TQTime);
224 TQDateTime getEvenTimeDate(TQDateTime ,Scale);
225 void computeRealScale(TQDateTime start);
226 int myGridMinorWidth;
227 int myMajorGridHeight;
228 TQPopupMenu * myPopupMenu, *scalePopupMenu, *timePopupMenu;
229 TQPopupMenu * yearPopupMenu, *gridPopupMenu;
230 KDGanttView* myGanttView;
232 int myAutoScaleMinorTickcount;
237 KDTimeHeaderToolTip* myToolTip;
241 bool autoComputeTimeLine;
248class KDTimeTableWidget :
public TQCanvas
254 KDTimeTableWidget (TQWidget* parent,KDGanttView* my);
256 void setBlockUpdating(
bool block =
true );
257 bool blockUpdating();
258 void inc_blockUpdating();
259 void dec_blockUpdating();
260 void setShowTaskLinks(
bool show );
261 bool showTaskLinks();
262 TQPtrList<KDGanttViewTaskLink>taskLinks();
263 void clearTaskLinks();
264 void updateMyContent();
265 void removeItemFromTasklinks( KDGanttViewItem * );
266 void setHorBackgroundLines(
int count, TQBrush brush );
267 int horBackgroundLines( TQBrush& brush );
269 void setNoInformationBrush(
const TQBrush& brush );
270 TQBrush noInformationBrush()
const;
272 int getCoordX( TQDateTime dt );
275 void heightComputed(
int );
278 void expandItem(TQListViewItem * );
279 void collapseItem(TQListViewItem * );
280 void highlightItem(TQListViewItem * );
281 void resetWidth(
int );
282 void checkHeight(
int );
284 friend class KDGanttViewTaskLink;
285 friend class KDTimeHeaderWidget;
286 friend class KDGanttView;
287 friend class KDGanttViewTaskItem;
288 KDGanttView* myGanttView;
290 bool taskLinksVisible;
292 TQPtrList<KDGanttViewTaskLink> myTaskLinkList;
294 TQPtrList<KDCanvasLine> verGridList;
295 TQPtrList<KDCanvasLine> horGridList;
296 TQPtrList<KDCanvasRectangle> horDenseList;
297 TQPtrList<KDCanvasRectangle> showNoInfoList;
299 TQBrush denseLineBrush, noInfoLineBrush;
300 TQPtrList<KDCanvasRectangle> columnColorList;
303 void computeVerticalGrid();
304 void computeHorizontalGrid();
305 void computeDenseLines();
306 void computeShowNoInformation();
307 void computeTaskLinks();
308 void computeMinorGrid();
309 void computeMajorGrid();
311 void showMajorGrid();
312 void showMinorGrid();
316 int maximumComputedGridHeight;
318 int int_blockUpdating;
319 bool flag_blockUpdating;
331 KDLegendWidget ( TQWidget* parent, KDGanttMinimizeSplitter* legendParent );
336 void setFont( TQFont );
337 void drawToPainter( TQPainter *p );
338 void setAsDoctwindow(
bool dockwin );
340 TQDockWindow* dockwindow();
342 TQSize legendSizeHint();
344 TQGroupBox * myLegend;
346 TQScrollView * scroll;
348 KDGanttMinimizeSplitter* myLegendParent;
352class KDListView :
public TQListView
358 KDListView (TQWidget* parent,KDGanttView* gv );
359 KDGanttView* myGanttView;
360 void drawToPainter( TQPainter *p,
bool drawHeader=
false );
361 void setCalendarMode(
bool mode );
362 bool calendarMode() {
return _calendarMode; };
363 TQString getWhatsThisText(TQPoint p);
364 void setOpen ( TQListViewItem * item,
bool open );
365 void dragEnterEvent ( TQDragEnterEvent * );
366 void dragMoveEvent ( TQDragMoveEvent * );
367 void dragLeaveEvent ( TQDragLeaveEvent * );
368 void dropEvent ( TQDropEvent * );
369 TQDragObject * dragObject ();
371 void paintemptyarea ( TQPainter * p,
const TQRect & rect ){ TQListView::paintEmptyArea( p, rect );};
376 DrawableItem(
int level,
int ypos, TQListViewItem *item ) { y = ypos; l = level; i = item; };
382 void drawAllContents(TQPainter * p,
int cx,
int cy,
int cw,
int ch);
383 int buildDrawables(TQPtrList<KDListView::DrawableItem> &lst,
int level,
int ypos, TQListViewItem *item,
int ymin,
int ymax)
const;
386 void dragItem( TQListViewItem * );
388 void resizeEvent ( TQResizeEvent * ) ;
389 void contentsMouseDoubleClickEvent ( TQMouseEvent * e );
397class KDCanvasText :
public TQCanvasText
400 KDCanvasText( KDTimeTableWidget* canvas,
void* parentItem,
int type );
406class KDCanvasLine :
public TQCanvasLine
409 KDCanvasLine( KDTimeTableWidget* canvas,
void* parentItem,
int type );
415class KDCanvasPolygonItem:
public TQCanvasPolygonalItem
418 KDCanvasPolygonItem( KDTimeTableWidget* canvas,
void* parentItem,
425class KDCanvasPolygon:
public TQCanvasPolygon
428 KDCanvasPolygon( KDTimeTableWidget* canvas,
void* parentItem,
int type );
434class KDCanvasEllipse:
public TQCanvasEllipse
437 KDCanvasEllipse( KDTimeTableWidget* canvas,
void* parentItem,
int type );
443class KDCanvasRectangle:
public TQCanvasRectangle
446 KDCanvasRectangle( KDTimeTableWidget* canvas,
void* parentItem,
int type );
452class KDCanvasToolTip;
454class KDGanttCanvasView :
public TQCanvasView
460 KDGanttCanvasView(KDGanttView* sender, TQCanvas* canvas = 0, TQWidget* parent = 0,
const char* name = 0 );
461 ~KDGanttCanvasView();
462 TQString getToolTipText(TQPoint p);
463 TQString getWhatsThisText(TQPoint p);
464 void drawToPainter ( TQPainter * p );
465 void resetCutPaste( KDGanttViewItem* );
466 void setShowPopupMenu(
bool show );
467 bool showPopupMenu();
468 void cutItem ( KDGanttViewItem* );
469 void insertItemAsRoot( KDGanttViewItem* );
470 void insertItemAsChild( KDGanttViewItem* , KDGanttViewItem* );
471 void insertItemAfter( KDGanttViewItem* , KDGanttViewItem* );
473 friend class KDGanttView;
474 friend class KDListView;
475 virtual void contentsMousePressEvent ( TQMouseEvent * ) ;
476 virtual void contentsMouseReleaseEvent ( TQMouseEvent * );
477 virtual void contentsMouseDoubleClickEvent ( TQMouseEvent * );
478 virtual void contentsMouseMoveEvent ( TQMouseEvent * ) ;
479 virtual void viewportPaintEvent ( TQPaintEvent * pe );
480 void resizeEvent ( TQResizeEvent * ) ;
481 void set_MouseTracking(
bool on);
482 KDGanttView* mySignalSender;
483 KDGanttViewItem* currentItem, *lastClickedItem, *cuttedItem;
484 KDGanttViewTaskLink* currentLink;
485 int getType(TQCanvasItem*);
486 KDGanttViewItem* getItem(TQCanvasItem*);
487 KDGanttViewTaskLink* getLink(TQCanvasItem*);
488 KDCanvasWhatsThis* myWhatsThis;
490 bool _showItemAddPopupMenu;
491 int myMyContentsHeight;
492 KDGanttViewItem *fromItem;
493 bool linkItemsEnabled;
494 TQCanvasLine *linkLine;
496 bool autoScrollEnabled;
497 int getItemArea(KDGanttViewItem *item,
int x);
498 int getLinkType(
int from,
int to);
501 void heightResized(
int );
502 void widthResized(
int );
504 void set_Mouse_Tracking(
bool on);
505 void moveMyContent(
int,
int );
506 void setMyContentsHeight(
int );
507 void updateHorScrollBar();
510 void pasteItem(
int );
511 void newRootItem(
int );
512 void newChildItem(
int );
513 void slotScrollTimer();
514 void myUpdateScrollBars();
517 KDCanvasToolTip* myToolTip;
518 TQTimer *myScrollTimer;
520 TQTimer scrollBarTimer;
523class KDTimeHeaderToolTip :
public TQToolTip
527 KDTimeHeaderToolTip( TQWidget *wid, KDTimeHeaderWidget* header ) : TQToolTip( wid ), _wid(wid),_header (header) {
532 virtual void maybeTip(
const TQPoint& p)
534 static bool ishidden =
true;
535 if (TQToolTip::isGloballyEnabled () ) {
537 tip( TQRect( p.x(),p.y(),5,5), _header->getToolTipText(p));
541 ishidden = !ishidden;
546 KDTimeHeaderWidget * _header;
549class KDCanvasToolTip :
public TQToolTip
553 KDCanvasToolTip( TQWidget *wid, KDGanttCanvasView* canview ) : TQToolTip( wid ), _wid(wid),_canview (canview) {
558 virtual void maybeTip(
const TQPoint& p)
560 static bool ishidden =
true;
561 if (TQToolTip::isGloballyEnabled () ) {
563 tip( TQRect( p.x()-2,p.y()-2,5,5), _canview->getToolTipText(p));
567 ishidden = !ishidden;
572 KDGanttCanvasView * _canview;
575class KDCanvasWhatsThis :
public TQWhatsThis
578 KDCanvasWhatsThis( TQWidget *wid, KDGanttCanvasView* canview ) : TQWhatsThis( wid ), _wid(wid),_canview (canview) { };
581 virtual TQString text(
const TQPoint& p)
583 return _canview->getWhatsThisText(p) ;
587 KDGanttCanvasView * _canview;
590class KDListViewWhatsThis :
public TQWhatsThis
593 KDListViewWhatsThis( TQWidget *wid, KDListView* view ) : TQWhatsThis( wid ), _wid(wid),_view (view) { };
596 virtual TQString text(
const TQPoint& p)
598 return _view->getWhatsThisText(p) ;