1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2024-11-30 08:24:11 +01:00

OP-160 Small progress on the widget, points move vertically only now. Next commit will be fully functional.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1685 ebee16cc-31ac-478f-84a7-5cbb03baadba
This commit is contained in:
edouard 2010-09-19 05:47:18 +00:00 committed by edouard
parent 40c9c208cf
commit be7ff70491
4 changed files with 31 additions and 8 deletions

View File

@ -120,6 +120,7 @@ void Edge::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
painter->drawLine(line);
// Draw the arrows
/*
double angle = ::acos(line.dx() / line.length());
if (line.dy() >= 0)
angle = TwoPi - angle;
@ -136,4 +137,5 @@ void Edge::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
painter->setBrush(Qt::black);
painter->drawPolygon(QPolygonF() << line.p1() << sourceArrowP1 << sourceArrowP2);
painter->drawPolygon(QPolygonF() << line.p2() << destArrowP1 << destArrowP2);
*/
}

View File

@ -42,6 +42,7 @@ Node::Node(MixerCurveWidget *graphWidget)
setFlag(ItemSendsGeometryChanges);
setCacheMode(DeviceCoordinateCache);
setZValue(-1);
vertical = false;
}
void Node::addEdge(Edge *edge)
@ -145,9 +146,22 @@ void Node::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWid
painter->drawEllipse(-10, -10, 20, 20);
}
void Node::verticalMove(bool flag){
vertical = flag;
}
QVariant Node::itemChange(GraphicsItemChange change, const QVariant &value)
{
switch (change) {
case ItemPositionChange: {
if (!vertical)
break;
// Foce node to move vertically
QPointF newPos = value.toPointF();
newPos.setX(pos().x());
return newPos;
}
case ItemPositionHasChanged:
foreach (Edge *edge, edgeList)
edge->adjust();

View File

@ -49,6 +49,7 @@ public:
enum { Type = UserType + 1 };
int type() const { return Type; }
void verticalMove(bool flag);
void calculateForces();
bool advance();
@ -66,6 +67,7 @@ private:
QList<Edge *> edgeList;
QPointF newPos;
MixerCurveWidget *graph;
bool vertical;
};
#endif // MIXERCURVEPOINT_H

View File

@ -83,14 +83,19 @@ MixerCurveWidget::MixerCurveWidget(QWidget *parent) : QGraphicsView(parent)
scene->addItem(new Edge(node3, node4));
scene->addItem(new Edge(node4, node5));
qreal w = plot->boundingRect().width()/5;
qreal w = plot->boundingRect().width()/4;
node1->setPos(w-w/2,50);
node2->setPos(2*w-w/2, 50);
node3->setPos(3*w-w/2, 50);
node4->setPos(4*w-w/2, 50);
node5->setPos(5*w-w/2, 50);
node1->setPos(0,50);
node2->setPos(w, 50);
node3->setPos(2*w, 50);
node4->setPos(3*w, 50);
node5->setPos(4*w, 50);
node1->verticalMove(true);
node2->verticalMove(true);
node3->verticalMove(true);
node4->verticalMove(true);
node5->verticalMove(true);
}
@ -119,5 +124,5 @@ void MixerCurveWidget::resizeEvent(QResizeEvent* event)
void MixerCurveWidget::itemMoved()
{
qDebug() << "Moved ball";
}