async void NetworkObserver_Discovered(object sender, CameraDeviceEventArgs e) { var target = e.CameraDevice; try { await SequentialOperation.SetUp(target, liveview); } catch (Exception ex) { Debug.WriteLine("Failed setup: " + ex.Message); return; } this.target = target; target.Status.PropertyChanged += Status_PropertyChanged; await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { ScreenViewData = new LiveviewScreenViewData(target); ScreenViewData.NotifyFriendlyNameUpdated(); BatteryStatusDisplay.BatteryInfo = target.Status.BatteryInfo; LayoutRoot.DataContext = ScreenViewData; var panels = SettingPanelBuilder.CreateNew(target); var pn = panels.GetPanelsToShow(); foreach (var panel in pn) { ControlPanel.Children.Add(panel); } }); }
private void UpdateShutterButton(CameraStatus status) { if (status == null || status.ShootMode == null || status.ShootMode.Candidates.Count == 0) { return; } var icons = new Dictionary <string, DataTemplate>(); Capability <string> capa; if (target?.Api?.Capability?.IsAvailable(API_SET_SHOOT_MODE) ?? false && !ScreenViewData.IsRecording) { foreach (var m in status.ShootMode.Candidates) { icons.Add(m, LiveviewScreenViewData.GetShootModeIcon(m)); } capa = status.ShootMode; } else { var m = status.ShootMode.Current; icons.Add(m, LiveviewScreenViewData.GetShootModeIcon(m)); var list = new List <string>(); list.Add(m); capa = new Capability <string> { Current = m, Candidates = list }; } MultiShutterButton.ModeInfo = new ShootModeInfo() { ShootModeCapability = capa, ModeSelected = (mode) => { target?.Api?.Camera?.SetShootModeAsync(mode).IgnoreExceptions(); }, ButtonPressed = () => { ShutterButtonPressed(); }, IconTemplates = icons, }; }
private async Task SetupScreen(TargetDevice target) { this.target = target; ScreenViewData = new LiveviewScreenViewData(target); ScreenViewData.PropertyChanged += ScreenViewData_PropertyChanged; LiveviewContext = new LiveviewContext(target, HistogramCreator); LiveviewUnit.Context = LiveviewContext; LayoutRoot.DataContext = ScreenViewData; try { await SequentialOperation.SetUp(target, liveview); } catch (Exception ex) { DebugUtil.Log(() => "Failed setup: " + ex.Message); var task = Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { AppShell.Current.Toast.PushToast(new ToastContent { Text = SystemUtil.GetStringResource("ErrorMessage_CameraSetupFailure") }); AppShell.Current.AppFrame.GoBack(); }); return; } ScreenViewData.ConnectionEstablished = true; target.Status.PropertyChanged += Status_PropertyChanged; target.Api.AvailiableApisUpdated += Api_AvailiableApisUpdated; liveview.JpegRetrieved += liveview_JpegRetrieved; liveview.FocusFrameRetrieved += Liveview_FocusFrameRetrieved; liveview.Closed += liveview_Closed; LiveviewUnit.FpsTimer.Start(); BatteryStatusDisplay.BatteryInfo = target.Status.BatteryInfo; var panels = SettingPanelBuilder.CreateNew(target); var pn = panels.GetPanelsToShow(); foreach (var panel in pn) { ControlPanel.Children.Add(panel); } ControlPanel.Children.Add(robot.Gui); setShootModeEnabled = target.Api.Capability.IsAvailable(API_SET_SHOOT_MODE); ControlPanel.SetChildrenControlHitTest(!target.Status.IsRecording()); ControlPanel.SetChildrenControlTabStop(!target.Status.IsRecording()); _CommandBarManager.ShootingScreenBarData = ScreenViewData; _CommandBarManager.ApplyShootingScreenCommands(AppBarUnit); LiveviewUnit.FramingGuideDataContext = ApplicationSettings.GetInstance(); UpdateShutterButton(target.Status); OnCameraStatusChanged(target.Status); LiveviewUnit.SetupFocusFrame(ApplicationSettings.GetInstance().RequestFocusFrameInfo).IgnoreExceptions(); SetUIHandlers(); if (target.Status.ShootMode?.Current == ShootModeParam.Audio) { liveviewDisabledByAudioMode = true; } }