Merge branch 'latest'

This commit is contained in:
Dirk Hohndel 2014-05-31 06:46:30 -07:00
commit 738c472daf
4 changed files with 28 additions and 6 deletions

1
dive.h
View file

@ -640,7 +640,6 @@ struct divedatapoint {
struct diveplan {
timestamp_t when;
int lastdive_nr;
int surface_pressure; /* mbar */
int bottomsac; /* ml/min */
int decosac; /* ml/min */

View file

@ -49,6 +49,20 @@ void dump_plan(struct diveplan *diveplan)
}
#endif
bool diveplan_empty(struct diveplan *diveplan)
{
struct divedatapoint *dp;
if (!diveplan || !diveplan->dp)
return true;
dp = diveplan->dp;
while(dp) {
if (dp->time)
return false;
dp = dp->next;
}
return true;
}
void set_last_stop(bool last_stop_6m)
{
if (last_stop_6m == true)

View file

@ -13,6 +13,7 @@ extern void show_planned_dive(char **error_string_p);
extern void set_last_stop(bool last_stop_6m);
extern void get_gas_from_events(struct divecomputer *dc, int time, int *o2, int *he);
extern int get_gasidx(struct dive *dive, int o2, int he);
extern bool diveplan_empty(struct diveplan *diveplan);
extern struct dive *planned_dive;
extern char *cache_data;

View file

@ -388,6 +388,7 @@ bool DivePlannerPointsModel::setData(const QModelIndex &index, const QVariant &v
{
int o2 = 0;
int he = 0;
int i, shift;
if (role == Qt::EditRole) {
divedatapoint &p = divepoints[index.row()];
switch (index.column()) {
@ -398,10 +399,13 @@ bool DivePlannerPointsModel::setData(const QModelIndex &index, const QVariant &v
p.time = value.toInt() * 60;
break;
case DURATION:
if (index.row())
p.time = value.toInt() * 60 + divepoints[index.row() - 1].time;
i = index.row();
if (i)
shift = divepoints[i].time - divepoints[i - 1].time - value.toInt() * 60;
else
p.time = value.toInt() * 60;
shift = divepoints[i].time - value.toInt() * 60;
while (i < divepoints.size())
divepoints[i++].time -= shift;
break;
case CCSETPOINT: {
int po2 = 0;
@ -445,7 +449,7 @@ QVariant DivePlannerPointsModel::headerData(int section, Qt::Orientation orienta
Qt::ItemFlags DivePlannerPointsModel::flags(const QModelIndex &index) const
{
if (index.column() != DURATION && index.column() != REMOVE)
if (index.column() != REMOVE)
return QAbstractItemModel::flags(index) | Qt::ItemIsEditable;
else
return QAbstractItemModel::flags(index);
@ -764,6 +768,7 @@ void DivePlannerPointsModel::clear()
} else {
stagingDive = alloc_dive();
}
bool oldRecalc = setRecalc(false);
CylindersModel::instance()->setDive(stagingDive);
if (rowCount() > 0) {
beginRemoveRows(QModelIndex(), 0, rowCount() - 1);
@ -771,12 +776,15 @@ void DivePlannerPointsModel::clear()
endRemoveRows();
}
CylindersModel::instance()->clear();
setRecalc(oldRecalc);
}
void DivePlannerPointsModel::addDecoToModel()
{
struct divedatapoint *dp;
if (diveplan_empty(&diveplan))
return;
bool oldRecalc = plannerModel->setRecalc(false);
plannerModel->removeDeco();
@ -832,7 +840,7 @@ void DivePlannerPointsModel::createTemporaryPlan()
#if DEBUG_PLAN
dump_plan(&diveplan);
#endif
if (plannerModel->recalcQ()) {
if (plannerModel->recalcQ() && !diveplan_empty(&diveplan)) {
plan(&diveplan, &cache, &tempDive, stagingDive, isPlanner());
addDecoToModel();
if (mode == ADD || mode == PLAN) {