Beispiel #1
0
        protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
        {
            CoreWindow.GetForCurrentThread().KeyDown -= Global_KeyDown;
            CoreWindow.GetForCurrentThread().KeyUp   -= Global_KeyUp;

            if (target != null)
            {
                target.Status.PropertyChanged    -= Status_PropertyChanged;
                target.Api.AvailiableApisUpdated -= Api_AvailiableApisUpdated;
            }

            if (ScreenViewData != null)
            {
                ScreenViewData.PropertyChanged -= ScreenViewData_PropertyChanged;
            }

            liveview.JpegRetrieved       -= liveview_JpegRetrieved;
            liveview.FocusFrameRetrieved -= Liveview_FocusFrameRetrieved;
            liveview.Closed -= liveview_Closed;
            HistogramCreator.Stop();
            LiveviewUnit.FpsTimer.Stop();

            MediaDownloader.Instance.Fetched -= OnFetchdImage;

            var task = SequentialOperation.TearDown(target, liveview);

            TearDownCurrentTarget();
            GeolocatorManager.INSTANCE.Stop();

            base.OnNavigatingFrom(e);
        }
Beispiel #2
0
        async void ShutterButtonPressed()
        {
            await SequentialOperation.StartStopRecording(
                new List <TargetDevice> {
                target
            },
                (result) =>
            {
                switch (result)
                {
                case SequentialOperation.ShootingResult.StillSucceed:
                    // todo: show message like toast
                    // ShowToast(SystemUtil.GetStringResource("Message_ImageCapture_Succeed"));
                    break;

                case SequentialOperation.ShootingResult.StartSucceed:
                case SequentialOperation.ShootingResult.StopSucceed:
                    break;

                case SequentialOperation.ShootingResult.StillFailed:
                case SequentialOperation.ShootingResult.StartFailed:
                    ShowError(SystemUtil.GetStringResource("ErrorMessage_shootingFailure"));
                    break;

                case SequentialOperation.ShootingResult.StopFailed:
                    ShowError(SystemUtil.GetStringResource("ErrorMessage_fatal"));
                    break;

                default:
                    break;
                }
            });
        }
Beispiel #3
0
        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 async void ShutterButtonPressed()
        {
            PostviewViewerViewModel.Postviews.Clear();

            var handled = StartStopPeriodicalShooting();

            if (!handled)
            {
                handled = StartStopContShooting();
            }

            if (!handled)
            {
                ScreenViewData.Capturing = true;

                await SequentialOperation.StartStopRecording(
                    new List <TargetDevice> {
                    target
                },
                    (result) =>
                {
                    switch (result)
                    {
                    case SequentialOperation.ShootingResult.StillSucceed:
                        if (!ApplicationSettings.GetInstance().IsPostviewTransferEnabled)
                        {
                            AppShell.Current.Toast.PushToast(new ToastContent {
                                Text = SystemUtil.GetStringResource("Message_ImageCapture_Succeed")
                            });
                        }
                        break;

                    case SequentialOperation.ShootingResult.StartSucceed:
                    case SequentialOperation.ShootingResult.StopSucceed:
                        break;

                    case SequentialOperation.ShootingResult.StillFailed:
                    case SequentialOperation.ShootingResult.StartFailed:
                        AppShell.Current.Toast.PushToast(new ToastContent {
                            Text = SystemUtil.GetStringResource("ErrorMessage_shootingFailure")
                        });
                        break;

                    case SequentialOperation.ShootingResult.StopFailed:
                        AppShell.Current.Toast.PushToast(new ToastContent {
                            Text = SystemUtil.GetStringResource("ErrorMessage_fatal")
                        });
                        break;

                    default:
                        break;
                    }
                });

                ScreenViewData.Capturing = false;
            }
        }
 private void btnAddProcess_Click(object sender, EventArgs e)
 {
     var diag = new NewProcessDialog();
     if (diag.ShowDialog() == DialogResult.OK)
     {
         var op = new SequentialOperation() { Command = diag.Command };
         lstProcesses.Items.Add(op);
         propGrid.SelectedObject = op;
     }
 }
Beispiel #6
0
 private void RevaluateLiveviewState(CameraStatus status)
 {
     if (liveviewDisabledByAudioMode && status.ShootMode?.Current != ShootModeParam.Audio && liveview?.ConnectionState == ConnectionState.Closed)
     {
         SequentialOperation.OpenLiveviewStream(target.Api, liveview).IgnoreExceptions();
         liveviewDisabledByAudioMode = false;
     }
     else if (!liveviewDisabledByAudioMode && status.ShootMode?.Current == ShootModeParam.Audio)
     {
         SequentialOperation.CloseLiveviewStream(target.Api, liveview).IgnoreExceptions();
         liveviewDisabledByAudioMode = true;
     }
 }
Beispiel #7
0
 private async Task StopContShooting()
 {
     if (target == null)
     {
         return;
     }
     if ((PeriodicalShootingTask == null || !PeriodicalShootingTask.IsRunning) && CameraStatusUtility.IsContinuousShootingMode(target))
     {
         try
         {
             await SequentialOperation.StopContinuousShooting(target.Api);
         }
         catch (RemoteApiException ex)
         {
             DebugUtil.Log(() => ex.StackTrace);
             AppShell.Current.Toast.PushToast(new ToastContent {
                 Text = SystemUtil.GetStringResource("Error_StopContinuousShooting")
             });
         }
     }
 }
Beispiel #8
0
        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;
            }
        }
