diff options
Diffstat (limited to 'kgantt/kgantt/xQGanttListViewPort.cpp')
-rw-r--r-- | kgantt/kgantt/xQGanttListViewPort.cpp | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/kgantt/kgantt/xQGanttListViewPort.cpp b/kgantt/kgantt/xQGanttListViewPort.cpp new file mode 100644 index 000000000..573d8fbe9 --- /dev/null +++ b/kgantt/kgantt/xQGanttListViewPort.cpp @@ -0,0 +1,175 @@ +// +// file : xQGanttListViewPort.C +// date : 26 oct 2000 +// changed : 29 nov 2000 +// author : jh +// + +#include "xQGanttListViewPort.h" + +#include <qcolor.h> + + +int xQGanttListViewPort::_ListViewCounter = 0; + + +xQGanttListViewPort::xQGanttListViewPort(KGanttItem* toplevelitem, QWidget* parent, + const char * name, WFlags f ) + : QFrame(parent,name,f) +{ + _toplevelitem = toplevelitem; + + setBackgroundColor(QColor(white)); + + _barviewport = NULL; + + _width = 1000; + + brush1 = QBrush(QColor(200,200,230)); + brush2 = QBrush(QColor(240,240,240)); + +} + + + +xQGanttListViewPort::~xQGanttListViewPort() +///////////////////////////////////////// +{ +} + + + +void +xQGanttListViewPort::setBarViewPort(xQGanttBarViewPort* v) +{ + _barviewport = v; + + // printf("setBarViewPort()\n"); + + resize(500, _barviewport->height()); + + printf("setBarViewPort()\n"); + + connect(_barviewport, SIGNAL(resized()), + this, SLOT(barViewResized())); + + + connect(_barviewport, SIGNAL(recalculated()), + this, SLOT(update())); + + /* + connect(_barviewport, SIGNAL(contentsRepainted()), + this, SLOT(barViewRepainted())); + */ +} + + + +void +xQGanttListViewPort::barViewResized() +////////////////////////////////////// +{ + printf("xQGanttListViewPort::barViewResized()\n"); + + static int _h = 0; + + int h = _barviewport->height(); + + if(h!=_h) { + _h = h; + resize(_width, _h); + } + +} + + + +void +xQGanttListViewPort::drawContents(QPainter* p, int x1, int y1, int x2, int y2) +////////////////////////////////////////////////////////////////////////////// +{ + /*printf("\nxQGanttListViewPort::drawContents(%d,%d,%d,%d)\n", + x1, y1, x2, y2 ); + */ + + _ListViewCounter = 0; + + if(_barviewport) { + drawItem(_toplevelitem, p, QRect(x1, y1, x2-x1, y2-y1), 5 ); + } + +} + + + +void +xQGanttListViewPort::drawItem(KGanttItem* item, QPainter* p, const QRect& rect, + int offsetX ) +///////////////////////////////////////////////////////////////////////////// +{ + static int margin = 2; + + xQTaskPosition* tpos = _barviewport->_gItemList[item]; + + if(!tpos) return; + + if( (tpos->_screenY+5 >= rect.y() && + tpos->_screenY-5 <= rect.y() + rect.height()) || + ((tpos->_screenY + tpos->_screenH)+5 >= rect.y() && + (tpos->_screenY + tpos->_screenH)-5 <= rect.y() + rect.height() ) ) { + + p->setPen(QPen(QColor(black))); + + int y = tpos->_screenY; + int h = tpos->_screenH; + + if(tpos->_nr % 2 == 0) + p->fillRect(0 + margin, y + margin , + _width - 2 * margin, h - 2 * margin, brush1); + else + p->fillRect(0 + margin, y + margin, + _width - 2* margin, h - 2* margin, brush2); + + QString str = item->getText() + " [" + + item->getStart().toString() + " / " + + item->getEnd().toString() + "]"; + + p->drawText(offsetX, tpos->_textPosY, str ); + + } + + + if(item->isOpen() && item->getSubItems().count()>0) { + + for(KGanttItem* subitem = item->getSubItems().first(); + subitem != 0; + subitem = item->getSubItems().next() ) { + + drawItem(subitem, p, rect, offsetX + 20); + + } + + p->setPen(QPen(QColor(blue),2)); + p->drawLine(offsetX + 3, tpos->_textPosY + 3, + offsetX + 3, tpos->_screenY + tpos->_screenHS - 3); + + } + +} + + +void +xQGanttListViewPort::update(int x1, int y1, int x2, int y2) +///////////////////////////////////////////////// +{ + QPainter p(this); + + /* + printf("\nxQGanttListViewPort::update(%d,%d,%d,%d)\n", + x1, y1, x2, y2 ); + */ + drawContents(&p, x1, y1, x2, y2); + +} + +#include "xQGanttListViewPort.moc" |