bool TaskManagerDialog::Commit() { if (!modified) return true; modified |= task->GetFactory().CheckAddFinish(); if (!task->TaskSize() || task->CheckTask()) { { // this must be done in thread lock because it potentially changes the // waypoints database ScopeSuspendAllThreads suspend; task->CheckDuplicateWaypoints(way_points); way_points.Optimise(); } protected_task_manager->TaskCommit(*task); protected_task_manager->TaskSaveDefault(); modified = false; return true; } ShowMessageBox(getTaskValidationErrors(task->GetFactory().GetValidationErrors()), _("Validation Errors"), MB_ICONEXCLAMATION); return (ShowMessageBox(_("Task not valid. Changes will be lost.\nContinue?"), _("Task Manager"), MB_YESNO | MB_ICONQUESTION) == IDYES); }
bool dlgTaskManager::CommitTaskChanges() { if (!task_modified) return true; task_modified |= active_task->get_factory().CheckAddFinish(); if (!active_task->task_size() || active_task->check_task()) { { // this must be done in thread lock because it potentially changes the // waypoints database ScopeSuspendAllThreads suspend; active_task->check_duplicate_waypoints(way_points); } protected_task_manager->task_commit(*active_task); protected_task_manager->task_save_default(); task_modified = false; return true; } MessageBoxX(getTaskValidationErrors( active_task->get_factory().getValidationErrors()), _("Validation Errors"), MB_ICONEXCLAMATION); return (MessageBoxX(_("Task not valid. Changes will be lost.\nContinue?"), _("Task Manager"), MB_YESNO | MB_ICONQUESTION) == IDYES); }
void OrderedTaskSummary(OrderedTask* task, TCHAR* text, bool linebreaks) { const TaskStats &stats = task->GetStats(); TCHAR summary_shape[100]; bool FAIShape = TaskSummaryShape(task, summary_shape); if (FAIShape || task->GetFactoryType() == TaskFactoryType::FAI_GENERAL) { if (!task->GetFactory().ValidateFAIOZs()) { _tcscat(summary_shape, _T("/ ")); _tcscat(summary_shape, getTaskValidationErrors( task->GetFactory().GetValidationErrors())); } } TCHAR linebreak[3]; if (linebreaks) { linebreak[0] = '\n'; linebreak[1] = 0; } else { linebreak[0] = ','; linebreak[1] = ' '; linebreak[2] = 0; } if (!task->TaskSize()) { _stprintf(text, _("Task is empty (%s)"), OrderedTaskFactoryName(task->GetFactoryType())); } else { if (task->HasTargets()) _stprintf(text, _T("%s%s%.0f %s%s%s %.0f %s%s%s %.0f %s (%s)"), summary_shape, linebreak, (double)Units::ToUserDistance(stats.distance_nominal), Units::GetDistanceName(), linebreak, _("max."), (double)Units::ToUserDistance(stats.distance_max), Units::GetDistanceName(), linebreak, _("min."), (double)Units::ToUserDistance(stats.distance_min), Units::GetDistanceName(), OrderedTaskFactoryName(task->GetFactoryType())); else _stprintf(text, _T("%s%s%s %.0f %s (%s)"), summary_shape, linebreak, _("dist."), (double)Units::ToUserDistance(stats.distance_nominal), Units::GetDistanceName(), OrderedTaskFactoryName(task->GetFactoryType())); } }
void TaskListPanel::OnDeclareClicked() { if (!(*active_task)->CheckTask()) { const AbstractTaskFactory::TaskValidationErrorVector errors = (*active_task)->GetFactory().getValidationErrors(); MessageBoxX(getTaskValidationErrors(errors), _("Declare task"), MB_ICONEXCLAMATION); return; } Declaration decl(*active_task); Profile::GetDeclarationConfig(decl, CommonInterface::GetComputerSettings().plane); ExternalLogger::Declare(decl, way_points.GetHome()); }
inline void TaskActionsPanel::OnDeclareClicked() { if (!(*active_task)->CheckTask()) { const auto errors = (*active_task)->GetFactory().GetValidationErrors(); ShowMessageBox(getTaskValidationErrors(errors), _("Declare task"), MB_ICONEXCLAMATION); return; } const ComputerSettings &settings = CommonInterface::GetComputerSettings(); Declaration decl(settings.logger, settings.plane, *active_task); ExternalLogger::Declare(decl, way_points.GetHome()); }
void TaskListPanel::SaveTask() { (*active_task)->GetFactory().CheckAddFinish(); if ((*active_task)->CheckTask()) { if (!OrderedTaskSave(*(SingleWindow *)wf.get_root_owner(), **active_task)) return; task_store->Scan(); RefreshView(); } else { MessageBoxX(getTaskValidationErrors( (*active_task)->GetFactory().getValidationErrors()), _("Task not saved"), MB_ICONEXCLAMATION); } }
void TaskActionsPanel::SaveTask() { AbstractTaskFactory &factory = (*active_task)->GetFactory(); factory.UpdateStatsGeometry(); if (factory.CheckAddFinish()) factory.UpdateGeometry(); if ((*active_task)->CheckTask()) { if (!OrderedTaskSave(**active_task)) return; *task_modified = true; dialog.UpdateCaption(); DirtyTaskListPanel(); } else { ShowMessageBox(getTaskValidationErrors( (*active_task)->GetFactory().GetValidationErrors()), _("Task not saved"), MB_ICONEXCLAMATION); } }