180 lines
10 KiB
XML

<?xml version="1.0" encoding="utf-8" ?>
<controls:BaseContentPage
x:Class="gehGassiApp.Views.HomeView"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:controls="clr-namespace:gehGassiApp.Controls"
xmlns:i="clr-namespace:gehGassiApp.Constants"
xmlns:ownerControls="clr-namespace:gehGassiApp.Controls.Owner"
xmlns:ownerDashboardControls="clr-namespace:gehGassiApp.Controls.Owner.Walks"
xmlns:res="clr-namespace:gehGassiApp.Resources"
xmlns:viewmodels="clr-namespace:gehGassiApp.ViewModels"
x:Name="this"
ControlTemplate="{StaticResource MenuPageTemplate}"
Shell.FlyoutBehavior="Disabled">
<controls:BaseContentPage.TitleView>
<ownerControls:HomeTitleViewControl
HorizontalOptions="Fill"
Initials="{Binding CurrentAppUser.Initials}"
Photo="{Binding CurrentAppUser.Photo}"
VerticalOptions="FillAndExpand"
ViewModel="{Binding .}" />
</controls:BaseContentPage.TitleView>
<ContentPage.Content>
<AbsoluteLayout>
<!-- Main scrollable content (full screen) -->
<RefreshView
x:Name="homeRefreshView"
AbsoluteLayout.LayoutBounds="0,0,1,1"
AbsoluteLayout.LayoutFlags="All"
BackgroundColor="#ffffff"
Command="{Binding RefreshWalkersCommand}"
IsRefreshing="{Binding WalkersRefreshing}">
<ScrollView>
<Grid
x:Name="rootHomeGrid"
Padding="20,20,20,90"
HorizontalOptions="FillAndExpand"
RowDefinitions="Auto,Auto"
VerticalOptions="FillAndExpand">
<VerticalStackLayout
x:Name="rootVerticalStackLayout"
Grid.Row="0"
HorizontalOptions="Fill"
Spacing="0"
VerticalOptions="Start">
<Border x:Name="permissionStatusBorder" Style="{StaticResource PermissionStatusBorder}">
<Label Style="{StaticResource PermissionStatusLabel}" Text="{x:Static res:Text.Permission_Location_Error}" />
<Border.IsVisible>
<MultiBinding Converter="{StaticResource AllTrueMultiConverter}">
<Binding Converter="{StaticResource PermissionsStatusToBoolConverter}" Path="LocationPermissionStatus" />
<Binding Path="ShowPermissionStatus" />
</MultiBinding>
</Border.IsVisible>
<Border.GestureRecognizers>
<TapGestureRecognizer Command="{Binding ShowPermissionsCommand}" />
</Border.GestureRecognizers>
</Border>
<controls:ProfileNotFinishedControl
Margin="{StaticResource MarginMid}"
HorizontalOptions="Fill"
IsVisible="{Binding ProfileNotFinished}"
VerticalOptions="StartAndExpand"
ViewModel="{Binding .}" />
<ownerDashboardControls:NextWalkControlSmall
HorizontalOptions="FillAndExpand"
IsVisible="{Binding HasNextWalk}"
NextWalk="{Binding NextWalk}"
ShowCommand="{Binding WalkSelectedCommand}"
VerticalOptions="StartAndExpand" />
<Grid
HeightRequest="130"
HorizontalOptions="Fill"
VerticalOptions="StartAndExpand">
<CollectionView ItemsSource="{Binding NextWalks}" VerticalOptions="StartAndExpand">
<CollectionView.ItemsLayout>
<GridItemsLayout
HorizontalItemSpacing="10"
Orientation="Horizontal"
SnapPointsAlignment="Center"
SnapPointsType="MandatorySingle" />
</CollectionView.ItemsLayout>
<CollectionView.ItemTemplate>
<DataTemplate>
<ownerDashboardControls:NextWalkListControl
NextWalk="{Binding .}"
NextWalkWidth="{Binding Source={RelativeSource AncestorType={x:Type viewmodels:HomeViewModel}}, Path=NextWalkWidth}"
ShowCommand="{Binding Source={RelativeSource AncestorType={x:Type viewmodels:HomeViewModel}}, Path=NextWalkSelectedCommand}" />
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
<Grid.IsVisible>
<MultiBinding Converter="{StaticResource AllTrueMultiConverter}">
<Binding Converter="{StaticResource InvertedBoolConverter}" Path="HasNextWalk" />
<Binding Converter="{StaticResource IsListNotNullOrEmptyConverter}" Path="NextWalks" />
<Binding Converter="{StaticResource ListContainsMoreThanOneItemConverter}" Path="NextWalks" />
</MultiBinding>
</Grid.IsVisible>
</Grid>
<Image
Margin="{Binding BannerMargin}"
HeightRequest="{Binding Banner.Height}"
IsVisible="{Binding HasBanner}"
WidthRequest="{Binding Banner.Width}">
<Image.Source>
<UriImageSource CachingEnabled="True" Uri="{Binding Banner.Image}" />
</Image.Source>
<Image.GestureRecognizers>
<TapGestureRecognizer Command="{Binding ShowBannerCommand}" />
</Image.GestureRecognizers>
</Image>
<Label
Grid.Row="1"
Margin="{Binding ListMargin}"
Style="{StaticResource H6_Blue}"
Text="{x:Static res:Text.Common_DogWalkers_NearYou}" />
<!-- Walker StackLayout (first 10) -->
<StackLayout
x:Name="walkersStackLayout"
BindableLayout.ItemsSource="{Binding First10Walkers}"
Spacing="12">
<BindableLayout.ItemTemplate>
<DataTemplate>
<controls:WalkerListControl DogOwnerHasPremium="{Binding Source={RelativeSource AncestorType={x:Type viewmodels:HomeViewModel}}, Path=IsPremiumUser}" Walker="{Binding .}">
<controls:WalkerListControl.GestureRecognizers>
<TapGestureRecognizer Command="{Binding Source={RelativeSource AncestorType={x:Type viewmodels:HomeViewModel}}, Path=WalkerSelectedCommand}" CommandParameter="{Binding .}" />
</controls:WalkerListControl.GestureRecognizers>
</controls:WalkerListControl>
</DataTemplate>
</BindableLayout.ItemTemplate>
</StackLayout>
<!-- "Alle anzeigen" Link Label -->
<Label
Margin="0,16,0,0"
HorizontalOptions="Center"
Style="{StaticResource LinkLabelStyle}"
Text="Alle anzeigen">
<Label.GestureRecognizers>
<TapGestureRecognizer Command="{Binding NavigateCommand}" CommandParameter="{x:Static viewmodels:MenuSelected.Walkers}" />
</Label.GestureRecognizers>
</Label>
</VerticalStackLayout>
</Grid>
</ScrollView>
</RefreshView>
<!-- Floating Public Request Button (over content) -->
<Button
Margin="0,0,0,20"
AbsoluteLayout.LayoutBounds="0.5,1,300,90"
AbsoluteLayout.LayoutFlags="PositionProportional"
Command="{Binding CreatePublicWalkRequestCommand}"
ContentLayout="Left, 5"
HorizontalOptions="Center"
Text="{x:Static res:Text.PublicWalkRequest_Title}"
VerticalOptions="End">
<Button.ImageSource>
<FontImageSource
FontFamily="IconMoon"
Glyph="{x:Static i:IconsMoon.Icon_Plus}"
Size="{StaticResource FontLabelM}" />
</Button.ImageSource>
</Button>
</AbsoluteLayout>
</ContentPage.Content>
</controls:BaseContentPage>