public SyncState GetImplicitStateOfPath(string path) { int count = 0; foreach (string p in SubPaths(path)) { count++; if (ExplicitPaths.ContainsKey(p)) { var syncInfo = ExplicitPaths[p]; if (syncInfo.State == SyncState.FromParent) { continue; } if (specialFolderSyncStates.Contains(syncInfo.State)) { if (count == 1 && syncInfo.State == SyncState.IncludeOnlyDirectChildFolders && SyncInfo.IsFolder(path)) // direct parent { return(SyncState.IncludeOnlyFolders); } if (count == 1 && SyncInfo.IsFolder(path)) // explicit path { return(syncInfo.State); } if (syncInfo.State == SyncState.IncludeOnlyFolders && SyncInfo.IsFolder(path)) { return(SyncState.IncludeOnlyFolders); } if (count == 2 && syncInfo.State == SyncState.IncludeOnlyDirectChildFolders && SyncInfo.IsFolder(path)) // direct parent { return(SyncState.IncludeSingleFolder); } if (count == 2 && syncInfo.State == SyncState.IncludeOnlyFiles && !SyncInfo.IsFolder(path)) // direct parent { return(SyncState.Include); } return(SyncState.Exclude); } return(syncInfo.State); } } return(SyncState.Exclude); }
public ImageIndex GetIconIndexForPath(string path) { if (ExplicitPaths.ContainsKey(path)) { // Ok, it's explicitly set SyncInfo info = ExplicitPaths[path]; if (specialFolderSyncStates.Contains(info.State)) { return(ImageIndex.FolderExplicitlyIncludeSpecial); } if (info.State == SyncState.Include) { if (SyncInfo.IsFolder(path)) { return(ImageIndex.FolderExplicitlyInclude); } else { return(ImageIndex.FileExplicitlyInclude); } } else if (SyncInfo.IsFolder(path)) { return(ImageIndex.FolderExplicitlyExclude); } else { return(ImageIndex.FileExplicitlyExclude); } } else if (PathIsIncluded(path)) { return(ImageIndex.FolderImplicitlyInclude); } else { return(ImageIndex.FolderImplicitlyExclude); } }
public bool IsFolder(string path) { return(SyncInfo.IsFolder(path)); }