/// <summary> /// Tries to finish feedback. /// </summary> private void TryFinishFeedback(IEnvironmentModel environmentModel = null) { try { FeedBackRecorder.StopRecording(); } catch (FeedbackRecordingNoProcessesExcpetion feedbackRecordingNoProcessesExcpetion) { Popup.Show("A recorded feedback session was ended but wasn't running. Please try start another recorded feedback session.", "No Recorded Feedback Session", MessageBoxButton.OK, MessageBoxImage.Error, null); if (_onCompleted != null) { _onCompleted(feedbackRecordingNoProcessesExcpetion); } return; } catch (FeedbackRecordingTimeoutException feedbackRecordingTimeoutException) { Popup.Show("A timeout occured waiting for the recorded feedback session to end. Please try finish the recorded feedback session again.", "Recorded Feedback Session Timeout", MessageBoxButton.OK, MessageBoxImage.Error, null); if (_onCompleted != null) { _onCompleted(feedbackRecordingTimeoutException); } return; } var attachedFiles = new Dictionary <string, string> { { "RecordingLog", _outputPath } }; if (environmentModel != null) { attachedFiles.Add("ServerLog", environmentModel.ResourceRepository.GetServerLogTempPath(environmentModel)); } attachedFiles.Add("StudioLog", FileHelper.GetStudioLogTempPath()); IFeedbackAction emailFeedbackAction = new EmailFeedbackAction(attachedFiles, environmentModel); if (_onCompleted != null) { _onCompleted(null); } FeedBackInvoker.InvokeFeedback(emailFeedbackAction); }
/// <summary> /// Tries to cancel feedback. /// </summary> private void TryCancelFeedback() { Exception completedResult = null; try { FeedBackRecorder.KillAllRecordingTasks(); } catch (FeedbackRecordingTimeoutException feedbackRecordingTimeoutException) { Popup.Show("A timeout occurred waiting for the recorded feedback session to end. Please try cancel the recorded feedback session again.", "Recorded Feedback Session Timeout", MessageBoxButton.OK, MessageBoxImage.Error, null); completedResult = feedbackRecordingTimeoutException; } if (_onCompleted != null) { _onCompleted(completedResult); } }
/// <summary> /// Tries to start feedback. /// </summary> private void TryStartFeedback(Action <Exception> onOncompleted) { _onCompleted = onOncompleted; Exception completedResult = null; try { _outputPath = GetOuputPath(); MessageBoxResult result = Popup.Show("Your actions are now being recorded. When you are ready to send your feedback please click 'Stop recording feedback' in the top right corner.", "Recording In Progress", MessageBoxButton.OK, MessageBoxImage.Information, null); if (result == MessageBoxResult.None) { if (onOncompleted != null) { onOncompleted(null); } return; } FeedBackRecorder.StartRecording(_outputPath); } catch (FeedbackRecordingInprogressException feedbackRecordingInprogressException) { MessageBoxResult result = Popup.Show("A recording session is already in progress, would you like to try end it?", "Recording In Progress", MessageBoxButton.YesNoCancel, MessageBoxImage.Error, null); if (result == MessageBoxResult.Yes) { FeedBackRecorder.KillAllRecordingTasks(); TryStartFeedback(onOncompleted); } else { completedResult = feedbackRecordingInprogressException; } } //2013.02.06: Ashley Lewis - Bug 8611 catch (FeedbackRecordingProcessFailedToStartException feedbackRecordingProcessFailedToStartException) { MessageBoxResult result = Popup.Show("The recording session cannot start at this time, would you like to send a standard email feedback?", "Recording Not Started", MessageBoxButton.YesNoCancel, MessageBoxImage.Error, null); if (result == MessageBoxResult.Yes) { new FeedbackInvoker().InvokeFeedback(Factory.FeedbackFactory.CreateEmailFeedbackAction(new Dictionary <string, string>(), ServerUtil.GetLocalhostServer())); TryCancelFeedback(); } else { completedResult = feedbackRecordingProcessFailedToStartException; } } catch (Exception e) { if (onOncompleted != null) { completedResult = e; } else { throw; } } if (onOncompleted != null && completedResult != null) { onOncompleted(completedResult); } }