123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- using System.Collections.Generic;
-
- using Codice;
- using Codice.Client.BaseCommands;
- using Codice.Client.Commands.WkTree;
- using Codice.CM.Common;
- using PlasticGui.WorkspaceWindow;
-
- namespace Unity.PlasticSCM.Editor.AssetsOverlays.Cache
- {
- internal class LocalStatusCache
- {
- internal LocalStatusCache(WorkspaceInfo wkInfo)
- {
- mWkInfo = wkInfo;
- }
-
- internal AssetStatus GetStatus(string fullPath)
- {
- AssetStatus result;
-
- if (mStatusByPathCache.TryGetValue(fullPath, out result))
- return result;
-
- result = CalculateStatus(
- fullPath,
- mWkInfo.ClientPath,
- FilterManager.Get().GetIgnoredFilter(),
- FilterManager.Get().GetHiddenChangesFilter());
-
- mStatusByPathCache.Add(fullPath, result);
-
- return result;
- }
-
- internal void Clear()
- {
- mStatusByPathCache.Clear();
- }
-
- static AssetStatus CalculateStatus(
- string fullPath,
- string wkPath,
- IgnoredFilesFilter ignoredFilter,
- HiddenChangesFilesFilter hiddenChangesFilter)
- {
- WorkspaceTreeNode treeNode = PlasticGui.Plastic.API.GetWorkspaceTreeNode(fullPath);
-
- if (CheckWorkspaceTreeNodeStatus.IsPrivate(treeNode))
- {
- return ignoredFilter.IsIgnored(fullPath) ?
- AssetStatus.Ignored : AssetStatus.Private;
- }
-
- if (CheckWorkspaceTreeNodeStatus.IsAdded(treeNode))
- return AssetStatus.Added;
-
- AssetStatus result = AssetStatus.Controlled;
-
- if (CheckWorkspaceTreeNodeStatus.IsCheckedOut(treeNode) &&
- !CheckWorkspaceTreeNodeStatus.IsDirectory(treeNode))
- result |= AssetStatus.Checkout;
-
- if (hiddenChangesFilter.IsHiddenChanged(fullPath))
- result |= AssetStatus.HiddenChanged;
-
- return result;
- }
-
- Dictionary<string, AssetStatus> mStatusByPathCache =
- BuildPathDictionary.ForPlatform<AssetStatus>();
-
- readonly WorkspaceInfo mWkInfo;
- }
- }
|