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