using System; using System.Windows.Media; using System.Windows.Threading; using Wox.Infrastructure; using Wox.Infrastructure.Image; using Wox.Infrastructure.Logger; using Wox.Plugin; namespace Wox.ViewModel { public class ResultViewModel : BaseModel { public ResultViewModel(Result result) { if (result != null) { Result = result; } } public ImageSource Image { get { var imagePath = Result.IcoPath; if (string.IsNullOrEmpty(imagePath) && Result.Icon != null) { try { return Result.Icon(); } catch (Exception e) { Log.Exception($"|ResultViewModel.Image|IcoPath is empty and exception when calling Icon() for result <{Result.Title}> of plugin <{Result.PluginDirectory}>", e); imagePath = Constant.ErrorIcon; } } // will get here either when icoPath has value\icon delegate is null\when had exception in delegate return ImageLoader.Load(imagePath); } } public Result Result { get; } public override bool Equals(object obj) { var r = obj as ResultViewModel; if (r != null) { return Result.Equals(r.Result); } else { return false; } } public override int GetHashCode() { return Result.GetHashCode(); } public override string ToString() { return Result.ToString(); } } }