public EditorSyncedSettings(SyncedSettings settingsObject, string prefsKeyPrefix) { if (settingsObject == null) { Debug.LogError("Settings object must not be null!"); } m_syncedSettings = settingsObject as SyncedSettings; m_serializedSettings = new SerializedObject(settingsObject); m_prefsKeyPrefix = prefsKeyPrefix; if (m_syncedSettings == null) { Debug.LogError("Settings object must implement interface ISyncedSettings."); } if (m_prefsKeyPrefix == string.Empty) { Debug.LogError("Prefs key prefix must not be empty." + "This is to prevent collisions with other data, so make it unique please!"); } string userVersionName = m_syncedSettings.GetUserVersionPropertyName(); m_userVersionProperty = m_serializedSettings.FindProperty(userVersionName); m_properties = new List <SerializedProperty>(); BindingFlags bindingFlags = (BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); FieldInfo[] fieldInfos = settingsObject.GetType().GetFields(bindingFlags); foreach (FieldInfo fieldInfo in fieldInfos) { if (fieldInfo.GetCustomAttributes(typeof(NonSyncedAttribute), false).Length > 0) { continue; } SerializedProperty prop = m_serializedSettings.FindProperty(fieldInfo.Name); if (prop != null) { m_properties.Add(prop); } } }
public void LoadData(string listId) { try { //LOAD DATA BASED ON LIST ID using (var uow = SimpleIoc.Default.GetInstance <IUnitOfWorkFactory>().CreateUnitOfWork()) { pickupList = uow.PickupListRepository.GetById(listId, "Field.Farm.Client", "AssignedModules"); syncedSettings = uow.SyncedSettingsRepo.GetAll().FirstOrDefault(); if (pickupList.Destination == PickupListDestination.GIN_YARD && pickupList.AssignedModules.Count(m => m.ModuleStatus == ModuleStatus.IN_FIELD) > 0) { var firstModule = pickupList.AssignedModules.First(); FieldLat = firstModule.Latitude; FieldLong = firstModule.Longitude; } else if (pickupList.Destination == PickupListDestination.GIN_FEEDER && pickupList.AssignedModules.Count(m => m.ModuleStatus == ModuleStatus.AT_GIN) > 0) { var firstModule = pickupList.AssignedModules.First(); FieldLat = firstModule.Latitude; FieldLong = firstModule.Longitude; } if (FieldLat == 0.000 || FieldLong == 0.000) { FieldLat = pickupList.Latitude; FieldLong = pickupList.Longitude; } ListName = pickupList.Name; Client = pickupList.ClientName; Farm = pickupList.FarmName; Field = pickupList.Field.Name; if (syncedSettings == null) { pickupList.ModulesPerLoad = 4; } else { pickupList.ModulesPerLoad = syncedSettings.ModulesPerLoad; } ModulesInField = pickupList.ModulesRemaining; ModulesLoaded = pickupList.AssignedModules.Count(c => AggregateDataProvider.SerialNumbersOnTruck.Contains(c.Name)); //adjust modules in field by modules on truck if (pickupList.Destination == PickupListDestination.GIN_YARD) { foreach (var module in pickupList.AssignedModules.Where(s => s.ModuleStatus == ModuleStatus.IN_FIELD && AggregateDataProvider.SerialNumbersOnTruck.Any(x => x == s.Name))) { ModulesInField--; } } else if (pickupList.Destination == PickupListDestination.GIN_FEEDER) { foreach (var module in pickupList.AssignedModules.Where(s => s.ModuleStatus == ModuleStatus.AT_GIN && AggregateDataProvider.SerialNumbersOnTruck.Any(x => x == s.Name))) { ModulesInField--; } } ModulesOnList = pickupList.TotalModules; LoadsCompleted = pickupList.LoadsCompleted; LoadsRemaining = pickupList.LoadsRemaining; DestinationName = pickupList.DestinationName; setLoadsRemaining(); HasCheckedModules = false; System.Windows.Application.Current.Dispatcher.Invoke(new Action(() => { foreach (var m in ListModules) { m.PropertyChanged -= MVm_PropertyChanged; } Modules.Clear(); ListModules.Clear(); foreach (var m in pickupList.AssignedModules.OrderBy(s => s.Name)) { //using not thread safe version of serial numbers on truck because this event gets fired //inside a lock on the _aggregateEvents in the provider //using the threadsafe property will cause a thread lock on the same property var mVm = new ModuleViewModel { Loaded = AggregateDataProvider.SerialNumbersOnTruckNotThreadSafe.Contains(m.Name), Latitude = m.Latitude, Longitude = m.Longitude, SerialNumber = m.Name }; mVm.ShowOnMap = (m.ModuleStatus == ModuleStatus.IN_FIELD && pickupList.Destination == PickupListDestination.GIN_YARD) || (m.ModuleStatus == ModuleStatus.AT_GIN && pickupList.Destination == PickupListDestination.GIN_FEEDER); Modules.Add(mVm); if (mVm.ShowOnMap || mVm.Loaded) { mVm.PropertyChanged += MVm_PropertyChanged; ListModules.Add(mVm); } } })); } } catch (Exception exc) { Logging.Logger.Log(exc); } }