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;
}
}