Zum Inhalt

DuplicateNamesPage (IPage)

Eigenschaft Wert
Modul Mcdu/Pages
Klasse DuplicateNamesPage
Typ IPage Implementation
Sichtbarkeit Public
Datei Mcdu/Pages/NavSearchPages.vb

Beschreibung

DUPLICATE NAMES Seite — zeigt eine Disambiguierungsliste wenn mehrere Wegpunkte denselben Ident haben. Bis zu 6 Eintraege pro Seite mit Ident (links), LAT/LONG (Spalte 10), Frequenz (Spalte 19) und Entfernung von der Referenzposition (rechts im Label). L1-L6 waehlen den jeweiligen Eintrag aus und geben InsertWaypoint zurueck. R5/R6 blaettern zwischen Seiten. Kandidaten werden per SetCandidates() gesetzt und nach Entfernung von der Referenzposition sortiert (Haversine-Formel). Separate Instanzen pro McduActor (CPT/FO) um Zustandslecks zu vermeiden. Portiert aus VB6 CreateDUPLICATENAMES.

Implementierte Methoden

Render

Public Sub Render(ctx As McduContext, buffer As Inet.Arinc429ScreenBuffer) Implements IPage.Render
Name Typ Beschreibung Standard
ctx McduContext MCDU-Kontextdaten
buffer Inet.Arinc429ScreenBuffer Zielpuffer fuer die gerenderten ARINC-429-Bildschirmdaten

HandleLsk

Public Function HandleLsk(key As McduLskKey, ctx As McduContext) As McduCommand Implements IPage.HandleLsk
Name Typ Beschreibung Standard
key McduLskKey Gedrueckte LSK-Taste
ctx McduContext MCDU-Kontextdaten

Rückgabewert (HandleLsk)

Typ Beschreibung
McduCommand InsertWaypoint bei L1-L6, NoOp bei R5/R6 (Scroll intern), NoOp sonst

Ablaufdiagramm

flowchart TD
    A[Start Render] --> B[LISTCLEAR senden]
    B --> C[Titel DUPLICATE NAMES + Pagination]
    C --> D{Kandidaten vorhanden?}
    D -- Nein --> E[NO RESULTS anzeigen]
    D -- Ja --> F[Bis zu 6 Eintraege rendern]
    F --> G[Pro Eintrag: Ident + LatLon + Freq + Distanz]
    G --> H[Scroll-Pfeile bei mehreren Seiten]
    E --> I[ParseAndRender]
    H --> I
    I --> J[Ende]

Aufgerufen von

Modul Sub/Function Kontext
McduActor RenderActivePage Seitenrendering bei aktivem PageType.DuplicateNames

Ruft auf

Modul Sub/Function Kontext
McduCommandParser ParseAndRender Kommandoliste in Bildschirmpuffer rendern
GreatCircleNm (Private) Grosskreis-Entfernung zur Referenzposition berechnen

Beispiel

Dim page As New DuplicateNamesPage()
page.SetReferencePosition(50.0, 8.5)
page.SetCandidates(candidates)
page.Render(ctx, buffer)

' L1 druecken → ersten Kandidaten auswaehlen
Dim cmd = page.HandleLsk(McduLskKey.L1, ctx)
' cmd ist InsertWaypoint("WPT01", -1)

Änderungshistorie

Version Datum Änderung
1.0 2026-04-16 Erstdokumentation