83 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using Codice.Client.Common;
 | |
| using PlasticGui;
 | |
| using Unity.PlasticSCM.Editor.Settings;
 | |
| 
 | |
| namespace Unity.PlasticSCM.Editor.Views
 | |
| {
 | |
|     internal class SelectNewCodeReviewBehavior
 | |
|     {
 | |
|         internal static NewCodeReviewBehavior For(string repServer)
 | |
|         {
 | |
|             if (PlasticGui.Plastic.API.IsCloud(repServer))
 | |
|                 return AskUserIfNeeded();
 | |
| 
 | |
|             return NewCodeReviewBehavior.CreateAndOpenInDesktop;
 | |
|         }
 | |
| 
 | |
|         static NewCodeReviewBehavior AskUserIfNeeded()
 | |
|         {
 | |
|             NewCodeReviewBehavior choice = LoadPreferences();
 | |
|             if (choice != NewCodeReviewBehavior.Ask)
 | |
|                 return choice;
 | |
| 
 | |
|             return AskUserForNewCodeReviewBehavior();
 | |
|         }
 | |
| 
 | |
|         static NewCodeReviewBehavior AskUserForNewCodeReviewBehavior()
 | |
|         {
 | |
|             MultiLinkLabelData dontAksMeAgainContent =
 | |
|                 new MultiLinkLabelData(
 | |
|                     PlasticLocalization.Name.DontAskMeAgainWithAction.GetString(),
 | |
|                     PlasticLocalization.Name.OtherOptions.GetString(),
 | |
|                     OpenUVCSProjectSettings.InOtherFoldout
 | |
|                 );
 | |
| 
 | |
|             bool dontAskMeAgain;
 | |
|             GuiMessage.GuiMessageResponseButton response
 | |
|                 = GuiMessage.Get().ShowQuestionWithCheckBox(
 | |
|                     PlasticLocalization.Name.SelectNewCodeReviewBehaviorTitle.GetString(),
 | |
|                     PlasticLocalization.Name.SelectNewCodeReviewBehaviorExplanation.GetString(),
 | |
|                     PlasticLocalization.Name.OpenInDesktopApp.GetString(),
 | |
|                     PlasticLocalization.Name.CancelButton.GetString(),
 | |
|                     PlasticLocalization.Name.OpenInUnityCloud.GetString(),
 | |
|                     dontAksMeAgainContent,
 | |
|                     out dontAskMeAgain
 | |
|                 );
 | |
| 
 | |
|             NewCodeReviewBehavior choice = GetNewCodeReviewBehavior(response);
 | |
| 
 | |
|             if (dontAskMeAgain && choice != NewCodeReviewBehavior.Ask)
 | |
|                 SavePreference(choice);
 | |
| 
 | |
|             return choice;
 | |
|         }
 | |
| 
 | |
|         static NewCodeReviewBehavior LoadPreferences()
 | |
|         {
 | |
|             return PlasticGuiConfig.Get().Configuration.NewCodeReviewBehavior;
 | |
|         }
 | |
| 
 | |
|         static void SavePreference(NewCodeReviewBehavior choice)
 | |
|         {
 | |
|             PlasticGuiConfig plasticGuiConfig = PlasticGuiConfig.Get();
 | |
|             plasticGuiConfig.Configuration.NewCodeReviewBehavior = choice;
 | |
|             plasticGuiConfig.Save();
 | |
|         }
 | |
| 
 | |
|         static NewCodeReviewBehavior GetNewCodeReviewBehavior(
 | |
|             GuiMessage.GuiMessageResponseButton response)
 | |
|         {
 | |
|             switch (response)
 | |
|             {
 | |
|                 case GuiMessage.GuiMessageResponseButton.Positive:
 | |
|                     return NewCodeReviewBehavior.CreateAndOpenInDesktop;
 | |
|                 case GuiMessage.GuiMessageResponseButton.Negative:
 | |
|                     return NewCodeReviewBehavior.RequestFromUnityCloud;
 | |
|                 case GuiMessage.GuiMessageResponseButton.Neutral:
 | |
|                 default:
 | |
|                     return NewCodeReviewBehavior.Ask;
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 |