MainPage.xaml 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. <Page
  2. x:Class="Maple_App.MainPage"
  3. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  4. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  5. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  6. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  7. xmlns:maple_app="using:Maple_App"
  8. xmlns:pickers="using:Windows.Storage.Pickers"
  9. xmlns:Windows10FallCreatorsUpdate="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract, 5)"
  10. xmlns:Windows10version1809="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract, 7)"
  11. mc:Ignorable="d"
  12. NavigationCacheMode="Required"
  13. Loaded="Page_Loaded">
  14. <Page.Resources>
  15. <maple_app:DateTimeConverter x:Key="DateTimeConverter"/>
  16. <pickers:FileOpenPicker x:Key="ImportFilePicker" x:Name="ImportFilePicker"/>
  17. </Page.Resources>
  18. <SplitView x:Name="MainSplitView" DisplayMode="Overlay" PaneClosing="MainSplitView_PaneClosing">
  19. <SplitView.Pane>
  20. <Pivot PivotItemLoaded="MainPivot_PivotItemLoaded">
  21. <PivotItem Header="Config" Margin="0">
  22. <Grid>
  23. <Grid.RowDefinitions>
  24. <RowDefinition Height="*"/>
  25. <RowDefinition Height="Auto"/>
  26. </Grid.RowDefinitions>
  27. <ListView
  28. x:Name="ConfigListView"
  29. Grid.Row="0"
  30. SelectionMode="Single"
  31. CanDragItems="True"
  32. AllowDrop="True"
  33. ItemsSource="{x:Bind ConfigItems, Mode=OneWay}"
  34. SelectionChanged="ConfigListView_SelectionChanged"
  35. DragItemsStarting="ConfigListView_DragItemsStarting"
  36. DragOver="ConfigListView_DragOver"
  37. Drop="ConfigListView_Drop">
  38. <ListView.ItemContainerStyle>
  39. <Style TargetType="ListViewItem">
  40. <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
  41. </Style>
  42. </ListView.ItemContainerStyle>
  43. <ListView.Resources>
  44. <MenuFlyout x:Key="ItemContextFlyout">
  45. <MenuFlyoutItem Icon="Favorite" Text="Set as Default" Click="ConfigSetAsDefaultMenuItem_Click"/>
  46. <MenuFlyoutItem Icon="Copy" Text="Duplicate" Click="ConfigDuplicateMenuItem_Click"/>
  47. <MenuFlyoutItem Icon="Rename" Text="Rename" Click="ConfigRenameMenuItem_Click">
  48. <Windows10FallCreatorsUpdate:MenuFlyoutItem.KeyboardAccelerators>
  49. <Windows10FallCreatorsUpdate:KeyboardAccelerator Key="F2" ScopeOwner="{x:Bind ConfigListView}"/>
  50. </Windows10FallCreatorsUpdate:MenuFlyoutItem.KeyboardAccelerators>
  51. </MenuFlyoutItem>
  52. <MenuFlyoutItem Icon="Delete" Text="Delete" Click="ConfigDeleteMenuItem_Click">
  53. <MenuFlyoutItem.Command>
  54. <Windows10version1809:StandardUICommand Kind="Delete"/>
  55. </MenuFlyoutItem.Command>
  56. </MenuFlyoutItem>
  57. </MenuFlyout>
  58. </ListView.Resources>
  59. <ListView.ItemTemplate>
  60. <DataTemplate x:DataType="maple_app:ConfigViewModel">
  61. <Grid
  62. HorizontalAlignment="Stretch"
  63. VerticalAlignment="Stretch"
  64. ContextFlyout="{StaticResource ItemContextFlyout}"
  65. DoubleTapped="ConfigItem_DoubleTapped">
  66. <Grid.RowDefinitions>
  67. <RowDefinition Height="Auto"/>
  68. <RowDefinition Height="Auto"/>
  69. </Grid.RowDefinitions>
  70. <Grid.ColumnDefinitions>
  71. <ColumnDefinition Width="0"/>
  72. <ColumnDefinition Width="*"/>
  73. </Grid.ColumnDefinitions>
  74. <Rectangle
  75. Grid.Row="0"
  76. Grid.RowSpan="2"
  77. Grid.Column="0"
  78. Margin="-12, 6, 4, 6"
  79. Fill="{ThemeResource SystemAccentColor}"
  80. Visibility="{x:Bind IsDefault, Mode=OneWay}"/>
  81. <TextBlock
  82. Grid.Row="0"
  83. Grid.Column="1"
  84. Text="{x:Bind Name, Mode=OneWay}"/>
  85. <TextBlock
  86. Grid.Row="1"
  87. Grid.Column="1"
  88. Text="{x:Bind DateUpdated, Mode=OneWay, Converter={StaticResource DateTimeConverter}}"
  89. Style="{ThemeResource CaptionTextBlockStyle}"
  90. Foreground="{ThemeResource SystemControlPageTextBaseMediumBrush}"/>
  91. </Grid>
  92. </DataTemplate>
  93. </ListView.ItemTemplate>
  94. </ListView>
  95. <CommandBar Grid.Row="1">
  96. <AppBarButton Icon="Add" Label="Add">
  97. <AppBarButton.Flyout>
  98. <MenuFlyout Placement="Top">
  99. <MenuFlyoutItem Text="Conf" Click="ConfigCreateMenuItem_Click"/>
  100. <MenuFlyoutItem Text="JSON" Click="ConfigCreateMenuItem_Click"/>
  101. <MenuFlyoutSeparator/>
  102. <MenuFlyoutItem Text="Import…" Click="ConfigImportMenuItem_Click"/>
  103. </MenuFlyout>
  104. </AppBarButton.Flyout>
  105. </AppBarButton>
  106. </CommandBar>
  107. <ContentDialog
  108. x:Name="RenameDialog"
  109. Height="10"
  110. Title="Specify a new file name"
  111. PrimaryButtonText="Rename"
  112. SecondaryButtonText="Close"
  113. PrimaryButtonClick="RenameDialogPrimaryButton_Click">
  114. <ContentDialog.SecondaryButtonCommand>
  115. <Windows10version1809:StandardUICommand Kind="Close"/>
  116. </ContentDialog.SecondaryButtonCommand>
  117. <TextBox
  118. x:Name="RenameDialogText"
  119. MaxLength="100"
  120. Height="32"
  121. AcceptsReturn="False"
  122. TextWrapping="NoWrap"
  123. KeyDown="RenameDialogText_KeyDown"/>
  124. </ContentDialog>
  125. </Grid>
  126. </PivotItem>
  127. <PivotItem Header="Setting">
  128. <ScrollViewer>
  129. <StackPanel>
  130. <TextBlock Margin="0, 18" Text="Network Interface" Style="{ThemeResource TitleTextBlockStyle}"/>
  131. <TextBlock
  132. Text="Choose a default network interface for DNS and outbound connections"
  133. TextWrapping="WrapWholeWords"/>
  134. <ComboBox
  135. x:Name="NetifCombobox"
  136. HorizontalAlignment="Stretch"
  137. Margin="0, 8"
  138. DisplayMemberPath="Desc"
  139. SelectedValuePath="Addr"
  140. SelectionChanged="NetifCombobox_SelectionChanged"/>
  141. <TextBlock Margin="0, 18" Text="VPN Connection" Style="{ThemeResource TitleTextBlockStyle}"/>
  142. <TextBlock Margin="0, 0, 0, 18" TextWrapping="WrapWholeWords">
  143. <Run Text="Connect to Maple in the"/>
  144. <Hyperlink TextDecorations="None" NavigateUri="ms-settings:network-vpn">
  145. <Run Text="Windows Settings"/>
  146. </Hyperlink>
  147. <Run Text="app."/>
  148. </TextBlock>
  149. <TextBlock
  150. Margin="0, 0, 0, 8"
  151. Foreground="{ThemeResource SystemControlPageTextBaseMediumBrush}"
  152. TextWrapping="WrapWholeWords">
  153. <Run Text="For first time connection, create a VPN profile with provider"/>
  154. <Run FontFamily="Consolas" Text="Maple"/>
  155. <Run Text="and server name"/>
  156. <Run FontFamily="Consolas" Text="maple"/>
  157. <Run Text=". Alternatively, select &quot;Generate Profile&quot; to create one automatically."/>
  158. </TextBlock>
  159. <Button Content="Generate Profile" Click="GenerateProfileButton_Click"/>
  160. <TextBlock Margin="0, 18" Text="About" Style="{ThemeResource TitleTextBlockStyle}"/>
  161. <HyperlinkButton Padding="0" Content="Homepage" NavigateUri="https://github.com/YtFlow/Maple"/>
  162. <HyperlinkButton Padding="0" Content="Report Issues" NavigateUri="https://github.com/YtFlow/Maple/issues"/>
  163. <HyperlinkButton Padding="0" Content="License" NavigateUri="https://github.com/YtFlow/Maple/blob/main/LICENSE"/>
  164. <TextBlock Margin="0, 20, 0, 0" TextWrapping="WrapWholeWords">
  165. <Run>This product contains a</Run>
  166. <Hyperlink NavigateUri="https://github.com/YtFlow/leaf" TextDecorations="None">
  167. <Run>modified version</Run>
  168. </Hyperlink>
  169. <Run>of</Run>
  170. <Hyperlink NavigateUri="https://github.com/eycorsican/leaf" TextDecorations="None">
  171. <Run>eycorsican/leaf</Run>
  172. </Hyperlink>
  173. <Run>under</Run>
  174. <Hyperlink NavigateUri="https://github.com/eycorsican/leaf/blob/master/LICENSE" TextDecorations="None">
  175. <Run>Apache License 2.0</Run>
  176. </Hyperlink>
  177. <Run>.</Run>
  178. </TextBlock>
  179. </StackPanel>
  180. </ScrollViewer>
  181. </PivotItem>
  182. </Pivot>
  183. </SplitView.Pane>
  184. <Frame x:Name="MainContentFrame" CacheSize="0"/>
  185. <VisualStateManager.VisualStateGroups>
  186. <VisualStateGroup CurrentStateChanged="WindowWidth_CurrentStateChanged">
  187. <VisualState>
  188. <VisualState.StateTriggers>
  189. <AdaptiveTrigger MinWindowWidth="600"/>
  190. </VisualState.StateTriggers>
  191. <VisualState.Setters>
  192. <Setter Target="MainSplitView.DisplayMode" Value="Inline"/>
  193. <Setter Target="MainSplitView.IsPaneOpen" Value="True"/>
  194. </VisualState.Setters>
  195. </VisualState>
  196. </VisualStateGroup>
  197. </VisualStateManager.VisualStateGroups>
  198. </SplitView>
  199. </Page>