MainPage.xaml 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  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. <Grid>
  19. <Grid.RowDefinitions>
  20. <RowDefinition Height="Auto" />
  21. <RowDefinition />
  22. </Grid.RowDefinitions>
  23. <Grid.ColumnDefinitions>
  24. <ColumnDefinition x:Name="LeftPaddingColumn" Width="0"/>
  25. <ColumnDefinition />
  26. <ColumnDefinition x:Name="RightPaddingColumn" Width="0"/>
  27. </Grid.ColumnDefinitions>
  28. <Grid Grid.Column="1" x:Name="CustomTitleBar" Height="32" Background="Transparent">
  29. <TextBlock
  30. x:Name="AppTitleTextBlock"
  31. Text="Maple"
  32. VerticalAlignment="Center"
  33. FontSize="13"
  34. Margin="12, 0, 0, 0"/>
  35. </Grid>
  36. <Grid
  37. x:Name="ConnectionToggleSwitchContainer"
  38. Grid.Column="1"
  39. HorizontalAlignment="Right"
  40. VerticalAlignment="Center"
  41. Background="Transparent">
  42. <ToolTipService.ToolTip>
  43. <ToolTip x:Name="NoProfileToggleTooltip">
  44. Maple VPN profile is not ready. Please check Setting page for more information.
  45. </ToolTip>
  46. </ToolTipService.ToolTip>
  47. <ToggleSwitch x:Name="ConnectionToggleSwitch" IsEnabled="False">
  48. <ToggleSwitch.RenderTransform>
  49. <CompositeTransform ScaleX=".8" ScaleY=".8" TranslateX="90" TranslateY="3" />
  50. </ToggleSwitch.RenderTransform>
  51. </ToggleSwitch>
  52. </Grid>
  53. <SplitView
  54. x:Name="MainSplitView"
  55. RequestedTheme="Light"
  56. Grid.Row="1"
  57. Grid.ColumnSpan="3"
  58. DisplayMode="Overlay"
  59. PaneClosing="MainSplitView_PaneClosing"
  60. Background="White" >
  61. <SplitView.Pane>
  62. <Pivot x:Name="MainPivot" PivotItemLoaded="MainPivot_PivotItemLoaded">
  63. <PivotItem Header="Config" Margin="0">
  64. <Grid>
  65. <Grid.RowDefinitions>
  66. <RowDefinition Height="*"/>
  67. <RowDefinition Height="Auto"/>
  68. </Grid.RowDefinitions>
  69. <ListView
  70. x:Name="ConfigListView"
  71. Grid.Row="0"
  72. SelectionMode="Single"
  73. CanDragItems="True"
  74. AllowDrop="True"
  75. ItemsSource="{x:Bind ConfigItems, Mode=OneWay}"
  76. SelectionChanged="ConfigListView_SelectionChanged"
  77. DragItemsStarting="ConfigListView_DragItemsStarting"
  78. DragOver="ConfigListView_DragOver"
  79. Drop="ConfigListView_Drop">
  80. <ListView.ItemContainerStyle>
  81. <Style TargetType="ListViewItem">
  82. <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
  83. </Style>
  84. </ListView.ItemContainerStyle>
  85. <ListView.Resources>
  86. <MenuFlyout x:Key="ItemContextFlyout">
  87. <MenuFlyoutItem Icon="Favorite" Text="Set as Default" Click="ConfigSetAsDefaultMenuItem_Click"/>
  88. <MenuFlyoutItem Icon="Copy" Text="Duplicate" Click="ConfigDuplicateMenuItem_Click"/>
  89. <MenuFlyoutItem Icon="Rename" Text="Rename" Click="ConfigRenameMenuItem_Click">
  90. <Windows10FallCreatorsUpdate:MenuFlyoutItem.KeyboardAccelerators>
  91. <Windows10FallCreatorsUpdate:KeyboardAccelerator Key="F2" ScopeOwner="{x:Bind ConfigListView}"/>
  92. </Windows10FallCreatorsUpdate:MenuFlyoutItem.KeyboardAccelerators>
  93. </MenuFlyoutItem>
  94. <MenuFlyoutItem Icon="Delete" Text="Delete" Click="ConfigDeleteMenuItem_Click">
  95. <MenuFlyoutItem.Command>
  96. <Windows10version1809:StandardUICommand Kind="Delete"/>
  97. </MenuFlyoutItem.Command>
  98. </MenuFlyoutItem>
  99. </MenuFlyout>
  100. </ListView.Resources>
  101. <ListView.ItemTemplate>
  102. <DataTemplate x:DataType="maple_app:ConfigViewModel">
  103. <Grid
  104. HorizontalAlignment="Stretch"
  105. VerticalAlignment="Stretch"
  106. ContextFlyout="{StaticResource ItemContextFlyout}"
  107. DoubleTapped="ConfigItem_DoubleTapped">
  108. <Grid.RowDefinitions>
  109. <RowDefinition Height="Auto"/>
  110. <RowDefinition Height="Auto"/>
  111. </Grid.RowDefinitions>
  112. <Grid.ColumnDefinitions>
  113. <ColumnDefinition Width="0"/>
  114. <ColumnDefinition Width="*"/>
  115. </Grid.ColumnDefinitions>
  116. <Rectangle
  117. Grid.Row="0"
  118. Grid.RowSpan="2"
  119. Grid.Column="0"
  120. Margin="-12, 6, 4, 6"
  121. Fill="{ThemeResource SystemAccentColor}"
  122. Visibility="{x:Bind IsDefault, Mode=OneWay}"/>
  123. <TextBlock
  124. Grid.Row="0"
  125. Grid.Column="1"
  126. Text="{x:Bind Name, Mode=OneWay}"/>
  127. <TextBlock
  128. Grid.Row="1"
  129. Grid.Column="1"
  130. Text="{x:Bind DateUpdated, Mode=OneWay, Converter={StaticResource DateTimeConverter}}"
  131. Style="{ThemeResource CaptionTextBlockStyle}"
  132. Foreground="{ThemeResource SystemControlPageTextBaseMediumBrush}"/>
  133. </Grid>
  134. </DataTemplate>
  135. </ListView.ItemTemplate>
  136. </ListView>
  137. <CommandBar Grid.Row="1">
  138. <AppBarButton Icon="Add" Label="Add">
  139. <AppBarButton.Flyout>
  140. <MenuFlyout Placement="Top">
  141. <MenuFlyoutItem Text="Conf" Click="ConfigCreateMenuItem_Click"/>
  142. <MenuFlyoutItem Text="JSON" Click="ConfigCreateMenuItem_Click"/>
  143. <MenuFlyoutSeparator/>
  144. <MenuFlyoutItem Text="Import…" Click="ConfigImportMenuItem_Click"/>
  145. </MenuFlyout>
  146. </AppBarButton.Flyout>
  147. </AppBarButton>
  148. </CommandBar>
  149. <ContentDialog
  150. x:Name="RenameDialog"
  151. Height="10"
  152. Title="Specify a new file name"
  153. PrimaryButtonText="Rename"
  154. SecondaryButtonText="Close"
  155. PrimaryButtonClick="RenameDialogPrimaryButton_Click">
  156. <ContentDialog.SecondaryButtonCommand>
  157. <Windows10version1809:StandardUICommand Kind="Close"/>
  158. </ContentDialog.SecondaryButtonCommand>
  159. <TextBox
  160. x:Name="RenameDialogText"
  161. MaxLength="100"
  162. Height="32"
  163. AcceptsReturn="False"
  164. TextWrapping="NoWrap"
  165. KeyDown="RenameDialogText_KeyDown"/>
  166. </ContentDialog>
  167. </Grid>
  168. </PivotItem>
  169. <PivotItem Header="Setting">
  170. <ScrollViewer>
  171. <StackPanel>
  172. <TextBlock Margin="0, 18" Text="Network Interface" Style="{ThemeResource TitleTextBlockStyle}"/>
  173. <TextBlock
  174. Text="Choose a default network interface for DNS and outbound connections"
  175. TextWrapping="WrapWholeWords"/>
  176. <ComboBox
  177. x:Name="NetifCombobox"
  178. HorizontalAlignment="Stretch"
  179. Margin="0, 8"
  180. DisplayMemberPath="Desc"
  181. SelectedValuePath="Addr"
  182. SelectionChanged="NetifCombobox_SelectionChanged"/>
  183. <TextBlock Margin="0, 18" Text="VPN Connection" Style="{ThemeResource TitleTextBlockStyle}"/>
  184. <TextBlock Margin="0, 0, 0, 18" TextWrapping="WrapWholeWords">
  185. <Run Text="Connect to Maple in the"/>
  186. <Hyperlink TextDecorations="None" NavigateUri="ms-settings:network-vpn">
  187. <Run Text="Windows Settings"/>
  188. </Hyperlink>
  189. <Run Text="app."/>
  190. </TextBlock>
  191. <TextBlock
  192. Margin="0, 0, 0, 8"
  193. Foreground="{ThemeResource SystemControlPageTextBaseMediumBrush}"
  194. TextWrapping="WrapWholeWords">
  195. <Run Text="For first time connection, create a VPN profile with provider"/>
  196. <Run FontFamily="Consolas" Text="Maple"/>
  197. <Run Text="and server name"/>
  198. <Run FontFamily="Consolas" Text="maple"/>
  199. <Run Text=". Alternatively, select &quot;Generate Profile&quot; to create one automatically (not recommended)."/>
  200. </TextBlock>
  201. <Button Content="Generate Profile" Click="GenerateProfileButton_Click"/>
  202. <TextBlock Margin="0, 18" Text="About" Style="{ThemeResource TitleTextBlockStyle}"/>
  203. <HyperlinkButton Padding="0" Content="Homepage" NavigateUri="https://github.com/YtFlow/Maple"/>
  204. <HyperlinkButton Padding="0" Content="Report Issues" NavigateUri="https://github.com/YtFlow/Maple/issues"/>
  205. <HyperlinkButton Padding="0" Content="License" NavigateUri="https://github.com/YtFlow/Maple/blob/main/LICENSE"/>
  206. <TextBlock Margin="0, 20, 0, 0" TextWrapping="WrapWholeWords">
  207. <Run>This product contains a</Run>
  208. <Hyperlink NavigateUri="https://github.com/YtFlow/leaf" TextDecorations="None">
  209. <Run>modified version</Run>
  210. </Hyperlink>
  211. <Run>of</Run>
  212. <Hyperlink NavigateUri="https://github.com/eycorsican/leaf" TextDecorations="None">
  213. <Run>eycorsican/leaf</Run>
  214. </Hyperlink>
  215. <Run>under</Run>
  216. <Hyperlink NavigateUri="https://github.com/eycorsican/leaf/blob/master/LICENSE" TextDecorations="None">
  217. <Run>Apache License 2.0</Run>
  218. </Hyperlink>
  219. <Run>.</Run>
  220. </TextBlock>
  221. </StackPanel>
  222. </ScrollViewer>
  223. </PivotItem>
  224. </Pivot>
  225. </SplitView.Pane>
  226. <Frame x:Name="MainContentFrame" CacheSize="0" />
  227. </SplitView>
  228. <VisualStateManager.VisualStateGroups>
  229. <VisualStateGroup CurrentStateChanged="WindowWidth_CurrentStateChanged">
  230. <VisualState>
  231. <VisualState.StateTriggers>
  232. <AdaptiveTrigger MinWindowWidth="600"/>
  233. </VisualState.StateTriggers>
  234. <VisualState.Setters>
  235. <Setter Target="MainSplitView.DisplayMode" Value="Inline"/>
  236. <Setter Target="MainSplitView.IsPaneOpen" Value="True"/>
  237. </VisualState.Setters>
  238. </VisualState>
  239. </VisualStateGroup>
  240. </VisualStateManager.VisualStateGroups>
  241. </Grid>
  242. </Page>