From 06b516a5b82f97a584fe6dfc4e95604469d40644 Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Thu, 30 Jan 2020 21:31:20 -0800 Subject: [PATCH] UI Updates + context menu + popup for tray. --- BodyshopUploader/Assets/logo1024.png | Bin 0 -> 18480 bytes BodyshopUploader/BodyshopUploader.csproj | 1 + .../Properties/Resources.Designer.cs | 103 +++++++++- BodyshopUploader/Properties/Resources.resx | 37 +++- BodyshopUploader/Utils/UiConverters.cs | 16 ++ .../ViewModels/MainViewModel.commands.cs | 16 ++ BodyshopUploader/Views/Login.xaml | 43 +++- BodyshopUploader/Views/Main.xaml | 190 +++++++++++------- 8 files changed, 326 insertions(+), 80 deletions(-) create mode 100644 BodyshopUploader/Assets/logo1024.png diff --git a/BodyshopUploader/Assets/logo1024.png b/BodyshopUploader/Assets/logo1024.png new file mode 100644 index 0000000000000000000000000000000000000000..ad76341692b6c0c7e3813b828aa7c5f807155a0b GIT binary patch literal 18480 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.Designer.cs + PreserveNewest diff --git a/BodyshopUploader/Properties/Resources.Designer.cs b/BodyshopUploader/Properties/Resources.Designer.cs index 217f11b..f867152 100644 --- a/BodyshopUploader/Properties/Resources.Designer.cs +++ b/BodyshopUploader/Properties/Resources.Designer.cs @@ -105,6 +105,33 @@ namespace BodyshopUploader.Properties { } } + /// + /// Looks up a localized string similar to Actions. + /// + public static string Label_Actions { + get { + return ResourceManager.GetString("Label_Actions", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Active Shop. + /// + public static string Label_ActiveShop { + get { + return ResourceManager.GetString("Label_ActiveShop", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Add _Folder. + /// + public static string Label_AddFolder { + get { + return ResourceManager.GetString("Label_AddFolder", resourceCulture); + } + } + /// /// Looks up a localized string similar to Add Path. /// @@ -132,6 +159,33 @@ namespace BodyshopUploader.Properties { } } + /// + /// Looks up a localized string similar to Monitor Status. + /// + public static string Label_MonitorStatus { + get { + return ResourceManager.GetString("Label_MonitorStatus", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Re_move. + /// + public static string Label_Remove { + get { + return ResourceManager.GetString("Label_Remove", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to _Restart. + /// + public static string Label_Restart { + get { + return ResourceManager.GetString("Label_Restart", resourceCulture); + } + } + /// /// Looks up a localized string similar to Source System. /// @@ -142,7 +196,7 @@ namespace BodyshopUploader.Properties { } /// - /// Looks up a localized string similar to Start All Monitors. + /// Looks up a localized string similar to Start _All Monitors. /// public static string Label_StartAllMonitors { get { @@ -151,7 +205,34 @@ namespace BodyshopUploader.Properties { } /// - /// Looks up a localized string similar to Stop All Monitors. + /// Looks up a localized string similar to Status. + /// + public static string Label_Status { + get { + return ResourceManager.GetString("Label_Status", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Started. + /// + public static string Label_Status_Started { + get { + return ResourceManager.GetString("Label_Status_Started", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Stopped. + /// + public static string Label_Status_Stopped { + get { + return ResourceManager.GetString("Label_Status_Stopped", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to _Stop All Monitors. /// public static string Label_StopAllMonitors { get { @@ -204,6 +285,24 @@ namespace BodyshopUploader.Properties { } } + /// + /// Looks up a localized string similar to Bodyshop Partner by ImEX Systems Inc.. + /// + public static string Title_Login_Header { + get { + return ResourceManager.GetString("Title_Login_Header", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bodyshop Partner | ImEX Systems Inc.. + /// + public static string Title_Main { + get { + return ResourceManager.GetString("Title_Main", resourceCulture); + } + } + /// /// Looks up a localized string similar to Username. /// diff --git a/BodyshopUploader/Properties/Resources.resx b/BodyshopUploader/Properties/Resources.resx index a2e1b8f..1d758ed 100644 --- a/BodyshopUploader/Properties/Resources.resx +++ b/BodyshopUploader/Properties/Resources.resx @@ -132,6 +132,15 @@ Exit + + Actions + + + Active Shop + + + Add _Folder + Add Path @@ -141,14 +150,32 @@ File Path + + Monitor Status + + + Re_move + + + _Restart + Source System - Start All Monitors + Start _All Monitors + + + Status + + + Started + + + Stopped - Stop All Monitors + _Stop All Monitors Login @@ -165,6 +192,12 @@ Login - Bodyshop Uploader + + Bodyshop Partner by ImEX Systems Inc. + + + Bodyshop Partner | ImEX Systems Inc. + Username diff --git a/BodyshopUploader/Utils/UiConverters.cs b/BodyshopUploader/Utils/UiConverters.cs index b49dc57..cc8d6e2 100644 --- a/BodyshopUploader/Utils/UiConverters.cs +++ b/BodyshopUploader/Utils/UiConverters.cs @@ -41,4 +41,20 @@ namespace BodyshopUploader.Utils } } + public class MonitorStatusConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if ((bool)value == true) + return Properties.Resources.Label_Status_Started; + else + return Properties.Resources.Label_Status_Stopped; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotSupportedException("Two-way binding not supported by MonitorStatusConverter"); + } + } + } diff --git a/BodyshopUploader/ViewModels/MainViewModel.commands.cs b/BodyshopUploader/ViewModels/MainViewModel.commands.cs index 954829b..f61345c 100644 --- a/BodyshopUploader/ViewModels/MainViewModel.commands.cs +++ b/BodyshopUploader/ViewModels/MainViewModel.commands.cs @@ -87,6 +87,22 @@ namespace BodyshopUploader.ViewModels } } + private ICommand _restartMonitoringPathCommand; + public ICommand RestartMonitoringPathCommand + { + get + { + if (_restartMonitoringPathCommand == null) + { + _restartMonitoringPathCommand = new RelayCommand( + p => true, + p => ((Models.Monitor)p).StartMonitor() + ); + } + return _restartMonitoringPathCommand; + } + } + private ICommand _stopFolderMonitorsCommand; public ICommand StopFolderMonitorsCommand { diff --git a/BodyshopUploader/Views/Login.xaml b/BodyshopUploader/Views/Login.xaml index 73b017d..f9b9c63 100644 --- a/BodyshopUploader/Views/Login.xaml +++ b/BodyshopUploader/Views/Login.xaml @@ -7,8 +7,8 @@ xmlns:vm="clr-namespace:BodyshopUploader.ViewModels" mc:Ignorable="d" Title="{x:Static p:Resources.Title_Login}" - Height="169.084" - Width="389.618" + Height="300" + Width="475" xmlns:p="clr-namespace:BodyshopUploader.Properties" xmlns:util="clr-namespace:BodyshopUploader.Utils" xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes" @@ -19,15 +19,46 @@ TextOptions.TextRenderingMode="Auto" Background="{DynamicResource MaterialDesignPaper}" FontFamily="{DynamicResource MaterialDesignFont}" - Closing="Window_Closing"> + Closing="Window_Closing" + ResizeMode="NoResize" + WindowStartupLocation="CenterScreen"> + + + + + + + + + + + @@ -35,8 +66,6 @@ VerticalAlignment="Center" /> @@ -45,9 +74,7 @@ + Width="300" /> diff --git a/BodyshopUploader/Views/Main.xaml b/BodyshopUploader/Views/Main.xaml index 092d9ab..776eabe 100644 --- a/BodyshopUploader/Views/Main.xaml +++ b/BodyshopUploader/Views/Main.xaml @@ -5,7 +5,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:BodyshopUploader.Views" mc:Ignorable="d" - Title="Main" + Title="{x:Static p:Resources.Title_Main}" Height="450" xmlns:vm="clr-namespace:BodyshopUploader.ViewModels" Width="800" @@ -27,12 +27,31 @@ + + + + + + + Height="8" /> - - @@ -81,70 +121,84 @@ - + CommandParameter="{Binding .}" + Style="{StaticResource MaterialDesignOutlinedButton}" + Margin="4" + Content="{x:Static p:Resources.Label_Remove}" /> +