void Show(const PixelRect &rc) override { const Layout layout(rc, *waypoint); if (task_manager != nullptr) goto_button.MoveAndShow(layout.goto_button); if (!images.empty()) { magnify_button.MoveAndShow(layout.magnify_button); shrink_button.MoveAndShow(layout.shrink_button); } previous_button.MoveAndShow(layout.previous_button); next_button.MoveAndShow(layout.next_button); close_button.MoveAndShow(layout.close_button); info_dock.Move(layout.main); details_panel.Move(layout.main); details_text.Move(layout.details_text); #ifdef HAVE_RUN_FILE if (!waypoint->files_external.empty()) file_list.Move(layout.file_list); #endif commands_dock.Move(layout.main); if (!images.empty()) image_window.Move(layout.main); UpdatePage(); }
void Move(const PixelRect &rc) override { const Layout layout(rc, waypoint); if (allow_navigation) goto_button.Move(layout.goto_button); if (!images.empty()) { magnify_button.Move(layout.magnify_button); shrink_button.Move(layout.shrink_button); } if (allow_navigation) { previous_button.Move(layout.previous_button); next_button.Move(layout.next_button); } close_button.Move(layout.close_button); info_dock.Move(layout.main); details_panel.Move(layout.main); details_text.Move(layout.details_text); #ifdef HAVE_RUN_FILE if (!waypoint.files_external.empty()) file_list.Move(layout.file_list); #endif commands_dock.Move(layout.main); if (!images.empty()) image_window.Move(layout.main); }
void dlgWaypointDetailsShowModal(const Waypoint &_waypoint, bool allow_navigation) { waypoint = &_waypoint; form = LoadDialog(CallBackTable, UIGlobals::GetMainWindow(), Layout::landscape ? _T("IDR_XML_WAYPOINTDETAILS_L") : _T("IDR_XML_WAYPOINTDETAILS")); assert(form != nullptr); LastUsedWaypoints::Add(_waypoint); UpdateCaption(); form->SetKeyDownFunction(FormKeyDown); info_widget = (DockWindow *)form->FindByName(_T("info")); assert(info_widget != nullptr); info_widget->SetWidget(new WaypointInfoWidget(UIGlobals::GetDialogLook(), _waypoint)); commands_widget = (DockWindow *)form->FindByName(_T("commands")); assert(commands_widget != nullptr); commands_widget->SetWidget(new WaypointCommandsWidget(UIGlobals::GetDialogLook(), form, _waypoint, protected_task_manager)); commands_widget->Hide(); details_panel = form->FindByName(_T("frmDetails")); assert(details_panel != nullptr); ListControl *wFilesList = (ListControl *)form->FindByName(_T("Files")); assert(wFilesList != nullptr); LargeTextWindow *wDetailsText = (LargeTextWindow *) form->FindByName(_T("Details")); assert(wDetailsText != nullptr); wDetailsText->SetText(waypoint->details.c_str()); #ifdef ANDROID WaypointExternalFileListHandler handler; int num_files = std::distance(waypoint->files_external.begin(), waypoint->files_external.end()); if (num_files > 0) { wFilesList->SetItemRenderer(&handler); wFilesList->SetCursorHandler(&handler); unsigned list_height = wFilesList->GetItemHeight() * std::min(num_files, 5); wFilesList->Resize(wFilesList->GetWidth(), list_height); wFilesList->SetLength(num_files); PixelRect rc = wDetailsText->GetPosition(); rc.top += list_height; wDetailsText->Move(rc); } else #endif wFilesList->Hide(); image_window = (PaintWindow *)form->FindByName(_T("frmImage")); assert(image_window != nullptr); magnify_button = (WndButton *)form->FindByName(_T("cmdMagnify")); assert(magnify_button != nullptr); shrink_button = (WndButton *)form->FindByName(_T("cmdShrink")); assert(shrink_button != nullptr); if (!allow_navigation) { for (const TCHAR *button_name : { _T("cmdPrev"), _T("cmdNext"), _T("cmdGoto") }) { Window *button = form->FindByName(button_name); assert(button != nullptr); button->Hide(); } } for (auto it = waypoint->files_embed.begin(), it_end = waypoint->files_embed.end(); it != it_end && !images.full(); it++) { TCHAR path[MAX_PATH]; LocalPath(path, it->c_str()); if (!images.append().LoadFile(path)) images.shrink(images.size() - 1); } last_page = 2 + images.size(); page = 0; UpdatePage(); form->ShowModal(); delete form; for (auto image = images.begin(); image < images.end(); image++) image->Reset(); images.clear(); }