MainWindow.xaml.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. using System;
  2. using System.Diagnostics;
  3. using System.Linq;
  4. using System.Windows;
  5. using System.Windows.Interop;
  6. using H.Formatters;
  7. using H.Pipes;
  8. using H.Pipes.Extensions;
  9. using InABox.Integration.Logikal;
  10. using Newtonsoft.Json;
  11. namespace PRSLogikal
  12. {
  13. /// <summary>
  14. /// Interaction logic for MainWindow.xaml
  15. /// </summary>
  16. public partial class MainWindow
  17. {
  18. private LogikalServer _server;
  19. private LogikalListener _listener;
  20. private void Log(string msg)
  21. {
  22. Dispatcher.BeginInvoke(new Func<object>(() => _Log.Text += $"{msg}\n"));
  23. }
  24. public MainWindow()
  25. {
  26. InitializeComponent();
  27. }
  28. private void MainWindow_OnClosed(object sender, EventArgs e)
  29. {
  30. if (bClosing)
  31. {
  32. _listener.Stop();
  33. _server.Disconnect();
  34. }
  35. }
  36. private void _connect_OnClick(object sender, RoutedEventArgs e)
  37. {
  38. var _request = new LogikalConnectRequest(_path.Text );
  39. var _response = _server.Connect(_request);
  40. Log($"Connect(): {_response}");
  41. if (_response is LogikalConnectResponse)
  42. {
  43. _connect.IsEnabled = false;
  44. _path.IsEnabled = false;
  45. _disconnect.IsEnabled = true;
  46. _login.IsEnabled = true;
  47. _userid.IsEnabled = true;
  48. _password.IsEnabled = true;
  49. _logout.IsEnabled = false;
  50. _projects.IsEnabled = false;
  51. }
  52. }
  53. private void _login_OnClick(object sender, RoutedEventArgs e)
  54. {
  55. var _request = new LogikalLoginRequest();
  56. var _response = _server.Login(_request);
  57. Log($"Login(): {_response}");
  58. if (_response is LogikalLoginResponse)
  59. {
  60. _disconnect.IsEnabled = false;
  61. _login.IsEnabled = false;
  62. _userid.IsEnabled = false;
  63. _password.IsEnabled = false;
  64. _logout.IsEnabled = true;
  65. _projects.IsEnabled = true;
  66. }
  67. }
  68. private void _logout_OnClick(object sender, RoutedEventArgs e)
  69. {
  70. var _response = _server.Logout();
  71. Log($"Logout(): {_response}");
  72. if (_response is LogikalLoginResponse)
  73. {
  74. _disconnect.IsEnabled = true;
  75. _login.IsEnabled = true;
  76. _userid.IsEnabled = true;
  77. _password.IsEnabled = true;
  78. _logout.IsEnabled = false;
  79. _projects.IsEnabled = false;
  80. }
  81. }
  82. private void _disconnect_OnClick(object sender, RoutedEventArgs e)
  83. {
  84. var _response = _server.Disconnect();
  85. Log($"Disconnect(): {_response}");
  86. if (_response is LogikalDisconnectResponse)
  87. {
  88. _connect.IsEnabled = true;
  89. _path.IsEnabled = true;
  90. _disconnect.IsEnabled = false;
  91. _login.IsEnabled = false;
  92. _userid.IsEnabled = false;
  93. _password.IsEnabled = false;
  94. _projects.IsEnabled = false;
  95. }
  96. }
  97. private void _projects_OnClick(object sender, RoutedEventArgs e)
  98. {
  99. // var _request = new LogikalProjectsRequest();
  100. // var _response = _server.GetProjects(_request);
  101. // Log($"GetProjects(): {_response}");
  102. // if (_response is LogikalProjectsResponse<LogikalProject> _projects)
  103. // {
  104. // foreach (var _project in _projects.Projects)
  105. // {
  106. // Log(_project.Name);
  107. // }
  108. // }
  109. }
  110. private void Window_Loaded(object sender, RoutedEventArgs args)
  111. {
  112. _server = new LogikalServer(new WindowInteropHelper(this).Handle);
  113. _server.Log += (o, e) => Log(e.Message);
  114. _listener = new LogikalListener()
  115. {
  116. Server = _server
  117. };
  118. _listener.Disconnecting += (o, e) => Dispatcher.Invoke(() => Close());
  119. _listener.Log += (o, e) => Log(e.Message);
  120. _listener.Start();
  121. Hide();
  122. }
  123. private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
  124. {
  125. if (!bClosing)
  126. {
  127. Hide();
  128. e.Cancel = true;
  129. }
  130. }
  131. private void ShowInterfaceClick(object sender, RoutedEventArgs e)
  132. {
  133. Show();
  134. }
  135. private bool bClosing = false;
  136. private void DoExitClick(object sender, RoutedEventArgs e)
  137. {
  138. bClosing = true;
  139. Close();
  140. }
  141. }
  142. }