00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #include "KDGanttViewSummaryItem.h"
00036 #include "KDGanttViewSubwidgets.h"
00037
00038 #include "itemAttributeDialog.h"
00039
00056 KDGanttViewSummaryItem::KDGanttViewSummaryItem( KDGanttView* view,
00057 const QString& lvtext,
00058 const QString& name ) :
00059 KDGanttViewItem( Summary, view, lvtext, name )
00060 {
00061 initItem();
00062 }
00063
00064
00073 KDGanttViewSummaryItem::KDGanttViewSummaryItem( KDGanttViewItem* parent,
00074 const QString& lvtext,
00075 const QString& name ) :
00076 KDGanttViewItem( Summary, parent, lvtext, name )
00077 {
00078 initItem();
00079 }
00080
00081
00091 KDGanttViewSummaryItem::KDGanttViewSummaryItem( KDGanttView* view,
00092 KDGanttViewItem* after,
00093 const QString& lvtext,
00094 const QString& name ) :
00095 KDGanttViewItem( Summary, view, after, lvtext, name )
00096 {
00097 initItem();
00098 }
00099
00100
00110 KDGanttViewSummaryItem::KDGanttViewSummaryItem( KDGanttViewItem* parent,
00111 KDGanttViewItem* after,
00112 const QString& lvtext,
00113 const QString& name ) :
00114 KDGanttViewItem( Summary, parent, after, lvtext, name )
00115 {
00116
00117 initItem();
00118
00119 }
00120
00121
00125 KDGanttViewSummaryItem::~KDGanttViewSummaryItem()
00126 {
00127
00128 }
00129
00130
00138 void KDGanttViewSummaryItem::setMiddleTime( const QDateTime& dateTime )
00139 {
00140 if (! dateTime.isValid() ) {
00141 qDebug("KDGanttViewSummaryItem::setMiddleTime():Invalid parameter-no time set");
00142 return;
00143 }
00144 if (!myMiddleTime) myMiddleTime = new QDateTime;
00145 *myMiddleTime = dateTime;
00146 if ( myEndTime < middleTime() )
00147 setEndTime( middleTime() );
00148 if ( myStartTime > middleTime() )
00149 setStartTime( middleTime() );
00150 updateCanvasItems();
00151 }
00152
00153
00161 QDateTime KDGanttViewSummaryItem::middleTime() const
00162 {
00163 if(myMiddleTime)
00164 return *myMiddleTime;
00165 return myStartTime;
00166 }
00167
00168
00177 void KDGanttViewSummaryItem::setEndTime( const QDateTime& end )
00178 {
00179 if (! end.isValid() ) {
00180 qDebug("KDGanttViewSummaryItem::setEndTime():Invalid parameter-no time set");
00181 return;
00182 }
00183 myEndTime = end;
00184 if ( myEndTime < middleTime() )
00185 setMiddleTime( myEndTime );
00186 else
00187 updateCanvasItems();
00188 }
00189
00190
00200 void KDGanttViewSummaryItem::setStartTime( const QDateTime& start )
00201 {
00202 if (! start.isValid() ) {
00203 qDebug("KDGanttViewSummaryItem::setStartTime():Invalid parameter-no time set");
00204 return;
00205 }
00206 myStartTime = start;
00207 if ( myStartTime > middleTime() ) {
00208 setMiddleTime( myStartTime );
00209 }
00210 else
00211 updateCanvasItems();
00212 }
00213
00214
00224 void KDGanttViewSummaryItem::setActualEndTime( const QDateTime& end )
00225 {
00226 if (!myActualEndTime) myActualEndTime = new QDateTime;
00227 *myActualEndTime = end;
00228
00229 updateCanvasItems();
00230
00231 }
00232
00233
00241 QDateTime KDGanttViewSummaryItem::actualEndTime() const
00242 {
00243 if(myActualEndTime)
00244 return *myActualEndTime;
00245 return myEndTime;
00246 }
00247
00248
00249 void KDGanttViewSummaryItem::hideMe()
00250 {
00251 startShape->hide();
00252 midShape->hide();
00253 endShape->hide();
00254 startShapeBack->hide();
00255 midShapeBack->hide();
00256 endShapeBack->hide();
00257 startLine->hide();
00258 endLine->hide();
00259 textCanvas->hide();
00260 startLineBack->hide();
00261 endLineBack->hide();
00262 actualEnd->hide();
00263 }
00264
00265
00266
00267 void KDGanttViewSummaryItem::showItem( bool show, int coordY )
00268 {
00269 isVisibleInGanttView = show;
00270 invalidateHeight () ;
00271 if (!show) {
00272 hideMe();
00273 return;
00274 }
00275 if ( displaySubitemsAsGroup() && !parent() && !isOpen() ) {
00276 hideMe();
00277 return;
00278 }
00279 float prio = ((float) ( priority() - 100 )) / 100.0;
00280 startShape->setZ( prio + 0.0055 );
00281 midShape->setZ( prio + 0.004 );
00282 endShape->setZ( prio + 0.005 );
00283 startShapeBack->setZ( prio + 0.003 );
00284 midShapeBack->setZ( prio + 0.003 );
00285 endShapeBack->setZ( prio + 0.003 );
00286 startLine->setZ( prio + 0.0015 );
00287 endLine->setZ( prio + 0.001 );
00288 textCanvas->setZ( prio + 0.006 );
00289 startLineBack->setZ( prio );
00290 endLineBack->setZ( prio );
00291 actualEnd->setZ( prio + 0.007 );
00292 if ( displaySubitemsAsGroup() && firstChild() ) {
00293 myStartTime = myChildStartTime();
00294 myEndTime = myChildEndTime();
00295 }
00296 int startX, endX, midX = 0,allY;
00297 if ( coordY )
00298 allY = coordY;
00299 else
00300 allY = getCoordY();
00301 startX = myGanttView->myTimeHeader->getCoordX(myStartTime);
00302 endX = myGanttView->myTimeHeader->getCoordX(myEndTime);
00303 if (myMiddleTime)
00304 midX = myGanttView->myTimeHeader->getCoordX(*myMiddleTime);
00305 else
00306 midX = endX;
00307
00308 startLine->setPoints(startX,allY,midX,allY);
00309 startLine->show();
00310 startLineBack->setPoints(startX-1,allY,midX+1,allY);
00311 startLineBack->show();
00312 startShape->move(startX,allY);
00313 startShapeBack->move(startX,allY);
00314
00315 endShape->move(endX,allY);
00316 endShapeBack->move(endX,allY);
00317 moveTextCanvas(endX,allY);
00318 startShape->show();
00319 startShapeBack->show();
00320 endShape->show();
00321 endShapeBack->show();
00322 textCanvas->show();
00323 if (myMiddleTime) {
00324 endLine->setPoints(midX,allY,endX,allY);
00325 endLine->show();
00326 endLineBack->setPoints(midX,allY,endX+1,allY);
00327 endLineBack->show();
00328 midShape->move(midX,allY);
00329 midShape->show();
00330 midShapeBack->move(midX,allY);
00331 midShapeBack->show();
00332 }
00333 else {
00334 endLine->hide();
00335 endLineBack->hide();
00336 midShape->hide();
00337 midShapeBack->hide();
00338 }
00339 if (myActualEndTime) {
00340 if ( *myActualEndTime == myEndTime ) {
00341 actualEnd->hide();
00342 }
00343 else {
00344 int actendX = myGanttView->myTimeHeader->getCoordX(*myActualEndTime);
00345 actualEnd->setPoints(actendX,allY-5,actendX,allY+5);
00346 actualEnd->show();
00347 }
00348 }
00349 else {
00350 actualEnd->hide();
00351 }
00352 if(myStartTime == myEndTime)
00353 {
00354 endShape->moveBy(myItemSize+4,0);
00355 endShapeBack->moveBy(myItemSize+4,0);
00356 textCanvas->moveBy(myItemSize+4,0);
00357 midShape->hide();
00358 midShapeBack->hide();
00359 startLine->hide();
00360 endLine->hide();
00361 startLineBack->hide();
00362 endLineBack->hide();
00363 }
00364 if (textCanvas->text().isEmpty())
00365 textCanvas->hide();
00366 }
00367 void KDGanttViewSummaryItem::initItem()
00368 {
00369 isVisibleInGanttView = false;
00370 myActualEndTime = 0;
00371 myMiddleTime = 0;
00372 showItem(true);
00373 myGanttView->myTimeTable->updateMyContent();
00374 setDragEnabled( myGanttView->dragEnabled() );
00375 setDropEnabled( myGanttView->dropEnabled() );
00376 }
00377