Beispiel #9
0
        private async void Global_KeyDown(CoreWindow sender, KeyEventArgs args)
        {
            robot.KeyActionHandlerAsync(sender, args, MrF83RobotUwp.KeyStatus.pressed);
            if (args.KeyStatus.RepeatCount == 1)
            {
                switch (args.VirtualKey)
                {
                case VirtualKey.Control:
                    IsCtlKeyPressed = true;
                    break;

                case VirtualKey.Shift:
                    IsShiftKeyPressed = true;
                    break;

                case VirtualKey.Space:
                    ShutterButtonPressed();
                    break;

                case VirtualKey.Right:
                    if (IsCtlKeyPressed)
                    {
                        if (ZoomElements.Visibility.IsVisible())
                        {
                            if (!IsBarRightOn)
                            {
                                if (IsShiftKeyPressed)
                                {
                                    IsBarRightOn = true; ZoomInStart();
                                }
                                else
                                {
                                    ZoomInTick();
                                }
                            }
                        }
                        else if (ISOSlider.Visibility.IsVisible())
                        {
                            ISOSlider.TickSlider(1);
                        }
                        else if (EvSlider.Visibility.IsVisible())
                        {
                            EvSlider.TickSlider(1);
                        }
                        else if (FnumberSlider.Visibility.IsVisible())
                        {
                            FnumberSlider.TickSlider(1);
                        }
                        else if (SSSlider.Visibility.IsVisible())
                        {
                            SSSlider.TickSlider(1);
                        }
                        else if (ProgramShiftSlider.Visibility.IsVisible())
                        {
                            ProgramShiftSlider.TickSlider(1);
                        }
                    }
                    break;

                case VirtualKey.Left:
                    if (IsCtlKeyPressed)
                    {
                        if (ZoomElements.Visibility.IsVisible())
                        {
                            if (!IsBarLeftOn)
                            {
                                if (IsShiftKeyPressed)
                                {
                                    IsBarLeftOn = true; ZoomOutStart();
                                }
                                else
                                {
                                    ZoomOutTick();
                                }
                            }
                        }
                        else if (ISOSlider.Visibility.IsVisible())
                        {
                            ISOSlider.TickSlider(-1);
                        }
                        else if (EvSlider.Visibility.IsVisible())
                        {
                            EvSlider.TickSlider(-1);
                        }
                        else if (FnumberSlider.Visibility.IsVisible())
                        {
                            FnumberSlider.TickSlider(-1);
                        }
                        else if (SSSlider.Visibility.IsVisible())
                        {
                            SSSlider.TickSlider(-1);
                        }
                        else if (ProgramShiftSlider.Visibility.IsVisible())
                        {
                            ProgramShiftSlider.TickSlider(-1);
                        }
                    }
                    break;

                case VirtualKey.Up:
                    if (IsCtlKeyPressed && !AppBarUnit.IsOpen)
                    {
                        AppBarUnit.IsOpen = true;
                        args.Handled      = true;
                    }
                    break;

                case VirtualKey.Down:
                    if (IsCtlKeyPressed && AppBarUnit.IsOpen)
                    {
                        AppBarUnit.IsOpen = false;
                        args.Handled      = true;
                    }
                    break;

                case VirtualKey.Z:
                    if (IsCtlKeyPressed)
                    {
                        if (ScreenViewData.IsZoomAvailable)
                        {
                            _CommandBarManager.FireTapEvent(AppBarItem.Zoom, this);
                        }
                        args.Handled = true;
                    }
                    break;

                case VirtualKey.I:
                    if (IsCtlKeyPressed)
                    {
                        if (ScreenViewData.IsSetIsoSpeedRateAvailable)
                        {
                            _CommandBarManager.FireTapEvent(AppBarItem.IsoSlider, this);
                        }
                        args.Handled = true;
                    }
                    break;

                case VirtualKey.E:
                    if (IsCtlKeyPressed)
                    {
                        if (ScreenViewData.IsSetEVAvailable)
                        {
                            _CommandBarManager.FireTapEvent(AppBarItem.EvSlider, this);
                        }
                        args.Handled = true;
                    }
                    break;

                case VirtualKey.F:
                    if (IsCtlKeyPressed)
                    {
                        if (ScreenViewData.IsSetFNumberAvailable)
                        {
                            _CommandBarManager.FireTapEvent(AppBarItem.FNumberSlider, this);
                        }
                        args.Handled = true;
                    }
                    break;

                case VirtualKey.S:
                    if (IsCtlKeyPressed)
                    {
                        if (ScreenViewData.IsSetShutterSpeedAvailable)
                        {
                            _CommandBarManager.FireTapEvent(AppBarItem.ShutterSpeedSlider, this);
                        }
                        args.Handled = true;
                    }
                    break;

                case VirtualKey.P:
                    if (IsCtlKeyPressed)
                    {
                        if (ScreenViewData.IsProgramShiftAvailable)
                        {
                            _CommandBarManager.FireTapEvent(AppBarItem.ProgramShiftSlider, this);
                        }
                        args.Handled = true;
                    }
                    break;

                case VirtualKey.C:
                    if (IsCtlKeyPressed)
                    {
                        if (_CommandBarManager.IsEnabled(AppBarItemType.Command, AppBarItem.CancelTouchAF))
                        {
                            _CommandBarManager.FireTapEvent(AppBarItem.CancelTouchAF, this);
                        }
                        args.Handled = true;
                    }
                    break;

                case VirtualKey.M:
                    if (IsCtlKeyPressed)
                    {
                        await SequentialOperation.ToggleExposureMode(this.target);

                        args.Handled = true;
                    }
                    break;

                case VirtualKey.Q:
                    if (IsCtlKeyPressed)
                    {
                        ToggleControlPanel();
                    }
                    break;
                }
            }
        }