using System.Collections.Generic;
namespace Flow.Launcher.Plugin.SharedModels
{
///
/// Represents the result of a match operation.
///
public class MatchResult
{
///
/// Initializes a new instance of the class.
///
///
///
public MatchResult(bool success, SearchPrecisionScore searchPrecision)
{
Success = success;
SearchPrecision = searchPrecision;
}
///
/// Initializes a new instance of the class.
///
///
///
///
///
public MatchResult(bool success, SearchPrecisionScore searchPrecision, List matchData, int rawScore)
{
Success = success;
SearchPrecision = searchPrecision;
MatchData = matchData;
RawScore = rawScore;
}
///
/// Whether the match operation was successful.
///
public bool Success { get; set; }
///
/// The final score of the match result with search precision filters applied.
///
public int Score { get; private set; }
///
/// The raw calculated search score without any search precision filtering applied.
///
private int _rawScore;
///
/// The raw calculated search score without any search precision filtering applied.
///
public int RawScore
{
get { return _rawScore; }
set
{
_rawScore = value;
Score = ScoreAfterSearchPrecisionFilter(_rawScore);
}
}
///
/// Matched data to highlight.
///
public List MatchData { get; set; }
///
/// The search precision score used to filter the search results.
///
public SearchPrecisionScore SearchPrecision { get; set; }
///
/// Determines if the search precision score is met.
///
///
public bool IsSearchPrecisionScoreMet()
{
return IsSearchPrecisionScoreMet(_rawScore);
}
private bool IsSearchPrecisionScoreMet(int rawScore)
{
return rawScore >= (int)SearchPrecision;
}
private int ScoreAfterSearchPrecisionFilter(int rawScore)
{
return IsSearchPrecisionScoreMet(rawScore) ? rawScore : 0;
}
}
///
/// Represents the search precision score used to filter search results.
///
public enum SearchPrecisionScore
{
///
/// The highest search precision score.
///
Regular = 50,
///
/// The medium search precision score.
///
Low = 20,
///
/// The lowest search precision score.
///
None = 0
}
}