static void OnInsertInTaskClicked(gcc_unused WndButton &button) { switch (insert_in_task(*selected_waypoint)) { case SUCCESS: protected_task_manager.task_save_default(); wf->SetModalResult(mrOK); break; case UNMODIFIED: case INVALID: MessageBoxX(_("Task would not be valid after the change."), _("Error"), MB_OK | MB_ICONEXCLAMATION); break; } }
static task_edit_result insert_in_task(const Waypoint &wp) { assert(protected_task_manager != NULL); ProtectedTaskManager::ExclusiveLease task_manager(*protected_task_manager); TaskEvents task_events; GlidePolar glide_polar(task_manager->get_glide_polar()); OrderedTask *task = task_manager->clone(task_events, XCSoarInterface::SettingsComputer(), glide_polar); task_edit_result result = insert_in_task(task, wp); if (result == SUCCESS) task_manager->commit(*task); delete task; return result; }