kdgantt

KDGanttViewItem.h
00001 /* -*- Mode: C++ -*-
00002    $Id$
00003    KDGantt - a multi-platform charting engine
00004 */
00005 
00006 /****************************************************************************
00007  ** Copyright (C)  2002-2004 Klarälvdalens Datakonsult AB.  All rights reserved.
00008  **
00009  ** This file is part of the KDGantt library.
00010  **
00011  ** This file may be distributed and/or modified under the terms of the
00012  ** GNU General Public License version 2 as published by the Free Software
00013  ** Foundation and appearing in the file LICENSE.GPL included in the
00014  ** packaging of this file.
00015  **
00016  ** Licensees holding valid commercial KDGantt licenses may use this file in
00017  ** accordance with the KDGantt Commercial License Agreement provided with
00018  ** the Software.
00019  **
00020  ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
00021  ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
00022  **
00023  ** See http://www.klaralvdalens-datakonsult.se/Public/products/ for
00024  **   information about KDGantt Commercial License Agreements.
00025  **
00026  ** Contact info@klaralvdalens-datakonsult.se if any conditions of this
00027  ** licensing are not clear to you.
00028  **
00029  ** As a special exception, permission is given to link this program
00030  ** with any edition of TQt, and distribute the resulting executable,
00031  ** without including the source code for TQt in the source distribution.
00032  **
00033  **********************************************************************/
00034 
00035 
00036 #ifndef KDGANTTVIEWITEM_H
00037 #define KDGANTTVIEWITEM_H
00038 
00039 #include <tqdatetime.h>
00040 #include <tqstring.h>
00041 #include <tqcolor.h>
00042 #include <tqpixmap.h>
00043 #include <tqfont.h>
00044 #include <tqlistview.h>
00045 #include <tqcanvas.h>
00046 #include <tqdom.h>
00047 #include <tqdict.h>
00048 
00049 class KDGanttView;
00050 class KDTimeTableWidget;
00051 class KDTimeHeaderWidget;
00052 class KDGanttViewTaskLink;
00053 class KDCanvasLine;
00054 class KDCanvasText;
00055 class KDCanvasPolygonItem;
00056 class KDGanttViewTaskLinkGroup;
00057 
00058 class KDGanttViewItem : public TQListViewItem
00059 {
00060 public:
00061     enum Type { Event, Task, Summary };
00062     enum Shape { TriangleDown, TriangleUp, Diamond, Square, Circle };
00063 
00064 protected:
00065     KDGanttViewItem( Type type, KDGanttView* view,
00066                      const TQString& lvtext = TQString(),
00067                      const TQString& name = TQString() );
00068     KDGanttViewItem( Type type, KDGanttViewItem* parent,
00069                      const TQString& lvtext = TQString(),
00070                      const TQString& name = TQString() );
00071     KDGanttViewItem( Type type, KDGanttView* view, KDGanttViewItem* after,
00072                      const TQString& lvtext = TQString(),
00073                      const TQString& name = TQString() );
00074     KDGanttViewItem( Type type, KDGanttViewItem* parent,
00075                      KDGanttViewItem* after,
00076                      const TQString& lvtext = TQString(),
00077                      const TQString& name = TQString() );
00078 
00079   //bool _isCalendar;
00080     bool isVisibleInGanttView;
00081     void updateCanvasItems();
00082     int getCoordY();
00083     TQDateTime myChildStartTime();
00084     TQDateTime myChildEndTime();
00085     void generateAndInsertName( const TQString& name );
00086     KDCanvasLine * startLine, *endLine,
00087       * startLineBack, *endLineBack, *actualEnd ;
00088     KDCanvasPolygonItem* startShape,* midShape, *endShape, *progressShape,
00089       * startShapeBack,* midShapeBack, *endShapeBack,
00090       * floatStartShape, * floatEndShape;
00091     KDGanttView* myGanttView;
00092     KDCanvasText* textCanvas;
00093     TQString textCanvasText;
00094     TQDateTime myStartTime, myEndTime;
00095     bool isHighlighted, isEditable;
00096     int myItemSize;
00097     bool blockUpdating;
00098 
00099     void moveTextCanvas(int x, int y);
00100     int myProgress;
00101     TQDateTime myFloatStartTime;
00102     TQDateTime myFloatEndTime;
00103 
00104 public:
00105     virtual ~KDGanttViewItem();
00106 
00107     Type type() const;
00108     void setEnabled( bool on );
00109     bool enabled () const;
00110     virtual void setOpen( bool o );
00111     void setItemVisible( bool on );
00112     bool itemVisible () const;
00113     void setEditable( bool editable );
00114     bool editable() const;
00115     void setShowNoInformation( bool show );
00116     bool showNoInformation();
00117     void setDisplaySubitemsAsGroup( bool show );
00118     bool displaySubitemsAsGroup() const;
00119     void setPriority( int prio );
00120     int priority();
00121     virtual void setStartTime( const TQDateTime& start );
00122     TQDateTime startTime() const;
00123     virtual void setEndTime( const TQDateTime& end );
00124     TQDateTime endTime() const;
00125 
00126     void setText( const TQString& text );
00127     TQString text() const;
00128     void setListViewText( const TQString& text, int column = 0 );
00129     void setListViewText( int column, const TQString& text );
00130     TQString listViewText( int column = 0 ) const;
00131     void setFont( const TQFont& font );
00132     TQFont font() const;
00133     void setTooltipText( const TQString& text );
00134     TQString tooltipText() const;
00135     void setWhatsThisText( const TQString& text );
00136     TQString whatsThisText() const;
00137     void setPixmap( int column, const TQPixmap& pixmap );
00138     void setPixmap( const TQPixmap& pixmap );
00139     const TQPixmap* pixmap( int column = 0 ) const;
00140 
00141     void setHighlight( bool );
00142     bool highlight() const;
00143 
00144     bool subitemIsCalendar() const;
00145   //void setIsCalendar( bool );
00146   //bool isCalendar( ) const;
00147 
00148     void setShapes( Shape start, Shape middle, Shape end );
00149     void shapes( Shape& start, Shape& middle, Shape& end ) const;
00150     void setDefaultColor( const TQColor& );
00151     TQColor defaultColor() const;
00152     void setColors( const TQColor& start, const TQColor& middle,
00153                     const TQColor& end );
00154     void colors( TQColor& start, TQColor& middle, TQColor& end ) const;
00155     void setDefaultHighlightColor( const TQColor& );
00156     TQColor defaultHighlightColor() const;
00157     void setHighlightColors( const TQColor& start, const TQColor& middle,
00158                              const TQColor& end );
00159     void highlightColors( TQColor& start, TQColor& middle, TQColor& end ) const;
00160     void setTextColor( const TQColor& color );
00161     TQColor textColor() const;
00162 
00163     void setProgress(int percent);
00164     void setFloatStartTime(const TQDateTime &start);
00165     void setFloatEndTime(const TQDateTime &end);
00166 
00167     KDGanttViewItem* firstChild() const;
00168     KDGanttViewItem* nextSibling() const;
00169     KDGanttViewItem* parent() const;
00170     KDGanttViewItem* itemAbove();
00171     KDGanttViewItem* itemBelow( bool includeDisabled = true );
00172     KDGanttViewItem* getChildByName( const TQString& name );
00173     TQString name() const;
00174     static KDGanttViewItem* find( const TQString& name );
00175 
00176     void createNode( TQDomDocument& doc,
00177                      TQDomElement& parentElement );
00178     static KDGanttViewItem* createFromDomElement( KDGanttView* view,
00179                                                   TQDomElement& element );
00180     static KDGanttViewItem* createFromDomElement( KDGanttView* view,
00181                                                   KDGanttViewItem* previous,
00182                                                   TQDomElement& element );
00183     static KDGanttViewItem* createFromDomElement( KDGanttViewItem* parent,
00184                                                   TQDomElement& element );
00185     static KDGanttViewItem* createFromDomElement( KDGanttViewItem* parent,
00186                                                   KDGanttViewItem* previous,
00187                                                   TQDomElement& element );
00188 
00189     void setMoveable( bool m );
00190     bool isMoveable() const;
00191     void setResizeable( bool r );
00192     bool isResizeable() const;
00193 
00194 private:
00195     friend class KDGanttView;
00196     friend class KDTimeTableWidget;
00197     friend class KDTimeHeaderWidget;
00198     friend class KDListView;
00199     friend class KDGanttViewTaskLink;
00200     friend class KDGanttViewTaskLinkGroup;
00201     friend class KDGanttCanvasView;
00202     friend class KDGanttViewItemDrag;
00203     friend class itemAttributeDialog;
00204 
00205     static TQString shapeToString( Shape shape );
00206     static Shape stringToShape( const TQString& string );
00207     static TQString typeToString( Type type );
00208 
00209     Type myType;
00210     void initColorAndShapes(Type t);
00211     void resetSubitemVisibility();
00212     virtual void showItem( bool show = true, int coordY = 0 );
00213     virtual void initItem();
00214     int computeHeight();
00215     void showSubItems();
00216     void showSubitemTree( int );
00217     void hideSubtree();
00218     void setCallListViewOnSetOpen( bool call );
00219     bool showNoCross();
00220     void createShape(KDCanvasPolygonItem* &,KDCanvasPolygonItem* &, Shape);
00221     void loadFromDomElement( TQDomElement& element );
00222 
00223     //TQFont myFont;
00224     TQString myToolTipText,myWhatsThisText;
00225     void paintBranches ( TQPainter * p, const TQColorGroup & cg, int w, int y, int h );
00226     bool _displaySubitemsAsGroup;
00227     bool _showNoInformation;
00228     bool _enabled;
00229     bool _callListViewOnSetOpen;
00230     Shape myStartShape,myMiddleShape,myEndShape;
00231     TQColor myStartColor,myMiddleColor,myEndColor;
00232     TQColor myStartColorHL,myMiddleColorHL,myEndColorHL;
00233     TQColor myDefaultColor,myDefaultColorHL;
00234     TQColor myTextColor;
00235     bool colorDefined,colorHLDefined;
00236     TQPoint getTaskLinkStartCoord(TQPoint);
00237     TQPoint getTaskLinkEndCoord();
00238     TQPoint middleLeft();
00239     TQPoint middleRight();
00240     void moveTextCanvas();
00241     void setTextOffset(TQPoint p);
00242     bool isMyTextCanvas(TQCanvasItem *tc);
00243     TQPoint myTextOffset;
00244     TQString _name;
00245     bool shapeDefined;
00246     int _priority;
00247     static TQDict<KDGanttViewItem> sItemDict;
00248 
00249     bool _isMoveable;
00250     bool _isResizeable;
00251 };
00252 
00253 
00254 #endif