Option Strict On
Option Explicit On

Imports Nexamas.UI.Controls
Imports SkiaSharp

Namespace Nexamas.UI.Components

    Partial Public NotInheritable Class MASAppLayout

#Region "Friend real host adoption sample proof"

        Friend Function CreateRealHostAdoptionSampleSnapshot() As MASRouteShellHostAdoptionSampleSnapshot
            Dim boundary As MASRouteShellBoundarySnapshot = CreateRouteOwnershipBoundarySnapshot()
            Dim adoption As MASRouteShellHostAdoptionSnapshot = CreateResponsiveShellHostAdoptionSnapshot()
            Return MASRouteShellHostAdoptionSamplePolicy.CreateAppLayoutSample(boundary,
                                                                               adoption,
                                                                               CreateLayoutSnapshot(),
                                                                               CreateHostedSlotContentSnapshot(),
                                                                               compactScenarioVerified:=True,
                                                                               wideScenarioVerified:=True)
        End Function

        Friend Function HasRealHostAdoptionSampleForTests() As Boolean
            ResetLayoutSlots()
            Dim nav As MASControlBase = MASButton.Create("Host sample navigation")
            Dim content As MASControlBase = MASButton.Create("Host sample content")
            Dim details As MASControlBase = MASButton.Create("Host sample details")
            If Not HostSlotContent("navigation", nav) Then Return False
            If Not HostSlotContent("content", content) Then Return False
            If Not HostSlotContent("details", details) Then Return False

            ShowNavigation = True
            ShowDetails = False
            PlaceAppLayoutHostedContent("navigation", New SKRect(0.0F, 48.0F, 96.0F, 320.0F), 1.0F, True)
            PlaceAppLayoutHostedContent("content", New SKRect(96.0F, 48.0F, 420.0F, 320.0F), 1.0F, True)
            PlaceAppLayoutHostedContent("details", New SKRect(0.0F, 0.0F, 0.0F, 0.0F), 1.0F, False)
            Dim compactSnapshot As MASRouteShellHostAdoptionSampleSnapshot = CreateRealHostAdoptionSampleSnapshot()
            Dim compactOk As Boolean = MASRouteShellHostAdoptionSamplePolicy.IsSafeRealHostAdoptionSample(compactSnapshot,
                                                                                                            "applayout",
                                                                                                            "AppLayout.RealHostAdoptionSample",
                                                                                                            MASRouteShellBoundaryKind.AppLayoutRouteOwnership) AndAlso
                                       compactSnapshot.ChecksResponsiveBreakpoints AndAlso
                                       compactSnapshot.KeepsRouterExternal AndAlso
                                       compactSnapshot.KeepsPageHostExternal

            ShowDetails = True
            PlaceAppLayoutHostedContent("navigation", New SKRect(0.0F, 72.0F, 176.0F, 420.0F), 1.0F, True)
            PlaceAppLayoutHostedContent("content", New SKRect(184.0F, 72.0F, 620.0F, 420.0F), 1.0F, True)
            PlaceAppLayoutHostedContent("details", New SKRect(628.0F, 72.0F, 840.0F, 420.0F), 1.0F, True)
            Dim wideSnapshot As MASRouteShellHostAdoptionSampleSnapshot = CreateRealHostAdoptionSampleSnapshot()
            Dim wideOk As Boolean = MASRouteShellHostAdoptionSamplePolicy.IsSafeRealHostAdoptionSample(wideSnapshot,
                                                                                                       "applayout",
                                                                                                       "AppLayout.RealHostAdoptionSample",
                                                                                                       MASRouteShellBoundaryKind.AppLayoutRouteOwnership) AndAlso
                                    wideSnapshot.HostScenarioCount >= 2 AndAlso
                                    wideSnapshot.HasHostedContentSnapshot

            Dim removed As Boolean = UnhostSlotContent("navigation", disposeChild:=True)
            removed = UnhostSlotContent("content", disposeChild:=True) AndAlso removed
            removed = UnhostSlotContent("details", disposeChild:=True) AndAlso removed
            Return compactOk AndAlso wideOk AndAlso removed
        End Function

#End Region

    End Class

End Namespace
