private void ScanHardwareLocally() { if (miningEngine.Mining) return; ProgressForm progressForm = new ProgressForm("Scanning hardware for devices capable of mining. Please be patient."); updatingListView = true; try { progressForm.IsDownload = false; //not ShowDialog() progressForm.Show(); try { using (new HourGlass()) { DevicesService devicesService = new DevicesService(engineConfiguration.XgminerConfiguration); MinerDescriptor defaultMiner = MinerFactory.Instance.GetDefaultMiner(); devices = devicesService.GetDevices(defaultMiner, MinerPath.GetPathToInstalledMiner(defaultMiner)); //safe to do here as we are Scanning Hardware - we are not mining //no data to lose in the ViewModel //clearing means our sort order within the ListView is preserved //and things like selecting the first item work better //http://social.msdn.microsoft.com/Forums/windows/en-US/8a81c5a6-251c-4bf9-91c5-a937b5cfe9f3/possible-bug-in-listview-control-topitem-property-doesnt-work-with-groups localViewModel.Devices.Clear(); ApplyModelsToViewModel(); //populate ListView directly after - maintain 1-to-1 for ViewModel to ListView items RefreshListViewFromViewModel(); } } catch (Win32Exception) { //miner not installed/not launched devices = new List<Xgminer.Data.Device>(); //dummy empty device list ShowNotInstalledMinerWarning(); } if ((devices.Count > 0) && (engineConfiguration.DeviceConfigurations.Count == 0) && (engineConfiguration.CoinConfigurations.Count == 1)) { //setup devices for a brand new user ConfigureDevicesForNewUser(); } //first try to match up devices without configurations with configurations without devices //could happen if, for instance, a COM port changes for a device FixOrphanedDeviceConfigurations(); //there needs to be a device config for each device AddMissingDeviceConfigurations(); //but no configurations for devices that have gone missing RemoveExcessDeviceConfigurations(); //remove any duplicate configurations engineConfiguration.RemoveDuplicateDeviceConfigurations(); RefreshListViewFromViewModel(); RefreshDetailsAreaIfVisible(); //clean up mappings from previous device list deviceDetailsMapping.Clear(); //auto-size columns AutoSizeListViewColumns(); RefreshStatusBarFromViewModel(); //it may not be possible to mine after discovering devices UpdateMiningButtons(); //cache devices SaveKnownDevicesToFile(); } finally { updatingListView = false; progressForm.Close(); progressForm.Dispose(); } }
public bool ScanHardwareLocally() { if (ProgressStarted != null) ProgressStarted(this, new ProgressEventArgs { Text = "Scanning hardware for devices capable of mining. Please be patient." }); try { try { DevicesService devicesService = new DevicesService(EngineConfiguration.XgminerConfiguration); MinerDescriptor defaultMiner = MinerFactory.Instance.GetDefaultMiner(); Devices = devicesService.GetDevices(MinerPath.GetPathToInstalledMiner(defaultMiner)); //pull in virtual Proxy Devices UpdateDevicesForProxySettings(); //safe to do here as we are Scanning Hardware - we are not mining //no data to lose in the ViewModel //clearing means our sort order within the ListView is preserved //and things like selecting the first item work better //http://social.msdn.microsoft.com/Forums/windows/en-US/8a81c5a6-251c-4bf9-91c5-a937b5cfe9f3/possible-bug-in-listview-control-topitem-property-doesnt-work-with-groups LocalViewModel.Devices.Clear(); ApplyModelsToViewModel(); } catch (Win32Exception) { //miner not installed/not launched Devices = new List<Device>(); //dummy empty device list return false; } if ((Devices.Count > 0) && (EngineConfiguration.DeviceConfigurations.Count == 0) && (EngineConfiguration.CoinConfigurations.Count == 1)) { //setup devices for a brand new user ConfigureDevicesForNewUser(); } //first try to match up devices without configurations with configurations without devices //could happen if, for instance, a COM port changes for a device FixOrphanedDeviceConfigurations(); //there needs to be a device config for each device AddMissingDeviceConfigurations(); //but no configurations for devices that have gone missing RemoveExcessDeviceConfigurations(); //remove any duplicate configurations EngineConfiguration.RemoveDuplicateDeviceConfigurations(); //clean up mappings from previous device list DeviceDetailsMapping.Clear(); //cache devices SaveKnownDevicesToFile(); } finally { if (ProgressCompleted != null) ProgressCompleted(this, new EventArgs()); } return true; }
private void UpdateDevicesForProxySettings() { //devices not populated / loaded, e.g. remoting error loading app (socket in use) if (Devices == null) return; DevicesService service = new DevicesService(EngineConfiguration.XgminerConfiguration); service.UpdateDevicesForProxySettings(Devices, miningEngine.Mining); AddMissingDeviceConfigurations(); }
private void ScanHardwareLocally() { if (miningEngine.Mining) return; updatingListView = true; try { try { using (new HourGlass()) { DevicesService devicesService = new DevicesService(engineConfiguration.XgminerConfiguration); devices = devicesService.GetDevices(MinerPath.GetPathToInstalledMiner()); ApplyModelsToViewModel(); //populate ListView directly after - maintain 1-to-1 for ViewModel to ListView items RefreshListViewFromViewModel(); } } catch (Win32Exception ex) { //miner not installed/not launched devices = new List<Device>(); //dummy empty device list ShowNotInstalledMinerWarning(); } if ((devices.Count > 0) && (engineConfiguration.DeviceConfigurations.Count == 0) && (engineConfiguration.CoinConfigurations.Count == 1)) { //setup devices for a brand new user ConfigureDevicesForNewUser(); } //first try to match up devices without configurations with configurations without devices //could happen if, for instance, a COM port changes for a device FixOrphanedDeviceConfigurations(); //there needs to be a device config for each device AddMissingDeviceConfigurations(); //but no configurations for devices that have gone missing RemoveExcessDeviceConfigurations(); //remove any duplicate configurations engineConfiguration.RemoveDuplicateDeviceConfigurations(); RefreshListViewFromViewModel(); RefreshDetailsAreaIfVisible(); //clean up mappings from previous device list deviceDetailsMapping.Clear(); //auto-size columns AutoSizeListViewColumns(); RefreshStatusBarFromViewModel(); //it may not be possible to mine after discovering devices UpdateMiningButtons(); } finally { updatingListView = false; } }