Planner: better handle the temporary dive used for planning

This still crashes when you abort the plan.
And when you accept the plan, the profile stays stuck in PLAN mode.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2014-05-27 15:02:45 -07:00
parent 7feea7ccfa
commit d1cd1eb933
3 changed files with 29 additions and 6 deletions

View file

@ -58,7 +58,8 @@ MainWindow::MainWindow() : QMainWindow(),
yearlyStats(0),
yearlyStatsModel(0),
state(VIEWALL),
updateManager(0)
updateManager(0),
fakeDiveId(0)
{
Q_ASSERT_X(m_Instance == NULL, "MainWindow", "MainWindow recreated!");
m_Instance = this;
@ -372,6 +373,7 @@ void MainWindow::createFakeDiveForAddAndPlan()
// now cheat - create one dive that we use to store the info tab data in
//TODO: C-function create_temporary_dive ?
struct dive *dive = alloc_dive();
fakeDiveId = dive->id;
dive->when = QDateTime::currentMSecsSinceEpoch() / 1000L + gettimezoneoffset();
dive->dc.model = "manually added dive"; // don't translate! this is stored in the XML file
@ -386,6 +388,16 @@ void MainWindow::createFakeDiveForAddAndPlan()
ui.InfoWidget->updateDiveInfo(selected_dive);
}
void MainWindow::removeFakeDiveForAddAndPlan()
{
int idx;
if (!fakeDiveId ||
(idx = get_idx_by_uniq_id(fakeDiveId)) == dive_table.nr)
return;
delete_single_dive(idx);
}
void MainWindow::on_actionDivePlanner_triggered()
{
if(!plannerStateClean())
@ -409,7 +421,8 @@ void MainWindow::on_actionDivePlanner_triggered()
createFakeDiveForAddAndPlan();
DivePlannerPointsModel::instance()->createSimpleDive(true);
// disable the dive list
// reload and then disable the dive list
ui.ListWidget->reload(DiveTripModel::CURRENT);
ui.ListWidget->setEnabled(false);
}