00001
00002
00003
00004
00005
00006
00007 #include "DataKey.h"
00008 #include "EnumsToQt.h"
00009 #include "GraphicsItemType.h"
00010 #include "Logger.h"
00011 #include <QGraphicsScene>
00012 #include <QPen>
00013 #include "Segment.h"
00014 #include "SegmentLine.h"
00015
00016 const double ZVALUE_SEGMENT = 50;
00017
00018 SegmentLine::SegmentLine(QGraphicsScene &scene,
00019 const DocumentModelSegments &modelSegments,
00020 Segment *segment) :
00021 m_modelSegments (modelSegments),
00022 m_segment (segment)
00023 {
00024 LOG4CPP_DEBUG_S ((*mainCat)) << "SegmentLine::SegmentLine"
00025 << " address=0x" << std::hex << (quintptr) this;
00026
00027 setData (DATA_KEY_GRAPHICS_ITEM_TYPE, QVariant (GRAPHICS_ITEM_TYPE_SEGMENT));
00028
00029
00030 scene.addItem (this);
00031 setPen (QPen (Qt::transparent));
00032 setZValue (ZVALUE_SEGMENT);
00033 setVisible (true);
00034 setAcceptHoverEvents (true);
00035 setHover (false);
00036 setFlags (QGraphicsItem::ItemIsFocusable);
00037
00038 connect (this, SIGNAL (signalHover (bool)), segment, SLOT (slotHover (bool)));
00039 }
00040
00041 SegmentLine::~SegmentLine ()
00042 {
00043 LOG4CPP_DEBUG_S ((*mainCat)) << "SegmentLine::~SegmentLine"
00044 << " address=0x" << std::hex << (quintptr) this;
00045 }
00046
00047 void SegmentLine::hoverEnterEvent(QGraphicsSceneHoverEvent * )
00048 {
00049 LOG4CPP_INFO_S ((*mainCat)) << "SegmentLine::hoverEnterEvent";
00050
00051 emit (signalHover (true));
00052 }
00053
00054 void SegmentLine::hoverLeaveEvent(QGraphicsSceneHoverEvent * )
00055 {
00056 LOG4CPP_INFO_S ((*mainCat)) << "SegmentLine::hoverLeaveEvent";
00057
00058 emit (signalHover (false));
00059 }
00060
00061 void SegmentLine::mousePressEvent(QGraphicsSceneMouseEvent * )
00062 {
00063 LOG4CPP_INFO_S ((*mainCat)) << "SegmentLine::mousePressEvent";
00064
00065 m_segment->forwardMousePress();
00066 }
00067
00068 Segment *SegmentLine::segment() const
00069 {
00070 return m_segment;
00071 }
00072
00073 void SegmentLine::setHover (bool hover)
00074 {
00075 if (hover) {
00076
00077 QColor color (ColorPaletteToQColor (m_modelSegments.lineColor()));
00078
00079 setPen (QPen (QBrush (color),
00080 m_modelSegments.lineWidth()));
00081
00082 } else {
00083
00084 setPen (QPen (Qt::transparent));
00085
00086 }
00087 }
00088
00089 void SegmentLine::updateModelSegment(const DocumentModelSegments &modelSegments)
00090 {
00091 LOG4CPP_INFO_S ((*mainCat)) << "SegmentLine::updateModelSegment";
00092
00093 m_modelSegments = modelSegments;
00094 }