Added support for changing Depth and Time on the Table.

Added support for changing depth and time on the table.
It now works both ways, one can edit the planner via the
table for a fine tuning. :)

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
This commit is contained in:
Tomaz Canabrava 2013-08-30 13:27:15 -03:00
parent 69903903d2
commit 2d0e877bb2
2 changed files with 13 additions and 4 deletions

View file

@ -150,6 +150,7 @@ DivePlannerGraphics::DivePlannerGraphics(QWidget* parent): QGraphicsView(parent)
connect(gasListView, SIGNAL(activated(QModelIndex)), this, SLOT(selectGas(QModelIndex))); connect(gasListView, SIGNAL(activated(QModelIndex)), this, SLOT(selectGas(QModelIndex)));
connect(DivePlannerPointsModel::instance(), SIGNAL(rowsInserted(const QModelIndex&,int,int)), connect(DivePlannerPointsModel::instance(), SIGNAL(rowsInserted(const QModelIndex&,int,int)),
this, SLOT(pointInserted(const QModelIndex&, int, int))); this, SLOT(pointInserted(const QModelIndex&, int, int)));
connect(DivePlannerPointsModel::instance(), SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(createDecoStops()));
setRenderHint(QPainter::Antialiasing); setRenderHint(QPainter::Antialiasing);
} }
@ -905,10 +906,10 @@ QVariant DivePlannerPointsModel::data(const QModelIndex& index, int role) const
if(role == Qt::DisplayRole){ if(role == Qt::DisplayRole){
divedatapoint p = divepoints.at(index.row()); divedatapoint p = divepoints.at(index.row());
switch(index.column()){ switch(index.column()){
case GAS: return tr("Air");
case CCSETPOINT: return 0; case CCSETPOINT: return 0;
case DEPTH: return p.depth / 1000; case DEPTH: return p.depth / 1000;
case DURATION: return p.time / 60; case DURATION: return p.time / 60;
case GAS: return tr("Air");
} }
} }
if (role == Qt::DecorationRole){ if (role == Qt::DecorationRole){
@ -921,6 +922,16 @@ QVariant DivePlannerPointsModel::data(const QModelIndex& index, int role) const
bool DivePlannerPointsModel::setData(const QModelIndex& index, const QVariant& value, int role) bool DivePlannerPointsModel::setData(const QModelIndex& index, const QVariant& value, int role)
{ {
if(role == Qt::EditRole){
divedatapoint& p = divepoints[index.row()];
switch(index.column()){
case DEPTH: p.depth = value.toInt() * 1000; break;
case DURATION: p.time = value.toInt() * 60; break;
case CCSETPOINT: /* what do I do here? */
case GAS: break; /* what do I do here? */
}
editStop(index.row(), p);
}
return QAbstractItemModel::setData(index, value, role); return QAbstractItemModel::setData(index, value, role);
} }

View file

@ -115,8 +115,6 @@ protected:
virtual void mouseMoveEvent(QMouseEvent* event); virtual void mouseMoveEvent(QMouseEvent* event);
virtual void mousePressEvent(QMouseEvent* event); virtual void mousePressEvent(QMouseEvent* event);
virtual void mouseReleaseEvent(QMouseEvent* event); virtual void mouseReleaseEvent(QMouseEvent* event);
void createDecoStops();
bool isPointOutOfBoundaries(const QPointF& point); bool isPointOutOfBoundaries(const QPointF& point);
void deleteTemporaryDivePlan(struct divedatapoint* dp); void deleteTemporaryDivePlan(struct divedatapoint* dp);
qreal fromPercent(qreal percent, Qt::Orientation orientation); qreal fromPercent(qreal percent, Qt::Orientation orientation);
@ -131,7 +129,7 @@ private slots:
void increaseDepth(); void increaseDepth();
void decreaseTime(); void decreaseTime();
void decreaseDepth();; void decreaseDepth();;
void createDecoStops();
void cancelPlan(); void cancelPlan();
void prepareSelectGas(); void prepareSelectGas();
void selectGas(const QModelIndex& index); void selectGas(const QModelIndex& index);