Move the creation of the Gas Pressure item to the constructor

This makes the Gas Pressure Item a 'cached' item, when the dive
changes, the item will regenerate the drawing based on it's model.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Tomaz Canabrava 2014-01-23 15:35:32 -02:00 committed by Dirk Hohndel
parent 2f0b778f92
commit 2c2d3351ac
2 changed files with 10 additions and 14 deletions

View file

@ -258,7 +258,7 @@ void DiveTemperatureItem::paint(QPainter* painter, const QStyleOptionGraphicsIte
void DiveGasPressureItem::modelDataChanged()
{
// We don't have enougth data to calculate things, quit.
if (!hAxis || !vAxis || !dataModel || hDataColumn == -1 || vDataColumn == -1)
if (!hAxis || !vAxis || !dataModel || hDataColumn == -1 || vDataColumn == -1 || dataModel->rowCount() == 0)
return;
int last_index = -1;
int lift_pen = false;

View file

@ -137,6 +137,15 @@ ProfileWidget2::ProfileWidget2(QWidget *parent) :
scene()->addItem(tissueItem);
}
gasPressureItem = new DiveGasPressureItem();
gasPressureItem->setHorizontalAxis(timeAxis);
gasPressureItem->setVerticalAxis(cylinderPressureAxis);
gasPressureItem->setModel(dataModel);
gasPressureItem->setVerticalDataColumn(DivePlotDataModel::TEMPERATURE);
gasPressureItem->setHorizontalDataColumn(DivePlotDataModel::TIME);
gasPressureItem->setZValue(1);
scene()->addItem(gasPressureItem);
background->setFlag(QGraphicsItem::ItemIgnoresTransformations);
//enum State{ EMPTY, PROFILE, EDIT, ADD, PLAN, INVALID };
@ -381,19 +390,6 @@ void ProfileWidget2::plotDives(QList<dive*> dives)
temperatureItem->setZValue(1);
scene()->addItem(temperatureItem);
if(gasPressureItem){
scene()->removeItem(gasPressureItem);
delete gasPressureItem;
}
gasPressureItem = new DiveGasPressureItem();
gasPressureItem->setHorizontalAxis(timeAxis);
gasPressureItem->setVerticalAxis(cylinderPressureAxis);
gasPressureItem->setModel(dataModel);
gasPressureItem->setVerticalDataColumn(DivePlotDataModel::TEMPERATURE);
gasPressureItem->setHorizontalDataColumn(DivePlotDataModel::TIME);
gasPressureItem->setZValue(1);
scene()->addItem(gasPressureItem);
diveComputerText->setText(currentdc->model);
diveComputerText->animateMoveTo(1 , sceneRect().height());
emit startProfileState();