#include "TourPlayerItem.h" #include #include TourPlayerItem::TourPlayerItem(QQuickItem *parent) : QQuickPaintedItem(parent) , m_isValid(true) { } QString TourPlayerItem::drawTypeToString(int value) { static const QMetaEnum m= TourPlayerItem::staticMetaObject.enumerator(TourPlayerItem::staticMetaObject.indexOfEnumerator("DrawType")); QString key = m.valueToKey(value); if(!key.isEmpty()) return key; return QString("unknown (%1)").arg(value); } QQmlListProperty TourPlayerItem::drawTypes() { return QQmlListProperty(this, this, &TourPlayerItem::appendDrawType, &TourPlayerItem::drawTypeCount, &TourPlayerItem::drawType, &TourPlayerItem::clearDrawTypes); } void TourPlayerItem::appendDrawType(DrawType *drawType) { m_drawTypes << drawType; m_isValid &= drawType->isValid(); qDebug() << "TourPlayerItem:: add drawTyep type" << drawType->type() << "/" << drawType->color(); update(); } int TourPlayerItem::drawTypeCount() const { return m_drawTypes.count(); } DrawType *TourPlayerItem::drawType(int index) const { return m_drawTypes[index]; } void TourPlayerItem::clearDrawTypes() { m_drawTypes.clear(); } void TourPlayerItem::appendDrawType(QQmlListProperty* prop, DrawType* drawType) { return reinterpret_cast(prop->data)->appendDrawType(drawType); } int TourPlayerItem::drawTypeCount(QQmlListProperty * prop) { return reinterpret_cast(prop->data)->drawTypeCount(); } DrawType *TourPlayerItem::drawType(QQmlListProperty * prop, int index) { return reinterpret_cast(prop->data)->drawType(index); } void TourPlayerItem::clearDrawTypes(QQmlListProperty *prop) { return reinterpret_cast(prop->data)->clearDrawTypes(); } void TourPlayerItem::paint(QPainter *painter) { if(!isVisible()) { return; } painter->save(); QPen pen; pen.setJoinStyle(Qt::RoundJoin); pen.setStyle(Qt::SolidLine); pen.setWidth(2); QColor currentColor(m_isValid ? Qt::darkGreen : Qt::red); pen.setColor(currentColor); pen.setBrush(QBrush(currentColor)); painter->setPen(pen); painter->fillRect(0, 0, qRound(width()), qRound(height()), QBrush(currentColor)); painter->restore(); }