MainWindow.xaml.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. using Microsoft.Win32;
  2. using StationProbe;
  3. using System.IO;
  4. using System.Windows;
  5. using System.Windows.Controls;
  6. using System.Windows.Media.Imaging;
  7. namespace TestViewer
  8. {
  9. /// <summary>
  10. /// Interaction logic for MainWindow.xaml
  11. /// </summary>
  12. public partial class MainWindow : Window
  13. {
  14. private readonly Database _db;
  15. private int _pageIndex = -1;
  16. private int _pageCount = 0;
  17. public MainWindow()
  18. {
  19. InitializeComponent();
  20. var fileDialog = new OpenFileDialog();
  21. fileDialog.Title = "Open database file";
  22. fileDialog.Filter = "*.db|*.db";
  23. if(fileDialog.ShowDialog() == true)
  24. {
  25. _db = new Database(fileDialog.FileName);
  26. PageIndex.Text = $"{_pageIndex + 1}/{_pageCount}";
  27. var batchTasks = _db.GetBatchTasks();
  28. foreach (var task in batchTasks)
  29. {
  30. BatchTaskList.Items.Add(task);
  31. }
  32. BatchTaskList.SelectionChanged += OnBatchTaskSelectionChanged;
  33. ExamList.SelectionChanged += OnExamSelectionChanged;
  34. }
  35. else
  36. {
  37. Application.Current.Shutdown(0);
  38. }
  39. }
  40. private void OnBatchTaskSelectionChanged(object sender, SelectionChangedEventArgs e)
  41. {
  42. var batchTask = BatchTaskList.SelectedValue as BatchTask;
  43. if (batchTask != null)
  44. {
  45. var lastExam = _db.GetLastExam(batchTask.Id);
  46. if (lastExam != null)
  47. {
  48. _pageIndex = 0;
  49. _pageCount = lastExam.PageIndex + 1;
  50. var exams = _db.GetExams(batchTask.Id, _pageIndex);
  51. foreach (var exam in exams)
  52. {
  53. ExamList.Items.Add(exam);
  54. }
  55. PageIndex.Text = $"{_pageIndex + 1}/{_pageCount}";
  56. }
  57. }
  58. }
  59. private void OnExamSelectionChanged(object sender, SelectionChangedEventArgs e)
  60. {
  61. ExamControllScrollView.ScrollToHome();
  62. ExamContent.Children.Clear();
  63. if (ExamList.SelectedValue != null)
  64. {
  65. var exam = ExamList.SelectedValue as Exam;
  66. if (exam != null)
  67. {
  68. ExamContent.Children.Add(new TextBlock()
  69. {
  70. Margin = new Thickness(16),
  71. Text = exam.Report,
  72. FontSize = 20,
  73. TextWrapping = TextWrapping.Wrap
  74. });
  75. var images = _db.GetImages(exam.Id);
  76. foreach (var image in images)
  77. {
  78. var img = new BitmapImage();
  79. img.BeginInit();
  80. img.StreamSource = new MemoryStream(image.Data);
  81. img.EndInit();
  82. ExamContent.Children.Add(new System.Windows.Controls.Image()
  83. {
  84. Stretch = System.Windows.Media.Stretch.None,
  85. Margin = new Thickness(4),
  86. Source = img
  87. });
  88. }
  89. }
  90. }
  91. }
  92. private void OnNextPageClick(object sender, RoutedEventArgs e)
  93. {
  94. if (_pageIndex < _pageCount - 1)
  95. {
  96. var batchTask = BatchTaskList.SelectedValue as BatchTask;
  97. if (batchTask != null)
  98. {
  99. ExamList.Items.Clear();
  100. _pageIndex++;
  101. var exams = _db.GetExams(batchTask.Id, _pageIndex);
  102. foreach (var exam in exams)
  103. {
  104. ExamList.Items.Add(exam);
  105. }
  106. PageIndex.Text = $"{_pageIndex + 1}/{_pageCount}";
  107. }
  108. }
  109. }
  110. private void OnPreviousPageClick(object sender, RoutedEventArgs e)
  111. {
  112. if (_pageIndex > 0)
  113. {
  114. var batchTask = BatchTaskList.SelectedValue as BatchTask;
  115. if (batchTask != null)
  116. {
  117. ExamList.Items.Clear();
  118. _pageIndex--;
  119. var exams = _db.GetExams(batchTask.Id, _pageIndex);
  120. foreach (var exam in exams)
  121. {
  122. ExamList.Items.Add(exam);
  123. }
  124. PageIndex.Text = $"{_pageIndex + 1}/{_pageCount}";
  125. }
  126. }
  127. }
  128. }
  129. }