using Microsoft.Win32; using StationProbe; using System.IO; using System.Windows; using System.Windows.Controls; using System.Windows.Media.Imaging; namespace TestViewer { /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window { private readonly Database _db; private int _pageIndex = -1; private int _pageCount = 0; public MainWindow() { InitializeComponent(); var fileDialog = new OpenFileDialog(); fileDialog.Title = "Open database file"; fileDialog.Filter = "*.db|*.db"; if(fileDialog.ShowDialog() == true) { _db = new Database(fileDialog.FileName); PageIndex.Text = $"{_pageIndex + 1}/{_pageCount}"; var batchTasks = _db.GetBatchTasks(); foreach (var task in batchTasks) { BatchTaskList.Items.Add(task); } BatchTaskList.SelectionChanged += OnBatchTaskSelectionChanged; ExamList.SelectionChanged += OnExamSelectionChanged; } else { Application.Current.Shutdown(0); } } private void OnBatchTaskSelectionChanged(object sender, SelectionChangedEventArgs e) { var batchTask = BatchTaskList.SelectedValue as BatchTask; if (batchTask != null) { var lastExam = _db.GetLastExam(batchTask.Id); if (lastExam != null) { _pageIndex = 0; _pageCount = lastExam.PageIndex + 1; var exams = _db.GetExams(batchTask.Id, _pageIndex); foreach (var exam in exams) { ExamList.Items.Add(exam); } PageIndex.Text = $"{_pageIndex + 1}/{_pageCount}"; } } } private void OnExamSelectionChanged(object sender, SelectionChangedEventArgs e) { ExamContent.Children.Clear(); if (ExamList.SelectedValue != null) { var exam = ExamList.SelectedValue as Exam; if (exam != null) { ExamContent.Children.Add(new TextBlock() { Margin = new Thickness(16), Text = exam.Report, FontSize = 20, TextWrapping = TextWrapping.Wrap }); var images = _db.GetImages(exam.Id); foreach (var image in images) { var img = new BitmapImage(); img.BeginInit(); img.StreamSource = new MemoryStream(image.Data); img.EndInit(); ExamContent.Children.Add(new System.Windows.Controls.Image() { Margin = new Thickness(4), Source = img }); } } } } private void OnNextPageClick(object sender, RoutedEventArgs e) { if (_pageIndex < _pageCount - 1) { var batchTask = BatchTaskList.SelectedValue as BatchTask; if (batchTask != null) { ExamList.Items.Clear(); _pageIndex++; var exams = _db.GetExams(batchTask.Id, _pageIndex); foreach (var exam in exams) { ExamList.Items.Add(exam); } PageIndex.Text = $"{_pageIndex + 1}/{_pageCount}"; } } } private void OnPreviousPageClick(object sender, RoutedEventArgs e) { if (_pageIndex > 0) { var batchTask = BatchTaskList.SelectedValue as BatchTask; if (batchTask != null) { ExamList.Items.Clear(); _pageIndex--; var exams = _db.GetExams(batchTask.Id, _pageIndex); foreach (var exam in exams) { ExamList.Items.Add(exam); } PageIndex.Text = $"{_pageIndex + 1}/{_pageCount}"; } } } } }