// // Copyright 2014 Perforce Software Inc. // using Perforce.Helper; using Perforce.P4; using System; using System.Linq; namespace Perforce.Model { public class FileItem : ListingItem { private FileMetaData _metadata; public FileMetaData Metadata { get { return _metadata; } set { _metadata = value; } } public bool HasSelectedTag { get { var hasTag = false; if(_metadata != null && _metadata.Attributes != null && _metadata.Attributes.ContainsKey("tags")) { var selectedTags = Utility.GetFavoritesHelper().GetSelectedTags(); if (selectedTags != null && selectedTags.Count > 0) { var itemTags = GetTags(); foreach (var t in selectedTags) { if (itemTags.Contains(t, StringComparer.InvariantCultureIgnoreCase)) { hasTag = true; break; } } } } return hasTag; } } private string[] GetTags() { string[] tags = null; if (_metadata != null && _metadata.Attributes != null) { if (_metadata.Attributes.ContainsKey("tags")) { var hexTags = _metadata.Attributes["tags"] as string; var tagList = ListingHelper.HexToString(hexTags); tags = tagList.Split(','); } } return tags; } public override string DepotPath { get { return (_metadata.DepotPath != null) ? _metadata.DepotPath.Path : null; } set { _metadata.DepotPath = new DepotPath(value); } } public override string ClientPath { get { return (_metadata.ClientPath != null) ? _metadata.ClientPath.Path : null; } set { _metadata.ClientPath = new ClientPath(value); } } public override bool IsMapped { get { return _metadata.IsMapped; } set { throw new System.NotImplementedException(); } } public override ListingItem.TYPE Type { get { return TYPE.FILE; } } public override string Icon { get { return UIHelper.GetFileIcon(selected: IsSelected, metadata: Metadata); } } public override void Refresh() { var helper = Utility.GetPerforceHelper(); var path = this.DepotPath; if (path == null || path.StartsWith(Constants.DUMMY_DEPOT_PATH)) { path = this.ClientPath; } var md = helper.GetFileMetaData(path, "tags"); if (md != null) { _metadata = md; } base.Refresh(); } } }