From 0d4ad9ce7c225e3e801174fcb964bd3dcfe258f9 Mon Sep 17 00:00:00 2001 From: Steven Date: Wed, 23 Nov 2022 20:55:02 +0100 Subject: [PATCH 1/5] UI Redesign lepo.co wpf.ui --- RFiDGear.sln | 4 +- .../RedCell/RedCell.Diagnostics.Update/Log.cs | 2 +- .../RedCell.Diagnostics.Update/Updater.cs | 10 +- .../3rdParty/RedCell/RedCell.Net/Fetch.cs | 2 +- RFiDGear/3rdParty/SelectionBindingTextBox.cs | 4 +- RFiDGear/App.xaml | 9 +- .../DataAccessLayer/Local/CustomConverter.cs | 66 ++--- .../DataAccessLayer/Local/ResourceLoader.cs | 20 +- .../Remote/FromFile/DatabaseReaderWriter.cs | 36 +-- .../Remote/FromFile/ReportReaderWriter.cs | 16 +- .../Remote/FromFile/SettingsReaderWriter.cs | 16 +- .../Remote/FromIO/ElatecNetProvider.cs | 30 ++- .../Remote/FromIO/LibLogicalAccessProvider.cs | 40 +-- RFiDGear/Model/Checkpoint.cs | 2 +- RFiDGear/Model/GenericChipModel.cs | 2 + .../MifareClassic/MifareClassicSectorModel.cs | 14 +- .../MifareDesfire/MifareDesfireChipModel.cs | 4 +- RFiDGear/RFiDGear.csproj | 188 ++++++------- RFiDGear/View/AboutView.xaml | 47 ++-- RFiDGear/View/AboutView.xaml.cs | 25 +- RFiDGear/View/MainWindow.xaml | 254 ++++++++++++------ RFiDGear/View/MainWindow.xaml.cs | 27 +- .../TabPageMiscReaderSettingsView.xaml | 53 ++-- .../TabPageReaderSettingsView.xaml | 43 +-- RFiDGear/View/SettingsView/SetupView.xaml | 113 ++++---- RFiDGear/View/SettingsView/SetupView.xaml.cs | 10 +- RFiDGear/View/Splash.xaml | 43 +-- RFiDGear/View/Splash.xaml.cs | 17 +- .../TaskViews/CommonTask/CommonTaskView.xaml | 9 +- .../CommonTask/CommonTaskView.xaml.cs | 6 +- .../TabPageLogicTaskView.xaml | 68 ++--- .../GenericChipTask/GenericChipTaskView.xaml | 9 +- .../GenericChipTaskView.xaml.cs | 7 +- .../MifareClassicSetupView.xaml | 14 +- .../MifareClassicSetupView.xaml.cs | 6 +- .../MifareDesfireSetupView.xaml | 175 ++++++------ .../MifareDesfireSetupView.xaml.cs | 10 +- .../TabPageMifareDesfireAppCreationView.xaml | 192 ++++++------- ...MifareDesfireApplicationMasteringView.xaml | 106 ++++---- ...TabPageMifareDesfireCardMasteringView.xaml | 184 ++++++------- .../MifareUltralightSetupView.xaml.cs | 1 + RFiDGear/View/UpdateNotifierView.xaml | 50 ++-- RFiDGear/View/UpdateNotifierView.xaml.cs | 23 +- .../RFiDChipChildLayerViewModel.cs | 12 +- .../RFiDChipGrandChildLayerViewModel.cs | 18 +- .../RFiDChipParentLayerViewModel.cs | 50 ++-- RFiDGear/ViewModel/MainWindowViewModel.cs | 182 +++++++------ RFiDGear/ViewModel/SetupViewModel.cs | 2 +- .../CommonTaskViewModel.cs | 85 +++--- .../GenericChipTaskViewModel.cs | 20 +- .../MifareClassicSetupViewModel.cs | 36 +-- .../MifareDesfireSetupViewModel.cs | 90 +++---- .../MifareUltralightSetupViewModel.cs | 16 +- RFiDGear/app.config | 2 +- RFiDGear/packages.config | 30 --- .../DotNetZip.Reduced.1.9.1.8.nupkg | Bin 133680 -> 0 bytes 56 files changed, 1284 insertions(+), 1216 deletions(-) delete mode 100644 RFiDGear/packages.config delete mode 100644 packages/DotNetZip.Reduced.1.9.1.8/DotNetZip.Reduced.1.9.1.8.nupkg diff --git a/RFiDGear.sln b/RFiDGear.sln index 8925ef6..3d32e92 100644 --- a/RFiDGear.sln +++ b/RFiDGear.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.30711.63 +# Visual Studio Version 17 +VisualStudioVersion = 17.3.32929.385 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RFiDGear", "RFiDGear\RFiDGear.csproj", "{D49B605A-7B08-4B82-B4D2-7DA7D0236B13}" ProjectSection(ProjectDependencies) = postProject diff --git a/RFiDGear/3rdParty/RedCell/RedCell.Diagnostics.Update/Log.cs b/RFiDGear/3rdParty/RedCell/RedCell.Diagnostics.Update/Log.cs index 2a62bc7..6c4906e 100644 --- a/RFiDGear/3rdParty/RedCell/RedCell.Diagnostics.Update/Log.cs +++ b/RFiDGear/3rdParty/RedCell/RedCell.Diagnostics.Update/Log.cs @@ -65,7 +65,7 @@ private static void OnEvent(string message) /// The arguments. public static void Write(string format, params object[] args) { - string message = string.Format(format, args); + var message = string.Format(format, args); OnEvent(message); if (Console) { diff --git a/RFiDGear/3rdParty/RedCell/RedCell.Diagnostics.Update/Updater.cs b/RFiDGear/3rdParty/RedCell/RedCell.Diagnostics.Update/Updater.cs index bdc4426..87b8538 100644 --- a/RFiDGear/3rdParty/RedCell/RedCell.Diagnostics.Update/Updater.cs +++ b/RFiDGear/3rdParty/RedCell/RedCell.Diagnostics.Update/Updater.cs @@ -87,7 +87,7 @@ public Updater(FileInfo configFile) return; } - string data = File.ReadAllText(configFile.FullName, new UTF8Encoding(false)); + var data = File.ReadAllText(configFile.FullName, new UTF8Encoding(false)); _localConfig = new Manifest(data); #if DEBUG @@ -195,7 +195,7 @@ private void Check(object state) return; } - string data = Encoding.UTF8.GetString(http.ResponseData); + var data = Encoding.UTF8.GetString(http.ResponseData); _remoteConfig = new Manifest(data); if (_remoteConfig == null) @@ -283,7 +283,7 @@ public void Update() // Download files in manifest. - foreach (string update in _remoteConfig.Payloads) + foreach (var update in _remoteConfig.Payloads) { Log.Write("Fetching '{0}'.", update); var url = _remoteConfig.BaseUri + update; //TODO: make this localizable ? e.g. + (settings.DefaultSpecification.DefaultLanguage == "german" ? "de-de/" : "en-us/") @@ -323,8 +323,8 @@ public void Update() if (IsUserNotified && AllowUpdate) { - Process p = new Process(); - ProcessStartInfo info = new ProcessStartInfo() + var p = new Process(); + var info = new ProcessStartInfo() { FileName = "msiexec.exe", Verb="runas", diff --git a/RFiDGear/3rdParty/RedCell/RedCell.Net/Fetch.cs b/RFiDGear/3rdParty/RedCell/RedCell.Net/Fetch.cs index 6cae8b9..43bb164 100644 --- a/RFiDGear/3rdParty/RedCell/RedCell.Net/Fetch.cs +++ b/RFiDGear/3rdParty/RedCell/RedCell.Net/Fetch.cs @@ -83,7 +83,7 @@ public Fetch() /// public void Load(string url) { - for (int retry = 0; retry < Retries; retry++) + for (var retry = 0; retry < Retries; retry++) { try { diff --git a/RFiDGear/3rdParty/SelectionBindingTextBox.cs b/RFiDGear/3rdParty/SelectionBindingTextBox.cs index 265f95c..e2f619b 100644 --- a/RFiDGear/3rdParty/SelectionBindingTextBox.cs +++ b/RFiDGear/3rdParty/SelectionBindingTextBox.cs @@ -73,7 +73,7 @@ private static void OnBindableSelectionStartChanged(DependencyObject dependencyO if (!textBox.changeFromUI) { - int newValue = (int)args.NewValue; + var newValue = (int)args.NewValue; textBox.SelectionStart = newValue; } else @@ -88,7 +88,7 @@ private static void OnBindableSelectionLengthChanged(DependencyObject dependency if (!textBox.changeFromUI) { - int newValue = (int)args.NewValue; + var newValue = (int)args.NewValue; textBox.SelectionLength = newValue; } else diff --git a/RFiDGear/App.xaml b/RFiDGear/App.xaml index ae5c748..7277e32 100644 --- a/RFiDGear/App.xaml +++ b/RFiDGear/App.xaml @@ -11,16 +11,23 @@ xmlns:mainvm="clr-namespace:MefMvvm.SharedContracts.ViewModel;assembly=PluginSystem" xmlns:pre="clr-namespace:MvvmDialogs.Presenters;assembly=MVVMDialogs" xmlns:vm="clr-namespace:RFiDGear.ViewModel" + xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml" d1p1:Ignorable="d" StartupUri="View/MainWindow.xaml"> + + + + + - + + diff --git a/RFiDGear/DataAccessLayer/Local/CustomConverter.cs b/RFiDGear/DataAccessLayer/Local/CustomConverter.cs index da6acf4..1284739 100644 --- a/RFiDGear/DataAccessLayer/Local/CustomConverter.cs +++ b/RFiDGear/DataAccessLayer/Local/CustomConverter.cs @@ -20,7 +20,7 @@ public static class CustomConverter public static bool KeyFormatQuickCheck(string keyToCheck) { - foreach (char c in keyToCheck.ToCharArray()) + foreach (var c in keyToCheck.ToCharArray()) { if (c == ' ') { @@ -32,10 +32,10 @@ public static bool KeyFormatQuickCheck(string keyToCheck) public static int GetByteCount(string hexString) { - int numHexChars = 0; + var numHexChars = 0; char c; // remove all none A-F, 0-9, characters - for (int i = 0; i < hexString.Length; i++) + for (var i = 0; i < hexString.Length; i++) { c = hexString[i]; if (IsHexDigit(c)) @@ -54,10 +54,10 @@ public static int GetByteCount(string hexString) public static byte[] GetBytes(string hexString, out int discarded) { discarded = 0; - string newString = ""; + var newString = ""; char c; // remove all none A-F, 0-9, characters - for (int i = 0; i < hexString.Length; i++) + for (var i = 0; i < hexString.Length; i++) { c = hexString[i]; if (IsHexDigit(c)) @@ -76,11 +76,11 @@ public static byte[] GetBytes(string hexString, out int discarded) newString = newString.Substring(0, newString.Length - 1); } - int byteLength = newString.Length / 2; - byte[] bytes = new byte[byteLength]; + var byteLength = newString.Length / 2; + var bytes = new byte[byteLength]; string hex; - int j = 0; - for (int i = 0; i < bytes.Length; i++) + var j = 0; + for (var i = 0; i < bytes.Length; i++) { hex = new String(new Char[] { newString[j], newString[j + 1] }); bytes[i] = HexToByte(hex); @@ -91,8 +91,8 @@ public static byte[] GetBytes(string hexString, out int discarded) public static string HexToString(byte[] bytes) { - string hexString = ""; - for (int i = 0; i < bytes.Length; i++) + var hexString = ""; + for (var i = 0; i < bytes.Length; i++) { hexString += bytes[i].ToString("X2"); } @@ -101,7 +101,7 @@ public static string HexToString(byte[] bytes) public static string HexToString(byte bytes) { - string hexString = ""; + var hexString = ""; { hexString += bytes.ToString("X2"); } @@ -110,9 +110,9 @@ public static string HexToString(byte bytes) public static bool IsInHexFormat(string hexString) { - bool hexFormat = true; + var hexFormat = true; - foreach (char digit in hexString) + foreach (var digit in hexString) { if (!IsHexDigit(digit)) { @@ -126,8 +126,8 @@ public static bool IsInHexFormat(string hexString) public static bool IsHexDigit(Char c) { int numChar; - int numA = Convert.ToInt32('A'); - int num1 = Convert.ToInt32('0'); + var numA = Convert.ToInt32('A'); + var num1 = Convert.ToInt32('0'); c = Char.ToUpper(c); numChar = Convert.ToInt32(c); if (numChar >= numA && numChar < (numA + 6)) @@ -145,7 +145,7 @@ public static bool IsHexDigit(Char c) public static string FormatMifareClassicKeyWithSpacesEachByte(string Str) { - string temp = Str; + var temp = Str; if (string.IsNullOrEmpty(temp)) { @@ -163,7 +163,7 @@ public static string FormatMifareClassicKeyWithSpacesEachByte(string Str) } else { - for (int i = (Str.Length) - 2; i > 0; i -= 2) + for (var i = (Str.Length) - 2; i > 0; i -= 2) { temp = temp.Insert(i, " "); } @@ -174,7 +174,7 @@ public static string FormatMifareClassicKeyWithSpacesEachByte(string Str) public static KEY_ERROR FormatMifareDesfireKeyStringWithSpacesEachByte(string Str) { - string temp = Str; + var temp = Str; if (string.IsNullOrEmpty(temp)) { @@ -191,7 +191,7 @@ public static KEY_ERROR FormatMifareDesfireKeyStringWithSpacesEachByte(string St return KEY_ERROR.KEY_HAS_WRONG_LENGTH; } - for (int i = (Str.Length) - 2; i > 0; i -= 2) + for (var i = (Str.Length) - 2; i > 0; i -= 2) { temp = temp.Insert(i, " "); } @@ -203,7 +203,7 @@ public static KEY_ERROR FormatMifareDesfireKeyStringWithSpacesEachByte(string St public static KEY_ERROR FormatMifareClassicKeyStringWithSpacesEachByte(string Str) { - string temp = Str; + var temp = Str; if (string.IsNullOrEmpty(temp)) { @@ -220,7 +220,7 @@ public static KEY_ERROR FormatMifareClassicKeyStringWithSpacesEachByte(string St return KEY_ERROR.KEY_HAS_WRONG_LENGTH; } - for (int i = (Str.Length) - 2; i > 0; i -= 2) + for (var i = (Str.Length) - 2; i > 0; i -= 2) { temp = temp.Insert(i, " "); } @@ -232,9 +232,9 @@ public static KEY_ERROR FormatMifareClassicKeyStringWithSpacesEachByte(string St public static string NormalizeKey(string keyToNormalize) { - char[] c = keyToNormalize.ToCharArray(); + var c = keyToNormalize.ToCharArray(); - for (int i = 0; i < keyToNormalize.Length; i++) + for (var i = 0; i < keyToNormalize.Length; i++) { if (c[i] == ' ') { @@ -252,7 +252,7 @@ public static string NormalizeKey(string keyToNormalize) public static int GetChipBasedDataBlockNumber(int _sectorNumber, int _dataBlockNumberSectorBased) { int blockCount; - int dataBlockNumberChipBased = 0; + var dataBlockNumberChipBased = 0; blockCount = (_sectorNumber <= 31 ? 4 : 16); @@ -332,7 +332,7 @@ public static bool SectorTrailerHasWrongFormat(byte[] st) public static bool SectorTrailerHasWrongFormat(string stString) { _ = new byte[255]; - byte[] st = GetBytes(stString, out int _); + var st = GetBytes(stString, out var _); if (!SectorTrailerHasWrongFormat(st)) { @@ -363,7 +363,7 @@ private static byte HexToByte(string hex) throw new ArgumentException("hex must be 1 or 2 characters in length"); } - byte newByte = byte.Parse(hex, System.Globalization.NumberStyles.HexNumber); + var newByte = byte.Parse(hex, System.Globalization.NumberStyles.HexNumber); return newByte; } @@ -371,7 +371,7 @@ public static byte[] buildSectorTrailerInvNibble(byte[] st) { uint _C1, _C2, _C3; - byte[] new_st = new byte[st.Length]; + var new_st = new byte[st.Length]; _C3 = st[2]; _C3 ^= 0xFF; @@ -419,7 +419,7 @@ public byte Checksum(params byte[] val) byte crc = 0xc7; - foreach (byte b in val) + foreach (var b in val) { crc = table[(byte)(crc ^ b)]; } @@ -435,13 +435,13 @@ public byte[] Table public byte[] GenerateTable(CRC8_POLY polynomial) { - byte[] csTable = new byte[256]; + var csTable = new byte[256]; - for (int i = 0; i < 256; ++i) + for (var i = 0; i < 256; ++i) { - int curr = i; + var curr = i; - for (int j = 0; j < 8; ++j) + for (var j = 0; j < 8; ++j) { if ((curr & 0x80) != 0) { diff --git a/RFiDGear/DataAccessLayer/Local/ResourceLoader.cs b/RFiDGear/DataAccessLayer/Local/ResourceLoader.cs index a72aa69..3d0f5ba 100644 --- a/RFiDGear/DataAccessLayer/Local/ResourceLoader.cs +++ b/RFiDGear/DataAccessLayer/Local/ResourceLoader.cs @@ -82,10 +82,10 @@ public EnumerateExtension(Type type) /// public override object ProvideValue(IServiceProvider serviceProvider) { - string[] names = Enum.GetNames(Type); - string[] values = new string[names.Length]; + var names = Enum.GetNames(Type); + var values = new string[names.Length]; - for (int i = 0; i < names.Length; i++) + for (var i = 0; i < names.Length; i++) { values[i] = ResourceLoader.GetResource(string.Format("ENUM.{0}.{1}", Type.Name, names[i])); } return values; @@ -128,7 +128,7 @@ public object Convert(object value, Type targetType, object parameter, CultureIn { var collection = new ObservableCollection(); - foreach (string s in value as ObservableCollection) + foreach (var s in value as ObservableCollection) { collection.Add(ResourceLoader.GetResource(string.Format("ENUM.{0}", s))); } @@ -136,7 +136,7 @@ public object Convert(object value, Type targetType, object parameter, CultureIn } else if (value != null && !(value is string)) { - string t = string.Format("ENUM.{0}.{1}", value.GetType().Name, Enum.GetName(value.GetType(), value)); + var t = string.Format("ENUM.{0}.{1}", value.GetType().Name, Enum.GetName(value.GetType(), value)); return ResourceLoader.GetResource(string.Format("ENUM.{0}.{1}", value.GetType().Name, Enum.GetName(value.GetType(), value))); } else if (value is string) @@ -171,10 +171,10 @@ public object ConvertBack(object value, Type targetType, object parameter, Cultu { if (value != null) { - string[] names = Enum.GetNames(parameter as Type); - string[] values = new string[names.Length]; + var names = Enum.GetNames(parameter as Type); + var values = new string[names.Length]; - for (int i = 0; i < names.Length; i++) + for (var i = 0; i < names.Length; i++) { values[i] = ResourceLoader.GetResource(string.Format("ENUM.{0}.{1}", targetType.Name, names[i])); if ((string)value == values[i]) @@ -204,11 +204,11 @@ public static string GetResource(string resName) { try { - using (SettingsReaderWriter settings = new SettingsReaderWriter()) + using (var settings = new SettingsReaderWriter()) { settings.ReadSettings(); - string ressource = new ResourceManager("RFiDGear.Resources.Manifest", System.Reflection.Assembly.GetExecutingAssembly()) + var ressource = new ResourceManager("RFiDGear.Resources.Manifest", System.Reflection.Assembly.GetExecutingAssembly()) .GetString(resName, (settings.DefaultSpecification.DefaultLanguage == "german") ? new CultureInfo("de") : new CultureInfo("en")); return ressource.Replace("%NEWLINE", "\n"); diff --git a/RFiDGear/DataAccessLayer/Remote/FromFile/DatabaseReaderWriter.cs b/RFiDGear/DataAccessLayer/Remote/FromFile/DatabaseReaderWriter.cs index f087fb7..42410ca 100644 --- a/RFiDGear/DataAccessLayer/Remote/FromFile/DatabaseReaderWriter.cs +++ b/RFiDGear/DataAccessLayer/Remote/FromFile/DatabaseReaderWriter.cs @@ -53,7 +53,7 @@ public DatabaseReaderWriter() if (!File.Exists(Path.Combine(appDataPath, chipDatabaseFileName))) { - XmlSerializer serializer = new XmlSerializer(typeof(ObservableCollection)); + var serializer = new XmlSerializer(typeof(ObservableCollection)); TextWriter writer = new StreamWriter(Path.Combine(appDataPath, chipDatabaseFileName)); @@ -67,9 +67,9 @@ public DatabaseReaderWriter() File.Delete(Path.Combine(appDataPath, taskDatabaseFileName)); } - foreach(string file in Directory.GetFiles(appDataPath)) + foreach(var file in Directory.GetFiles(appDataPath)) { - FileInfo fi = new FileInfo(file); + var fi = new FileInfo(file); if (fi.Extension.ToLower(CultureInfo.CurrentCulture).Contains("rfprj")) { fi.Delete(); @@ -90,7 +90,7 @@ public DatabaseReaderWriter() public bool ReadDatabase(string _fileName = "") { TextReader reader; - int verInfo = 0; + var verInfo = 0; FileInfo file; if (string.IsNullOrWhiteSpace(_fileName) || !File.Exists(_fileName)) @@ -104,20 +104,20 @@ public bool ReadDatabase(string _fileName = "") try { - XmlDocument doc = new XmlDocument(); + var doc = new XmlDocument(); if (file.Extension.ToLower(CultureInfo.CurrentCulture) == ".xml") { doc.Load(_fileName); - XmlNode node = doc.SelectSingleNode("//ManifestVersion"); + var node = doc.SelectSingleNode("//ManifestVersion"); verInfo = Convert.ToInt32(node.InnerText.Replace(".", string.Empty)); reader = new StreamReader(_fileName); try { - XmlSerializer serializer = new XmlSerializer(typeof(ChipTaskHandlerModel)); + var serializer = new XmlSerializer(typeof(ChipTaskHandlerModel)); SetupModel = (serializer.Deserialize(reader) as ChipTaskHandlerModel); } catch (Exception e) @@ -126,7 +126,7 @@ public bool ReadDatabase(string _fileName = "") try { - XmlSerializer serializer = new XmlSerializer(typeof(ObservableCollection)); + var serializer = new XmlSerializer(typeof(ObservableCollection)); TreeViewModel = (serializer.Deserialize(reader) as ObservableCollection); } catch (Exception innerE) @@ -140,13 +140,13 @@ public bool ReadDatabase(string _fileName = "") if (file.Extension.ToLower(CultureInfo.CurrentCulture) == ".rfprj") { - using (ZipFile zip1 = ZipFile.Read(string.IsNullOrWhiteSpace(_fileName) ? + using (var zip1 = ZipFile.Read(string.IsNullOrWhiteSpace(_fileName) ? @Path.Combine(appDataPath, taskDatabaseFileNameCompressed) : _fileName)) { if (Directory.GetFiles(appDataPath, "*.tmp").Length > 0) { - foreach (string tempFile in Directory.GetFiles(appDataPath, "*.tmp")) + foreach (var tempFile in Directory.GetFiles(appDataPath, "*.tmp")) { File.Delete(tempFile); } @@ -159,21 +159,21 @@ public bool ReadDatabase(string _fileName = "") if (File.Exists(@Path.Combine(appDataPath, file.Name))) { doc.Load(@Path.Combine(appDataPath, file.Name)); - XmlNode node = doc.SelectSingleNode("//ManifestVersion"); + var node = doc.SelectSingleNode("//ManifestVersion"); verInfo = Convert.ToInt32(node.InnerText.Replace(".", string.Empty)); reader = new StreamReader(@Path.Combine(appDataPath, file.Name)); } // old Variant. Needed to open old databases else if(File.Exists(@Path.Combine(appDataPath, taskDatabaseFileName))) { doc.Load(@Path.Combine(appDataPath, taskDatabaseFileName)); - XmlNode node = doc.SelectSingleNode("//ManifestVersion"); + var node = doc.SelectSingleNode("//ManifestVersion"); verInfo = Convert.ToInt32(node.InnerText.Replace(".", string.Empty)); reader = new StreamReader(@Path.Combine(appDataPath, taskDatabaseFileName)); } try { - XmlSerializer serializer = new XmlSerializer(typeof(ChipTaskHandlerModel)); + var serializer = new XmlSerializer(typeof(ChipTaskHandlerModel)); SetupModel = (serializer.Deserialize(reader) as ChipTaskHandlerModel); } catch (Exception e) @@ -182,7 +182,7 @@ public bool ReadDatabase(string _fileName = "") try { - XmlSerializer serializer = new XmlSerializer(typeof(ObservableCollection)); + var serializer = new XmlSerializer(typeof(ObservableCollection)); TreeViewModel = (serializer.Deserialize(reader) as ObservableCollection); } catch (Exception innerE) @@ -211,12 +211,12 @@ public bool ReadDatabase(string _fileName = "") public void WriteDatabase(ObservableCollection objModel, string _path) { - ZipFile zip = new ZipFile(); + var zip = new ZipFile(); try { TextWriter writer; - XmlSerializer serializer = new XmlSerializer(typeof(ObservableCollection)); + var serializer = new XmlSerializer(typeof(ObservableCollection)); if (!string.IsNullOrEmpty(_path)) { @@ -250,11 +250,11 @@ public void WriteDatabase(ChipTaskHandlerModel objModel, string _path = "") { try { - ZipFile zip = new ZipFile(); + var zip = new ZipFile(); FileInfo file; TextWriter writer; - XmlSerializer serializer = new XmlSerializer(typeof(ChipTaskHandlerModel)); + var serializer = new XmlSerializer(typeof(ChipTaskHandlerModel)); if (!string.IsNullOrEmpty(_path)) { diff --git a/RFiDGear/DataAccessLayer/Remote/FromFile/ReportReaderWriter.cs b/RFiDGear/DataAccessLayer/Remote/FromFile/ReportReaderWriter.cs index 6b1bb06..72c39a4 100644 --- a/RFiDGear/DataAccessLayer/Remote/FromFile/ReportReaderWriter.cs +++ b/RFiDGear/DataAccessLayer/Remote/FromFile/ReportReaderWriter.cs @@ -60,11 +60,11 @@ public ObservableCollection GetReportFields() { try { - ObservableCollection temp = new ObservableCollection(); + var temp = new ObservableCollection(); - using (PdfDocument pdfDoc = new PdfDocument(new PdfReader(ReportTemplatePath))) + using (var pdfDoc = new PdfDocument(new PdfReader(ReportTemplatePath))) { - PdfAcroForm form = PdfAcroForm.GetAcroForm(pdfDoc, true); + var form = PdfAcroForm.GetAcroForm(pdfDoc, true); // Being set as true, this parameter is responsible to generate an appearance Stream // while flattening for all form fields that don't have one. Generating appearances will // slow down form flattening, but otherwise Acrobat might render the pdf on its own rules. @@ -75,7 +75,7 @@ public ObservableCollection GetReportFields() { if (form != null) { - foreach (KeyValuePair _form in form.GetFormFields()) + foreach (var _form in form.GetFormFields()) { temp.Add(_form.Key); } @@ -103,11 +103,11 @@ public void SetReportField(string _field, string _value) { try { - using (PdfDocument pdfDoc = new PdfDocument(new PdfReader(ReportTemplatePath), new PdfWriter(ReportOutputPath))) + using (var pdfDoc = new PdfDocument(new PdfReader(ReportTemplatePath), new PdfWriter(ReportOutputPath))) { ReportTemplatePath = System.IO.Path.Combine(appDataPath, reportTemplateTempFileName); - PdfAcroForm form = PdfAcroForm.GetAcroForm(pdfDoc, true); + var form = PdfAcroForm.GetAcroForm(pdfDoc, true); // Being set as true, this parameter is responsible to generate an appearance Stream // while flattening for all form fields that don't have one. Generating appearances will // slow down form flattening, but otherwise Acrobat might render the pdf on its own rules. @@ -152,9 +152,9 @@ public void ConcatReportField(string _field, string _value) { ReportTemplatePath = System.IO.Path.Combine(appDataPath, reportTemplateTempFileName); - using (PdfDocument pdfDoc = new PdfDocument(new PdfReader(ReportTemplatePath), new PdfWriter(ReportOutputPath))) + using (var pdfDoc = new PdfDocument(new PdfReader(ReportTemplatePath), new PdfWriter(ReportOutputPath))) { - PdfAcroForm form = PdfAcroForm.GetAcroForm(pdfDoc, true); + var form = PdfAcroForm.GetAcroForm(pdfDoc, true); // Being set as true, this parameter is responsible to generate an appearance Stream // while flattening for all form fields that don't have one. Generating appearances will // slow down form flattening, but otherwise Acrobat might render the pdf on its own rules. diff --git a/RFiDGear/DataAccessLayer/Remote/FromFile/SettingsReaderWriter.cs b/RFiDGear/DataAccessLayer/Remote/FromFile/SettingsReaderWriter.cs index 84eab00..397a387 100644 --- a/RFiDGear/DataAccessLayer/Remote/FromFile/SettingsReaderWriter.cs +++ b/RFiDGear/DataAccessLayer/Remote/FromFile/SettingsReaderWriter.cs @@ -72,7 +72,7 @@ public SettingsReaderWriter() Directory.CreateDirectory(appDataPath); } - XmlWriterSettings xmlSettings = new XmlWriterSettings(); + var xmlSettings = new XmlWriterSettings(); xmlSettings.Encoding = new UTF8Encoding(false); xmlWriter = XmlWriter.Create(Path.Combine(appDataPath, _updateConfigFileFileName), xmlSettings); @@ -88,12 +88,12 @@ public SettingsReaderWriter() if (doc.SelectSingleNode("//CheckInterval") == null) { - XmlElement CheckIntervalElem = doc.CreateElement("CheckInterval"); - XmlElement RemoteConfigUriElem = doc.CreateElement("RemoteConfigUri"); - XmlElement SecurityTokenElem = doc.CreateElement("SecurityToken"); - XmlElement BaseUriElem = doc.CreateElement("BaseUri"); - XmlElement PayLoadElem = doc.CreateElement("Payload"); - XmlElement InfoTextElem = doc.CreateElement("VersionInfoText"); + var CheckIntervalElem = doc.CreateElement("CheckInterval"); + var RemoteConfigUriElem = doc.CreateElement("RemoteConfigUri"); + var SecurityTokenElem = doc.CreateElement("SecurityToken"); + var BaseUriElem = doc.CreateElement("BaseUri"); + var PayLoadElem = doc.CreateElement("Payload"); + var InfoTextElem = doc.CreateElement("VersionInfoText"); doc.DocumentElement.AppendChild(CheckIntervalElem); doc.DocumentElement.AppendChild(RemoteConfigUriElem); @@ -182,7 +182,7 @@ public bool ReadSettings(string _fileName) { doc.Load(_fileName); - XmlNode node = doc.SelectSingleNode("//ManifestVersion"); + var node = doc.SelectSingleNode("//ManifestVersion"); verInfo = Convert.ToInt32(node.InnerText.Replace(".", string.Empty)); reader = new StreamReader(_fileName); diff --git a/RFiDGear/DataAccessLayer/Remote/FromIO/ElatecNetProvider.cs b/RFiDGear/DataAccessLayer/Remote/FromIO/ElatecNetProvider.cs index d2f1490..30f564c 100644 --- a/RFiDGear/DataAccessLayer/Remote/FromIO/ElatecNetProvider.cs +++ b/RFiDGear/DataAccessLayer/Remote/FromIO/ElatecNetProvider.cs @@ -10,6 +10,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Security.Cryptography; namespace RFiDGear.DataAccessLayer.Remote.FromIO { @@ -163,11 +164,11 @@ private ERROR readWriteAccessOnClassicSector(int sectorNumber, string aKey, stri try { - bool isAuth = readerDevice.MifareClassicLogin(aKey, 0, (byte)elatecSpecificSectorNumber); + var isAuth = readerDevice.MifareClassicLogin(aKey, 0, (byte)elatecSpecificSectorNumber); if (buffer == null || buffer.Length != 16) // Read Mode { - byte[] data = readerDevice.MifareClassicReadBlock((byte)CustomConverter.GetChipBasedDataBlockNumber(sectorNumber, k)); + var data = readerDevice.MifareClassicReadBlock((byte)CustomConverter.GetChipBasedDataBlockNumber(sectorNumber, k)); if (data.Length > 1) { @@ -236,12 +237,12 @@ public override ERROR GetMiFareDESFireChipAppIDs(string _appMasterKey, DESFireKe DesfireChip.AppList = new System.Collections.Generic.List(); - foreach (uint appid in readerDevice.GetDesfireAppIDs(_appMasterKey, (Elatec.NET.DESFireKeyType)_keyTypeAppMasterKey)) + foreach (var appid in readerDevice.GetDesfireAppIDs(_appMasterKey, (Elatec.NET.DESFireKeyType)_keyTypeAppMasterKey)) { DesfireChip.AppList.Add(new MifareDesfireAppModel(appid)); } - + return ERROR.NoError; } @@ -271,26 +272,39 @@ public override ERROR WriteMiFareDESFireChipFile(string _cardMasterKey, DESFireK { throw new NotImplementedException(); } + public override ERROR AuthToMifareDesfireApplication(string _applicationMasterKey, DESFireKeyType _keyType, int _keyNumber, int _appID) { ReadChipPublic(); return readerDevice.DesfireAuthenticate( _applicationMasterKey, - (byte)_keyNumber, - (byte)Enum.Parse(typeof(Elatec.NET.DESfireKeyType), Enum.GetName(typeof(RFiDGear.DataAccessLayer.DESFireKeyType), _keyType)), + (byte)_keyNumber, + (byte)(int)Enum.Parse(typeof(Elatec.NET.DESFireKeyType), Enum.GetName(typeof(RFiDGear.DataAccessLayer.DESFireKeyType), _keyType)), 1) == true ? ERROR.NoError : ERROR.NotAllowed; } public override ERROR GetMifareDesfireAppSettings(string _applicationMasterKey, DESFireKeyType _keyType, int _keyNumberCurrent, int _appID) { - throw new NotImplementedException(); + AuthToMifareDesfireApplication(_applicationMasterKey, _keyType, _keyNumberCurrent, _appID); + + if(readerDevice.GetDesFireKeySettings((uint)_appID)) + { + DesfireFileSettings.accessRights[0] = readerDevice.KeySettings; + return ERROR.NoError; + } + else + { + return ERROR.AuthenticationError; + } } public override ERROR CreateMifareDesfireApplication(string _piccMasterKey, DESFireKeySettings _keySettingsTarget, DESFireKeyType _keyTypePiccMasterKey, DESFireKeyType _keyTypeTargetApplication, int _maxNbKeys, int _appID, bool authenticateToPICCFirst = true) { - return readerDevice.DesfireCreateApplication((Elatec.NET.DESFireKeySettings)_keySettingsTarget, (Elatec.NET.DESFireKeyType)_keyTypeTargetApplication, _maxNbKeys, _appID) == true ? ERROR.NoError : ERROR.NotAllowed; + var s = (int)Enum.Parse(typeof(Elatec.NET.DESFireKeyType), Enum.GetName(typeof(RFiDGear.DataAccessLayer.DESFireKeyType), _keyTypeTargetApplication)); + + return readerDevice.DesfireCreateApplication((Elatec.NET.DESFireKeySettings)_keySettingsTarget, (Elatec.NET.DESFireKeyType)Enum.Parse(typeof(Elatec.NET.DESFireKeyType), Enum.GetName(typeof(RFiDGear.DataAccessLayer.DESFireKeyType), _keyTypeTargetApplication)), _maxNbKeys, _appID) == true ? ERROR.NoError : ERROR.NotAllowed; } public override ERROR ChangeMifareDesfireApplicationKey(string _applicationMasterKeyCurrent, int _keyNumberCurrent, DESFireKeyType _keyTypeCurrent, string _applicationMasterKeyTarget, int _keyNumberTarget, int selectedDesfireAppKeyVersionTargetAsIntint, diff --git a/RFiDGear/DataAccessLayer/Remote/FromIO/LibLogicalAccessProvider.cs b/RFiDGear/DataAccessLayer/Remote/FromIO/LibLogicalAccessProvider.cs index ff77d9d..e3bbe19 100644 --- a/RFiDGear/DataAccessLayer/Remote/FromIO/LibLogicalAccessProvider.cs +++ b/RFiDGear/DataAccessLayer/Remote/FromIO/LibLogicalAccessProvider.cs @@ -97,7 +97,7 @@ public override ERROR ReadChipPublic() { var cmd = card.Commands as DESFireCommands; - DESFireCardVersion version = cmd.GetVersion(); + var version = cmd.GetVersion(); switch (version.hardwareMjVersion & 0x0F) // Desfire(Sub)Type by lower Nibble of Major Version { @@ -239,7 +239,7 @@ public override ERROR ReadMifareClassicSingleSector(int sectorNumber, string aKe var cmd = card.Commands as IMifareCommands; - for (int k = 0; k < (sectorNumber > 31 ? 16 : 4); k++) // if sector > 31 is 16 blocks each sector i.e. mifare 4k else its 1k or 2k with 4 blocks each sector + for (var k = 0; k < (sectorNumber > 31 ? 16 : 4); k++) // if sector > 31 is 16 blocks each sector i.e. mifare 4k else its 1k or 2k with 4 blocks each sector { cmd.LoadKeyNo((byte)0, keyA, MifareKeyType.KT_KEY_A); @@ -257,7 +257,7 @@ public override ERROR ReadMifareClassicSingleSector(int sectorNumber, string aKe try { - object data = cmd.ReadBinary( + var data = cmd.ReadBinary( (byte)CustomConverter.GetChipBasedDataBlockNumber(sectorNumber, k), 48); @@ -289,7 +289,7 @@ public override ERROR ReadMifareClassicSingleSector(int sectorNumber, string aKe try { - object data = cmd.ReadBinary( + var data = cmd.ReadBinary( (byte)CustomConverter.GetChipBasedDataBlockNumber(sectorNumber, k), 48); @@ -342,7 +342,7 @@ public override ERROR WriteMifareClassicSingleSector(int sectorNumber, string _a var keyA = new MifareKey() { Value = CustomConverter.FormatMifareClassicKeyWithSpacesEachByte(_aKey) }; var keyB = new MifareKey() { Value = CustomConverter.FormatMifareClassicKeyWithSpacesEachByte(_bKey) }; - int blockCount = 0; + var blockCount = 0; if (initPCSC() == ERROR.NoError && !string.IsNullOrWhiteSpace(card.ChipIdentifier)) { @@ -357,7 +357,7 @@ public override ERROR WriteMifareClassicSingleSector(int sectorNumber, string _a cmd.LoadKeyNo((byte)0, keyA, MifareKeyType.KT_KEY_A); cmd.LoadKeyNo((byte)1, keyB, MifareKeyType.KT_KEY_B); - for (int k = 0; k < blockCount; k++) + for (var k = 0; k < blockCount; k++) { try { @@ -577,7 +577,7 @@ public override ERROR ReadMifareClassicWithMAD(int madApplicationID, { GenericChip = new GenericChipModel(card.ChipIdentifier, (CARD_TYPE)Enum.Parse(typeof(CARD_TYPE), card.Type)); - MifareLocation mlocation = card.CreateLocation() as MifareLocation; + var mlocation = card.CreateLocation() as MifareLocation; mlocation.MADApplicationID = (ushort)madApplicationID; mlocation.UseMAD = _useMADToAuth; @@ -692,7 +692,7 @@ public override ERROR GetMiFareDESFireChipAppIDs(string _appMasterKey, DESFireKe { cmd.SelectApplication((uint)0); - object appIDsObject = cmd.GetApplicationIDs(); + var appIDsObject = cmd.GetApplicationIDs(); if(DesfireChip == null) { @@ -702,7 +702,7 @@ public override ERROR GetMiFareDESFireChipAppIDs(string _appMasterKey, DESFireKe { DesfireChip.AppList = new System.Collections.Generic.List(); - foreach (uint appid in appIDsObject as UInt32[]) + foreach (var appid in appIDsObject as UInt32[]) { DesfireChip.AppList.Add(new MifareDesfireAppModel(appid)); } @@ -719,7 +719,7 @@ public override ERROR GetMiFareDESFireChipAppIDs(string _appMasterKey, DESFireKe cmd.SelectApplication((uint)0); cmd.Authenticate((byte)0, aiToUse.MasterCardKey); - object appIDsObject = cmd.GetApplicationIDs(); + var appIDsObject = cmd.GetApplicationIDs(); if (DesfireChip == null) { @@ -729,7 +729,7 @@ public override ERROR GetMiFareDESFireChipAppIDs(string _appMasterKey, DESFireKe { DesfireChip.AppList = new System.Collections.Generic.List(); - foreach (uint appid in appIDsObject as UInt32[]) + foreach (var appid in appIDsObject as UInt32[]) { DesfireChip.AppList.Add(new MifareDesfireAppModel(appid)); } @@ -765,7 +765,7 @@ public override ERROR GetMiFareDESFireChipAppIDs(string _appMasterKey, DESFireKe { DesfireChip.FreeMemory = cmd.GetFreeMemory(); - object appIDsObject = cmd.GetApplicationIDs(); + var appIDsObject = cmd.GetApplicationIDs(); if (DesfireChip == null) { @@ -775,7 +775,7 @@ public override ERROR GetMiFareDESFireChipAppIDs(string _appMasterKey, DESFireKe { DesfireChip.AppList = new System.Collections.Generic.List(); - foreach (uint appid in appIDsObject as UInt32[]) + foreach (var appid in appIDsObject as UInt32[]) { DesfireChip.AppList.Add(new MifareDesfireAppModel(appid)); } @@ -793,7 +793,7 @@ public override ERROR GetMiFareDESFireChipAppIDs(string _appMasterKey, DESFireKe cmd.SelectApplication((uint)0); cmd.Authenticate((byte)0, aiToUse.MasterCardKey); - object appIDsObject = cmd.GetApplicationIDs(); + var appIDsObject = cmd.GetApplicationIDs(); if (DesfireChip == null) { @@ -803,7 +803,7 @@ public override ERROR GetMiFareDESFireChipAppIDs(string _appMasterKey, DESFireKe { DesfireChip.AppList = new System.Collections.Generic.List(); - foreach (uint appid in appIDsObject as UInt32[]) + foreach (var appid in appIDsObject as UInt32[]) { DesfireChip.AppList.Add(new MifareDesfireAppModel(appid)); } @@ -845,7 +845,7 @@ public override ERROR GetMiFareDESFireChipAppIDs(string _appMasterKey, DESFireKe cmd.SelectApplication((uint)0); cmd.Authenticate((byte)0, aiToUse.MasterCardKey); - object appIDsObject = cmd.GetApplicationIDs(); + var appIDsObject = cmd.GetApplicationIDs(); if (DesfireChip == null) { @@ -855,7 +855,7 @@ public override ERROR GetMiFareDESFireChipAppIDs(string _appMasterKey, DESFireKe { DesfireChip.AppList = new System.Collections.Generic.List(); - foreach (uint appid in appIDsObject as UInt32[]) + foreach (var appid in appIDsObject as UInt32[]) { DesfireChip.AppList.Add(new MifareDesfireAppModel(appid)); } @@ -911,7 +911,7 @@ public override ERROR CreateMifareDesfireFile(string _appMasterKey, DESFireKeyTy { try { - DESFireAccessRights accessRights = _accessRights; + var accessRights = _accessRights; // Keys to use for authentication IDESFireAccessInfo aiToUse = new DESFireAccessInfo(); @@ -1128,7 +1128,7 @@ public override ERROR ReadMiFareDESFireChipFile(string _appMasterKey, DESFireKey // Keys to use for authentication // Get the card storage service - IStorageCardService storage = (IStorageCardService)card.GetService(CardServiceType.CST_STORAGE); + var storage = (IStorageCardService)card.GetService(CardServiceType.CST_STORAGE); // Change keys with the following ones IDESFireAccessInfo aiToWrite = new DESFireAccessInfo(); @@ -1246,7 +1246,7 @@ public override ERROR WriteMiFareDESFireChipFile(string _cardMasterKey, DESFireK // Keys to use for authentication // Get the card storage service - IStorageCardService storage = (IStorageCardService)card.GetService(CardServiceType.CST_STORAGE); + var storage = (IStorageCardService)card.GetService(CardServiceType.CST_STORAGE); // Change keys with the following ones IDESFireAccessInfo aiToUse = new DESFireAccessInfo(); diff --git a/RFiDGear/Model/Checkpoint.cs b/RFiDGear/Model/Checkpoint.cs index 258170d..ea584e9 100644 --- a/RFiDGear/Model/Checkpoint.cs +++ b/RFiDGear/Model/Checkpoint.cs @@ -21,7 +21,7 @@ public class Checkpoint public Checkpoint() { - Random rnd = new Random(); + var rnd = new Random(); UUID = rnd.Next(); ErrorLevel = ERROR.Empty; } diff --git a/RFiDGear/Model/GenericChipModel.cs b/RFiDGear/Model/GenericChipModel.cs index 6fd3a7d..4d108b0 100644 --- a/RFiDGear/Model/GenericChipModel.cs +++ b/RFiDGear/Model/GenericChipModel.cs @@ -22,5 +22,7 @@ public GenericChipModel(string uid, CARD_TYPE cardType) public string UID { get; set; } public CARD_TYPE CardType { get; set; } + public string SAK { get; set; } + public string RATS { get; set; } } } \ No newline at end of file diff --git a/RFiDGear/Model/MifareClassic/MifareClassicSectorModel.cs b/RFiDGear/Model/MifareClassic/MifareClassicSectorModel.cs index 2b261b2..363d588 100644 --- a/RFiDGear/Model/MifareClassic/MifareClassicSectorModel.cs +++ b/RFiDGear/Model/MifareClassic/MifareClassicSectorModel.cs @@ -426,7 +426,7 @@ private bool decodeSectorTrailer(string st, MifareClassicSectorModel _sector) { _ = new byte[255]; - string[] sectorTrailer = st.Split(new[] { ',', ';' }); + var sectorTrailer = st.Split(new[] { ',', ';' }); if (sectorTrailer.Count() != 3 || !(CustomConverter.IsInHexFormat(sectorTrailer[1]) && sectorTrailer[1].Length == 8) || !(CustomConverter.IsInHexFormat(sectorTrailer[0]) && sectorTrailer[0].Length == 12) || @@ -435,7 +435,7 @@ private bool decodeSectorTrailer(string st, MifareClassicSectorModel _sector) return true; } - byte[] _bytes = CustomConverter.GetBytes(sectorTrailer[1], out int _); + var _bytes = CustomConverter.GetBytes(sectorTrailer[1], out var _); if (!decodeSectorTrailer(_bytes, ref _sector)) { @@ -455,12 +455,12 @@ private bool decodeSectorTrailer(string st, MifareClassicSectorModel _sector) /// private string encodeSectorTrailer(MifareClassicSectorModel _sector) { - byte[] st = new byte[4] { 0x00, 0x00, 0x00, 0xC3 }; + var st = new byte[4] { 0x00, 0x00, 0x00, 0xC3 }; - uint sectorAccessBitsIndex = (uint)_sector.Cx; - uint dataBlock0AccessBitsIndex = (uint)_sector.DataBlock0.Cx; - uint dataBlock1AccessBitsIndex = (uint)_sector.DataBlock1.Cx; - uint dataBlock2AccessBitsIndex = (uint)_sector.DataBlock2.Cx; + var sectorAccessBitsIndex = (uint)_sector.Cx; + var dataBlock0AccessBitsIndex = (uint)_sector.DataBlock0.Cx; + var dataBlock1AccessBitsIndex = (uint)_sector.DataBlock1.Cx; + var dataBlock2AccessBitsIndex = (uint)_sector.DataBlock2.Cx; // DataBlock 0 = C1/0; C2/0; C3/0 diff --git a/RFiDGear/Model/MifareDesfire/MifareDesfireChipModel.cs b/RFiDGear/Model/MifareDesfire/MifareDesfireChipModel.cs index c038cf7..a73acd7 100644 --- a/RFiDGear/Model/MifareDesfire/MifareDesfireChipModel.cs +++ b/RFiDGear/Model/MifareDesfire/MifareDesfireChipModel.cs @@ -14,9 +14,9 @@ public uint[] AppIDs { get { - uint[] appIDs = new uint[AppList.Count]; + var appIDs = new uint[AppList.Count]; - for(int i = 0; i < AppList.Count; i++) + for(var i = 0; i < AppList.Count; i++) { appIDs[i] = AppList[i].appID; } diff --git a/RFiDGear/RFiDGear.csproj b/RFiDGear/RFiDGear.csproj index fec7cf7..eb2344a 100644 --- a/RFiDGear/RFiDGear.csproj +++ b/RFiDGear/RFiDGear.csproj @@ -8,7 +8,7 @@ WinExe RFiDGear RFiDGear - v4.7.2 + v4.8 Properties False @@ -18,7 +18,7 @@ obj\$(Configuration)\ 4 C:\Program Files\Microsoft SDKs\Windows\v8.1A\bin\ - true + false False OnBuildSuccess False @@ -101,81 +101,9 @@ RFiDGear.snk - - ..\packages\Portable.BouncyCastle.1.9.0\lib\net40\BouncyCastle.Crypto.dll - - - ..\packages\Common.Logging.3.4.1\lib\net40\Common.Logging.dll - - - ..\packages\Common.Logging.Core.3.4.1\lib\net40\Common.Logging.Core.dll - - - ..\packages\CommonServiceLocator.2.0.6\lib\net47\CommonServiceLocator.dll - - - ..\packages\CommunityToolkit.Mvvm.8.0.0\lib\netstandard2.0\CommunityToolkit.Mvvm.dll - - - ..\packages\Ionic.Zip-1.9.1.8.1.9.1.8\lib\Ionic.Zip.dll - - - ..\packages\itext7.7.2.3\lib\net461\itext.barcodes.dll - - - ..\packages\itext7.commons.7.2.3\lib\net461\itext.commons.dll - - - ..\packages\itext7.7.2.3\lib\net461\itext.forms.dll - - - ..\packages\itext7.7.2.3\lib\net461\itext.io.dll - - - ..\packages\itext7.7.2.3\lib\net461\itext.kernel.dll - - - ..\packages\itext7.7.2.3\lib\net461\itext.layout.dll - - - ..\packages\itext7.7.2.3\lib\net461\itext.pdfa.dll - - - ..\packages\itext7.7.2.3\lib\net461\itext.sign.dll - - - ..\packages\itext7.7.2.3\lib\net461\itext.styledxmlparser.dll - - - ..\packages\itext7.7.2.3\lib\net461\itext.svg.dll - - - ..\packages\Microsoft.Bcl.AsyncInterfaces.6.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll - 4.0 - - ..\packages\Microsoft.Extensions.DependencyInjection.6.0.0\lib\net461\Microsoft.Extensions.DependencyInjection.dll - - - ..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.6.0.0\lib\net461\Microsoft.Extensions.DependencyInjection.Abstractions.dll - - - ..\packages\Microsoft.Extensions.Logging.6.0.0\lib\net461\Microsoft.Extensions.Logging.dll - - - ..\packages\Microsoft.Extensions.Logging.Abstractions.6.0.0\lib\net461\Microsoft.Extensions.Logging.Abstractions.dll - - - ..\packages\Microsoft.Extensions.Options.6.0.0\lib\net461\Microsoft.Extensions.Options.dll - - - ..\packages\Microsoft.Extensions.Primitives.6.0.0\lib\net461\Microsoft.Extensions.Primitives.dll - - - ..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll - 3.0 @@ -183,12 +111,6 @@ 3.0 - - ..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll - - - ..\packages\System.ComponentModel.Annotations.5.0.0\lib\net461\System.ComponentModel.Annotations.dll - 4.0 @@ -200,28 +122,9 @@ 3.5 - - ..\packages\System.Diagnostics.DiagnosticSource.6.0.0\lib\net461\System.Diagnostics.DiagnosticSource.dll - - - ..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll - - - ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll - - - ..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll - - - ..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll - - - ..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll - False - 4.0 @@ -382,7 +285,6 @@ - @@ -505,14 +407,82 @@ + + + 8.0.0 + + + 1.9.1.8 + + + 7.2.4 + + + 7.2.4 + + + 7.0.0 + + + 7.0.0 + + + 7.0.0 + + + 7.0.0 + + + 7.0.0 + + + 7.0.0 + + + 7.0.0 + + + 13.0.1 + + + 1.9.0 + + + 4.5.1 + + + 5.0.0 + + + 7.0.0 + + + 7.0.0 + + + 4.5.5 + + + 4.5.0 + + + 6.0.0 + + + 4.7.0 + + + 4.7.0 + + + 4.5.4 + + + 4.5.0 + + + 2.0.3 + + - - - - Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}". - - - - - \ No newline at end of file diff --git a/RFiDGear/View/AboutView.xaml b/RFiDGear/View/AboutView.xaml index bfe049d..c01d559 100644 --- a/RFiDGear/View/AboutView.xaml +++ b/RFiDGear/View/AboutView.xaml @@ -1,6 +1,7 @@  - - + - + - + - + - + - - - Changelog - + + + Changelog + - - +