aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Tango.PPC.UI
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2018-12-17 09:41:41 +0200
committerShlomo Hecht <shlomo@twine-s.com>2018-12-17 09:41:41 +0200
commit9562ca15079cdbf2bcfd11c8c8def4a8e4573a78 (patch)
tree480bb5f4a49a398d789197006e66ca76d78ff007 /Software/Visual_Studio/PPC/Tango.PPC.UI
parentfc23da7f3510cce58308841eefb96d59868317ff (diff)
parentd8d1128887089087578286f37561dc8942726ba4 (diff)
downloadTango-9562ca15079cdbf2bcfd11c8c8def4a8e4573a78.tar.gz
Tango-9562ca15079cdbf2bcfd11c8c8def4a8e4573a78.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Visual_Studio/PPC/Tango.PPC.UI')
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Images/no-permissions.pngbin0 -> 5640 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/MainWindow.xaml.cs35
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Navigation/DefaultNavigationManager.cs16
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/PPCApplication/DefaultPPCApplicationManager.cs26
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Printing/DefaultPrintingManager.cs2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj15
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModelLocator.cs11
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/LoadingViewVM.cs2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/LoginViewVM.cs18
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/NoPermissionsViewVM.cs30
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Views/LayoutView.xaml16
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Views/MainView.xaml1
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Views/NoPermissionsView.xaml27
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Views/NoPermissionsView.xaml.cs28
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest2
15 files changed, 209 insertions, 20 deletions
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/no-permissions.png b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/no-permissions.png
new file mode 100644
index 000000000..405b94a26
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Images/no-permissions.png
Binary files differ
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/MainWindow.xaml.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/MainWindow.xaml.cs
index 219c25f45..302e401fb 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/MainWindow.xaml.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/MainWindow.xaml.cs
@@ -15,6 +15,8 @@ using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
+using Tango.Core.DI;
+using Tango.PPC.Common.Application;
using Tango.Touch.Helpers;
namespace Tango.PPC.UI
@@ -24,6 +26,8 @@ namespace Tango.PPC.UI
/// </summary>
public partial class MainWindow : Window
{
+ private String _technician_mode_buffer;
+
public static MainWindow Instance { get; private set; }
public MainWindow()
@@ -32,6 +36,8 @@ namespace Tango.PPC.UI
InitializeComponent();
+ _technician_mode_buffer = String.Empty;
+
#if !DESKTOP
if (TouchHelper.IsTouchEnabled())
{
@@ -62,5 +68,34 @@ namespace Tango.PPC.UI
{
Environment.Exit(0);
}
+
+ protected override void OnPreviewKeyDown(System.Windows.Input.KeyEventArgs e)
+ {
+ base.OnPreviewKeyDown(e);
+
+ try
+ {
+ _technician_mode_buffer += Char.Parse(e.Key.ToString());
+ }
+ catch{}
+
+ if (e.Key == Key.Return || e.Key == Key.Tab)
+ {
+ if (_technician_mode_buffer.ToLower().Contains("ENTERTECHNICIAN".ToLower()))
+ {
+ _technician_mode_buffer = String.Empty;
+ TangoIOC.Default.GetInstance<IPPCApplicationManager>().EnterTechnicianMode();
+ e.Handled = true;
+ }
+ else if (_technician_mode_buffer.ToLower().Contains("EXITTECHNICIAN".ToLower()))
+ {
+ _technician_mode_buffer = String.Empty;
+ TangoIOC.Default.GetInstance<IPPCApplicationManager>().ExitTechnicianMode();
+ e.Handled = true;
+ }
+
+ _technician_mode_buffer = String.Empty;
+ }
+ }
}
}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Navigation/DefaultNavigationManager.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Navigation/DefaultNavigationManager.cs
index efe8149f6..fe3cabcc1 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Navigation/DefaultNavigationManager.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Navigation/DefaultNavigationManager.cs
@@ -90,15 +90,23 @@ namespace Tango.PPC.UI.Navigation
_lastFullPath = null;
var firstModule = _moduleLoader.UserModules.FirstOrDefault();
- var moduleAtt = firstModule.GetType().GetCustomAttribute<PPCModuleAttribute>();
- if (moduleAtt != null)
+ if (firstModule != null)
{
- return NavigateTo(firstModule.GetType(), pushToHistory, moduleAtt.HomeViewName);
+ var moduleAtt = firstModule.GetType().GetCustomAttribute<PPCModuleAttribute>();
+
+ if (moduleAtt != null)
+ {
+ return NavigateTo(firstModule.GetType(), pushToHistory, moduleAtt.HomeViewName);
+ }
+ else
+ {
+ return NavigateTo(firstModule.GetType(), pushToHistory);
+ }
}
else
{
- return NavigateTo(firstModule.GetType(), pushToHistory);
+ return NavigateTo(NavigationView.NoPermissionsView);
}
}
else
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/PPCApplication/DefaultPPCApplicationManager.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/PPCApplication/DefaultPPCApplicationManager.cs
index f8a0fdc36..f9830940b 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/PPCApplication/DefaultPPCApplicationManager.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/PPCApplication/DefaultPPCApplicationManager.cs
@@ -26,6 +26,7 @@ using Tango.PPC.Common.Threading;
using System.Diagnostics;
using Tango.PPC.Common.EventLogging;
using Tango.BL.Enumerations;
+using Tango.PPC.Common.Notifications;
namespace Tango.PPC.UI.PPCApplication
{
@@ -41,6 +42,8 @@ namespace Tango.PPC.UI.PPCApplication
private Machine _machine;
private IDispatcherProvider _dispatcher;
private IEventLogger _eventLogger;
+ private IPPCModuleLoader _moduleLoader;
+ private INotificationProvider _notificationProvider;
/// <summary>
/// Occurs when the application has started.
@@ -102,12 +105,13 @@ namespace Tango.PPC.UI.PPCApplication
/// <summary>
/// Initializes a new instance of the <see cref="DefaultPPCApplicationManager"/> class.
/// </summary>
- public DefaultPPCApplicationManager(IMachineProvider machineProvider, IDispatcherProvider dispatcherProvider, IEventLogger eventLogger)
+ public DefaultPPCApplicationManager(IMachineProvider machineProvider, IDispatcherProvider dispatcherProvider, IEventLogger eventLogger, IPPCModuleLoader moduleLoader, INotificationProvider notificationProvider)
{
+ _notificationProvider = notificationProvider;
_machineProvider = machineProvider;
_dispatcher = dispatcherProvider;
_eventLogger = eventLogger;
- ;
+ _moduleLoader = moduleLoader;
if (!DesignMode)
{
@@ -320,5 +324,23 @@ namespace Tango.PPC.UI.PPCApplication
Process.Start(Application.ResourceAssembly.Location);
Environment.Exit(0);
}
+
+ /// <summary>
+ /// Enteres the application technician mode.
+ /// </summary>
+ public void EnterTechnicianMode()
+ {
+ _moduleLoader.AllModules.ToList().ForEach(x => x.OnTechnicianEntered());
+ _notificationProvider.ShowInfo("Technician mode is now enabled.");
+ }
+
+ /// <summary>
+ /// Exits the application technician mode.
+ /// </summary>
+ public void ExitTechnicianMode()
+ {
+ _moduleLoader.AllModules.ToList().ForEach(x => x.OnTechnicianExited());
+ _notificationProvider.ShowInfo("Technician mode is now disabled.");
+ }
}
}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Printing/DefaultPrintingManager.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Printing/DefaultPrintingManager.cs
index 1a509f78b..347701c6e 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Printing/DefaultPrintingManager.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Printing/DefaultPrintingManager.cs
@@ -121,7 +121,7 @@ namespace Tango.PPC.UI.Printing
{
sampleDyeJob.NumberOfUnits = 1;
- foreach (var segment in sampleDyeJob.Segments)
+ foreach (var segment in sampleDyeJob.OrderedSegments)
{
segment.Length = job.SampleUnitsOrMeters;
}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj b/Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj
index 406568f71..836878152 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj
@@ -143,6 +143,7 @@
<Compile Include="ViewModels\MachineSetupViewVM.cs" />
<Compile Include="ViewModels\MainViewVM.cs" />
<Compile Include="ViewModels\MachineUpdateViewVM.cs" />
+ <Compile Include="ViewModels\NoPermissionsViewVM.cs" />
<Compile Include="ViewsContracts\ILayoutView.cs" />
<Compile Include="ViewsContracts\IMachineSetupView.cs" />
<Compile Include="ViewsContracts\IMachineUpdateView.cs" />
@@ -170,6 +171,9 @@
<Compile Include="Views\MachineUpdateView.xaml.cs">
<DependentUpon>MachineUpdateView.xaml</DependentUpon>
</Compile>
+ <Compile Include="Views\NoPermissionsView.xaml.cs">
+ <DependentUpon>NoPermissionsView.xaml</DependentUpon>
+ </Compile>
<Page Include="Connectivity\WiFiAuthenticationView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@@ -234,6 +238,10 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
+ <Page Include="Views\NoPermissionsView.xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </Page>
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs">
@@ -339,6 +347,10 @@
<Project>{096f16c8-6d06-4b5f-9496-b9d2df2d94a3}</Project>
<Name>Tango.PPC.Jobs</Name>
</ProjectReference>
+ <ProjectReference Include="..\Modules\Tango.PPC.Logging\Tango.PPC.Logging.csproj">
+ <Project>{d2ee865b-b006-487a-9487-60a663636ac3}</Project>
+ <Name>Tango.PPC.Logging</Name>
+ </ProjectReference>
<ProjectReference Include="..\Modules\Tango.PPC.MachineSettings\Tango.PPC.MachineSettings.csproj">
<Project>{91b70e9b-66a7-4873-ae10-400e71cf404f}</Project>
<Name>Tango.PPC.MachineSettings</Name>
@@ -397,6 +409,7 @@
<Link>Tango.ColorLib.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
+ <Resource Include="Images\no-permissions.png" />
<Resource Include="Images\GlobalStatus\machine-off.png" />
<Resource Include="Images\machine-update-firmware.png" />
<Resource Include="Images\chip_128px.png" />
@@ -472,7 +485,7 @@ del "$(TargetDir)firmware_package.tfp"</PostBuildEvent>
</PropertyGroup>
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
+ <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
</VisualStudio>
</ProjectExtensions>
</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModelLocator.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModelLocator.cs
index 645456216..f8b7ce003 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModelLocator.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModelLocator.cs
@@ -77,12 +77,12 @@ namespace Tango.PPC.UI
TangoIOC.Default.Register<ExternalBridgeScanner, ExternalBridgeScanner>();
TangoIOC.Default.Register<IDiagnosticsFrameProvider, DefaultDiagnosticsFrameProvider>();
TangoIOC.Default.Register<IPPCExternalBridgeService, PPCExternalBridgeService>();
+ TangoIOC.Default.Register<IRemoteAssistanceProvider, DefaultRemoteAssistanceProvider>();
TangoIOC.Default.Register<IMachineSetupManager, MachineSetupManager>();
TangoIOC.Default.Register<IMachineUpdateManager, MachineUpdateManager>();
TangoIOC.Default.Register<IPrintingManager, DefaultPrintingManager>();
TangoIOC.Default.Register<IConnectivityProvider, DefaultConnectivityProvider>();
TangoIOC.Default.Register<IHotSpotProvider, DefaultHotSpotProvider>();
- TangoIOC.Default.Register<IRemoteAssistanceProvider, DefaultRemoteAssistanceProvider>();
TangoIOC.Default.Register<IStorageProvider, DefaultStorageProvider>();
//TangoIOC.Default.Register<TeamFoundationServiceExtendedClient>(new TeamFoundationServiceExtendedClient("https://twinetfs.visualstudio.com", String.Empty, "szzfokrceo4rhd4eqi5qpmxn3pa5iwl3q7tlqd36l2m7smz2ynoa"));
@@ -95,6 +95,7 @@ namespace Tango.PPC.UI
TangoIOC.Default.Register<MachineSetupViewVM>();
TangoIOC.Default.Register<MachineUpdateViewVM>();
TangoIOC.Default.Register<LoadingErrorViewVM>();
+ TangoIOC.Default.Register<NoPermissionsViewVM>();
TangoIOC.Default.GetInstance<IPPCApplicationManager>().ContentRendered += (_, __) =>
@@ -176,5 +177,13 @@ namespace Tango.PPC.UI
return TangoIOC.Default.GetInstance<LoadingErrorViewVM>();
}
}
+
+ public static NoPermissionsViewVM NoPermissionsViewVM
+ {
+ get
+ {
+ return TangoIOC.Default.GetInstance<NoPermissionsViewVM>();
+ }
+ }
}
} \ No newline at end of file
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/LoadingViewVM.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/LoadingViewVM.cs
index 281e54958..516349a18 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/LoadingViewVM.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/LoadingViewVM.cs
@@ -20,6 +20,7 @@ using Tango.PPC.Common.Notifications.NotificationItems;
using Tango.PPC.Jobs;
using Tango.SharedUI;
using System.Data.Entity;
+using Tango.BL.Enumerations;
namespace Tango.PPC.UI.ViewModels
{
@@ -79,6 +80,7 @@ namespace Tango.PPC.UI.ViewModels
if (db.Users.Count() == 1 || machine.AutoLogin)
{
var user = await db.Users.FirstAsync();
+
LogManager.Log($"Application started. Single user/Auto login detected ({user.Email}). Skipping LoginView...");
await AuthenticationProvider.Login(user.Email, user.Password, false);
IsLoading = false;
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/LoginViewVM.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/LoginViewVM.cs
index 9d17a4a76..aa9689ef3 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/LoginViewVM.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/LoginViewVM.cs
@@ -11,6 +11,8 @@ using System.ComponentModel.DataAnnotations;
using Tango.SharedUI.Helpers;
using Tango.PPC.Common.Authentication;
using Tango.BL.Entities;
+using Tango.BL.Enumerations;
+using Tango.Logging;
namespace Tango.PPC.UI.ViewModels
{
@@ -89,9 +91,19 @@ namespace Tango.PPC.UI.ViewModels
base.OnApplicationReady();
await Task.Delay(500);
- LogManager.Log("Application is ready! Navigating to home module...");
- await NavigationManager.NavigateTo(NavigationView.HomeModule);
- IsLoading = false;
+
+ if (AuthenticationProvider.CurrentUser != null && AuthenticationProvider.CurrentUser.HasPermission(Permissions.RunPPC))
+ {
+ LogManager.Log("Application is ready! Navigating to home module...");
+ await NavigationManager.NavigateTo(NavigationView.HomeModule);
+ IsLoading = false;
+ }
+ else
+ {
+ LogManager.Log("Application is ready! The logged in user does not have permission to run the application!", LogCategory.Warning);
+ await NavigationManager.NavigateTo(NavigationView.NoPermissionsView);
+ IsLoading = false;
+ }
}
#endregion
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/NoPermissionsViewVM.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/NoPermissionsViewVM.cs
new file mode 100644
index 000000000..cea8a7d63
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/NoPermissionsViewVM.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.Core.Commands;
+using Tango.PPC.Common;
+
+namespace Tango.PPC.UI.ViewModels
+{
+ public class NoPermissionsViewVM : PPCViewModel
+ {
+ public RelayCommand RestartCommand { get; set; }
+
+ public NoPermissionsViewVM()
+ {
+ RestartCommand = new RelayCommand(Restart);
+ }
+
+ private void Restart()
+ {
+ ApplicationManager.Restart();
+ }
+
+ public override void OnApplicationStarted()
+ {
+
+ }
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/LayoutView.xaml b/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/LayoutView.xaml
index 98451dacb..b89b2c9de 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/LayoutView.xaml
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/LayoutView.xaml
@@ -49,13 +49,15 @@
<ItemsControl ItemsSource="{Binding ModuleLoader.UserModules}">
<ItemsControl.ItemTemplate>
<DataTemplate>
- <Border BorderBrush="{StaticResource TangoDividerBrush}" BorderThickness="0 1 0 0">
- <touch:TouchButton Margin="0 0 0 0" Padding="30" Foreground="{StaticResource TangoDarkForegroundBrush}" Style="{StaticResource TangoFlatButton}" FontSize="{StaticResource TangoHeaderFontSize}" Command="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.ModuleNavigationCommand}" CommandParameter="{Binding Name}">
- <StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
- <Image VerticalAlignment="Center" Source="{Binding Image}" Width="48" Height="48"></Image>
- <TextBlock VerticalAlignment="Center" Margin="20 0 0 0" Text="{Binding Name}"></TextBlock>
- </StackPanel>
- </touch:TouchButton>
+ <Border>
+ <Border BorderBrush="{StaticResource TangoDividerBrush}" BorderThickness="0 1 0 0" Visibility="{Binding IsVisibleInMenu,Converter={StaticResource BooleanToVisibilityConverter}}">
+ <touch:TouchButton Margin="0 0 0 0" Padding="30" Foreground="{StaticResource TangoDarkForegroundBrush}" Style="{StaticResource TangoFlatButton}" FontSize="{StaticResource TangoHeaderFontSize}" Command="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.ModuleNavigationCommand}" CommandParameter="{Binding Name}">
+ <StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
+ <Image VerticalAlignment="Center" Source="{Binding Image}" Width="48" Height="48"></Image>
+ <TextBlock VerticalAlignment="Center" Margin="20 0 0 0" Text="{Binding Name}"></TextBlock>
+ </StackPanel>
+ </touch:TouchButton>
+ </Border>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/MainView.xaml b/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/MainView.xaml
index e684f4969..9df92bbcc 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/MainView.xaml
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/MainView.xaml
@@ -83,6 +83,7 @@
<controls:NavigationControl TransitionAlwaysFades="True" KeepElementsAttached="True" TransitionType="Zoom" x:Name="NavigationControl" x:FieldModifier="public">
<local:LoadingView></local:LoadingView>
<local:LoadingErrorView></local:LoadingErrorView>
+ <local:NoPermissionsView></local:NoPermissionsView>
<local:LoginView></local:LoginView>
<local:LayoutView></local:LayoutView>
<local:ExternalBridgeView></local:ExternalBridgeView>
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/NoPermissionsView.xaml b/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/NoPermissionsView.xaml
new file mode 100644
index 000000000..95839453a
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/NoPermissionsView.xaml
@@ -0,0 +1,27 @@
+<UserControl x:Class="Tango.PPC.UI.Views.NoPermissionsView"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:vm="clr-namespace:Tango.PPC.UI.ViewModels"
+ xmlns:global="clr-namespace:Tango.PPC.UI"
+ xmlns:touch="clr-namespace:Tango.Touch.Controls;assembly=Tango.Touch"
+ xmlns:local="clr-namespace:Tango.PPC.UI.Views"
+ mc:Ignorable="d"
+ d:DesignHeight="1280" d:DesignWidth="800" d:DataContext="{d:DesignInstance Type=vm:NoPermissionsViewVM, IsDesignTimeCreatable=False}" DataContext="{x:Static global:ViewModelLocator.NoPermissionsViewVM}">
+ <Grid>
+ <DockPanel Margin="20 60 20 20">
+ <StackPanel DockPanel.Dock="Top">
+ <Image Source="../Images/no-permissions.png" Width="256" RenderOptions.BitmapScalingMode="Fant" Stretch="Uniform" HorizontalAlignment="Center"></Image>
+ <TextBlock HorizontalAlignment="Center" Margin="0 40 0 0" FontSize="{StaticResource TangoHeaderFontSize}">No Application Modules Loaded</TextBlock>
+ <TextBlock TextWrapping="Wrap" TextAlignment="Center" HorizontalAlignment="Center" Margin="0 20 0 0" FontSize="{StaticResource TangoTitleFontSize}">The current user does not seems to have a permission to load any of the application modules. Please contact your administrator.</TextBlock>
+ </StackPanel>
+
+ <Grid>
+ <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Width="320">
+ <touch:TouchButton Command="{Binding RestartCommand}" Padding="0 30" CornerRadius="40">RESTART</touch:TouchButton>
+ </StackPanel>
+ </Grid>
+ </DockPanel>
+ </Grid>
+</UserControl>
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/NoPermissionsView.xaml.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/NoPermissionsView.xaml.cs
new file mode 100644
index 000000000..0bbaee554
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/NoPermissionsView.xaml.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace Tango.PPC.UI.Views
+{
+ /// <summary>
+ /// Interaction logic for NoPermissionsView.xaml
+ /// </summary>
+ public partial class NoPermissionsView : UserControl
+ {
+ public NoPermissionsView()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest b/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest
index d72e75011..efc5f8179 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest
@@ -16,7 +16,7 @@
Remove this element if your application requires this virtualization for backwards
compatibility.
-->
- <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
+ <!--<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />-->
</requestedPrivileges>
</security>
</trustInfo>