inline void TaskPointWidget::OnTypeClicked() { if (dlgTaskPointType(&ordered_task, active_index)) { ordered_task->ClearName(); task_modified = true; RefreshView(); } }
/** * displays dlgTaskOptionalStarts * @param Sender */ inline void TaskPointWidget::OnOptionalStartsClicked() { if (dlgTaskOptionalStarts(&ordered_task)) { ordered_task->ClearName(); task_modified = true; RefreshView(); } }
void TaskEditPanel::EditTaskPoint(unsigned ItemIndex) { if (ItemIndex < ordered_task->TaskSize()) { if (dlgTaskPointShowModal(*ordered_task, ItemIndex)) { *task_modified = true; ordered_task->ClearName(); ordered_task->UpdateGeometry(); RefreshView(); } } else if (!ordered_task->IsFull()) { OrderedTaskPoint* point = nullptr; AbstractTaskFactory &factory = ordered_task->GetFactory(); const Waypoint* way_point = ShowWaypointListDialog(ordered_task->TaskSize() > 0 ? ordered_task->GetPoint(ordered_task->TaskSize() - 1).GetLocation() : CommonInterface::Basic().location, ordered_task, ItemIndex); if (!way_point) return; if (ItemIndex == 0) { point = (OrderedTaskPoint*)factory.CreateStart(*way_point); } else { point = (OrderedTaskPoint*)factory.CreateIntermediate(*way_point); } if (point == nullptr) return; if (factory.Append(*point, true)) { *task_modified = true; ordered_task->ClearName(); ordered_task->UpdateGeometry(); RefreshView(); } delete point; } }
void TaskEditPanel::OnClearAllClicked() { if ((ordered_task->TaskSize() < 2) || (ShowMessageBox(_("Clear all points?"), _("Task edit"), MB_YESNO|MB_ICONQUESTION) == IDYES)) { ordered_task->RemoveAllPoints(); ordered_task->ClearName(); *task_modified = true; RefreshView(); } }
inline void TaskPointWidget::OnRemoveClicked() { if (ShowMessageBox(_("Remove task point?"), _("Task point"), MB_YESNO | MB_ICONQUESTION) != IDYES) return; if (!ordered_task->GetFactory().Remove(active_index)) return; ordered_task->ClearName(); task_modified = true; dialog.SetModalResult(mrCancel); }
inline void TaskPointWidget::OnRelocateClicked() { const GeoPoint &gpBearing = active_index > 0 ? ordered_task->GetPoint(active_index - 1).GetLocation() : CommonInterface::Basic().location; const Waypoint *wp = ShowWaypointListDialog(gpBearing, ordered_task, active_index); if (wp == nullptr) return; ordered_task->GetFactory().Relocate(active_index, *wp); ordered_task->ClearName(); task_modified = true; RefreshView(); }
void TaskEditPanel::MoveDown() { unsigned index = GetList().GetCursorIndex(); if (index >= ordered_task->TaskSize()) return; if (!ordered_task->GetFactory().Swap(index, true)) return; GetList().SetCursorIndex(index + 1); *task_modified = true; ordered_task->ClearName(); ordered_task->UpdateGeometry(); RefreshView(); }
bool TaskPointWidget::ReadValues() { OrderedTaskPoint &tp = ordered_task->GetPoint(active_index); if (tp.GetType() == TaskPointType::AST) { const bool new_score_exit = score_exit.GetState(); ASTPoint &ast = (ASTPoint &)tp; if (new_score_exit != ast.GetScoreExit()) { ast.SetScoreExit(new_score_exit); ordered_task->ClearName(); task_modified = true; } } return properties_widget == nullptr || properties_widget->Save(task_modified); }
void TaskEditPanel::ReverseTask() { if (ordered_task->TaskSize() < 2) return; const unsigned start_index = 0; const unsigned finish_index = ordered_task->TaskSize() - 1; const Waypoint start_wp = ordered_task->GetTaskPoint(start_index).GetWaypoint(); const Waypoint finish_wp = ordered_task->GetTaskPoint(finish_index).GetWaypoint(); if (start_wp.location != finish_wp.location) { // swap start/finish TP if at different location but leave OZ type intact ordered_task->Relocate(start_index, finish_wp); ordered_task->Relocate(finish_index, start_wp); // remove optional start points while (ordered_task->HasOptionalStarts()) ordered_task->RemoveOptionalStart(0); } // reverse intermediate TPs order keeping the OZ type with the respective TP unsigned length = ordered_task->TaskSize()-1; for (unsigned i = 1; i < length - 1; ++i) { const OrderedTaskPoint &otp = ordered_task->GetTaskPoint(length - 1); if (!ordered_task->GetFactory().Insert(otp, i, false)) return; if (!ordered_task->GetFactory().Remove(length, false)) return; } *task_modified = true; ordered_task->ClearName(); ordered_task->GetFactory().CheckAddFinish(); ordered_task->UpdateStatsGeometry(); ordered_task->UpdateGeometry(); RefreshView(); }