<Page
    x:Class="Microsoft.PowerToys.Settings.UI.Views.AwakePage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:controls="using:Microsoft.PowerToys.Settings.UI.Controls"
    xmlns:converters="using:Microsoft.PowerToys.Settings.UI.Converters"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:tkcontrols="using:CommunityToolkit.WinUI.Controls"
    xmlns:ui="using:CommunityToolkit.WinUI"
    xmlns:viewmodels="using:Microsoft.PowerToys.Settings.UI.ViewModels"
    d:DataContext="{d:DesignInstance Type=viewmodels:AwakeViewModel}"
    AutomationProperties.LandmarkType="Main"
    mc:Ignorable="d">

    <Page.Resources>
        <converters:AwakeModeToIntConverter x:Key="AwakeModeToIntConverter" />
    </Page.Resources>

    <controls:SettingsPageControl
        x:Uid="Awake"
        IsTabStop="False"
        ModuleImageSource="ms-appx:///Assets/Settings/Modules/Awake.png">
        <controls:SettingsPageControl.ModuleContent>
            <StackPanel ChildrenTransitions="{StaticResource SettingsCardsAnimations}" Orientation="Vertical">
                <tkcontrols:SettingsCard
                    x:Uid="Awake_EnableSettingsCard"
                    HeaderIcon="{ui:BitmapIcon Source=/Assets/Settings/Icons/Awake.png}"
                    IsEnabled="{x:Bind ViewModel.IsEnabledGpoConfigured, Mode=OneWay, Converter={StaticResource BoolNegationConverter}}">
                    <ToggleSwitch x:Uid="ToggleSwitch" IsOn="{x:Bind ViewModel.IsEnabled, Mode=TwoWay}" />
                </tkcontrols:SettingsCard>
                <InfoBar
                    x:Uid="GPO_SettingIsManaged"
                    IsClosable="False"
                    IsOpen="{x:Bind ViewModel.IsEnabledGpoConfigured, Mode=OneWay}"
                    IsTabStop="{x:Bind ViewModel.IsEnabledGpoConfigured, Mode=OneWay}"
                    Severity="Informational" />

                <controls:SettingsGroup x:Uid="Awake_BehaviorSettingsGroup" IsEnabled="{x:Bind ViewModel.IsEnabled, Mode=OneWay}">

                    <tkcontrols:SettingsCard x:Uid="Awake_ModeSettingsCard" HeaderIcon="{ui:FontIcon Glyph=&#xE945;}">
                        <ComboBox MinWidth="{StaticResource SettingActionControlMinWidth}" SelectedIndex="{x:Bind Path=ViewModel.Mode, Mode=TwoWay, Converter={StaticResource AwakeModeToIntConverter}}">
                            <ComboBoxItem x:Uid="Awake_NoKeepAwakeSelector" />
                            <ComboBoxItem x:Uid="Awake_IndefiniteKeepAwakeSelector" />
                            <ComboBoxItem x:Uid="Awake_TemporaryKeepAwakeSelector" />
                            <ComboBoxItem x:Uid="Awake_ExpirableKeepAwakeSelector" />
                        </ComboBox>
                    </tkcontrols:SettingsCard>

                    <tkcontrols:SettingsExpander
                        x:Uid="Awake_ExpirationSettingsExpander"
                        HeaderIcon="{ui:FontIcon Glyph=&#xEC92;}"
                        IsExpanded="True"
                        Visibility="{x:Bind ViewModel.IsExpirationConfigurationEnabled, Mode=OneWay}">
                        <tkcontrols:SettingsExpander.Items>
                            <tkcontrols:SettingsCard x:Uid="Awake_ExpirationSettingsExpander_Date">
                                <DatePicker Date="{x:Bind ViewModel.ExpirationDateTime, Mode=TwoWay}" />
                            </tkcontrols:SettingsCard>
                            <tkcontrols:SettingsCard x:Uid="Awake_ExpirationSettingsExpander_Time">
                                <TimePicker ClockIdentifier="24HourClock" Time="{x:Bind ViewModel.ExpirationTime, Mode=TwoWay}" />
                            </tkcontrols:SettingsCard>
                        </tkcontrols:SettingsExpander.Items>
                    </tkcontrols:SettingsExpander>

                    <tkcontrols:SettingsCard
                        x:Uid="Awake_IntervalSettingsCard"
                        HeaderIcon="{ui:FontIcon Glyph=&#xE916;}"
                        Visibility="{x:Bind ViewModel.IsTimeConfigurationEnabled, Mode=OneWay}">

                        <StackPanel MinWidth="{StaticResource SettingActionControlMinWidth}" Orientation="Horizontal">
                            <NumberBox
                                x:Uid="Awake_IntervalHoursInput"
                                Width="96"
                                HorizontalAlignment="Left"
                                LargeChange="5"
                                Minimum="0"
                                SmallChange="1"
                                SpinButtonPlacementMode="Compact"
                                Value="{x:Bind ViewModel.IntervalHours, Mode=TwoWay}" />
                            <NumberBox
                                x:Uid="Awake_IntervalMinutesInput"
                                Width="96"
                                Margin="8,0,0,0"
                                HorizontalAlignment="Left"
                                LargeChange="5"
                                Maximum="60"
                                Minimum="0"
                                SmallChange="1"
                                SpinButtonPlacementMode="Compact"
                                Value="{x:Bind ViewModel.IntervalMinutes, Mode=TwoWay}" />
                        </StackPanel>
                    </tkcontrols:SettingsCard>

                    <tkcontrols:SettingsCard
                        x:Uid="Awake_DisplaySettingsCard"
                        HeaderIcon="{ui:FontIcon Glyph=&#xE7F4;}"
                        IsEnabled="{x:Bind ViewModel.IsScreenConfigurationPossibleEnabled, Mode=OneWay}">
                        <ToggleSwitch IsOn="{x:Bind ViewModel.KeepDisplayOn, Mode=TwoWay}" />
                    </tkcontrols:SettingsCard>
                </controls:SettingsGroup>
            </StackPanel>
        </controls:SettingsPageControl.ModuleContent>

        <controls:SettingsPageControl.PrimaryLinks>
            <controls:PageLink x:Uid="LearnMore_Awake" Link="https://aka.ms/PowerToysOverview_Awake" />
        </controls:SettingsPageControl.PrimaryLinks>
        <controls:SettingsPageControl.SecondaryLinks>
            <controls:PageLink x:Uid="SecondaryLink_Awake" Link="https://awake.den.dev" />
        </controls:SettingsPageControl.SecondaryLinks>
    </controls:SettingsPageControl>
</Page>
