/// <summary> /// Saves the plugin's options. /// </summary> /// <param name="plugin"></param> /// <param name="filterConfiguration"></param> /// <returns> /// True if the configuration was saved, false if the configuration was out-of-date. /// </returns> public static bool Save(Plugin plugin, FilterConfiguration filterConfiguration) { var result = false; lock (_SyncLock) { var folder = Folder; if (!Directory.Exists(folder)) { Directory.CreateDirectory(folder); } var currentSettings = Load(); result = currentSettings.DataVersion == filterConfiguration.DataVersion; if (result) { ++filterConfiguration.DataVersion; var json = JsonConvert.SerializeObject(filterConfiguration); File.WriteAllText(FileName, json); } } if (result) { OnFilterConfigurationChanged(new EventArgs <FilterConfiguration>(filterConfiguration)); } return(result); }
/// <summary> /// Applies changes to the filter settings. /// </summary> /// <param name="filterConfiguration"></param> public void ApplyFilterConfigurationChange(FilterConfiguration filterConfiguration) { using (_Lock.AcquireLock()) { _ProhibitMlat = filterConfiguration.ProhibitMlat; _ProhibitIcaos = filterConfiguration.ProhibitIcaos; FillIcaoNumbers(filterConfiguration); FillIcaoRanges(filterConfiguration); } }
/// <summary> /// Loads the filter configuration. /// </summary> /// <returns></returns> public static FilterConfiguration Load() { FilterConfiguration result = null; var fileName = FileName; if (File.Exists(fileName)) { var fileText = File.ReadAllText(fileName); result = JsonConvert.DeserializeObject <FilterConfiguration>(fileText); } return(result ?? new FilterConfiguration()); }
private void FillIcaoNumbers(FilterConfiguration filterConfiguration) { _IcaoNumbers.Clear(); foreach (var icao in filterConfiguration.Icaos) { var normalisedIcao = NormaliseIcao(icao); if (normalisedIcao.Length == 6) { var icaoNumber = CustomConvert.Icao24(normalisedIcao); if (icaoNumber != -1 && !_IcaoNumbers.Contains(icaoNumber)) { _IcaoNumbers.Add(icaoNumber); } } } }
private void FillIcaoRanges(FilterConfiguration filterConfiguration) { _IcaoRanges.Clear(); foreach (var icaoRange in filterConfiguration.IcaoRanges) { var startIcao = NormaliseIcao(icaoRange.Start); var endIcao = NormaliseIcao(icaoRange.End); if (startIcao.Length == 6 && endIcao.Length == 6) { var startNumber = CustomConvert.Icao24(startIcao); var endNumber = CustomConvert.Icao24(endIcao); if (startNumber != -1 && endNumber != -1 && startNumber <= endNumber) { var pair = new Pair <int>(startNumber, endNumber); if (!_IcaoRanges.Contains(pair)) { _IcaoRanges.Add(pair); } } } } }