diff --git a/Wox/ResultListBox.xaml b/Wox/ResultListBox.xaml index 53801bc9e4..6327842e69 100644 --- a/Wox/ResultListBox.xaml +++ b/Wox/ResultListBox.xaml @@ -41,10 +41,10 @@ - + VerticalAlignment="Center" ToolTip="{Binding Result.Title}" x:Name="Title" + Text="{Binding Result.Title}" /> + diff --git a/Wox/ViewModel/MainViewModel.cs b/Wox/ViewModel/MainViewModel.cs index 5281265604..842faf6dab 100644 --- a/Wox/ViewModel/MainViewModel.cs +++ b/Wox/ViewModel/MainViewModel.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Diagnostics; +using System.Linq; using System.Threading; using System.Threading.Tasks; using System.Windows; @@ -168,7 +169,7 @@ namespace Wox.ViewModel results.SelectedIndex = int.Parse(index.ToString()); } - var result = results.SelectedItem?.RawResult; + var result = results.SelectedItem?.Result; if (result != null) // SelectedItem returns null if selection is empty. { bool hideWindow = result.Action != null && result.Action(new ActionContext @@ -193,7 +194,7 @@ namespace Wox.ViewModel { if (!ContextMenuVisibility.IsVisible()) { - var result = Results.SelectedItem?.RawResult; + var result = Results.SelectedItem?.Result; if (result != null) // SelectedItem returns null if selection is empty. { @@ -340,12 +341,13 @@ namespace Wox.ViewModel { List filterResults = new List(); - foreach (var contextMenu in ContextMenu.Results) + foreach (var result in ContextMenu.Results.Select(r => r.Result)) { - if (StringMatcher.IsMatch(contextMenu.Title, query) - || StringMatcher.IsMatch(contextMenu.SubTitle, query)) + var matched = StringMatcher.IsMatch(result.Title, query) || + StringMatcher.IsMatch(result.SubTitle, query); + if (matched) { - filterResults.Add(contextMenu.RawResult); + filterResults.Add(result); } } ContextMenu.Clear(); diff --git a/Wox/ViewModel/ResultViewModel.cs b/Wox/ViewModel/ResultViewModel.cs index bebbf5aa7b..9cbf7a5c58 100644 --- a/Wox/ViewModel/ResultViewModel.cs +++ b/Wox/ViewModel/ResultViewModel.cs @@ -1,6 +1,4 @@ -using System; -using System.Windows.Media; -using System.Windows; +using System.Windows.Media; using Wox.Infrastructure.Image; using Wox.Plugin; @@ -9,86 +7,39 @@ namespace Wox.ViewModel { public class ResultViewModel : BaseModel { - #region Private Fields - - private bool _isSelected; - - #endregion - - #region Constructor - public ResultViewModel(Result result) { if (result != null) { - RawResult = result; + Result = result; } } + public ImageSource Image => ImageLoader.Load(Result.IcoPath); - #endregion - - #region ViewModel Properties - - public string Title => RawResult.Title; - - public string SubTitle => RawResult.SubTitle; - - public string PluginID => RawResult.PluginID; - - public ImageSource Image => ImageLoader.Load(RawResult.IcoPath); - - public int Score - { - get { return RawResult.Score; } - set { RawResult.Score = value; } - } - - public Query OriginQuery - { - get { return RawResult.OriginQuery; } - set { RawResult.OriginQuery = value; } - } - - public Func Action - { - get { return RawResult.Action; } - set { RawResult.Action = value; } - } - - #endregion - - #region Properties - - internal Result RawResult { get; } - - #endregion - - public void Update(ResultViewModel newResult) - { - RawResult.Score = newResult.RawResult.Score; - RawResult.OriginQuery = newResult.RawResult.OriginQuery; - } + public Result Result { get; } public override bool Equals(object obj) { ResultViewModel r = obj as ResultViewModel; if (r != null) { - return RawResult.Equals(r.RawResult); + return Result.Equals(r.Result); + } + else + { + return false; } - - return false; } public override int GetHashCode() { - return RawResult.GetHashCode(); + return Result.GetHashCode(); } public override string ToString() { - return RawResult.ToString(); + return Result.ToString(); } } diff --git a/Wox/ViewModel/ResultsViewModel.cs b/Wox/ViewModel/ResultsViewModel.cs index 3a0743143c..8d6802405f 100644 --- a/Wox/ViewModel/ResultsViewModel.cs +++ b/Wox/ViewModel/ResultsViewModel.cs @@ -58,7 +58,7 @@ namespace Wox.ViewModel for (; index < list.Count; index++) { var result = list[index]; - if (newScore > result.RawResult.Score) + if (newScore > result.Result.Score) { break; } @@ -113,12 +113,12 @@ namespace Wox.ViewModel public void RemoveResultsExcept(PluginMetadata metadata) { - Results.RemoveAll(r => r.RawResult.PluginID != metadata.ID); + Results.RemoveAll(r => r.Result.PluginID != metadata.ID); } public void RemoveResultsFor(PluginMetadata metadata) { - Results.RemoveAll(r => r.PluginID == metadata.ID); + Results.RemoveAll(r => r.Result.PluginID == metadata.ID); } /// @@ -149,7 +149,7 @@ namespace Wox.ViewModel { var newResults = newRawResults.Select(r => new ResultViewModel(r)).ToList(); var results = Results.ToList(); - var oldResults = results.Where(r => r.PluginID == resultId).ToList(); + var oldResults = results.Where(r => r.Result.PluginID == resultId).ToList(); // intersection of A (old results) and B (new newResults) var intersection = oldResults.Intersect(newResults).ToList(); @@ -164,15 +164,15 @@ namespace Wox.ViewModel foreach (var commonResult in intersection) { int oldIndex = results.IndexOf(commonResult); - int oldScore = results[oldIndex].Score; + int oldScore = results[oldIndex].Result.Score; var newResult = newResults[newResults.IndexOf(commonResult)]; - int newScore = newResult.Score; + int newScore = newResult.Result.Score; if (newScore != oldScore) { var oldResult = results[oldIndex]; - oldResult.Score = newScore; - oldResult.OriginQuery = newResult.OriginQuery; + oldResult.Result.Score = newScore; + oldResult.Result.OriginQuery = newResult.Result.OriginQuery; results.RemoveAt(oldIndex); int newIndex = InsertIndexOf(newScore, results); @@ -183,7 +183,7 @@ namespace Wox.ViewModel // insert result in relative complement of A in B foreach (var result in newResults.Except(intersection)) { - int newIndex = InsertIndexOf(result.Score, results); + int newIndex = InsertIndexOf(result.Result.Score, results); results.Insert(newIndex, result); } @@ -223,9 +223,9 @@ namespace Wox.ViewModel { this[i] = newResult; } - else if (oldResult.Score != newResult.Score) + else if (oldResult.Result.Score != newResult.Result.Score) { - this[i].Score = newResult.Score; + this[i].Result.Score = newResult.Result.Score; } }