DigitalKeyGrid.cs 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Windows;
  5. using Comal.Classes;
  6. using InABox.Clients;
  7. using InABox.Core;
  8. using InABox.DynamicGrid;
  9. namespace PRSDesktop
  10. {
  11. internal class DigitalKeyGrid : DynamicDataGrid<DigitalKey>
  12. {
  13. public DigitalKeyGrid()
  14. {
  15. //OnCustomiseEditor += CustomiseEditor;
  16. ActionColumns.Add(new DynamicMenuColumn(KeyMenu, (row) => DynamicMenuStatus.Enabled));
  17. }
  18. private void KeyMenu(DynamicMenuColumn column, CoreRow row)
  19. {
  20. column.AddItem("Connect Key", PRSDesktop.Resources.key, (row) => Activate_Key(row), null, String.IsNullOrWhiteSpace(row.Get<DigitalKey,String>(c=>c.MacAddress)));
  21. column.AddSeparator();
  22. column.AddItem("Disconnect Key", PRSDesktop.Resources.key, (row) => Remove_Key(row), null, !String.IsNullOrWhiteSpace(row.Get<DigitalKey,String>(c=>c.MacAddress)));
  23. }
  24. private void Activate_Key(CoreRow row)
  25. {
  26. var key = row.ToObject<DigitalKey>();
  27. var form = new DigitalKeyForm(key);
  28. if (form.ShowDialog() == true)
  29. new Client<DigitalKey>().Save(key, "Key Connected");
  30. Refresh(false, true);
  31. }
  32. private void Remove_Key(CoreRow row)
  33. {
  34. var confirm = MessageBox.Show(
  35. "Are you sure you wish to disonnect this key?\n\nThis will render the key inoperable until it is reconnected.",
  36. "Confirm Disconnect",
  37. MessageBoxButton.YesNo
  38. ) == MessageBoxResult.Yes;
  39. if (confirm)
  40. {
  41. var key = row.ToObject<DigitalKey>();
  42. key.Model = "";
  43. key.MacAddress = "";
  44. key.Service = "";
  45. key.Characteristic = "";
  46. key.Key = "";
  47. new Client<DigitalKey>().Save(key, "Key Disconnected");
  48. Refresh(false, true);
  49. }
  50. }
  51. //private void CustomiseEditor(IDynamicEditorForm sender, DigitalKey[] items, DynamicGridColumn column, BaseEditor editor)
  52. // {
  53. // if (column.ColumnName.Equals("Model") && editor is CodeEditor)
  54. // {
  55. // var ce = editor as CodeEditor;
  56. // ce.Editable = Editable.Enabled;
  57. // ce.Buttons = new[]
  58. // {
  59. // new(items.FirstOrDefault(), "Connect", 100, ConnectClick, true),
  60. // new EditorButton(items.FirstOrDefault(), "Clear", 100, ClearClick, true)
  61. // };
  62. // }
  63. // }
  64. // protected override Dictionary<string, object> EditorValueChanged(DynamicEditorForm editor, DigitalKey[] items, string name, object value)
  65. // {
  66. // if (name.Equals("Model"))
  67. // editor.FindEditor("DeviceID")?.SetValue(items.First().DeviceID);
  68. // return base.EditorValueChanged(editor, items, name, value);
  69. // }
  70. // private void ConnectClick(object editor, object item)
  71. // {
  72. // var ce = editor as CodeEditorControl;
  73. // var key = item as DigitalKey;
  74. // var form = new DigitalKeyForm(key);
  75. // if (form.ShowDialog() == true)
  76. // ce.SetValue(key.Model);
  77. // }
  78. //
  79. // private void ClearClick(object editor, object item)
  80. // {
  81. // var ce = editor as CodeEditorControl;
  82. // var key = item as DigitalKey;
  83. // key.Model = "";
  84. // key.DeviceID = "";
  85. // key.PublicKey = "";
  86. // key.PrivateKey = "";
  87. // ce.SetValue(key.Model);
  88. // }
  89. }
  90. }