// // Copyright 2014 Perforce Software Inc. // using Perforce.Model; using Perforce.P4; namespace Perforce.Helper { public class MetadataHelper { public static bool CanEdit(string path) { bool editable = false; if (!string.IsNullOrEmpty(path)) { var helper = Utility.GetPerforceHelper(); helper.GetFileMetaData(path); } return editable; } public static bool CanEdit(ListingItem item) { if (item is FileItem) { return CanEdit(item as FileItem); } else { return CanEdit(item as FolderItem); } } public static bool CanEdit(FolderItem folder) { var editable = false; if (folder.IsMapped) { } return editable; } public static bool CanEdit(FileItem file) { var editable = false; if (file.IsMapped) { editable = CanEdit(file.Metadata); } return editable; } public static bool CanEdit(FileMetaData metadata) { var editable = false; if (metadata != null && metadata.IsMapped) { var serverLock = false; if (metadata.Type.Modifiers.HasFlag(FileTypeModifier.ExclusiveOpen)) { if (metadata.OtherActions != null && metadata.OtherActions.Count > 0) { serverLock = true; } } if (!metadata.OtherLock && !serverLock) { editable = true; } } return editable; } public static bool IsOpen(FileMetaData metadata) { var openable = false; return openable; } // check if a file can be reverted. in this case, only if the current user // is editing, adding or deleting the file public static bool CanRevert(FileItem file) { var revertable = false; if (file.IsMapped) { var md = file.Metadata; if (md != null) { if (md.Action.Equals(FileAction.Edit) || md.Action.Equals(FileAction.Add) || md.Action.Equals(FileAction.Delete)) { revertable = true; } } } return revertable; } } }