public DevicePage(DeviceViewModel device, IDeviceRepository deviceRepository = null, IRealTimeService realTimeService = null) { _deviceViewModel = device; _deviceRepository = deviceRepository ?? DependencyService.Get<IDeviceRepository>(); _realTimeService = realTimeService ?? DependencyService.Get<IRealTimeService>(); _notifyPage = new NotifyPage(this); _realTimeService.DeviceUpdated += RealTimeService_DeviceUpdated; BindingContext = _deviceViewModel; InitializeComponent(); if (device.DeviceType == DeviceType.AutomaticWindow || device.DeviceType == DeviceType.Thermostat) ChangeSettingButton.IsVisible = true; if (device.DeviceType == DeviceType.Thermostat) ContinousSettingEntry.IsVisible = true; }
private async Task PutNewModel(DeviceViewModel deviceViewModel) { var updateModel = new UpdateDeviceViewModel { Discriminator = deviceViewModel.Discriminator, BinarySetting = deviceViewModel.BinarySetting, ContinousSetting = deviceViewModel.ContinousSetting, DeviceId = deviceViewModel.DeviceId, Description = deviceViewModel.Description, GroupId = deviceViewModel.GroupId, Name = deviceViewModel.Name }; if (!await _deviceRepository.PutDeviceAsync(updateModel)) { Debug.WriteLine($"{nameof(DevicePage)}.{nameof(PutNewModel)}, could not put new model"); } else { Debug.WriteLine($"{nameof(DevicePage)}.{nameof(PutNewModel)}, model updated"); } }
private async void ChangeSettingButton_OnClicked(object sender, EventArgs e) { var button = sender as Button; if (button == null) { Debug.WriteLine($"{nameof(DevicePage)}.{nameof(ChangeSettingButton_OnClicked)}, sender is not {typeof(Button)}, found instead {sender?.GetType()}"); return; } var newViewModel = new DeviceViewModel { DeviceType = _deviceViewModel.DeviceType, BinarySetting = _deviceViewModel.BinarySetting, ContinousSetting = _deviceViewModel.ContinousSetting, Discriminator = _deviceViewModel.Discriminator, Description = _deviceViewModel.Description, DeviceId = _deviceViewModel.DeviceId, GroupId = _deviceViewModel.GroupId, History = _deviceViewModel.History, Name = _deviceViewModel.Name }; if (_deviceViewModel.Discriminator == "Binary") { button.IsEnabled = false; newViewModel.BinarySetting = !newViewModel.BinarySetting; var sent = await _realTimeService.UpdateDeviceAsync(new DeviceSetting(newViewModel)); Debug.WriteLine($"{nameof(DevicePage)}.{nameof(ChangeSettingButton_OnClicked)}, sent request to change setting: {sent}"); } else if (_deviceViewModel.Discriminator == "Continous") { button.IsEnabled = false; var entryText = ContinousSettingEntry.Text; double newValue; if (!double.TryParse(entryText, out newValue)) { _notifyPage.DisplayAlert("Error", "New value has unknown format!"); Debug.WriteLine($"{nameof(DevicePage)}.{nameof(ChangeSettingButton_OnClicked)}, new value has unknown format: {ContinousSettingEntry.Text}"); } else { newViewModel.ContinousSetting = newValue; var sent = await _realTimeService.UpdateDeviceAsync(new DeviceSetting(newViewModel)); Debug.WriteLine($"{nameof(DevicePage)}.{nameof(ChangeSettingButton_OnClicked)}, sent request to change setting: {sent}"); } } else { Debug.WriteLine($"{nameof(DevicePage)}.{nameof(ChangeSettingButton_OnClicked)}, unknown view model {nameof(_deviceViewModel.Discriminator)} - {_deviceViewModel.Discriminator}"); } }
public DeviceChooseEventArgs(DeviceViewModel device) { DeviceViewModel = device; }