Add project files.
This commit is contained in:
1 parent
15580a15f2
commit
c9895f1960
76 files changed
+2770
No files matched your search
@@ -0,0 +1,12 @@
|
||||
<Page
|
||||
x:Class="GZStudio.Views.AppListPage"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="d">
|
||||
|
||||
<Grid x:Name="ContentArea">
|
||||
|
||||
</Grid>
|
||||
</Page>
|
||||
@@ -0,0 +1,19 @@
|
||||
using GZStudio.ViewModels;
|
||||
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
|
||||
namespace GZStudio.Views;
|
||||
|
||||
public sealed partial class AppListPage : Page
|
||||
{
|
||||
public AppListViewModel ViewModel
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
public AppListPage()
|
||||
{
|
||||
ViewModel = App.GetService<AppListViewModel>();
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
<Page
|
||||
x:Class="GZStudio.Views.SettingsPage"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:helpers="using:GZStudio.Helpers"
|
||||
xmlns:xaml="using:Microsoft.UI.Xaml"
|
||||
mc:Ignorable="d">
|
||||
<Page.Resources>
|
||||
<helpers:EnumToBooleanConverter x:Key="EnumToBooleanConverter" />
|
||||
</Page.Resources>
|
||||
<Grid>
|
||||
<StackPanel
|
||||
x:Name="ContentArea">
|
||||
<TextBlock x:Uid="Settings_Personalization" Style="{ThemeResource SubtitleTextBlockStyle}" />
|
||||
<StackPanel Margin="{StaticResource SmallTopBottomMargin}">
|
||||
<TextBlock x:Uid="Settings_Theme" />
|
||||
|
||||
<StackPanel Margin="{StaticResource XSmallTopMargin}">
|
||||
<RadioButton
|
||||
x:Uid="Settings_Theme_Light"
|
||||
Command="{x:Bind ViewModel.SwitchThemeCommand}"
|
||||
IsChecked="{x:Bind ViewModel.ElementTheme, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter=Light, Mode=OneWay}"
|
||||
FontSize="15"
|
||||
GroupName="AppTheme">
|
||||
<RadioButton.CommandParameter>
|
||||
<xaml:ElementTheme>Light</xaml:ElementTheme>
|
||||
</RadioButton.CommandParameter>
|
||||
</RadioButton>
|
||||
<RadioButton
|
||||
x:Uid="Settings_Theme_Dark"
|
||||
Command="{x:Bind ViewModel.SwitchThemeCommand}"
|
||||
IsChecked="{x:Bind ViewModel.ElementTheme, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter=Dark, Mode=OneWay}"
|
||||
FontSize="15"
|
||||
GroupName="AppTheme">
|
||||
<RadioButton.CommandParameter>
|
||||
<xaml:ElementTheme>Dark</xaml:ElementTheme>
|
||||
</RadioButton.CommandParameter>
|
||||
</RadioButton>
|
||||
<RadioButton
|
||||
x:Uid="Settings_Theme_Default"
|
||||
Command="{x:Bind ViewModel.SwitchThemeCommand}"
|
||||
IsChecked="{x:Bind ViewModel.ElementTheme, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter=Default, Mode=OneWay}"
|
||||
FontSize="15"
|
||||
GroupName="AppTheme">
|
||||
<RadioButton.CommandParameter>
|
||||
<xaml:ElementTheme>Default</xaml:ElementTheme>
|
||||
</RadioButton.CommandParameter>
|
||||
</RadioButton>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
|
||||
<TextBlock x:Uid="Settings_About" Style="{ThemeResource SubtitleTextBlockStyle}" />
|
||||
|
||||
<StackPanel Margin="{StaticResource XSmallTopMargin}">
|
||||
<TextBlock Text="{x:Bind ViewModel.VersionDescription, Mode=OneWay}" Style="{ThemeResource BodyTextBlockStyle}" />
|
||||
|
||||
<TextBlock
|
||||
x:Uid="Settings_AboutDescription"
|
||||
Margin="{StaticResource XSmallTopMargin}"
|
||||
Style="{ThemeResource BodyTextBlockStyle}" />
|
||||
<HyperlinkButton x:Uid="SettingsPage_PrivacyTermsLink" Margin="{StaticResource SettingsPageHyperlinkButtonMargin}" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Page>
|
||||
@@ -0,0 +1,20 @@
|
||||
using GZStudio.ViewModels;
|
||||
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
|
||||
namespace GZStudio.Views;
|
||||
|
||||
// TODO: Set the URL for your privacy policy by updating SettingsPage_PrivacyTermsLink.NavigateUri in Resources.resw.
|
||||
public sealed partial class SettingsPage : Page
|
||||
{
|
||||
public SettingsViewModel ViewModel
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
public SettingsPage()
|
||||
{
|
||||
ViewModel = App.GetService<SettingsViewModel>();
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
<Page
|
||||
x:Class="GZStudio.Views.ShellPage"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:helpers="using:GZStudio.Helpers"
|
||||
xmlns:behaviors="using:GZStudio.Behaviors"
|
||||
xmlns:i="using:Microsoft.Xaml.Interactivity"
|
||||
Loaded="OnLoaded">
|
||||
|
||||
<Grid>
|
||||
<Grid x:Name="AppTitleBar"
|
||||
Canvas.ZIndex="1"
|
||||
Height="{Binding ElementName=NavigationViewControl, Path=CompactPaneLength}"
|
||||
IsHitTestVisible="True"
|
||||
VerticalAlignment="Top">
|
||||
<Image Source="/Assets/WindowIcon.ico"
|
||||
HorizontalAlignment="Left"
|
||||
Width="16"
|
||||
Height="16" />
|
||||
<TextBlock x:Name="AppTitleBarText"
|
||||
VerticalAlignment="Center"
|
||||
TextWrapping="NoWrap"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Margin="28,0,0,0"/>
|
||||
</Grid>
|
||||
<NavigationView
|
||||
x:Name="NavigationViewControl"
|
||||
Canvas.ZIndex="0"
|
||||
IsBackButtonVisible="Visible"
|
||||
IsBackEnabled="{x:Bind ViewModel.IsBackEnabled, Mode=OneWay}"
|
||||
SelectedItem="{x:Bind ViewModel.Selected, Mode=OneWay}"
|
||||
IsSettingsVisible="True"
|
||||
ExpandedModeThresholdWidth="1280"
|
||||
DisplayModeChanged="NavigationViewControl_DisplayModeChanged"
|
||||
Header="{x:Bind ((ContentControl)ViewModel.Selected).Content, Mode=OneWay}">
|
||||
<NavigationView.MenuItems>
|
||||
<!--
|
||||
TODO: Update item titles by updating <x:Uid>.Content entries in Strings/en-us/Resources.resw.
|
||||
https://docs.microsoft.com/windows/uwp/app-resources/localize-strings-ui-manifest#refer-to-a-string-resource-identifier-from-xaml
|
||||
|
||||
TODO: Update item icons by updating FontIcon.Glyph properties.
|
||||
https://docs.microsoft.com/windows/apps/design/style/segoe-fluent-icons-font#icon-list
|
||||
-->
|
||||
<NavigationViewItem x:Uid="Shell_AppList" helpers:NavigationHelper.NavigateTo="GZStudio.ViewModels.AppListViewModel">
|
||||
<NavigationViewItem.Icon>
|
||||
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}" Glyph=""/>
|
||||
</NavigationViewItem.Icon>
|
||||
</NavigationViewItem>
|
||||
</NavigationView.MenuItems>
|
||||
<NavigationView.HeaderTemplate>
|
||||
<DataTemplate>
|
||||
<Grid>
|
||||
<TextBlock
|
||||
Text="{Binding}"
|
||||
Style="{ThemeResource TitleTextBlockStyle}" />
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</NavigationView.HeaderTemplate>
|
||||
<i:Interaction.Behaviors>
|
||||
<behaviors:NavigationViewHeaderBehavior
|
||||
DefaultHeader="{x:Bind ((ContentControl)ViewModel.Selected).Content, Mode=OneWay}">
|
||||
<behaviors:NavigationViewHeaderBehavior.DefaultHeaderTemplate>
|
||||
<DataTemplate>
|
||||
<Grid>
|
||||
<TextBlock
|
||||
Text="{Binding}"
|
||||
Style="{ThemeResource TitleTextBlockStyle}" />
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</behaviors:NavigationViewHeaderBehavior.DefaultHeaderTemplate>
|
||||
</behaviors:NavigationViewHeaderBehavior>
|
||||
</i:Interaction.Behaviors>
|
||||
<Grid Margin="{StaticResource NavigationViewPageContentMargin}">
|
||||
<Frame x:Name="NavigationFrame" />
|
||||
</Grid>
|
||||
</NavigationView>
|
||||
</Grid>
|
||||
</Page>
|
||||
@@ -0,0 +1,85 @@
|
||||
using GZStudio.Contracts.Services;
|
||||
using GZStudio.Helpers;
|
||||
using GZStudio.ViewModels;
|
||||
|
||||
using Microsoft.UI.Xaml;
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
using Microsoft.UI.Xaml.Input;
|
||||
using Microsoft.UI.Xaml.Media;
|
||||
|
||||
using Windows.System;
|
||||
|
||||
namespace GZStudio.Views;
|
||||
|
||||
// TODO: Update NavigationViewItem titles and icons in ShellPage.xaml.
|
||||
public sealed partial class ShellPage : Page
|
||||
{
|
||||
public ShellViewModel ViewModel
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
public ShellPage(ShellViewModel viewModel)
|
||||
{
|
||||
ViewModel = viewModel;
|
||||
InitializeComponent();
|
||||
|
||||
ViewModel.NavigationService.Frame = NavigationFrame;
|
||||
ViewModel.NavigationViewService.Initialize(NavigationViewControl);
|
||||
|
||||
// TODO: Set the title bar icon by updating /Assets/WindowIcon.ico.
|
||||
// A custom title bar is required for full window theme and Mica support.
|
||||
// https://docs.microsoft.com/windows/apps/develop/title-bar?tabs=winui3#full-customization
|
||||
App.MainWindow.ExtendsContentIntoTitleBar = true;
|
||||
App.MainWindow.SetTitleBar(AppTitleBar);
|
||||
App.MainWindow.Activated += MainWindow_Activated;
|
||||
AppTitleBarText.Text = "AppDisplayName".GetLocalized();
|
||||
}
|
||||
|
||||
private void OnLoaded(object sender, Microsoft.UI.Xaml.RoutedEventArgs e)
|
||||
{
|
||||
TitleBarHelper.UpdateTitleBar(RequestedTheme);
|
||||
|
||||
KeyboardAccelerators.Add(BuildKeyboardAccelerator(VirtualKey.Left, VirtualKeyModifiers.Menu));
|
||||
KeyboardAccelerators.Add(BuildKeyboardAccelerator(VirtualKey.GoBack));
|
||||
}
|
||||
|
||||
private void MainWindow_Activated(object sender, WindowActivatedEventArgs args)
|
||||
{
|
||||
App.AppTitlebar = AppTitleBarText as UIElement;
|
||||
}
|
||||
|
||||
private void NavigationViewControl_DisplayModeChanged(NavigationView sender, NavigationViewDisplayModeChangedEventArgs args)
|
||||
{
|
||||
AppTitleBar.Margin = new Thickness()
|
||||
{
|
||||
Left = sender.CompactPaneLength * (sender.DisplayMode == NavigationViewDisplayMode.Minimal ? 2 : 1),
|
||||
Top = AppTitleBar.Margin.Top,
|
||||
Right = AppTitleBar.Margin.Right,
|
||||
Bottom = AppTitleBar.Margin.Bottom
|
||||
};
|
||||
}
|
||||
|
||||
private static KeyboardAccelerator BuildKeyboardAccelerator(VirtualKey key, VirtualKeyModifiers? modifiers = null)
|
||||
{
|
||||
var keyboardAccelerator = new KeyboardAccelerator() { Key = key };
|
||||
|
||||
if (modifiers.HasValue)
|
||||
{
|
||||
keyboardAccelerator.Modifiers = modifiers.Value;
|
||||
}
|
||||
|
||||
keyboardAccelerator.Invoked += OnKeyboardAcceleratorInvoked;
|
||||
|
||||
return keyboardAccelerator;
|
||||
}
|
||||
|
||||
private static void OnKeyboardAcceleratorInvoked(KeyboardAccelerator sender, KeyboardAcceleratorInvokedEventArgs args)
|
||||
{
|
||||
var navigationService = App.GetService<INavigationService>();
|
||||
|
||||
var result = navigationService.GoBack();
|
||||
|
||||
args.Handled = result;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user