WorkItem.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using QVCopier.Utility;
  2. using System;
  3. using System.Windows.Forms;
  4. namespace QVCopier.Models
  5. {
  6. public class WorkItem
  7. {
  8. public string SourcePath { get; set; }
  9. public string DestPath { get; set; }
  10. public long Size { get; set; }
  11. public WorkItemStatus Status { get; set; }
  12. public string SourceChecksum { get; set; }
  13. public string DestChecksum { get; set; }
  14. public string DestOps { get; set; }
  15. public WorkItemDestPolicy DestPolicy { get; set; }
  16. private ListViewItem _lvi;
  17. public void UpdateUi()
  18. {
  19. if (_lvi == null) return;
  20. if (_lvi.ListView?.InvokeRequired == true)
  21. {
  22. _lvi.ListView.Invoke(new Action(UpdateListViewItemContent));
  23. }
  24. else
  25. {
  26. UpdateListViewItemContent();
  27. }
  28. }
  29. private void UpdateListViewItemContent()
  30. {
  31. _lvi.SubItems.Clear();
  32. _lvi.Text = SourcePath;
  33. _lvi.SubItems.Add(DestPath);
  34. _lvi.SubItems.Add(Size.ToFriendFileSize());
  35. _lvi.SubItems.Add(Status.ToString());
  36. _lvi.SubItems.Add($"{SourceChecksum ?? "-"} / {DestChecksum ?? "-"}");
  37. _lvi.SubItems.Add(DestOps);
  38. }
  39. public static implicit operator ListViewItem(WorkItem item)
  40. {
  41. if (item._lvi != null) return item._lvi;
  42. item._lvi = new ListViewItem();
  43. item.UpdateListViewItemContent();
  44. return item._lvi;
  45. }
  46. }
  47. }