Mercurial > hg > easyhg
comparison src/changesetdetailitem.cpp @ 370:b9c153e00e84
Move source files to src/
| author | Chris Cannam | 
|---|---|
| date | Thu, 24 Mar 2011 10:27:51 +0000 | 
| parents | changesetdetailitem.cpp@8fd71f570884 | 
| children | 7ef46fb73b48 | 
   comparison
  equal
  deleted
  inserted
  replaced
| 369:19cce6d2c470 | 370:b9c153e00e84 | 
|---|---|
| 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ | |
| 2 | |
| 3 /* | |
| 4 EasyMercurial | |
| 5 | |
| 6 Based on HgExplorer by Jari Korhonen | |
| 7 Copyright (c) 2010 Jari Korhonen | |
| 8 Copyright (c) 2011 Chris Cannam | |
| 9 Copyright (c) 2011 Queen Mary, University of London | |
| 10 | |
| 11 This program is free software; you can redistribute it and/or | |
| 12 modify it under the terms of the GNU General Public License as | |
| 13 published by the Free Software Foundation; either version 2 of the | |
| 14 License, or (at your option) any later version. See the file | |
| 15 COPYING included with this distribution for more information. | |
| 16 */ | |
| 17 | |
| 18 #include "changesetdetailitem.h" | |
| 19 #include "changeset.h" | |
| 20 #include "textabbrev.h" | |
| 21 #include "colourset.h" | |
| 22 #include "debug.h" | |
| 23 #include "common.h" | |
| 24 | |
| 25 #include <QTextDocument> | |
| 26 #include <QPainter> | |
| 27 | |
| 28 ChangesetDetailItem::ChangesetDetailItem(Changeset *cs) : | |
| 29 m_changeset(cs), m_doc(0) | |
| 30 { | |
| 31 m_font = QFont(); | |
| 32 m_font.setPixelSize(11); | |
| 33 m_font.setBold(false); | |
| 34 m_font.setItalic(false); | |
| 35 | |
| 36 makeDocument(); | |
| 37 } | |
| 38 | |
| 39 ChangesetDetailItem::~ChangesetDetailItem() | |
| 40 { | |
| 41 delete m_doc; | |
| 42 } | |
| 43 | |
| 44 QRectF | |
| 45 ChangesetDetailItem::boundingRect() const | |
| 46 { | |
| 47 int w = 350; | |
| 48 m_doc->setTextWidth(w); | |
| 49 return QRectF(-10, -10, w + 10, m_doc->size().height() + 10); | |
| 50 } | |
| 51 | |
| 52 void | |
| 53 ChangesetDetailItem::paint(QPainter *paint, | |
| 54 const QStyleOptionGraphicsItem *option, | |
| 55 QWidget *w) | |
| 56 { | |
| 57 paint->save(); | |
| 58 | |
| 59 ColourSet *colourSet = ColourSet::instance(); | |
| 60 QColor branchColour = colourSet->getColourFor(m_changeset->branch()); | |
| 61 QColor userColour = colourSet->getColourFor(m_changeset->author()); | |
| 62 | |
| 63 QFont f(m_font); | |
| 64 | |
| 65 QTransform t = paint->worldTransform(); | |
| 66 float scale = std::min(t.m11(), t.m22()); | |
| 67 if (scale > 1.0) { | |
| 68 int ps = int((f.pixelSize() / scale) + 0.5); | |
| 69 if (ps < 8) ps = 8; | |
| 70 f.setPixelSize(ps); | |
| 71 } | |
| 72 | |
| 73 if (scale < 0.1) { | |
| 74 paint->setPen(QPen(branchColour, 0)); | |
| 75 } else { | |
| 76 paint->setPen(QPen(branchColour, 2)); | |
| 77 } | |
| 78 | |
| 79 paint->setFont(f); | |
| 80 QFontMetrics fm(f); | |
| 81 int fh = fm.height(); | |
| 82 | |
| 83 int width = 350; | |
| 84 m_doc->setTextWidth(width); | |
| 85 int height = m_doc->size().height(); | |
| 86 | |
| 87 QRectF r(0.5, 0.5, width - 1, height - 1); | |
| 88 paint->setBrush(Qt::white); | |
| 89 paint->drawRect(r); | |
| 90 | |
| 91 if (scale < 0.1) { | |
| 92 paint->restore(); | |
| 93 return; | |
| 94 } | |
| 95 | |
| 96 // little triangle connecting to its "owning" changeset item | |
| 97 paint->setBrush(branchColour); | |
| 98 QVector<QPointF> pts; | |
| 99 pts.push_back(QPointF(0, height/3 - 5)); | |
| 100 pts.push_back(QPointF(0, height/3 + 5)); | |
| 101 pts.push_back(QPointF(-10, height/3)); | |
| 102 pts.push_back(QPointF(0, height/3 - 5)); | |
| 103 paint->drawPolygon(QPolygonF(pts)); | |
| 104 | |
| 105 /* | |
| 106 paint->setBrush(branchColour); | |
| 107 QVector<QPointF> pts; | |
| 108 pts.push_back(QPointF(width/2 - 5, 0)); | |
| 109 pts.push_back(QPointF(width/2 + 5, 0)); | |
| 110 pts.push_back(QPointF(width/2, -10)); | |
| 111 pts.push_back(QPointF(width/2 - 5, 0)); | |
| 112 paint->drawPolygon(QPolygonF(pts)); | |
| 113 */ | |
| 114 m_doc->drawContents(paint, r); | |
| 115 | |
| 116 paint->restore(); | |
| 117 } | |
| 118 | |
| 119 void | |
| 120 ChangesetDetailItem::makeDocument() | |
| 121 { | |
| 122 delete m_doc; | |
| 123 m_doc = new QTextDocument; | |
| 124 m_doc->setHtml(m_changeset->formatHtml()); | |
| 125 } | |
| 126 | 
