| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
-
- #if NETFX_CORE
- using UnityEngine.Windows;
- #endif
- namespace SRDebugger.UI.Other
- {
- using System;
- using System.Collections;
- using System.Linq;
- using Internal;
- using Services;
- using SRF;
- using SRF.Service;
- using UnityEngine;
- using UnityEngine.EventSystems;
- using UnityEngine.UI;
- public class BugReportSheetController : SRMonoBehaviourEx
- {
- [RequiredField] public GameObject ButtonContainer;
- [RequiredField] public Text ButtonText;
- [RequiredField] public UnityEngine.UI.Button CancelButton;
- public Action CancelPressed;
- [RequiredField] public InputField DescriptionField;
- [RequiredField] public InputField EmailField;
- [RequiredField] public Slider ProgressBar;
- [RequiredField] public Text ResultMessageText;
- public Action ScreenshotComplete;
- [RequiredField] public UnityEngine.UI.Button SubmitButton;
- public Action<bool, string> SubmitComplete;
- public Action TakingScreenshot;
- public bool IsCancelButtonEnabled
- {
- get { return CancelButton.gameObject.activeSelf; }
- set { CancelButton.gameObject.SetActive(value); }
- }
- protected override void Start()
- {
- base.Start();
- SetLoadingSpinnerVisible(false);
- ClearErrorMessage();
- ClearForm();
- }
- public void Submit()
- {
- EventSystem.current.SetSelectedGameObject(null);
- ProgressBar.value = 0;
- ClearErrorMessage();
- SetLoadingSpinnerVisible(true);
- SetFormEnabled(false);
- if (!string.IsNullOrEmpty(EmailField.text))
- {
- SetDefaultEmailFieldContents(EmailField.text);
- }
- StartCoroutine(SubmitCo());
- }
- public void Cancel()
- {
- if (CancelPressed != null)
- {
- CancelPressed();
- }
- }
- private IEnumerator SubmitCo()
- {
- if (BugReportScreenshotUtil.ScreenshotData == null && Settings.Instance.EnableBugReportScreenshot)
- {
- if (TakingScreenshot != null)
- {
- TakingScreenshot();
- }
- yield return new WaitForEndOfFrame();
- yield return StartCoroutine(BugReportScreenshotUtil.ScreenshotCaptureCo());
- if (ScreenshotComplete != null)
- {
- ScreenshotComplete();
- }
- }
- var s = SRServiceManager.GetService<IBugReportService>();
- var r = new BugReport();
- r.Email = EmailField.text;
- r.UserDescription = DescriptionField.text;
- r.ConsoleLog = Service.Console.AllEntries.ToList();
- r.SystemInformation = SRServiceManager.GetService<ISystemInformationService>().CreateReport();
- r.ScreenshotData = BugReportScreenshotUtil.ScreenshotData;
- BugReportScreenshotUtil.ScreenshotData = null;
- s.SendBugReport(r, OnBugReportComplete, new Progress<float>(OnBugReportProgress));
- }
- private void OnBugReportProgress(float progress)
- {
- ProgressBar.value = progress;
- }
- private void OnBugReportComplete(bool didSucceed, string errorMessage)
- {
- if (!didSucceed)
- {
- ShowErrorMessage("Error sending bug report", errorMessage);
- }
- else
- {
- ClearForm();
- ShowErrorMessage("Bug report submitted successfully");
- }
- SetLoadingSpinnerVisible(false);
- SetFormEnabled(true);
- if (SubmitComplete != null)
- {
- SubmitComplete(didSucceed, errorMessage);
- }
- }
- protected void SetLoadingSpinnerVisible(bool visible)
- {
- ProgressBar.gameObject.SetActive(visible);
- ButtonContainer.SetActive(!visible);
- }
- protected void ClearForm()
- {
- EmailField.text = GetDefaultEmailFieldContents();
- DescriptionField.text = "";
- }
- protected void ShowErrorMessage(string userMessage, string serverMessage = null)
- {
- var txt = userMessage;
- if (!string.IsNullOrEmpty(serverMessage))
- {
- txt += " (<b>{0}</b>)".Fmt(serverMessage);
- }
- ResultMessageText.text = txt;
- ResultMessageText.gameObject.SetActive(true);
- }
- protected void ClearErrorMessage()
- {
- ResultMessageText.text = "";
- ResultMessageText.gameObject.SetActive(false);
- }
- protected void SetFormEnabled(bool e)
- {
- SubmitButton.interactable = e;
- CancelButton.interactable = e;
- EmailField.interactable = e;
- DescriptionField.interactable = e;
- }
- private string GetDefaultEmailFieldContents()
- {
- return PlayerPrefs.GetString("SRDEBUGGER_BUG_REPORT_LAST_EMAIL", "");
- }
- private void SetDefaultEmailFieldContents(string value)
- {
- PlayerPrefs.SetString("SRDEBUGGER_BUG_REPORT_LAST_EMAIL", value);
- PlayerPrefs.Save();
- }
- }
- }
|