Code Cleanup ( that fix 2 bugs )

This code cleanup fixes the two issues that I raised on
my last e-mail. hurrah.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Tomaz Canabrava 2014-03-09 10:59:31 -03:00 committed by Dirk Hohndel
parent b6bbfdcc5f
commit 24c5b2e3c1
5 changed files with 18 additions and 49 deletions

View file

@ -671,6 +671,8 @@ void MainTab::acceptChanges()
editMode = NONE; editMode = NONE;
MainWindow::instance()->refreshDisplay(); MainWindow::instance()->refreshDisplay();
MainWindow::instance()->dive_list()->selectDive(i, true); MainWindow::instance()->dive_list()->selectDive(i, true);
MainWindow::instance()->graphics()->replot();
} else { } else {
editMode = NONE; editMode = NONE;
MainWindow::instance()->dive_list()->rememberSelection(); MainWindow::instance()->dive_list()->rememberSelection();

View file

@ -209,6 +209,13 @@ void ProfileWidget2::setupItemOnScene()
heartBeatAxis->setLinesVisible(true); heartBeatAxis->setLinesVisible(true);
} }
void ProfileWidget2::replot()
{
int diveId = dataModel->id();
dataModel->clear();
plotDives(QList<dive *>() << getDiveById(diveId));
}
void ProfileWidget2::setupItemSizes() void ProfileWidget2::setupItemSizes()
{ {
// Scene is *always* (double) 100 / 100. // Scene is *always* (double) 100 / 100.
@ -431,9 +438,7 @@ void ProfileWidget2::settingsChanged()
} }
if (s.value("zoomed_plot").toBool() != isPlotZoomed) { if (s.value("zoomed_plot").toBool() != isPlotZoomed) {
isPlotZoomed = s.value("zoomed_plot").toBool(); isPlotZoomed = s.value("zoomed_plot").toBool();
int diveId = dataModel->id(); replot();
dataModel->clear();
plotDives(QList<dive *>() << getDiveById(diveId));
} }
if (currentState == PROFILE) { if (currentState == PROFILE) {
@ -681,8 +686,5 @@ void ProfileWidget2::changeGas()
fixup_dive(d); fixup_dive(d);
MainWindow::instance()->information()->updateDiveInfo(selected_dive); MainWindow::instance()->information()->updateDiveInfo(selected_dive);
mark_divelist_changed(true); mark_divelist_changed(true);
// force the redraw of the dive. replot();
//TODO: find a way to make this do not need a full redraw
dataModel->clear();
plotDives(QList<dive *>() << getDiveById(diveId));
} }

View file

@ -64,6 +64,7 @@ public:
ProfileWidget2(QWidget *parent = 0); ProfileWidget2(QWidget *parent = 0);
void plotDives(QList<dive *> dives); void plotDives(QList<dive *> dives);
void replot();
virtual bool eventFilter(QObject *, QEvent *); virtual bool eventFilter(QObject *, QEvent *);
void setupItem(AbstractProfilePolygonItem *item, DiveCartesianAxis *hAxis, DiveCartesianAxis *vAxis, DivePlotDataModel *model, int vData, int hData, int zValue); void setupItem(AbstractProfilePolygonItem *item, DiveCartesianAxis *hAxis, DiveCartesianAxis *vAxis, DivePlotDataModel *model, int vData, int hData, int zValue);

View file

@ -16,10 +16,10 @@
RulerNodeItem2::RulerNodeItem2() : entry(NULL), ruler(NULL) RulerNodeItem2::RulerNodeItem2() : entry(NULL), ruler(NULL)
{ {
memset(&pInfo, 0, sizeof(pInfo)); memset(&pInfo, 0, sizeof(pInfo));
setRect(QRect(QPoint(-8, 8), QPoint(8, -8))); setRect(-8, -8, 16, 16);
setBrush(QColor(0xff, 0, 0, 127)); setBrush(QColor(0xff, 0, 0, 127));
setPen(QColor("#FF0000")); setPen(QColor(Qt::red));
setFlag(QGraphicsItem::ItemIsMovable); setFlag(ItemIsMovable);
setFlag(ItemSendsGeometryChanges); setFlag(ItemSendsGeometryChanges);
setFlag(ItemIgnoresTransformations); setFlag(ItemIgnoresTransformations);
} }
@ -59,7 +59,6 @@ QVariant RulerNodeItem2::itemChange(GraphicsItemChange change, const QVariant &v
{ {
if (change == ItemPositionHasChanged) { if (change == ItemPositionHasChanged) {
recalculate(); recalculate();
if (ruler != NULL)
ruler->recalculate(); ruler->recalculate();
} }
return QGraphicsEllipseItem::itemChange(change, value); return QGraphicsEllipseItem::itemChange(change, value);
@ -97,7 +96,7 @@ void RulerItem2::recalculate()
startPoint = tmp; startPoint = tmp;
} }
QLineF line(startPoint, endPoint); QLineF line(startPoint, endPoint);
setLine(line);
compare_samples(source->entry, dest->entry, buffer, 500, 1); compare_samples(source->entry, dest->entry, buffer, 500, 1);
text = QString(buffer); text = QString(buffer);
@ -127,37 +126,6 @@ RulerNodeItem2 *RulerItem2::destNode() const
return dest; return dest;
} }
void RulerItem2::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
Q_UNUSED(option);
Q_UNUSED(widget);
QLineF line(startPoint, endPoint);
painter->setPen(QColor(Qt::black));
painter->setBrush(Qt::NoBrush);
painter->drawLine(line);
}
QRectF RulerItem2::boundingRect() const
{
return shape().controlPointRect();
}
QPainterPath RulerItem2::shape() const
{
QPainterPath path;
QLineF line(startPoint, endPoint);
QLineF line_n = line.normalVector();
line_n.setLength(height);
if (paint_direction == 1)
line_n.setAngle(line_n.angle() + 180);
path.moveTo(startPoint);
path.lineTo(line_n.p2());
path.lineTo(line_n.p2() + QPointF(line.dx(), line.dy()));
path.lineTo(endPoint);
path.lineTo(startPoint);
return path;
}
void RulerItem2::setPlotInfo(plot_info info) void RulerItem2::setPlotInfo(plot_info info)
{ {
pInfo = info; pInfo = info;

View file

@ -31,8 +31,7 @@ private:
DiveCartesianAxis *depthAxis; DiveCartesianAxis *depthAxis;
}; };
class RulerItem2 : public QGraphicsObject { class RulerItem2 : public QGraphicsLineItem {
Q_OBJECT
public: public:
explicit RulerItem2(); explicit RulerItem2();
void recalculate(); void recalculate();
@ -40,9 +39,6 @@ public:
void setPlotInfo(struct plot_info pInfo); void setPlotInfo(struct plot_info pInfo);
RulerNodeItem2 *sourceNode() const; RulerNodeItem2 *sourceNode() const;
RulerNodeItem2 *destNode() const; RulerNodeItem2 *destNode() const;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
QRectF boundingRect() const;
QPainterPath shape() const;
void setAxis(DiveCartesianAxis *time, DiveCartesianAxis *depth); void setAxis(DiveCartesianAxis *time, DiveCartesianAxis *depth);
private: private: