Exemple #1
0
  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);
  }
Exemple #3
0
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();
}