mirror of
https://github.com/openziti/desktop-edge-win.git
synced 2026-09-18 16:55:26 +00:00
608 lines
37 KiB
XML
608 lines
37 KiB
XML
<!--
|
|
Copyright NetFoundry Inc.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
https://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
<Window x:Class="ZitiDesktopEdge.MainWindow"
|
|
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:local="clr-namespace:ZitiDesktopEdge"
|
|
xmlns:debug="clr-namespace:Ziti.Desktop.Edge.Views.Screens"
|
|
xmlns:utils="clr-namespace:Ziti.Desktop.Edge.Utils"
|
|
mc:Ignorable="d"
|
|
ShowInTaskbar="False"
|
|
x:Name="MainUI"
|
|
Title="Ziti Desktop Edge"
|
|
Width="{StaticResource MaxWindowWidth}"
|
|
MaxWidth="{StaticResource MaxWindowWidth}"
|
|
ResizeMode="NoResize"
|
|
ClipToBounds="False"
|
|
Icon="Assets/Images/icon.png"
|
|
Closing="Window_Closing"
|
|
PreviewMouseDown="MainUI_PreviewMouseDown"
|
|
Loaded="MainWindow_Loaded" Background="#000F0F23"
|
|
>
|
|
<Window.Resources>
|
|
<Style TargetType="Image">
|
|
<Setter Property="RenderOptions.BitmapScalingMode" Value="HighQuality" />
|
|
</Style>
|
|
<SolidColorBrush x:Key="ProgressBar.Progress" Color="#FF06B025"/>
|
|
<SolidColorBrush x:Key="ProgressBar.Background" Color="#FFE6E6E6"/>
|
|
<SolidColorBrush x:Key="ProgressBar.Border" Color="#FFBCBCBC"/>
|
|
<Style TargetType="{x:Type ProgressBar}">
|
|
<Setter Property="Foreground" Value="{StaticResource ProgressBar.Progress}"/>
|
|
<Setter Property="Background" Value="{StaticResource ProgressBar.Background}"/>
|
|
<Setter Property="BorderBrush" Value="{StaticResource ProgressBar.Border}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="{x:Type ProgressBar}">
|
|
<Grid x:Name="TemplateRoot">
|
|
<VisualStateManager.VisualStateGroups>
|
|
<VisualStateGroup x:Name="CommonStates">
|
|
<VisualState x:Name="Determinate"/>
|
|
<VisualState x:Name="Indeterminate">
|
|
<Storyboard RepeatBehavior="Forever">
|
|
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" Storyboard.TargetName="Animation">
|
|
<EasingDoubleKeyFrame KeyTime="0" Value="0.25"/>
|
|
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="0.25"/>
|
|
<EasingDoubleKeyFrame KeyTime="0:0:2" Value="0.25"/>
|
|
</DoubleAnimationUsingKeyFrames>
|
|
<PointAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransformOrigin)" Storyboard.TargetName="Animation">
|
|
<EasingPointKeyFrame KeyTime="0" Value="-0.5,0.5"/>
|
|
<EasingPointKeyFrame KeyTime="0:0:1" Value="0.5,0.5"/>
|
|
<EasingPointKeyFrame KeyTime="0:0:2" Value="1.5,0.5"/>
|
|
</PointAnimationUsingKeyFrames>
|
|
</Storyboard>
|
|
</VisualState>
|
|
</VisualStateGroup>
|
|
</VisualStateManager.VisualStateGroups>
|
|
<Border BorderBrush="{TemplateBinding BorderBrush}" CornerRadius="5" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}"/>
|
|
<Rectangle x:Name="PART_Track"/>
|
|
<Grid x:Name="PART_Indicator" ClipToBounds="true" HorizontalAlignment="Left">
|
|
<Rectangle x:Name="Indicator" Fill="{TemplateBinding Foreground}"/>
|
|
<Rectangle x:Name="Animation" Fill="{TemplateBinding Foreground}" RenderTransformOrigin="0.5,0.5">
|
|
<Rectangle.RenderTransform>
|
|
<TransformGroup>
|
|
<ScaleTransform/>
|
|
<SkewTransform/>
|
|
<RotateTransform/>
|
|
<TranslateTransform/>
|
|
</TransformGroup>
|
|
</Rectangle.RenderTransform>
|
|
</Rectangle>
|
|
</Grid>
|
|
</Grid>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="Orientation" Value="Vertical">
|
|
<Setter Property="LayoutTransform" TargetName="TemplateRoot">
|
|
<Setter.Value>
|
|
<RotateTransform Angle="-90"/>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Trigger>
|
|
<Trigger Property="IsIndeterminate" Value="true">
|
|
<Setter Property="Visibility" TargetName="Indicator" Value="Collapsed"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
<Style x:Key="SortLabelStyle" TargetType="Label">
|
|
<Setter Property="Foreground" Value="{StaticResource ColumnHeaderTextBrush}"/>
|
|
<Setter Property="FontSize" Value="13"/>
|
|
<Setter Property="HorizontalContentAlignment" Value="Center"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
<Setter Property="Padding" Value="0,4"/>
|
|
<Setter Property="Typography.Capitals" Value="AllSmallCaps"/>
|
|
</Style>
|
|
<Style x:Key="HeaderStackPanelStyle" TargetType="StackPanel">
|
|
<Setter Property="Orientation" Value="Horizontal"/>
|
|
<Setter Property="HorizontalAlignment" Value="Center"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
</Style>
|
|
<Style x:Key="SortArrowStyle" TargetType="TextBlock">
|
|
<Setter Property="FontSize" Value="10"/>
|
|
<Setter Property="Margin" Value="4,0,0,0"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
<Setter Property="Foreground" Value="{StaticResource ColumnHeaderTextBrush}"/>
|
|
</Style>
|
|
<ControlTemplate x:Key="AddIdentityContextMenuTemplate" TargetType="MenuItem">
|
|
<Border x:Name="ItemBorder"
|
|
Background="{TemplateBinding Background}"
|
|
Padding="10,10"
|
|
Margin="1,1"
|
|
BorderBrush="#555" BorderThickness="0">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock x:Name="ItemText" Text="{TemplateBinding Header}" VerticalAlignment="Center" Foreground="{StaticResource ContextMenuTextNormalBrush}" FontSize="16" />
|
|
</StackPanel>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="ItemBorder" Property="Background" Value="{StaticResource DarkBackgroundBrush}" />
|
|
<Setter TargetName="ItemText" Property="Foreground" Value="{StaticResource ContextMenuTextHoverBrush}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsHighlighted" Value="True">
|
|
<Setter TargetName="ItemBorder" Property="Background" Value="{StaticResource LightBackgroundBrush}" />
|
|
<Setter TargetName="ItemText" Property="Foreground" Value="White"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Window.Resources>
|
|
<Window.Triggers>
|
|
<EventTrigger RoutedEvent="Window.Loaded">
|
|
<BeginStoryboard>
|
|
<Storyboard Name="FormFade">
|
|
<DoubleAnimation Name="FormFadeAnimation" Storyboard.TargetName="MainUI" Storyboard.TargetProperty="(Window.Opacity)" From="0.0" To="1.0" Duration="0:0:0.5" AutoReverse="False" RepeatBehavior="1x" />
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</EventTrigger>
|
|
<EventTrigger RoutedEvent="Window.Unloaded">
|
|
<BeginStoryboard>
|
|
<Storyboard Name="FormFadeOut" Completed="FormFadeOut_Completed">
|
|
<DoubleAnimation Name="FormFadeOutAnimation" Storyboard.TargetName="MainUI" Storyboard.TargetProperty="(Window.Opacity)" From="1.0" To="0.0" Duration="0:0:0.5" AutoReverse="False" RepeatBehavior="1x" />
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</EventTrigger>
|
|
</Window.Triggers>
|
|
<Grid x:Name="MainGrid" Margin="0,0,0,0">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto" />
|
|
</Grid.ColumnDefinitions>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
<Border Margin="10,10,10,10" Name="UIBorder" BorderBrush="Black" BorderThickness="8" CornerRadius="10">
|
|
<Border.Effect>
|
|
<DropShadowEffect BlurRadius="15" Direction="1" RenderingBias="Quality" ShadowDepth="1" Opacity="1"/>
|
|
</Border.Effect>
|
|
</Border>
|
|
<Rectangle Margin="10,10,10,10" Name="BgColor" Stroke="Black" RadiusY="10" RadiusX="10" ClipToBounds="True">
|
|
<Rectangle.Fill>
|
|
<ImageBrush ImageSource="/Assets/Images/background.png" />
|
|
</Rectangle.Fill>
|
|
</Rectangle>
|
|
<StackPanel x:Name="MainView" Margin="10,10,10,-10" MinHeight="580" VerticalAlignment="Top">
|
|
<Grid HorizontalAlignment="Stretch">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="100"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="100"/>
|
|
</Grid.ColumnDefinitions>
|
|
<StackPanel x:Name="MainMenuButton" AutomationProperties.AutomationId="MainMenuButton" Grid.Column="0" Cursor="Hand" Orientation="Vertical" Margin="14,16,14,14" MouseLeftButtonUp="ShowMenu">
|
|
<Image Source="/Assets/Images/hamburger.png" Margin="5,0,0,-4" Width="26" Height="26" HorizontalAlignment="Left">
|
|
<Image.Effect>
|
|
<DropShadowEffect Color="white" BlurRadius="1" ShadowDepth="1" Direction="90" Opacity="1" />
|
|
</Image.Effect>
|
|
</Image>
|
|
<Label Content="MAIN" Foreground="White" Height="25" FontSize="10"></Label>
|
|
<Label Content="MENU" Foreground="White" Height="25" Margin="0,-14,0,0" FontSize="10"></Label>
|
|
</StackPanel>
|
|
<StackPanel Grid.Column="1" Orientation="Vertical" HorizontalAlignment="Stretch" Margin="0,12">
|
|
<Image x:Name="ZitiLogo"
|
|
Source="/Assets/Images/z.png"
|
|
Height="40"
|
|
RenderOptions.BitmapScalingMode="Fant"
|
|
MouseUp="HandleAttach"
|
|
MouseDown="Window_MouseDown"
|
|
Cursor="ScrollAll"
|
|
ToolTip="Drag to detach/move, right click to reattach"
|
|
/>
|
|
<Label x:Name="ConnectLabel"
|
|
Content="{Binding ConnectLabelContent}"
|
|
d:Content="Tap to Connect"
|
|
Margin="0,-3,0,0"
|
|
FontFamily="pack://application:,,,/Assets/Fonts/#Russo One"
|
|
FontSize="14"
|
|
Foreground="White"
|
|
HorizontalAlignment="Center"
|
|
/>
|
|
</StackPanel>
|
|
<StackPanel x:Name="AddIdAreaButton" AutomationProperties.AutomationId="AddIdAreaButton" Grid.Column="2" Cursor="Hand" Orientation="Vertical" Margin="14,16,14,14" MouseLeftButtonUp="AddIdentityContextMenu">
|
|
<Image Source="/Assets/Images/identity.png" Margin="0,0,5,-4" Width="26" Height="26" HorizontalAlignment="Right">
|
|
<Image.Effect>
|
|
<DropShadowEffect Color="white" BlurRadius="1" ShadowDepth="1" Direction="90" Opacity="1" />
|
|
</Image.Effect>
|
|
</Image>
|
|
<Label Content="ADD" Foreground="White" Height="25" FontSize="10" HorizontalAlignment="Right"></Label>
|
|
<Label Content="IDENTITY" Foreground="White" Height="25" Margin="0,-14,0,0" FontSize="10" HorizontalAlignment="Right"></Label>
|
|
<StackPanel.ContextMenu>
|
|
<ContextMenu>
|
|
<ContextMenu.Template>
|
|
<ControlTemplate TargetType="ContextMenu">
|
|
<Border Background="{StaticResource DarkBackgroundBrush}"
|
|
BorderBrush="Gray"
|
|
BorderThickness="3"
|
|
CornerRadius="10"
|
|
Padding="0">
|
|
<StackPanel>
|
|
<ItemsPresenter />
|
|
</StackPanel>
|
|
</Border>
|
|
</ControlTemplate>
|
|
</ContextMenu.Template>
|
|
|
|
<MenuItem Header="With JWT" Click="AddIdentity_Click"
|
|
Template="{StaticResource AddIdentityContextMenuTemplate}" />
|
|
<MenuItem Header="With URL" Click="WithUrl_Click"
|
|
Template="{StaticResource AddIdentityContextMenuTemplate}" />
|
|
</ContextMenu>
|
|
</StackPanel.ContextMenu>
|
|
|
|
</StackPanel>
|
|
</Grid>
|
|
<Canvas Name="ConnectButton" Cursor="Hand" Width="400" Height="160" MouseUp="StartZitiService" Visibility="Collapsed">
|
|
<Grid Width="{Binding ActualWidth, ElementName=ConnectButton}" Height="140">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="221*"/>
|
|
<ColumnDefinition Width="129*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<Image Source="/Assets/Images/connect.png" Height="140" HorizontalAlignment="Center" Grid.ColumnSpan="2" Margin="105,0" />
|
|
</Grid>
|
|
</Canvas>
|
|
<Canvas Name="DisconnectButton" Cursor="Hand" Width="400" Height="160" MouseUp="Disconnect" Visibility="Collapsed">
|
|
<Grid Width="{Binding ActualWidth, ElementName=DisconnectButton}" Height="140">
|
|
<Image Source="/Assets/Images/connected.png" Height="140" HorizontalAlignment="Center" />
|
|
</Grid>
|
|
<Grid Width="{Binding ActualWidth, ElementName=DisconnectButton}" Height="140">
|
|
<Label Name="ConnectedTime" HorizontalAlignment="Center" Content="00:00:00" Foreground="White" Padding="0,90,0,0"/>
|
|
</Grid>
|
|
<Grid Width="{Binding ActualWidth, ElementName=DisconnectButton}" Height="140">
|
|
<Label HorizontalAlignment="Center" Content="STOP" Foreground="White" Padding="0,105,0,0"/>
|
|
</Grid>
|
|
</Canvas>
|
|
<Grid x:Name="StatArea" HorizontalAlignment="Stretch" Width="Auto" Margin="0,30,0,0" Visibility="Collapsed">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<StackPanel Grid.Column="0" Orientation="Vertical">
|
|
<Grid HorizontalAlignment="Stretch" Width="Auto">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="40"/>
|
|
</Grid.ColumnDefinitions>
|
|
<Label Grid.Column="0" Content="Download Speed" Foreground="White" HorizontalAlignment="Right" FontSize="14" ></Label>
|
|
<Image Grid.Column="1" Source="/Assets/Images/down.png" Width="20" HorizontalAlignment="Left" Height="20"></Image>
|
|
</Grid>
|
|
<Label Name="DownloadSpeed" Margin="0,-16,0,0" Foreground="#0069FF" Content="0" FontSize="40" HorizontalAlignment="Center" />
|
|
<Label Name="DownloadSpeedLabel" Foreground="White" Margin="0,-20,0,30" Content="KBps" FontSize="11" HorizontalAlignment="Center" />
|
|
</StackPanel>
|
|
<StackPanel Grid.Column="1" Orientation="Vertical">
|
|
<Grid HorizontalAlignment="Stretch" Width="Auto">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="50"/>
|
|
</Grid.ColumnDefinitions>
|
|
<Label Grid.Column="0" Content="Upload Speed" Foreground="White" HorizontalAlignment="Right" FontSize="14" ></Label>
|
|
<Image Grid.Column="1" Source="/Assets/Images/up.png" Width="20" HorizontalAlignment="Left" Height="20"></Image>
|
|
</Grid>
|
|
<Label Name="UploadSpeed" Margin="0,-16,0,0" Foreground="#FF0047" Content="0" FontSize="40" HorizontalAlignment="Center" />
|
|
<Label Name="UploadSpeedLabel" Foreground="White" Margin="0,-20,0,30" Content="KBps" FontSize="11" HorizontalAlignment="Center" />
|
|
</StackPanel>
|
|
</Grid>
|
|
<Grid HorizontalAlignment="Stretch" Margin="0,8,0,8" Grid.IsSharedSizeScope="True">
|
|
<!-- Mock the grid definitions for identity items so the headers align with list items -->
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
</Grid.RowDefinitions>
|
|
<Grid Grid.Row="0" Visibility="{Binding ColumnHeaderVisibility}">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="6"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="6"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="30"/>
|
|
</Grid.ColumnDefinitions>
|
|
<Grid Grid.Column="0" Grid.Row="2">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="70" SharedSizeGroup="Status"/>
|
|
<ColumnDefinition Width="*" SharedSizeGroup="Name"/>
|
|
<ColumnDefinition Width="80" SharedSizeGroup="Services"/>
|
|
</Grid.ColumnDefinitions>
|
|
<StackPanel Grid.Column="0" Style="{StaticResource HeaderStackPanelStyle}" MouseDown="SortByStatus_Click">
|
|
<Label x:Name="SortByStatus" Content="Status" Style="{StaticResource SortLabelStyle}"/>
|
|
<TextBlock x:Name="SortByStatusArrow" Style="{StaticResource SortArrowStyle}" Text="{Binding SortArrowText}"
|
|
Visibility="{Binding StatusArrowVisibility}"/>
|
|
</StackPanel>
|
|
<StackPanel Grid.Column="1" Style="{StaticResource HeaderStackPanelStyle}" MouseDown="SortByName_Click"
|
|
HorizontalAlignment="Left">
|
|
<Label x:Name="SortByName" Content="Name" Style="{StaticResource SortLabelStyle}"/>
|
|
<TextBlock x:Name="SortByNameArrow" Style="{StaticResource SortArrowStyle}" Text="{Binding SortArrowText}"
|
|
Visibility="{Binding NameArrowVisibility}"/>
|
|
</StackPanel>
|
|
<StackPanel Grid.Column="2" Style="{StaticResource HeaderStackPanelStyle}" MouseDown="SortByServices_Click">
|
|
<Label x:Name="SortByServices" Content="Services" Style="{StaticResource SortLabelStyle}"/>
|
|
<TextBlock x:Name="SortByServicesArrow" Style="{StaticResource SortArrowStyle}" Text="{Binding SortArrowText}"
|
|
Visibility="{Binding ServicesArrowVisibility}"/>
|
|
</StackPanel>
|
|
</Grid>
|
|
<Rectangle Fill="White" Height="1" Opacity="0.1" Grid.ColumnSpan="2" Grid.Row="4" Margin="8,0"/>
|
|
</Grid>
|
|
<ScrollViewer Name="IdListScroller" MinHeight="60" HorizontalScrollBarVisibility="Hidden"
|
|
VerticalScrollBarVisibility="Auto" FocusVisualStyle="{x:Null}" CanContentScroll="True"
|
|
ClipToBounds="True" PanningMode="VerticalOnly" PanningRatio=".1" Grid.Row="1"
|
|
utils:WheelScroll.ByItem="True">
|
|
<StackPanel Name="IdList" Orientation="Vertical" IsItemsHost="False"
|
|
LayoutUpdated="IdList_LayoutUpdated" FocusVisualStyle="{x:Null}"/>
|
|
</ScrollViewer>
|
|
</Grid>
|
|
<Grid HorizontalAlignment="Stretch" Margin="0,20,0,10" Width="Auto">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<Label Name="AddIdButton" Padding="0,0,0,0" Grid.Column="0" Margin="0,0,0,0" Content="" Foreground="#0069FF" FontSize="12 " HorizontalAlignment="Center" VerticalAlignment="Center" ></Label>
|
|
</Grid>
|
|
<Border x:Name="AlternateTunnelFooter"
|
|
Visibility="Collapsed"
|
|
Margin="14,0,14,10"
|
|
Padding="10,6,10,6"
|
|
CornerRadius="4"
|
|
BorderThickness="1"
|
|
BorderBrush="#4AC84A"
|
|
Background="#1F2E23">
|
|
<TextBlock x:Name="AlternateTunnelFooterText"
|
|
Foreground="#CDEFD1"
|
|
FontFamily="Segoe UI"
|
|
FontSize="11"
|
|
TextWrapping="Wrap"
|
|
TextAlignment="Center"
|
|
Text=""/>
|
|
</Border>
|
|
</StackPanel>
|
|
<Canvas x:Name="AlertCanvas" ClipToBounds="False" Visibility="Collapsed">
|
|
<Image Source="/Assets/Images/UpdateWarn.png" Canvas.Left="50" Canvas.Top="32" Width="14" Height="14"></Image>
|
|
</Canvas>
|
|
<!-- Subtle "show welcome" affordance: a 26px question-mark circle in the bottom-right
|
|
corner of the window. Click to reopen the welcome screen. -->
|
|
<Border x:Name="HelpCircle"
|
|
Width="26" Height="26"
|
|
CornerRadius="13"
|
|
Background="#1676FE"
|
|
HorizontalAlignment="Right"
|
|
VerticalAlignment="Bottom"
|
|
Margin="0,0,18,18"
|
|
Cursor="Hand"
|
|
ToolTip="Show welcome screen"
|
|
MouseUp="HelpCircle_MouseUp">
|
|
<TextBlock Text="?"
|
|
Foreground="White"
|
|
FontFamily="pack://application:,,,/Assets/Fonts/#Open Sans"
|
|
FontSize="14"
|
|
FontWeight="Bold"
|
|
HorizontalAlignment="Center"
|
|
VerticalAlignment="Center"
|
|
Margin="0,-1,0,0"
|
|
IsHitTestVisible="False"/>
|
|
</Border>
|
|
<!-- Form for debugging -->
|
|
<!--debug:Debugging x:Name="DebugForm" Visibility="Collapsed" /-->
|
|
<!-- Menu UI -->
|
|
<local:MainMenu x:Name="MainMenu" Visibility="Collapsed"></local:MainMenu>
|
|
<!-- ID Detail UI -->
|
|
<local:IdentityDetails x:Name="IdentityMenu"
|
|
Visibility="Collapsed"
|
|
Height="{Binding ActualHeight, ElementName=MainView}"
|
|
d:Visibility="Visible"
|
|
OnMFAToggled="MFAToggled"
|
|
AuthenticateTOTP="ShowAuthenticate"
|
|
Recovery="ShowRecovery"
|
|
OnLoading="DoLoading"
|
|
OnShowMFA="ShowAuthenticate"
|
|
ShowBlurb="IdentityMenu_ShowBlurb"
|
|
CompleteExternalAuth="CompleteExternalAuthEvent"
|
|
/>
|
|
|
|
<!-- First-run / no-identities welcome (below ModalBg so the modal dim covers it
|
|
when AddIdentityByURL / AddIdentityCA open on top) -->
|
|
<local:GetStarted x:Name="GetStartedScreen"
|
|
Margin="0,0,0,0"
|
|
AddJwtRequested="GetStartedScreen_AddJwt"
|
|
AddUrlRequested="GetStartedScreen_AddUrl"
|
|
ClosedByUser="GetStartedScreen_ClosedByUser"/>
|
|
<!-- Modal Background -->
|
|
<Rectangle x:Name="ModalBg" MouseDown="Window_MouseDown" Margin="10,10,10,10" Fill="Black" RadiusY="10" RadiusX="10" Opacity="0" Visibility="Collapsed"></Rectangle>
|
|
<!-- MFA Setup Prompt -->
|
|
<local:MFAScreen x:Name="MFASetup" Visibility="Collapsed" Margin="0,0,0,0" OnClose="DoClose"></local:MFAScreen>
|
|
<local:AddIdentityUrl x:Name="AddIdentityByURL"
|
|
Visibility="Collapsed"
|
|
Margin="0,0,0,0"
|
|
OnClose="CloseJoinByUrl"
|
|
Height="Auto"
|
|
OnAddIdentity="OnAddIdentityAction"
|
|
OnNeedsSignerChoice="OnNeedsSignerChoiceAction" />
|
|
<local:AddIdentitySignerChoice x:Name="AddIdentitySignerPicker"
|
|
Visibility="Collapsed"
|
|
Margin="0,0,0,0"
|
|
OnClose="CloseJoinByUrl"
|
|
Height="Auto"
|
|
OnAddIdentity="OnAddIdentityAction" />
|
|
<local:AddIdentityCA x:Name="AddIdentityBy3rdPartyCA"
|
|
Visibility="Collapsed"
|
|
Margin="0,0,0,0"
|
|
OnClose="CloseJoinByUrl"
|
|
Height="Auto"
|
|
OnAddIdentity="OnAddIdentityAction" />
|
|
|
|
<!-- Small messages screen that opens at the bottom -->
|
|
<Grid x:Name="BlurbArea" Visibility="Collapsed" Height="80" Margin="0,500,0,0" VerticalAlignment="Bottom">
|
|
<Border Margin="10,10,10,10" BorderBrush="Black" BorderThickness="8" CornerRadius="10">
|
|
<Border.Effect>
|
|
<DropShadowEffect BlurRadius="20" Direction="1" RenderingBias="Quality" ShadowDepth="1" Opacity="1"/>
|
|
</Border.Effect>
|
|
</Border>
|
|
<Rectangle Margin="10,10,10,10" RadiusX="10" RadiusY="10" ClipToBounds="True">
|
|
<Rectangle.Fill>
|
|
<SolidColorBrush Color="#FFFFFF" Opacity="0.97"/>
|
|
</Rectangle.Fill>
|
|
</Rectangle>
|
|
<Grid Margin="30,0,30,0">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="30"></ColumnDefinition>
|
|
<ColumnDefinition Width="*"></ColumnDefinition>
|
|
<ColumnDefinition Width="30"></ColumnDefinition>
|
|
</Grid.ColumnDefinitions>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="*"></RowDefinition>
|
|
<RowDefinition Height="60"></RowDefinition>
|
|
<RowDefinition Height="*"></RowDefinition>
|
|
</Grid.RowDefinitions>
|
|
<Image x:Name="RedBlurb" Source="/Assets/Images/WarningRed.png" Grid.Column="0" Width="30" Grid.Row="1" Height="30" Margin="0,0,0,0"></Image>
|
|
<Image x:Name="InfoBlurb" Visibility="Collapsed" Source="/Assets/Images/Warning.png" Grid.Column="0" Width="30" Grid.Row="1" Height="30" Margin="0,0,0,0"></Image>
|
|
<Label x:Name="Blurb" Content="An Update is available!" MouseUp="BlurbAction" Grid.Column="1" Padding="0,0,0,0" Grid.Row="1" Margin="0,0,0,0" Foreground="#000000" FontSize="12" Cursor="Hand" HorizontalAlignment="Center" VerticalAlignment="Center"></Label>
|
|
<Image x:Name="BlurbClose" AutomationProperties.AutomationId="BlurbClose" Source="/Assets/Images/closeBlack.png" Grid.Column="2" Width="10" Height="10" Grid.Row="1" Margin="0,0,0,0" Cursor="Hand" MouseUp="DoHideBlurb"></Image>
|
|
</Grid>
|
|
</Grid>
|
|
|
|
<Grid x:Name="NoServiceView" Visibility="Collapsed" Margin="10,10,10,10">
|
|
<Rectangle RadiusX="10" RadiusY="10">
|
|
<Rectangle.Fill>
|
|
<SolidColorBrush Color="Black" Opacity="0.9"/>
|
|
</Rectangle.Fill>
|
|
</Rectangle>
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="*"></RowDefinition>
|
|
<RowDefinition Height="60"></RowDefinition>
|
|
<RowDefinition Height="30"></RowDefinition>
|
|
<RowDefinition Height="30"></RowDefinition>
|
|
<RowDefinition Height="30"></RowDefinition>
|
|
<RowDefinition Height="*"></RowDefinition>
|
|
</Grid.RowDefinitions>
|
|
<Label x:Name="ErrorMsg" Foreground="White" Content="Service Not Started" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="24" />
|
|
<Label x:Name="ErrorMsgDetail" Foreground="LightGray" Content="Start the Ziti Tunnel Service to get started" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="14" />
|
|
|
|
<Grid Grid.Row="4">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="1*"></ColumnDefinition>
|
|
<ColumnDefinition Width="1*"></ColumnDefinition>
|
|
</Grid.ColumnDefinitions>
|
|
<Button x:Name="CloseErrorButton" Grid.Column="0" Margin="40,0,20,0" Cursor="Hand" BorderThickness="0" Foreground="#FFFFFF" Background="#0068F9" Content="Close Error" Click="CloseError" >
|
|
<Button.Resources>
|
|
<Style TargetType="Border">
|
|
<Setter Property="CornerRadius" Value="5"/>
|
|
</Style>
|
|
</Button.Resources>
|
|
</Button>
|
|
<Button x:Name="QuitButton" Grid.Column="1" Margin="20,0,40,0" Cursor="Hand" BorderThickness="0" Foreground="#FFFFFF" Background="#F4044D" Content="Quit App" Click="CloseApp" >
|
|
<Button.Resources>
|
|
<Style TargetType="Border">
|
|
<Setter Property="CornerRadius" Value="5"/>
|
|
</Style>
|
|
</Button.Resources>
|
|
</Button>
|
|
</Grid>
|
|
</Grid>
|
|
</Grid>
|
|
|
|
<Grid x:Name="LoadingScreen" MouseDown="Window_MouseDown" Visibility="Collapsed" Margin="10,10,10,10">
|
|
<Rectangle RadiusX="10" RadiusY="10">
|
|
<Rectangle.Fill>
|
|
<SolidColorBrush Color="Black" Opacity="0.9"/>
|
|
</Rectangle.Fill>
|
|
</Rectangle>
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="1*"></ColumnDefinition>
|
|
</Grid.ColumnDefinitions>
|
|
</Grid>
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="*"></RowDefinition>
|
|
<RowDefinition Height="60"></RowDefinition>
|
|
<RowDefinition Height="80"></RowDefinition>
|
|
<RowDefinition Height="10"></RowDefinition>
|
|
<RowDefinition Height="*"></RowDefinition>
|
|
</Grid.RowDefinitions>
|
|
<Label x:Name="LoadingTitle" Foreground="White" Content="Loading" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="24" />
|
|
<TextBlock x:Name="LoadingDetails" TextWrapping="WrapWithOverflow" Foreground="LightGray" Padding="10" Text="${x:DefaultLoadText}" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center" TextAlignment="Center" FontSize="14" />
|
|
<ProgressBar x:Name="LoadProgress" Width="100" Grid.Row="3" IsEnabled="True" />
|
|
</Grid>
|
|
</Grid>
|
|
|
|
<Grid x:Name="ErrorView" MouseDown="Window_MouseDown" Visibility="Collapsed" Margin="10,10,10,10">
|
|
<Rectangle RadiusX="10" RadiusY="10">
|
|
<Rectangle.Fill>
|
|
<SolidColorBrush Color="Black" Opacity="0.9"/>
|
|
</Rectangle.Fill>
|
|
</Rectangle>
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="1*"></ColumnDefinition>
|
|
</Grid.ColumnDefinitions>
|
|
</Grid>
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="*"></RowDefinition>
|
|
<RowDefinition Height="60"></RowDefinition>
|
|
<RowDefinition Height="120"></RowDefinition>
|
|
<RowDefinition Height="30"></RowDefinition>
|
|
<RowDefinition Height="30"></RowDefinition>
|
|
<RowDefinition Height="*"></RowDefinition>
|
|
</Grid.RowDefinitions>
|
|
<TextBlock x:Name="ErrorTitle" TextWrapping="WrapWithOverflow" Width="400" Foreground="White" Text="An Error Occurred" Grid.Row="1" TextAlignment="Center" VerticalAlignment="Center" FontSize="24" />
|
|
<StackPanel x:Name="ErrorPanel"
|
|
Grid.Row="2"
|
|
Width="400">
|
|
<TextBlock x:Name="ErrorDetails"
|
|
TextWrapping="WrapWithOverflow" Foreground="LightGray"
|
|
Padding="10"
|
|
Text="An Unknown Error Occurred, you could try restarting the service and the interface to continue"
|
|
|
|
HorizontalAlignment="Center"
|
|
VerticalAlignment="Center"
|
|
TextAlignment="Center"
|
|
FontSize="14" />
|
|
</StackPanel>
|
|
<Label Grid.Row="3" Foreground="Gray" FontWeight="Light" Content="Check the Log for Details" HorizontalAlignment="Center"></Label>
|
|
|
|
<Grid Grid.Row="4">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="1*"></ColumnDefinition>
|
|
<ColumnDefinition Width="1*"></ColumnDefinition>
|
|
</Grid.ColumnDefinitions>
|
|
<Button Grid.Column="0" Margin="40,0,20,0" Cursor="Hand" BorderThickness="0" Foreground="#FFFFFF" Background="#0068F9" Content="Close Error" Click="CloseError" >
|
|
<Button.Resources>
|
|
<Style TargetType="Border">
|
|
<Setter Property="CornerRadius" Value="5"/>
|
|
</Style>
|
|
</Button.Resources>
|
|
</Button>
|
|
<Button Grid.Column="1" Margin="20,0,40,0" Cursor="Hand" BorderThickness="0" Foreground="#FFFFFF" Background="#F4044D" Content="Quit App" Click="CloseApp" >
|
|
<Button.Resources>
|
|
<Style TargetType="Border">
|
|
<Setter Property="CornerRadius" Value="5"/>
|
|
</Style>
|
|
</Button.Resources>
|
|
</Button>
|
|
</Grid>
|
|
</Grid>
|
|
</Grid>
|
|
|
|
<local:ConfirmationDialog
|
|
x:Name="OverrideKeychain"
|
|
Title="Delete Item?"
|
|
Visibility="Collapsed"
|
|
Description="Are you sure you want to delete this item? This action cannot be undone."
|
|
/>
|
|
</Grid>
|
|
</Window>
|