﻿<local:LayoutAwarePage
    x:Class="PilotsHubApp.HomePage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:PilotsHubApp"
    xmlns:const="using:PilotsHubApp.ViewModel.Resources"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:common="using:PilotsHubApp.Common"
        xmlns:converters="using:PilotsHubApp.Converters"
        NavigationCacheMode="Required"
     xmlns:dependencyProperties="using:PilotsHubApp.DependencyProperties"
    mc:Ignorable="d">

    <Page.Resources>
        <converters:HtmlToTextConverter x:Key="HtmlToTextConverter" />
        <converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
        <converters:StringFormatConverter x:Key="StringFormatConverter" />
        <converters:VisitedStyleConverter x:Key="VisitedStyleConverter"/>
        <converters:DebugSettingToVisibilityConverter x:Key="DebugSettingToVisibilityConverter" />
        <converters:DestinationToVisibilityConverter x:Key="DestinationToVisibilityConverter" />
    </Page.Resources>

    <Grid>
        <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
            <Grid Margin="24,0,24,50" HorizontalAlignment="Center">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="800"/>
                    <ColumnDefinition Width="420"/>
                </Grid.ColumnDefinitions>
                <Border BorderBrush="{ThemeResource PilotsHubBorderBrush}" BorderThickness="1,0,1,1" VerticalAlignment="Top">
                    <Grid
                    VerticalAlignment="Top"
                    Grid.Column="0"  
                    Background="{ThemeResource ApplicationForegroundThemeBrush}">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="*"/>
                        </Grid.RowDefinitions>
                        <StackPanel Grid.Row="0" Margin="24,36,24,24">
                            <TextBlock
                                    Margin="0,0,0,8"
                                    x:Name="QuestsText" 
                                    x:Uid="QuestsHead"
                                    Text="Quests (PH)"
                                    FontSize="24"
                                    Style="{StaticResource HubPageTextBlockHeaderStyle}"/>
                            <TextBlock Margin="0,0,0,8"
                                       x:Uid="NoQuests" 
                                       x:Name="NoQuestsText" 
                                       Text="(PLACEHOLDER)"
                                       FontSize="15"
                                       Visibility="{Binding QuestsHubViewModel.State, Converter={StaticResource loadingStateToVisibilityConverter}, ConverterParameter=NoResults}"/>
                            <TextBlock Margin="0,0,0,8"
                                       x:Uid="QuestsError" 
                                       x:Name="QuestsError" 
                                       Text="(PLACEHOLDER)"
                                       FontSize="15"
                                       Visibility="{Binding QuestsHubViewModel.State, Converter={StaticResource loadingStateToVisibilityConverter}, ConverterParameter=Error}"/>

                            <Border BorderThickness=".5" BorderBrush="{ThemeResource PilotsHubBorderBrush}"/>
                        </StackPanel>
                        <ItemsControl x:Name="QuestList"
                                      Grid.Row="1"
                                      Margin="24,0,24,12"
                                      HorizontalContentAlignment="Stretch"
                                      Visibility="{Binding QuestsHubViewModel.State, Converter={StaticResource loadingStateToVisibilityConverter}, ConverterParameter=Complete}"
                                      ItemsSource="{Binding QuestsHubViewModel.Quests}">
                            <ItemsControl.ItemTemplate>
                                <DataTemplate x:Name="QuestList3">
                                    <Grid Height="150" 
                                  Margin="0,0,0,36" 
                                  HorizontalAlignment="Stretch" 
                                  x:Name="QuestListGrid">
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="250"/>
                                            <ColumnDefinition Width="*"/>
                                        </Grid.ColumnDefinitions>
                                        <Image Margin="0" Grid.Column="0" Width="250" Source="{Binding ThumbnailImage, Converter={StaticResource BitmapImageConverter}}"
                                            Stretch="UniformToFill" AutomationProperties.Name="{Binding Title}" />
                                        <Grid Grid.Column="1" Margin="12,0,0,0" HorizontalAlignment="Stretch">

                                            <Grid.RowDefinitions>
                                                <RowDefinition Height="Auto"/>
                                                <RowDefinition Height="*"/>
                                                <RowDefinition Height="Auto"/>
                                            </Grid.RowDefinitions>
                                            <TextBlock 
                                                Style="{StaticResource HubPageTextBlockHeaderStyle}"
                                                Grid.Row="0"
                                                Text="{Binding Title}" 
                                                Foreground="{ThemeResource AccentTextBrush}"
                                                FontSize="20"
                                                TextWrapping="NoWrap" 
                                                TextTrimming="WordEllipsis"
                                                HorizontalAlignment="Stretch"/>
                                            <WebView x:ConnectionId='5'
                                                Grid.Row="1"
                                                Margin="0,12,0,12"
                                                dependencyProperties:WebViewStringDependency.HtmlString="{Binding Description}"
                                                HorizontalAlignment="Stretch"
                                                                                               
                                                x:Name="QuestShortDescriptionWebView"/>
                                            <Rectangle Style="{StaticResource Gradient}" HorizontalAlignment="Stretch" Grid.Row="1" Grid.Column="0" Height="40" VerticalAlignment="Bottom" Margin="0,0,0,10"/>

                                            <Grid Grid.Row="2">
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition Width="Auto"/>
                                                    <ColumnDefinition Width="*"/>
                                                </Grid.ColumnDefinitions>
                                                <Button x:ConnectionId='6'
                                                    Grid.Column="0"
                                                    Style="{StaticResource CommonButton}"
                                                    x:Name="StartQuestButton"
                                                    x:Uid="QuestMoreButton"
                                                    Padding="24,5"
                                                                           
                                                    Content="More (PH)"
                                                    Command="{Binding ElementName=QuestList, Path=DataContext.QuestsHubViewModel.SwitchQuestCommand}"
                                                    CommandParameter="{Binding }"
                                                    AutomationProperties.Name="{Binding Title}"
                                                    Tag="{Binding ContentId}"/>
                                                <TextBlock
                                                    Grid.Column="1"
                                                    Style="{StaticResource QuestCompleteTextBlockStyle}"
                                                    Visibility="{Binding Completed, FallbackValue=Collapsed, Mode=OneWay, Converter={StaticResource BooleanToVisbilityConverter}}"                                                    
                                                    Name="QuestSaved"
                                                    x:Uid="QuestSaved"
                                                    Text="Quest Complete (PH)"/>
                                            </Grid>
                                        </Grid>
                                    </Grid>
                                </DataTemplate>
                            </ItemsControl.ItemTemplate>
                        </ItemsControl>
                    </Grid>
                </Border>
                <Grid
                    Margin="48,36,48,48" 
                    HorizontalAlignment="Stretch"
                    Grid.Column="1">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="*"/>
                    </Grid.RowDefinitions>
                    <Button x:ConnectionId='1' 
                        AutomationProperties.Name="{Binding AlertsHubViewModel.Featured.Title}"
                        Margin="0,0,0,48"
                        Grid.Row="0"
                        HorizontalAlignment="Stretch" 
                        HorizontalContentAlignment="Stretch" 
                        Background="{ThemeResource ApplicationForegroundThemeBrush}"
                                                     
                        BorderBrush="{ThemeResource PilotsHubBorderBrush}"
                        BorderThickness="1"
                        Visibility="{Binding AlertsHubViewModel.State, Converter={StaticResource loadingStateToVisibilityConverter}, ConverterParameter=NotNoResults}">

                        <StackPanel x:Name="AlertStackPanel">
                            <TextBlock 
                                Style="{StaticResource HubPageTextBlockProfileHeaderStyle}">
                                <Run FontFamily="Segoe MDL2 Assets"  Text="&#xEA8f;"/>
                                <Run x:Name="FeaturedAlert"  
                                     x:Uid="FeaturedAlert" 
                                     Text="ALERTS (PH)" 
                                     FontWeight="Normal"/>
                            </TextBlock>
                            <StackPanel Margin="0,0,0,8">
                                <TextBlock 
                                    TextWrapping="WrapWholeWords" 
                                    Foreground="{ThemeResource AccentTextBrush}"
                                             FontSize="15">
                                    <Run Text="{Binding AlertsHubViewModel.Featured.PublishedDate, Converter={StaticResource StringFormatConverter}, ConverterParameter='\{0:d\}'}" />
                                    <Run Text="{Binding AlertsHubViewModel.Featured.Title}" />
                                </TextBlock>
                            </StackPanel>
                        </StackPanel>
                    </Button>

                    <StackPanel Grid.Row="1" Margin="0,0,0,48">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="Auto" />
                            </Grid.ColumnDefinitions>
                            <TextBlock
                                Grid.Column="0"
                                x:Uid="ProfileAtAGlance"
                                x:Name="ProfileAtAGlance"
                                Text="Profile (PLACEHOLDER)"
                                Style="{StaticResource HubPageTextBlockHeaderStyle}"
                                FontWeight="SemiLight"/>

                            <HyperlinkButton x:ConnectionId='4' 
                                Margin="0"
                                Grid.Column="1"
                                VerticalAlignment="Bottom"
                                HorizontalAlignment="Right"
                                Style="{StaticResource HyperlinkButtonStyle}"
                                                           >

                                <TextBlock
                                    x:Uid="FullProfile"
                                    x:Name="FullProfile"
                                    Text="FullProfile (PH)"
                                    Margin="0,0,0,-7"
                                    />
                            </HyperlinkButton>
                        </Grid>
                        <Border BorderBrush="{ThemeResource PilotsHubBorderBrush}" BorderThickness=".5" HorizontalAlignment="Stretch"/>
                        <Grid
                            Margin="0,10,0,0">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="70"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>
                            <Ellipse Grid.Column="0" Width="70" Height="70">
                                <Ellipse.Fill>
                                    <ImageBrush Stretch="UniformToFill" ImageSource="{Binding InsiderProfilePageViewModel.ProfilePicture}"/>
                                </Ellipse.Fill>
                            </Ellipse>
                            <StackPanel
                                Margin="10,0,0,0"
                                Grid.Column="1">
                                <TextBlock 
                                    Style="{StaticResource HubPageTextBlockProfileHeaderStyle}" 
                                    HorizontalAlignment="Left" 
                                    Text="{Binding InsiderProfilePageViewModel.InsiderName}"/>
                                <TextBlock HorizontalAlignment="Left" 
                                    TextWrapping="WrapWholeWords"
                                    Style="{StaticResource HubPageTextBlockProfileNormalTextStyle}" 
                                    Text="{Binding InsiderProfilePageViewModel.InsiderSince}"/>
                            </StackPanel>

                        </Grid>
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto"/>
                                <RowDefinition Height="Auto"/>
                                <RowDefinition Height="Auto"/>
                            </Grid.RowDefinitions>
                            <StackPanel
                                Margin="0,10,0,10"
                                Grid.Row="0">
                                <TextBlock
                                    Style="{StaticResource HubPageTextBlockProfileHeaderStyle}"
                                    x:Uid="YourWindowsBuild"
                                    x:Name="YourWindowsBuild"  
                                    Text="Your Windows build (PH)"/>
                                <TextBlock
                                    Style="{StaticResource HubPageTextBlockProfileNormalTextStyle}" 
                                    x:Name="YourWindowsBuildContents">
                                        <Run Text="{Binding SelfhostDashboardViewModel.CurrentBranchName}"/>
                                        <Run Text="{Binding SelfhostDashboardViewModel.CurrentBuildNumber}"/>
                                        <Run Text="{Binding SelfhostDashboardViewModel.CurrentEditionId}"/>
                                </TextBlock>
                                <common:HandHyperlinkButton Command="{Binding RateTheBuildCommand}" Padding="0">
                                    <TextBlock x:Uid="RateYourBuild" Text="Rate your build (PH)"/>
                                </common:HandHyperlinkButton>
                            </StackPanel>

                            <StackPanel
                                Margin="0,10,0,10"
                                Grid.Row="1">
                                <TextBlock
                                    Style="{StaticResource HubPageTextBlockProfileHeaderStyle}" 
                                    x:Uid="InsiderActivity"
                                    x:Name="InsiderActivity"  
                                    Text="Insider activity()"/>
                                <TextBlock
                                    Style="{StaticResource HubPageTextBlockProfileNormalTextStyle}" 
                                    x:Name="InsiderActivityContents">
                                    <Run Text="{Binding InsiderProfilePageViewModel.TotalQuestsCompleted, Converter={StaticResource NullableObjectConverter}}"/>
                                    <Run x:Uid="NumQuestsCompletedV2" Text="quests completed (PH)"/>
                                </TextBlock>
                            </StackPanel>

                            <StackPanel
                                Margin="0,10,0,10"
                                Grid.Row="2">
                                <TextBlock
                                    Style="{StaticResource HubPageTextBlockProfileHeaderStyle}" 
                                    x:Uid="FeedbackActivity"
                                    x:Name="FeedbackActivity"  
                                    Text="Feedback activity()"/>
                                <TextBlock
                                    Style="{StaticResource HubPageTextBlockProfileNormalTextStyle}" 
                                    x:Name="FeedbackActivitySubmittedContents">
                                    <Run Text="{Binding InsiderProfilePageViewModel.CountUIFs, Converter={StaticResource NullableObjectConverter}}"/>
                                    <Run x:Uid="CountUIFs" Text="times you've submitted feedback (PH)"/>
                                </TextBlock>
                                <TextBlock
                                    Style="{StaticResource HubPageTextBlockProfileNormalTextStyle}" 
                                    x:Name="FeedbackActivityUpvotesContents">
                                    <Run Text="{Binding InsiderProfilePageViewModel.CountPlusOnesOnUIFs, Converter={StaticResource NullableObjectConverter}}"/>
                                    <Run x:Uid="CountPlusOnesOnUIFsNew" Text="upvotes your feedback has gotten (PH)"/>
                                </TextBlock>
                            </StackPanel>
                        </Grid>
                    </StackPanel>
                    <StackPanel Grid.Row="2"
                                Margin="0,0,0,48">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="Auto" />
                            </Grid.ColumnDefinitions>
                            <TextBlock
                                Grid.Column="0"
                                x:Uid="AnnouncementsHead" 
                                x:Name="AnnouncementsHead"
                                Text="Announcements(PLACEHOLDER)"
                                Style="{StaticResource HubPageTextBlockHeaderStyle}"
                                FontWeight="SemiLight"/>

                            <HyperlinkButton x:ConnectionId='3'  
                                Margin="0"
                                Grid.Column="1"
                                VerticalAlignment="Bottom"
                                HorizontalAlignment="Right"
                                Style="{StaticResource HyperlinkButtonStyle}"
                                                                    >

                                <TextBlock
                                    x:Uid="SeeAll"
                                    x:Name="SeeAll"
                                    Text="See All (PLACEHOLDER)"
                                    Margin="0,0,0,-7"
                                    Visibility="{Binding AnnouncementsHubViewModel.State, Converter={StaticResource loadingStateToVisibilityConverter}, ConverterParameter=NotNoResults}"/>
                            </HyperlinkButton>
                        </Grid>
                        <TextBlock x:Uid="AnnouncementNoResultsError"
                                   x:Name="AnnouncementNoResultsError"
                                   Text="No Announcements(PLACEHOLDER)"
                                   FontSize="15"
                                   Visibility="{Binding AnnouncementsHubViewModel.State, Converter={StaticResource loadingStateToVisibilityConverter}, ConverterParameter=NoResults}"/>
                        <TextBlock x:Uid="AnnouncementNetworkError"
                                   x:Name="AnnouncementNetworkError"
                                   Text="An error occured downloading announcements(PLACEHOLDER)"
                                   FontSize="15"
                                   Visibility="{Binding AnnouncementsHubViewModel.State, Converter={StaticResource loadingStateToVisibilityConverter}, ConverterParameter=Error}"/>
                        <Border BorderBrush="{ThemeResource PilotsHubBorderBrush}" BorderThickness=".5" HorizontalAlignment="Stretch"/>
                        
                        <ItemsControl Margin="0,10,0,0" x:Name="AnnouncementsListView" ItemsSource="{Binding AnnouncementsHubViewModel.HubAnnouncements}">
                            <ItemsControl.ItemTemplate>
                                <DataTemplate>
                                    <StackPanel x:Name="AnnouncementsStackpanel" Margin="0,0,0,10">
                                        <TextBlock Style="{StaticResource HubPageTextBlockProfileNormalTextStyle}"
                                                   Text="{Binding PublishedDate, Converter={StaticResource StringFormatConverter}, ConverterParameter='\{0:d\}'}"/>
                                        <HyperlinkButton x:ConnectionId='2' Style="{StaticResource HyperlinkButtonStyle}"
                                                         FontWeight="{Binding Visited, Converter={StaticResource VisitedStyleConverter}}"
                                                         Padding="0,0,0,10"
                                                         FontSize="15"
                                                         Command="{Binding ElementName=AnnouncementsListView, Path=DataContext.AnnouncementsHubViewModel.AnnouncementSeletedCommand}"
                                                         CommandParameter="{Binding }"
                                                                                       >
                                            <TextBlock TextWrapping="WrapWholeWords" Text="{Binding Title}"/>
                                        </HyperlinkButton>
                                    </StackPanel>
                                </DataTemplate>
                            </ItemsControl.ItemTemplate>
                        </ItemsControl>
                    </StackPanel>

                    <!-- Resources -->
                    <StackPanel Grid.Row="3"
                                Margin="0,0,0,48">
                        <TextBlock 
                        x:Uid="ResourcesHead"
                        x:Name="ResourcesHead"
                        Text="Quick links (PLACEHOLDER)"
                            Margin="0,0,0,8"
                        Style="{StaticResource HubPageTextBlockHeaderStyle}"
                        FontWeight="SemiLight"/>
                        <Border BorderBrush="{ThemeResource PilotsHubBorderBrush}" BorderThickness=".5" HorizontalAlignment="Stretch"/>

                        <StackPanel>
                            <ItemsControl
                                x:Name="Quicklinks"
                                VerticalAlignment="Stretch"
                                HorizontalAlignment="Stretch"
                                ItemsSource="{Binding ResourcesHubViewModel.InsiderHubContent.QuickLinks}">
                                <ItemsControl.ItemTemplate>
                                    <DataTemplate>
                                        <common:HandHyperlinkButton
                                            Margin="0,0,0,0"
                                            NavigateUri="{Binding Link}"
                                            Style="{StaticResource HyperlinkButtonStyle}"
                                            Visibility="{Binding Destination,
                                                                 Converter={StaticResource DestinationToVisibilityConverter},
                                                                 ConverterParameter=HubPage}"
                                            Command="{Binding ElementName=Quicklinks, Path=DataContext.ResourcesHubViewModel.QuickLinkCommand}"
                                            CommandParameter="{Binding}">
                                            <TextBlock FontWeight="Normal">
                                                <Run Text="{Binding Title}" />
                                            </TextBlock>
                                        </common:HandHyperlinkButton>
                                    </DataTemplate>
                                </ItemsControl.ItemTemplate>
                            </ItemsControl>
                        </StackPanel>
                    </StackPanel>
                </Grid>
            </Grid>
        </ScrollViewer>
    </Grid>
</local:LayoutAwarePage>

