Files
bodyshop-uploader/BodyshopUploader/Views/Main.xaml

237 lines
12 KiB
XML

<Window x:Class="BodyshopPartner.Views.Main"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:p="clr-namespace:BodyshopPartner.Properties"
xmlns:properties="clr-namespace:BodyshopPartner.Properties"
xmlns:util="clr-namespace:BodyshopPartner.Utils"
xmlns:vm="clr-namespace:BodyshopPartner.ViewModels"
xmlns:tb="http://www.hardcodet.net/taskbar"
mc:Ignorable="d"
Title="{x:Static p:Resources.Title_Main}"
Height="600"
Width="800"
Loaded="Window_Loaded"
Closing="Window_Closing"
xmlns:ui="http://schemas.modernwpf.com/2019"
ui:WindowHelper.UseModernWindowStyle="True">
<Window.DataContext>
<vm:MainViewModel />
</Window.DataContext>
<Window.Resources>
<util:OpenMainWindowCommand x:Key="OpenMainWindowCommand" />
<util:MonitorStatusConverter x:Key="MonitorStatusConverter" />
<util:BoolVisibilityConverter x:Key="BoolVisibilityConverter" />
<Style TargetType="StackPanel">
<Setter Property="Margin"
Value="8" />
</Style>
<Style TargetType="TextBox">
<Setter Property="Margin"
Value="8" />
</Style>
<Style TargetType="materialDesign:PackIcon">
<Setter Property="Margin"
Value="8" />
</Style>
<Style TargetType="Image">
<Setter Property="Margin"
Value="8" />
</Style>
</Window.Resources>
<DockPanel>
<ProgressBar DockPanel.Dock="Bottom"
Value="{Binding Progress}"
IsIndeterminate="{Binding IndeterminateLoading}"
Height="8" />
<tb:TaskbarIcon DockPanel.Dock="Top"
IconSource="../favicon.ico"
DoubleClickCommand="{StaticResource OpenMainWindowCommand}"
PopupActivation="LeftClick"
MenuActivation="RightClick"
ToolTipText="Bodyshop Uploader">
<tb:TaskbarIcon.TrayPopup>
<Border BorderBrush="Black"
BorderThickness="2">
<DockPanel Margin="12">
<TextBlock DockPanel.Dock="Top"
Text="{x:Static p:Resources.Label_MonitorStatus}" />
<ItemsControl ItemsSource="{Binding MonitoringPaths}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
Margin="8"
Text="{Binding FilePath}" />
<TextBlock Grid.Column="1"
Margin="8"
Text="{Binding FolderMonitor.EnableRaisingEvents,
Converter={StaticResource MonitorStatusConverter}}" />
</Grid>
<Separator Margin="2"
Width="150" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DockPanel>
</Border>
</tb:TaskbarIcon.TrayPopup>
<tb:TaskbarIcon.ContextMenu>
<ContextMenu>
<MenuItem Header="{x:Static p:Resources.Label_Restart}"
Command="{Binding StartFolderMonitorsCommand}" />
<MenuItem Header="{x:Static p:Resources.Label_StopAllMonitors}"
Command="{Binding StopFolderMonitorsCommand}" />
<MenuItem Header="Exit"
Command="{Binding QuitCommand}" />
</ContextMenu>
</tb:TaskbarIcon.ContextMenu>
</tb:TaskbarIcon>
<StackPanel DockPanel.Dock="Right">
<ComboBox ItemsSource="{Binding ShopData}"
Margin="4"
SelectedItem="{Binding ActiveShop}"
materialDesign:HintAssist.Hint="{x:Static p:Resources.Label_ActiveShop}"
DisplayMemberPath="ShopName">
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel />
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>
<Button Command="{Binding LogoutCommand, UpdateSourceTrigger=PropertyChanged}"
Margin="8"
Style="{StaticResource }"
Content="{x:Static p:Resources.Actions_Logout}" />
<Separator />
<CheckBox IsChecked="{Binding Source={x:Static p:Settings.Default}, Path=AutoStartMonitor}"
Margin="8"
Content="{x:Static p:Resources.Label_AutoStartMonitor}" />
<CheckBox IsChecked="{Binding Source={x:Static p:Settings.Default}, Path=StartWithWindows}"
Margin="8"
Content="{x:Static p:Resources.Label_StartWithWindows}"
Command="{Binding StartWithWindowsCommand}"
CommandParameter="{Binding Source={x:Static p:Settings.Default}, Path=StartWithWindows}" />
<Separator />
<!--<Button DockPanel.Dock="Top"
Margin="8"
Command="{Binding TestCommand}"
Content="DEVELOPER TEST" />-->
<Label DockPanel.Dock="Top"
Margin="8"
HorizontalAlignment="Center"
Content="{Binding AppVersion}" />
<StackPanel Visibility="{Binding UpdateAvailable, Converter={StaticResource BoolVisibilityConverter}}">
<Button Content="Update"
Command="{Binding InstallUpdatesCommand}" />
<ProgressBar Margin="8"
Value="{Binding UpdateProgress}" />
</StackPanel>
</StackPanel>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<DockPanel Grid.Row="0">
<StackPanel Orientation="Horizontal" DockPanel.Dock="Top">
<Button Command="{Binding AddMonitoringPathCommand, UpdateSourceTrigger=PropertyChanged}"
Margin="8"
ToolTip="{x:Static p:Resources.Label_AddMonitoringPath}"
Content="{x:Static p:Resources.Label_AddFolder}" />
<Button Command="{Binding StartFolderMonitorsCommand, UpdateSourceTrigger=PropertyChanged}"
Margin="8"
Content="{x:Static p:Resources.Label_StartAllMonitors}" />
<Button Command="{Binding StopFolderMonitorsCommand, UpdateSourceTrigger=PropertyChanged}"
Margin="8"
Content="{x:Static p:Resources.Label_StopAllMonitors}" />
</StackPanel>
<DataGrid
ItemsSource="{Binding MonitoringPaths}"
AutoGenerateColumns="False"
VerticalContentAlignment="Center"
IsReadOnly="True"
HorizontalContentAlignment="Center"
Margin="8"
HeadersVisibility="Column"
CanUserAddRows="False"
CanUserSortColumns="True">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding FilePath}"
Header="{x:Static p:Resources.Label_FilePath}" />
<DataGridTextColumn Binding="{Binding FolderMonitor.EnableRaisingEvents, Converter={StaticResource MonitorStatusConverter}}"
Header="{x:Static p:Resources.Label_Status}" />
<DataGridTemplateColumn Header="{x:Static p:Resources.Label_Actions}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Button Command="{Binding DataContext.RemoveMonitoringPathCommand,
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"
CommandParameter="{Binding .}"
Margin="4"
Content="{x:Static p:Resources.Label_Remove}" />
<Button Command="{Binding DataContext.RestartMonitoringPathCommand,
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"
CommandParameter="{Binding .}"
Margin="4"
Content="{x:Static p:Resources.Label_Restart}" />
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</DockPanel>
<DockPanel Grid.Row="1"
Height="Auto">
<Grid DockPanel.Dock="Top">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0"
IsReadOnly="True"
Text="{Binding Source={x:Static properties:Settings.Default},
Path=QuickBooksFilePath}"
ui:TextBoxHelper.IsEnabled="False"
ToolTip="{x:Static p:Resources.Label_QbFilePath}"
materialDesign:HintAssist.Hint="{x:Static p:Resources.Label_QbFilePath}"
TextChanged="TextBox_TextChanged" />
<Button Grid.Column="1" Command="{Binding BrowseForQbFolderCommand, UpdateSourceTrigger=PropertyChanged}"
Margin="8"
Style="{StaticResource AccentButtonStyle}"
Content="{x:Static p:Resources.Label_BrowseForQb}" />
</Grid>
<TextBox Height="Auto"
materialDesign:HintAssist.Hint="{x:Static p:Resources.Label_InteractionLog}"
Text="{Binding HttpServerLog}"
TextWrapping="Wrap"
IsReadOnly="True"
AcceptsReturn="True" />
</DockPanel>
</Grid>
</DockPanel>
</Window>