protected virtual void SetupBindings() { _isConnectedBinding = this.SetBinding(() => DeviceVm.IsConnected).WhenSourceChanges(() => { System.Diagnostics.Debug.WriteLine("SubDeviceViewControllerBase: DeviceViewModel PropertyChanged IsConnected"); var navService = ServiceLocator.Current.GetInstance<INavigationService>(); if (!DeviceVm.IsConnected && navService.CurrentPageKey == _viewPageKey) { System.Diagnostics.Debug.WriteLine("Navigating back since device is not connected anymore."); navService.GoBack(); } }); _isConnectedBinding.ForceUpdateValueFromSourceToTarget(); _programModeBinding = this.SetBinding(() => DeviceVm.ProgramMode).WhenSourceChanges(() => { System.Diagnostics.Debug.WriteLine("SubDeviceViewControllerBase: DeviceViewModel PropertyChanged ProgramMode"); var navService = ServiceLocator.Current.GetInstance<INavigationService>(); if (_programMode != MoCoBusProgramMode.Invalid && DeviceVm.ProgramMode != _programMode && navService.CurrentPageKey == _viewPageKey) { System.Diagnostics.Debug.WriteLine("Navigating back since ProgramMode was changed to another mode"); navService.GoBack(); } }); _programModeBinding.ForceUpdateValueFromSourceToTarget(); }
public override void OnResume() { base.OnResume(); System.Diagnostics.Debug.WriteLine("ModeSmsViewFragment OnResume"); _prevRunStatus = MoCoBusRunStatus.Stopped; _runStatusBinding = this.SetBinding(() => DeviceVm.RunStatus) .WhenSourceChanges(() => { System.Diagnostics.Debug.WriteLine("ModeSmsViewFragment RunStatus Changed (new={0},prev={1})", DeviceVm.RunStatus, _prevRunStatus); lock (_runStatusLock) { if (DeviceVm.RunStatus != MoCoBusRunStatus.Stopped && DeviceVm.RunStatus != _prevRunStatus && !DeviceVm.IsUpdateTaskRunning) { System.Diagnostics.Debug.WriteLine("ModeSmsViewFragment RunStatus Changed: Looking for dialog"); var dlg = FragmentManager.FindFragmentByTag<DialogFragment>(Consts.DialogTag); if (dlg == null) { System.Diagnostics.Debug.WriteLine("ModeSmsViewFragment RunStatus Changed: Create ModeSmsStatusViewFragment"); var ft = FragmentManager.BeginTransaction(); ft.DisallowAddToBackStack(); var dlg2 = ModeSmsStatusViewFragment.NewInstance(); dlg2.Stoped += (oo, ee) => { }; dlg2.Paused += (oo, ee) => { }; dlg2.Resumed += (oo, ee) => { }; dlg2.SetCommand("Stoped", Vm.StopProgramCommand); dlg2.SetCommand("Paused", Vm.PauseProgramCommand); dlg2.SetCommand("Resumed", Vm.StartProgramCommand); dlg2.Show(ft, Consts.DialogTag); } DeviceVm.StartUpdateTask(); } } _prevRunStatus = DeviceVm.RunStatus; }); _runStatusBinding.ForceUpdateValueFromSourceToTarget(); _exposureTimeBinding = this.SetBinding(() => Vm.ExposureTime) .WhenSourceChanges(() => { ExposureTimeEditText.Text = $"{Vm.ExposureTime:F1}s"; }); _exposureTimeBinding.ForceUpdateValueFromSourceToTarget(); _preDelayTimeBinding = this.SetBinding(() => Vm.PreDelayTime) .WhenSourceChanges(() => { PreDelayTimeEditText.Text = $"{Vm.PreDelayTime:F1}s"; }); _preDelayTimeBinding.ForceUpdateValueFromSourceToTarget(); _delayTimeBinding = this.SetBinding(() => Vm.DelayTime) .WhenSourceChanges(() => { DelayTimeEditText.Text = $"{Vm.DelayTime:F1}s"; }); _delayTimeBinding.ForceUpdateValueFromSourceToTarget(); _intervalTimeBinding = this.SetBinding(() => Vm.IntervalTime) .WhenSourceChanges(() => { IntervalTimeEditText.Text = $"{Vm.IntervalTime:F1}s"; }); _intervalTimeBinding.ForceUpdateValueFromSourceToTarget(); _durationTimeBinding = this.SetBinding(() => Vm.DurationTime) .WhenSourceChanges(() => { DurationTimeEditText.Text = $"{(int)(Vm.DurationTime / 60)}:{(int)Vm.DurationTime % 60:00}m"; }); _durationTimeBinding.ForceUpdateValueFromSourceToTarget(); _maxShotsBinding = this.SetBinding(() => Vm.MaxShots) .WhenSourceChanges(() => { MaxShotsEditText.Text = $"{Vm.MaxShots}"; }); _maxShotsBinding.ForceUpdateValueFromSourceToTarget(); _sliderStartPosBinding = this.SetBinding(() => Vm.SliderStartPosition) .WhenSourceChanges(() => { SliderStartPosEditText.Text = $"{Vm.SliderStartPosition}"; }); _sliderStartPosBinding.ForceUpdateValueFromSourceToTarget(); _sliderStopPosBinding = this.SetBinding(() => Vm.SliderStopPosition) .WhenSourceChanges(() => { SliderStopPosEditText.Text = $"{Vm.SliderStopPosition}"; }); _sliderStopPosBinding.ForceUpdateValueFromSourceToTarget(); _panStartPosBinding = this.SetBinding(() => Vm.PanStartPosition) .WhenSourceChanges(() => { PanStartPosEditText.Text = $"{(double)Vm.PanStartPosition / (190 * 200 * 16) * 360:F1}°"; }); _panStartPosBinding.ForceUpdateValueFromSourceToTarget(); _panStopPosBinding = this.SetBinding(() => Vm.PanStopPosition) .WhenSourceChanges(() => { PanStopPosEditText.Text = $"{(double)Vm.PanStopPosition / (190 * 200 * 16) * 360:F1}°"; }); _panStopPosBinding.ForceUpdateValueFromSourceToTarget(); _tiltStartPosBinding = this.SetBinding(() => Vm.TiltStartPosition) .WhenSourceChanges(() => { TiltStartPosEditText.Text = $"{(double)Vm.TiltStartPosition / (190 * 200 * 16) * 360:F1}°"; }); _tiltStartPosBinding.ForceUpdateValueFromSourceToTarget(); _tiltStopPosBinding = this.SetBinding(() => Vm.TiltStopPosition) .WhenSourceChanges(() => { TiltStopPosEditText.Text = $"{(double)Vm.TiltStopPosition / (190 * 200 * 16) * 360:F1}°"; }); _tiltStopPosBinding.ForceUpdateValueFromSourceToTarget(); }
protected override void SetupBindings() { DetachBindings(); base.SetupBindings(); _hemisphereBinding = this.SetBinding(() => Vm.Direction) .WhenSourceChanges(() => { HemisphereValueLabel.Text = _hemispherePickerViewModel.Items[(int)Vm.Direction]; if ((AstroDirection)_hemispherePickerViewModel.SelectedIndex != Vm.Direction) { HemisphereValuePickerView.ReloadAllComponents(); HemisphereValuePickerView.Select((int)Vm.Direction, 0, !HemisphereValuePickerView.Hidden); } }); _hemisphereBinding.ForceUpdateValueFromSourceToTarget(); _speedBinding = this.SetBinding(() => Vm.Speed) .WhenSourceChanges(() => { SpeedValueLabel.Text = _speedPickerViewModel.Items[(int)Vm.Speed]; if ((AstroSpeed)_speedPickerViewModel.SelectedIndex != Vm.Speed) { SpeedValuePickerView.ReloadAllComponents(); SpeedValuePickerView.Select((int)Vm.Speed, 0, !SpeedValuePickerView.Hidden); } }); _speedBinding.ForceUpdateValueFromSourceToTarget(); _runStatusBinding = this.SetBinding(() => DeviceVm.RunStatus).WhenSourceChanges(() => { var nav = ServiceLocator.Current.GetInstance<INavigationService>(); if (nav.CurrentPageKey != AppDelegate.ModeAstroViewKey) return; if (DeviceVm.RunStatus != MoCoBusRunStatus.Stopped && nav.CurrentPageKey != AppDelegate.ModeAstroStatusViewKey && !_navigatedToStatusView && !DeviceVm.IsUpdateTaskRunning) { _navigatedToStatusView = true; DeviceVm.StartUpdateTask(); nav.NavigateTo(AppDelegate.ModeAstroStatusViewKey, Vm); } }); _runStatusBinding.ForceUpdateValueFromSourceToTarget(); }
public override void OnResume() { base.OnResume(); System.Diagnostics.Debug.WriteLine("ModeAstroViewFragment OnResume"); _prevRunStatus = MoCoBusRunStatus.Stopped; _runStatusBinding = this.SetBinding(() => DeviceVm.RunStatus) .WhenSourceChanges(() => { lock (_runStatusLock) { if (DeviceVm.RunStatus != MoCoBusRunStatus.Stopped && DeviceVm.RunStatus != _prevRunStatus && !DeviceVm.IsUpdateTaskRunning) { var dlg = FragmentManager.FindFragmentByTag<DialogFragment>(Consts.DialogTag); if (dlg == null) { var ft = FragmentManager.BeginTransaction(); ft.DisallowAddToBackStack(); var dlg2 = ModeAstroStatusViewFragment.NewInstance(); dlg2.Stoped += (oo, ee) => { }; dlg2.Paused += (oo, ee) => { }; dlg2.Resumed += (oo, ee) => { }; dlg2.SetCommand("Stoped", Vm.StopProgramCommand); dlg2.SetCommand("Paused", Vm.PauseProgramCommand); dlg2.SetCommand("Resumed", Vm.ResumeProgramCommand); dlg2.Show(ft, Consts.DialogTag); } DeviceVm.StartUpdateTask(); } } _prevRunStatus = DeviceVm.RunStatus; }); _runStatusBinding.ForceUpdateValueFromSourceToTarget(); _sliderAxisRadioBinding = this.SetBinding(() => SliderAxisRadioButton.Checked) .WhenSourceChanges(() => { if (SliderAxisRadioButton.Checked) { Vm.Motors |= Motors.MotorSlider; } else { Vm.Motors &= ~Motors.MotorSlider; } }); _panAxisRadioBinding = this.SetBinding(() => PanAxisRadioButton.Checked) .WhenSourceChanges(() => { if (PanAxisRadioButton.Checked) { Vm.Motors |= Motors.MotorPan; } else { Vm.Motors &= ~Motors.MotorPan; } }); _tiltAxisRadioBinding = this.SetBinding(() => TiltAxisRadioButton.Checked) .WhenSourceChanges(() => { if (TiltAxisRadioButton.Checked) { Vm.Motors |= Motors.MotorTilt; } else { Vm.Motors &= ~Motors.MotorTilt; } }); _mdkV5RadioBinding = this.SetBinding(() => MdkV5RadioButton.Checked) .WhenSourceChanges(() => { if (MdkV5RadioButton.Checked) { Vm.GearType = GearType.MdkV5; } }); _mdkV6RadioBinding = this.SetBinding(() => MdkV6RadioButton.Checked) .WhenSourceChanges(() => { if (MdkV6RadioButton.Checked) { Vm.GearType = GearType.MdkV6; } }); _nicOTiltRadioBinding = this.SetBinding(() => NicOTiltRadioButton.Checked) .WhenSourceChanges(() => { if (NicOTiltRadioButton.Checked) { Vm.GearType = GearType.NicOTilt; } }); _otherMechanicsRadioBinding = this.SetBinding(() => OtherMechanicsRadioButton.Checked) .WhenSourceChanges(() => { if (OtherMechanicsRadioButton.Checked) { Vm.GearReduction = 60.0f; } OtherMechanicsGearReductionEditText.Enabled = OtherMechanicsRadioButton.Checked; }); _northRadioBinding = this.SetBinding(() => NorthRadioButton.Checked) .WhenSourceChanges(() => { if (NorthRadioButton.Checked) Vm.Direction = AstroDirection.North; }); _southRadioBinding = this.SetBinding(() => SouthRadioButton.Checked) .WhenSourceChanges(() => { if (SouthRadioButton.Checked) Vm.Direction = AstroDirection.South; }); _siderealRadioBinding = this.SetBinding(() => SiderealRadioButton.Checked) .WhenSourceChanges(() => { if (SiderealRadioButton.Checked) Vm.Speed = AstroSpeed.Sidereal; }); _lunarRadioBinding = this.SetBinding(() => LunarRadioButton.Checked) .WhenSourceChanges(() => { if (LunarRadioButton.Checked) Vm.Speed = AstroSpeed.Lunar; }); _otherMechanicsGearReductionBinding = this.SetBinding(() => Vm.GearReduction) .WhenSourceChanges(() => { OtherMechanicsGearReductionEditText.Text = $"{Vm.GearReduction:F1}"; }); }
void SetupBindings() { _isConnectedBinding = this.SetBinding(() => Vm.IsConnected, () => ConnectButton.On, BindingMode.TwoWay).UpdateTargetTrigger("ValueChanged"); _isConnectedBinding.ValueChanged += (sender, e) => { System.Diagnostics.Debug.WriteLine("DeviceViewModel PropertyChanged IsConnected"); OnConnectionOrProgramModeChanged(); }; _isConnectedBinding.ForceUpdateValueFromSourceToTarget(); _programModeBinding = this.SetBinding(() => Vm.ProgramMode).WhenSourceChanges(() => { System.Diagnostics.Debug.WriteLine("DeviceViewModel PropertyChanged ProgramMode"); OnConnectionOrProgramModeChanged(); var navService = ServiceLocator.Current.GetInstance<INavigationService>(); switch (Vm.ProgramMode) { case MoCoBusProgramMode.ShootMoveShoot: if (navService.CurrentPageKey != AppDelegate.ModeSmsViewKey && navService.CurrentPageKey != AppDelegate.ModeSmsStatusViewKey) { if (_modeChangeRequested || Vm.RunStatus != MoCoBusRunStatus.Stopped) { System.Diagnostics.Debug.WriteLine("Navigating to ModeSmsView since a mode change was requested"); _modeChangeRequested = false; navService.NavigateTo(AppDelegate.ModeSmsViewKey, Vm.ModeSmsViewModel); } } break; case MoCoBusProgramMode.Panorama: if (navService.CurrentPageKey != AppDelegate.ModePanoViewKey && navService.CurrentPageKey != AppDelegate.ModePanoStatusViewKey) { if (_modeChangeRequested || Vm.RunStatus != MoCoBusRunStatus.Stopped) { System.Diagnostics.Debug.WriteLine("Navigating to ModePanoView since a mode change was requested"); _modeChangeRequested = false; navService.NavigateTo(AppDelegate.ModePanoViewKey, Vm.ModePanoViewModel); } } break; case MoCoBusProgramMode.Astro: if (navService.CurrentPageKey != AppDelegate.ModeAstroViewKey && navService.CurrentPageKey != AppDelegate.ModeAstroStatusViewKey) { if (_modeChangeRequested || Vm.RunStatus != MoCoBusRunStatus.Stopped) { System.Diagnostics.Debug.WriteLine("Navigating to ModeAstroView since a mode change was requested"); _modeChangeRequested = false; navService.NavigateTo(AppDelegate.ModeAstroViewKey, Vm.ModeAstroViewModel); } } break; } }); _programModeBinding.ForceUpdateValueFromSourceToTarget(); }
protected override void SetupBindings() { DetachBindings(); base.SetupBindings(); _exposureTimeBinding = this.SetBinding(() => Vm.ExposureTime).WhenSourceChanges(() => { ExposureValueLabel.Text = $"{Vm.ExposureTime:F1}s"; if ((decimal)ExposureValuePickerTableViewCell.Model.SelectedTime.TotalSeconds != Vm.ExposureTime) { ExposureValuePickerTableViewCell.Model.SelectedTime = TimeSpan.FromSeconds((double)Vm.ExposureTime); } }); _exposureTimeBinding.ForceUpdateValueFromSourceToTarget(); _preDelayTimeBinding = this.SetBinding(() => Vm.PreDelayTime).WhenSourceChanges(() => { PreDelayValueLabel.Text = $"{Vm.PreDelayTime:F1}s"; if ((decimal)PreDelayValuePickerTableViewCell.Model.SelectedTime.TotalSeconds != Vm.PreDelayTime) { PreDelayValuePickerTableViewCell.Model.SelectedTime = TimeSpan.FromSeconds((double)Vm.PreDelayTime); } }); _preDelayTimeBinding.ForceUpdateValueFromSourceToTarget(); _delayTimeBinding = this.SetBinding(() => Vm.DelayTime).WhenSourceChanges(() => { PostDelayValueLabel.Text = $"{Vm.DelayTime:F1}s"; if ((decimal)PostDelayValuePickerTableViewCell.Model.SelectedTime.TotalSeconds != Vm.DelayTime) { PostDelayValuePickerTableViewCell.Model.SelectedTime = TimeSpan.FromSeconds((double)Vm.DelayTime); } }); _delayTimeBinding.ForceUpdateValueFromSourceToTarget(); _intervalTimeBinding = this.SetBinding(() => Vm.IntervalTime).WhenSourceChanges(() => { IntervalValueLabel.Text = $"{Vm.IntervalTime:F1}s"; if ((decimal)IntervalValuePickerTableViewCell.Model.SelectedTime.TotalSeconds != Vm.IntervalTime) { IntervalValuePickerTableViewCell.Model.SelectedTime = TimeSpan.FromSeconds((double)Vm.IntervalTime); } }); _intervalTimeBinding.ForceUpdateValueFromSourceToTarget(); _durationTimeBinding = this.SetBinding(() => Vm.DurationTime).WhenSourceChanges(() => { DurationValueLabel.Text = $"{(int) (Vm.DurationTime/60)}:{(int) Vm.DurationTime%60:00}m"; if ((decimal)DurationValuePickerTableViewCell.Model.SelectedTime.TotalSeconds != Vm.DurationTime) { DurationValuePickerTableViewCell.Model.SelectedTime = TimeSpan.FromSeconds((double)Vm.DurationTime); } }); _durationTimeBinding.ForceUpdateValueFromSourceToTarget(); _maxShotsBinding = this.SetBinding(() => Vm.MaxShots).WhenSourceChanges(() => { ShotsValueLabel.Text = $"{Vm.MaxShots}"; if (ShotsValuePickerTableViewCell.Model.SelectedNumber != Vm.MaxShots) { ShotsValuePickerTableViewCell.Model.SelectedNumber = Vm.MaxShots; } }); _maxShotsBinding.ForceUpdateValueFromSourceToTarget(); _sliderStartPosBinding = this.SetBinding(() => Vm.SliderStartPosition).WhenSourceChanges(() => { SliderStartPosValueLabel.Text = $"{Vm.SliderStartPosition}"; }); _sliderStartPosBinding.ForceUpdateValueFromSourceToTarget(); _sliderStopPosBinding = this.SetBinding(() => Vm.SliderStopPosition).WhenSourceChanges(() => { SliderStopPosValueLabel.Text = $"{Vm.SliderStopPosition}"; }); _sliderStopPosBinding.ForceUpdateValueFromSourceToTarget(); _panStartPosBinding = this.SetBinding(() => Vm.PanStartPosition).WhenSourceChanges(() => { PanStartPosValueLabel.Text = $"{(double) Vm.PanStartPosition/(190*200*16)*360:F1}°"; }); _panStartPosBinding.ForceUpdateValueFromSourceToTarget(); _panStopPosBinding = this.SetBinding(() => Vm.PanStopPosition).WhenSourceChanges(() => { PanStopPosValueLabel.Text = $"{(double) Vm.PanStopPosition/(190*200*16)*360:F1}°"; }); _panStopPosBinding.ForceUpdateValueFromSourceToTarget(); _tiltStartPosBinding = this.SetBinding(() => Vm.TiltStartPosition).WhenSourceChanges(() => { TiltStartPosValueLabel.Text = $"{(double) Vm.TiltStartPosition/(190*200*16)*360:F1}°"; }); _tiltStartPosBinding.ForceUpdateValueFromSourceToTarget(); _tiltStopPosBinding = this.SetBinding(() => Vm.TiltStopPosition).WhenSourceChanges(() => { TiltStopPosValueLabel.Text = $"{(double) Vm.TiltStopPosition/(190*200*16)*360:F1}°"; }); _tiltStopPosBinding.ForceUpdateValueFromSourceToTarget(); _runStatusBinding = this.SetBinding(() => DeviceVm.RunStatus).WhenSourceChanges(() => { var nav = ServiceLocator.Current.GetInstance<INavigationService>(); System.Diagnostics.Debug.WriteLine($"ModeSmsViewController RunStatusBinding: CurrentPageKey={nav.CurrentPageKey}, RunStatus={DeviceVm.RunStatus}, _navigatedToStatusView={_navigatedToStatusView}"); if (nav.CurrentPageKey != AppDelegate.ModeSmsViewKey) return; if (DeviceVm.RunStatus != MoCoBusRunStatus.Stopped && nav.CurrentPageKey != AppDelegate.ModeSmsStatusViewKey && !_navigatedToStatusView && !DeviceVm.IsUpdateTaskRunning) { System.Diagnostics.Debug.WriteLine($"ModeSmsViewController RunStatusBinding: Start update task and navigate to status view"); _navigatedToStatusView = true; DeviceVm.StartUpdateTask(); nav.NavigateTo(AppDelegate.ModeSmsStatusViewKey, Vm); } }); _runStatusBinding.ForceUpdateValueFromSourceToTarget(); }
protected override void OnResume() { base.OnResume(); App.Initialize(this); ServiceLocator.Current.GetInstance<DispatcherHelper>().SetOwner(this); DisconnectedLayout.Visibility = ViewStates.Visible; ConnectingLayout.Visibility = ViewStates.Gone; ConnectedLayout.Visibility = ViewStates.Gone; _isConnectedBinding = this.SetBinding(() => Vm.IsConnected, () => ConnectSwitch.Checked, BindingMode.TwoWay); _showDisconnectedBinding = this.SetBinding(() => Vm.IsDisconnected, () => DisconnectedLayout.Visibility) .ConvertSourceToTarget(b => b ? ViewStates.Visible : ViewStates.Gone); _showConnectingBinding = this.SetBinding(() => Vm.IsConnecting, () => ConnectingLayout.Visibility) .ConvertSourceToTarget(b => b ? ViewStates.Visible : ViewStates.Gone); _showConnectedBinding = this.SetBinding(() => Vm.IsConnected) .WhenSourceChanges(() => { System.Diagnostics.Debug.WriteLine("DeviceViewActivity IsConnected Changed"); ConnectedLayout.Visibility = Vm.IsConnected ? ViewStates.Visible : ViewStates.Gone; if (!Vm.IsConnected) { _programMode = MoCoBusProgramMode.Invalid; System.Diagnostics.Debug.WriteLine("DeviceViewActivity IsConnected Changed: Search dialogs and close them"); var dlg = FragmentManager.FindFragmentByTag<DialogFragment>(Consts.DialogTag); if (dlg != null) { System.Diagnostics.Debug.WriteLine("DeviceViewActivity IsConnected Changed: Found dialog, dismiss it"); dlg.DismissAllowingStateLoss(); } System.Diagnostics.Debug.WriteLine("DeviceViewActivity IsConnected Changed: Search view fragment"); var f = FragmentManager.FindFragmentById<Fragment>(Resource.Id.ConnectedFragmentContainer); if (f != null) { System.Diagnostics.Debug.WriteLine("DeviceViewActivity IsConnected Changed: Remove view fragment"); var ft = FragmentManager.BeginTransaction(); ft.Remove(f); ft.SetTransition(FragmentTransit.FragmentFade); ft.Commit(); } System.Diagnostics.Debug.WriteLine("DeviceViewActivity IsConnected Changed: PopBackStackImmediate"); FragmentManager.PopBackStackImmediate(null, PopBackStackFlags.Inclusive); System.Diagnostics.Debug.WriteLine("DeviceViewActivity IsConnected Changed: ExecutePendingTransactions"); FragmentManager.ExecutePendingTransactions(); } }); _programMode = MoCoBusProgramMode.Invalid; _programModeBinding = this.SetBinding(() => Vm.ProgramMode) .WhenSourceChanges(OnProgramModeChanged); _programModeBinding.ForceUpdateValueFromSourceToTarget(); }