From a898decf18c4c0ed56d020dc09df55df1ca0263a Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Mon, 9 Apr 2018 18:30:58 +0300 Subject: Lots of changes :/ --- .../Html/DefaultHtmlPresenter.cs | 25 ++++++ .../Tango.MachineStudio.UI/Html/HtmlWindow.xaml | 37 +++++++++ .../Tango.MachineStudio.UI/Html/HtmlWindow.xaml.cs | 48 ++++++++++++ .../Tango.MachineStudio.UI.csproj | 8 ++ .../Tango.MachineStudio.UI/ViewModelLocator.cs | 7 ++ .../ViewModels/MainViewVM.cs | 40 +++++++++- .../Tango.MachineStudio.UI/Views/MainView.xaml | 88 ++++++++++++++++------ 7 files changed, 228 insertions(+), 25 deletions(-) create mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Html/DefaultHtmlPresenter.cs create mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Html/HtmlWindow.xaml create mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Html/HtmlWindow.xaml.cs (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI') diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Html/DefaultHtmlPresenter.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Html/DefaultHtmlPresenter.cs new file mode 100644 index 000000000..eff8c98a0 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Html/DefaultHtmlPresenter.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using Tango.BL.Entities; +using Tango.MachineStudio.Common.Html; +using Tango.MachineStudio.UI.Windows; + +namespace Tango.MachineStudio.UI.Html +{ + public class DefaultHtmlPresenter : IHtmlPresenter + { + public bool DisplayHtml(HtmlPage html) + { + HtmlWindow dialog = new HtmlWindow(html); + dialog.Owner = Application.Current.MainWindow; + MainWindow.Instance.shadowGrid.Visibility = Visibility.Visible; + var result = dialog.ShowDialog(); + MainWindow.Instance.shadowGrid.Visibility = Visibility.Hidden; + return result.Value; + } + } +} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Html/HtmlWindow.xaml b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Html/HtmlWindow.xaml new file mode 100644 index 000000000..654d2d0eb --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Html/HtmlWindow.xaml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Html/HtmlWindow.xaml.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Html/HtmlWindow.xaml.cs new file mode 100644 index 000000000..9f37eba06 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Html/HtmlWindow.xaml.cs @@ -0,0 +1,48 @@ +using MahApps.Metro.Controls; +using MaterialDesignThemes.Wpf; +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.Shapes; +using Tango.BL.Entities; +using Tango.Core.Commands; + +namespace Tango.MachineStudio.UI.Html +{ + /// + /// Interaction logic for DialogWindow.xaml + /// + public partial class HtmlWindow : Window + { + public HtmlWindow(HtmlPage html) + { + InitializeComponent(); + + webBrowser.Loaded += (_, __) => + { + webBrowser.NavigateToString(html.Html); + }; + } + + private void OKClicked(object sender, RoutedEventArgs e) + { + DialogResult = true; + Close(); + } + + private void CloseClicked(object sender, RoutedEventArgs e) + { + DialogResult = false; + Close(); + } + } +} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj index 07b1f44fe..4befd2f5c 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj @@ -143,6 +143,10 @@ MSBuild:Compile Designer + + + HtmlWindow.xaml + TextInputBoxWindow.xaml @@ -199,6 +203,10 @@ ModuleWindow.xaml + + MSBuild:Compile + Designer + MSBuild:Compile Designer diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModelLocator.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModelLocator.cs index 571122eb5..bbb916d02 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModelLocator.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModelLocator.cs @@ -7,12 +7,15 @@ using Tango.Logging; using Tango.MachineStudio.Common.Authentication; using Tango.MachineStudio.Common.Diagnostics; using Tango.MachineStudio.Common.EventLogging; +using Tango.MachineStudio.Common.Html; using Tango.MachineStudio.Common.Modules; using Tango.MachineStudio.Common.Navigation; using Tango.MachineStudio.Common.Notifications; +using Tango.MachineStudio.Common.Speech; using Tango.MachineStudio.Common.StudioApplication; using Tango.MachineStudio.Common.Video; using Tango.MachineStudio.UI.Authentication; +using Tango.MachineStudio.UI.Html; using Tango.MachineStudio.UI.Modules; using Tango.MachineStudio.UI.Navigation; using Tango.MachineStudio.UI.Notifications; @@ -59,6 +62,8 @@ namespace Tango.MachineStudio.UI SimpleIoc.Default.Unregister(); SimpleIoc.Default.Unregister(); SimpleIoc.Default.Unregister(); + SimpleIoc.Default.Unregister(); + SimpleIoc.Default.Unregister(); SimpleIoc.Default.Register(); SimpleIoc.Default.Register(); @@ -69,6 +74,8 @@ namespace Tango.MachineStudio.UI SimpleIoc.Default.Register(); SimpleIoc.Default.Register(); SimpleIoc.Default.Register(); + SimpleIoc.Default.Register(); + SimpleIoc.Default.Register(); SimpleIoc.Default.Register(); SimpleIoc.Default.Register(); diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs index c9f4b3441..3cb728395 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs @@ -20,10 +20,12 @@ using Tango.MachineStudio.Common; using Tango.MachineStudio.Common.Authentication; using Tango.MachineStudio.Common.Diagnostics; using Tango.MachineStudio.Common.EventLogging; +using Tango.MachineStudio.Common.Html; using Tango.MachineStudio.Common.Messages; using Tango.MachineStudio.Common.Modules; using Tango.MachineStudio.Common.Navigation; using Tango.MachineStudio.Common.Notifications; +using Tango.MachineStudio.Common.Speech; using Tango.MachineStudio.Common.StudioApplication; using Tango.MachineStudio.Common.Update; using Tango.MachineStudio.UI.StudioApplication; @@ -49,6 +51,7 @@ namespace Tango.MachineStudio.UI.ViewModels private bool _isDisconnecting; private Thread _updateCheckThread; private IEventLogger _eventLogger; + private IHtmlPresenter _htmlPresenter; /// /// Gets or sets the current loaded module. @@ -129,6 +132,16 @@ namespace Tango.MachineStudio.UI.ViewModels /// public RelayCommand UpdateCenterCommand { get; set; } + /// + /// Gets or sets the toggle speech command. + /// + public RelayCommand ToggleSpeechCommand { get; set; } + + /// + /// Gets or sets the display HTML command. + /// + public RelayCommand ResolveMachineEventCommand { get; set; } + private IAuthenticationProvider _authenticationProvider; /// /// Gets or sets the authentication provider. @@ -169,6 +182,11 @@ namespace Tango.MachineStudio.UI.ViewModels set { _applicationManager = value; RaisePropertyChangedAuto(); } } + /// + /// Gets or sets the speech provider. + /// + public ISpeechProvider SpeechProvider { get; set; } + private bool _isUpdateAvailable; /// /// Gets or sets a value indicating whether a new version update is available. @@ -228,7 +246,9 @@ namespace Tango.MachineStudio.UI.ViewModels IStudioApplicationManager applicationManager, INavigationManager navigationManager, IEventLogger eventLogger, - IDiagnosticsFrameProvider frameProvider) : base(view) + IDiagnosticsFrameProvider frameProvider, + ISpeechProvider speechProvider, + IHtmlPresenter htmlPresenter) : base(view) { _eventLogger = eventLogger; _navigation = navigationManager; @@ -237,6 +257,8 @@ namespace Tango.MachineStudio.UI.ViewModels NotificationProvider = notificationProvider; ApplicationManager = applicationManager; DiagnosticsFrameProvider = frameProvider; + SpeechProvider = speechProvider; + _htmlPresenter = htmlPresenter; StartModuleCommand = new RelayCommand(StartModule); @@ -263,6 +285,10 @@ namespace Tango.MachineStudio.UI.ViewModels machine.MachineEventsStateProvider.EventsResolved += MachineEventsStateProvider_EventsResolved; } }; + + ToggleSpeechCommand = new RelayCommand(() => { SpeechProvider.Mute = !SpeechProvider.Mute; }); + + ResolveMachineEventCommand = new RelayCommand(ResolveMachineEvent); } private void MachineEventsStateProvider_EventsResolved(object sender, IEnumerable e) @@ -542,5 +568,17 @@ namespace Tango.MachineStudio.UI.ViewModels { _applicationManager.ShutDown(); } + + /// + /// Displays the HTML. + /// + /// The HTML page. + private void ResolveMachineEvent(MachinesEvent machineEvent) + { + if (_htmlPresenter.DisplayHtml(machineEvent.EventType.HtmlPage)) + { + //Send resolved to embedded ! + } + } } } diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MainView.xaml b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MainView.xaml index b7a4cc93f..3301fd9f3 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MainView.xaml +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MainView.xaml @@ -172,6 +172,24 @@ + +