MainWindow.xaml.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  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. ExamContent.Children.Clear();
  62. if (ExamList.SelectedValue != null)
  63. {
  64. var exam = ExamList.SelectedValue as Exam;
  65. if (exam != null)
  66. {
  67. ExamContent.Children.Add(new TextBlock()
  68. {
  69. Margin = new Thickness(16),
  70. Text = exam.Report,
  71. FontSize = 20,
  72. TextWrapping = TextWrapping.Wrap
  73. });
  74. var images = _db.GetImages(exam.Id);
  75. foreach (var image in images)
  76. {
  77. var img = new BitmapImage();
  78. img.BeginInit();
  79. img.StreamSource = new MemoryStream(image.Data);
  80. img.EndInit();
  81. ExamContent.Children.Add(new System.Windows.Controls.Image()
  82. {
  83. Margin = new Thickness(4),
  84. Source = img
  85. });
  86. }
  87. }
  88. }
  89. }
  90. private void OnNextPageClick(object sender, RoutedEventArgs e)
  91. {
  92. if (_pageIndex < _pageCount - 1)
  93. {
  94. var batchTask = BatchTaskList.SelectedValue as BatchTask;
  95. if (batchTask != null)
  96. {
  97. ExamList.Items.Clear();
  98. _pageIndex++;
  99. var exams = _db.GetExams(batchTask.Id, _pageIndex);
  100. foreach (var exam in exams)
  101. {
  102. ExamList.Items.Add(exam);
  103. }
  104. PageIndex.Text = $"{_pageIndex + 1}/{_pageCount}";
  105. }
  106. }
  107. }
  108. private void OnPreviousPageClick(object sender, RoutedEventArgs e)
  109. {
  110. if (_pageIndex > 0)
  111. {
  112. var batchTask = BatchTaskList.SelectedValue as BatchTask;
  113. if (batchTask != null)
  114. {
  115. ExamList.Items.Clear();
  116. _pageIndex--;
  117. var exams = _db.GetExams(batchTask.Id, _pageIndex);
  118. foreach (var exam in exams)
  119. {
  120. ExamList.Items.Add(exam);
  121. }
  122. PageIndex.Text = $"{_pageIndex + 1}/{_pageCount}";
  123. }
  124. }
  125. }
  126. }
  127. }