75 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			75 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|  | using Codice.Client.Common; | ||
|  | using Codice.Client.Common.Threading; | ||
|  | using Codice.CM.Common; | ||
|  | using PlasticGui; | ||
|  | using Unity.PlasticSCM.Editor.AssetUtils.Processor; | ||
|  | using Unity.PlasticSCM.Editor.UI; | ||
|  | 
 | ||
|  | namespace Unity.PlasticSCM.Editor | ||
|  | { | ||
|  |     internal static class RecommendToEnableManualCheckout | ||
|  |     { | ||
|  |         internal static bool IsAlreadyRecommended() | ||
|  |         { | ||
|  |             return BoolSetting.Load( | ||
|  |                 UnityConstants.IS_MANUAL_CHECKOUT_ALREADY_RECOMMENDED_KEY_NAME, | ||
|  |                 false); | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static void SetAlreadyRecommended(bool value) | ||
|  |         { | ||
|  |             BoolSetting.Save(value, | ||
|  |                 UnityConstants.IS_MANUAL_CHECKOUT_ALREADY_RECOMMENDED_KEY_NAME); | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static void IfHasLockRulesFor(RepositorySpec repSpec) | ||
|  |         { | ||
|  |             if (UVCSAssetModificationProcessor.IsManualCheckoutEnabled || | ||
|  |                 IsAlreadyRecommended() || | ||
|  |                 !IsTimeToRecommend()) | ||
|  |                 return; | ||
|  | 
 | ||
|  |             LockRule lockRule = null; | ||
|  | 
 | ||
|  |             IThreadWaiter waiter = ThreadWaiter.GetWaiter(50); | ||
|  |             waiter.Execute( | ||
|  |                 /*threadOperationDelegate*/ | ||
|  |                 delegate | ||
|  |                 { | ||
|  |                     lockRule = PlasticGui.Plastic.API.GetLockRule(repSpec); | ||
|  |                 }, | ||
|  |                 /*afterOperationDelegate*/ | ||
|  |                 delegate | ||
|  |                 { | ||
|  |                     if (waiter.Exception != null) | ||
|  |                     { | ||
|  |                         ExceptionsHandler.LogException( | ||
|  |                             "RecommendToEnableManualCheckout", | ||
|  |                             waiter.Exception); | ||
|  |                         return; | ||
|  |                     } | ||
|  | 
 | ||
|  |                     if (lockRule == null || lockRule.Rules.Length == 0) | ||
|  |                         return; | ||
|  | 
 | ||
|  |                     if (GuiMessage.ShowQuestion( | ||
|  |                             PlasticLocalization.Name.EnableManualCheckout.GetString(), | ||
|  |                             PlasticLocalization.Name.RecommendToEnableManualCheckoutSinceLockRulesAreConfigured.GetString(), | ||
|  |                             PlasticLocalization.Name.EnableButton.GetString())) | ||
|  |                     { | ||
|  |                         UVCSAssetModificationProcessor.ToggleManualCheckoutPreference(repSpec); | ||
|  |                     } | ||
|  | 
 | ||
|  |                     SetAlreadyRecommended(true); | ||
|  |                 }); | ||
|  |         } | ||
|  | 
 | ||
|  |         static bool IsTimeToRecommend() | ||
|  |         { | ||
|  |             return ProjectLoadedCounter.Get() >= MIN_NUMBER_PROJECT_LOAD_TO_RECOMMEND; | ||
|  |         } | ||
|  | 
 | ||
|  |         const int MIN_NUMBER_PROJECT_LOAD_TO_RECOMMEND = 2; | ||
|  |     } | ||
|  | } |