using Microsoft.UI; using Microsoft.UI.Windowing; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Controls.Primitives; using Microsoft.UI.Xaml.Data; using Microsoft.UI.Xaml.Input; using Microsoft.UI.Xaml.Media; using System.Threading; using Windows.ApplicationModel; using System.Collections; using System.Threading.Tasks; using System.Collections.Concurrent; // To learn more about WinUI, the WinUI project structure, // and more about our project templates, see: http://aka.ms/winui-project-info. namespace SAPRecorderApp { /// /// An empty window that can be used on its own or navigated to within a Frame. /// /// public sealed partial class MainWindow : Window { public MainWindow() { this.InitializeComponent(); Activated += MainWindow_Activated; this.AppWindow.MoveAndResize(new Windows.Graphics.RectInt32(1600, 100, 600, 1000)); //var m_AppWindow = GetAppWindowForCurrentWindow(); //var titleBar = m_AppWindow.TitleBar; //// Hide system title bar. //titleBar.ExtendsContentIntoTitleBar = true; var m_AppWindow = this.AppWindow; ExtendsContentIntoTitleBar = true; if (ExtendsContentIntoTitleBar == true) { m_AppWindow.TitleBar.PreferredHeightOption = TitleBarHeightOption.Tall; } TitleBarTextBlock.Text = AppInfo.Current.DisplayInfo.DisplayName; SystemBackdrop = new DesktopAcrylicBackdrop(); Task.Run(() => { foreach (var item in Globals.recordTextQueue.GetConsumingEnumerable()) { SetTextBox(item + "\n"); } }); } private void SetTextBox(string text) { this.DispatcherQueue.TryEnqueue(() => { this.recordTextBox.Text += text; }); } private void RecordButton_Click(object sender, RoutedEventArgs e) { var sapGui = new SapGui(); sapGui.textBox = recordTextBox; sapGui.Session.Record = true; if (recordButton.Content == "Record") { if (sapGui.Session != null) { recordButton.Content = "Stop"; recordInfoBar.IsOpen = false; recordInfoBar.Message = ""; recordInfoBar.Title = ""; recordInfoBar.Severity = InfoBarSeverity.Informational; sapGui.BeginRecord(); recordProgressBar.IsIndeterminate = true; } else { recordInfoBar.IsOpen = true; recordInfoBar.Message = "Please login SAP First"; recordInfoBar.Title = ""; recordInfoBar.Severity = InfoBarSeverity.Warning; } } else { recordButton.Content = "Record"; recordButtonIcon.Glyph = "\uE7C8"; recordProgressBar.IsIndeterminate = false; } } private void CopyButton_Click(object sender, RoutedEventArgs e) { //Clipboard.SetContent(recordTextBox.Text); } private void ClearButton_Click(object sender, RoutedEventArgs e) { recordTextBox.Text = ""; } //private async Task SizeWindow(AppWindow appWindow) //{ // var displayList = await DeviceInformation.FindAllAsync(DisplayMonitor.GetDeviceSelector()); // if (!displayList.Any()) return; // var monitorInfo = await DisplayMonitor.FromIdAsync(displayList[0].Id); // var winSize = new SizeInt32(); // winSize.Height = Convert.ToInt32(monitorInfo.NativeResolutionInRawPixels.Height / 10); // winSize.Width = Convert.ToInt32(monitorInfo.NativeResolutionInRawPixels.Width / 10); // AppWindow.Move(new PointInt32(Convert.ToInt32(monitorInfo.NativeResolutionInRawPixels.Height / 5),10)); // //appWindow.ResizeClient(winSize); //} private void MainWindow_Activated(object sender, WindowActivatedEventArgs args) { //if (args.WindowActivationState == WindowActivationState.Deactivated) //{ // TitleBarTextBlock.Foreground = // (SolidColorBrush)App.Current.Resources["WindowCaptionForegroundDisabled"]; //} //else //{ // TitleBarTextBlock.Foreground = // (SolidColorBrush)App.Current.Resources["WindowCaptionForeground"]; //} } //private AppWindow GetAppWindowForCurrentWindow() //{ // IntPtr hWnd = WindowNative.GetWindowHandle(this); // WindowId wndId = Win32Interop.GetWindowIdFromWindow(hWnd); // return AppWindow.GetFromWindowId(wndId); //} } public static class Globals { //public static Queue recordTextQueue = new Queue(); public static BlockingCollection recordTextQueue = new BlockingCollection(); } }