180 lines
10 KiB
XML
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>
|