/// <summary> /// 设置标注 /// </summary> /// <param name="maskName"></param> /// <param name="resource"></param> public void SetTorrentMask(string maskName, params IResourceInfo[] resource) { if (resource == null) { return; } var mask = string.IsNullOrEmpty(maskName) ? null : AppContext.Instance.Options.HashMarks.GetValue(maskName); if (mask == null && !string.IsNullOrEmpty(maskName)) { return; } PrepareFullDetail(resource); foreach (var res in resource.Where(s => s.IsHashLoaded)) { var ea = new TorrentMarkEventArgs(res, maskName, mask); if (!string.IsNullOrEmpty(maskName)) { AppContext.Instance.HashMarkCollection.AddOrUpdate(res.Hash, maskName); } else if (AppContext.Instance.HashMarkCollection.ContainsKey(res.Hash)) { AppContext.Instance.HashMarkCollection.Remove(res.Hash); } AppContext.Instance.OnTorrentMarked(resource, ea); } }
/// <summary> /// 引发 <see cref="TorrentMarked" /> 事件 /// </summary> /// <param name="sender">引发此事件的源对象</param> /// <param name="ea">包含此事件的参数</param> public void OnTorrentMarked(object sender, TorrentMarkEventArgs ea) { var handler = TorrentMarked; if (handler != null) { handler(sender, ea); } }
void TorrentOperation_TorrentMarked(object sender, TorrentMarkEventArgs e) { var info = e.Torrent; var item = _itemCache.GetValue(info.Hash); if (item != null) { item.ForeColor = e.Mark == null ? lv.ForeColor : e.Mark.Color; item.BackColor = e.Mark == null ? lv.BackColor : e.Mark.BackColor; item.SubItems[3].Text = e.MaskName; } }
void TorrentOperation_TorrentMarked(object sender, TorrentMarkEventArgs e) { var info = e.Torrent; GetItemsByHash(info.Hash)?.ApplyMark(e.MaskName, e.Mark); }