From 6a247944570b938b50326722f4a5776dbdcb0471 Mon Sep 17 00:00:00 2001 From: qianlifeng Date: Tue, 16 Dec 2014 21:36:48 +0800 Subject: [PATCH] Remove unnessary codes. --- Wox.Plugin.SystemPlugins/Program/Programs.cs | 98 +++++++++----------- 1 file changed, 43 insertions(+), 55 deletions(-) diff --git a/Wox.Plugin.SystemPlugins/Program/Programs.cs b/Wox.Plugin.SystemPlugins/Program/Programs.cs index 9e0eb7ad4a..f4b1165d7f 100644 --- a/Wox.Plugin.SystemPlugins/Program/Programs.cs +++ b/Wox.Plugin.SystemPlugins/Program/Programs.cs @@ -14,9 +14,7 @@ namespace Wox.Plugin.SystemPlugins.Program { public class Programs : BaseSystemPlugin, ISettingProvider { - private static bool initing; private static object lockObject = new object(); - private static List programs = new List(); private static List sources = new List(); private static Dictionary SourceTypes = new Dictionary() { {"FileSystemProgramSource", typeof(FileSystemProgramSource)}, @@ -31,7 +29,7 @@ namespace Wox.Plugin.SystemPlugins.Program if (query.RawQuery.Trim().Length <= 1) return new List(); var fuzzyMather = FuzzyMatcher.Create(query.RawQuery); - List returnList = programs.Where(o => MatchProgram(o, fuzzyMather)).ToList(); + List returnList = ProgramCacheStorage.Instance.Programs.Where(o => MatchProgram(o, fuzzyMather)).ToList(); returnList.ForEach(ScoreFilter); returnList = returnList.OrderByDescending(o => o.Score).ToList(); @@ -77,67 +75,57 @@ namespace Wox.Plugin.SystemPlugins.Program protected override void InitInternal(PluginInitContext context) { this.context = context; - using (new Timeit("Loading Program Index Cache")) + using (new Timeit("Program Index")) { - programs = ProgramCacheStorage.Instance.Programs; + IndexPrograms(); } - IndexPrograms(); } public static void IndexPrograms() { - if (!initing) + lock (lockObject) { - lock (lockObject) + List programSources = new List(); + programSources.AddRange(LoadDeaultProgramSources()); + if (UserSettingStorage.Instance.ProgramSources != null && + UserSettingStorage.Instance.ProgramSources.Count(o => o.Enabled) > 0) { - - initing = true; - - List programSources = new List(); - programSources.AddRange(LoadDeaultProgramSources()); - if (UserSettingStorage.Instance.ProgramSources != null && - UserSettingStorage.Instance.ProgramSources.Count(o => o.Enabled) > 0) - { - programSources.AddRange(UserSettingStorage.Instance.ProgramSources.Where(o => o.Enabled)); - } - - sources.Clear(); - programSources.ForEach(source => - { - Type sourceClass; - if (SourceTypes.TryGetValue(source.Type, out sourceClass)) - { - ConstructorInfo constructorInfo = sourceClass.GetConstructor(new[] { typeof(ProgramSource) }); - if (constructorInfo != null) - { - IProgramSource programSource = - constructorInfo.Invoke(new object[] { source }) as IProgramSource; - sources.Add(programSource); - } - } - }); - - var tempPrograms = new List(); - foreach (var source in sources) - { - var list = source.LoadPrograms(); - list.ForEach(o => - { - o.Source = source; - }); - tempPrograms.AddRange(list); - } - - // filter duplicate program - tempPrograms = tempPrograms.GroupBy(x => new { x.ExecutePath, x.ExecuteName }) - .Select(g => g.First()).ToList(); - - programs = tempPrograms; - initing = false; - - ProgramCacheStorage.Instance.Programs = programs; - ProgramCacheStorage.Instance.Save(); + programSources.AddRange(UserSettingStorage.Instance.ProgramSources.Where(o => o.Enabled)); } + + sources.Clear(); + programSources.ForEach(source => + { + Type sourceClass; + if (SourceTypes.TryGetValue(source.Type, out sourceClass)) + { + ConstructorInfo constructorInfo = sourceClass.GetConstructor(new[] { typeof(ProgramSource) }); + if (constructorInfo != null) + { + IProgramSource programSource = + constructorInfo.Invoke(new object[] { source }) as IProgramSource; + sources.Add(programSource); + } + } + }); + + var tempPrograms = new List(); + foreach (var source in sources) + { + var list = source.LoadPrograms(); + list.ForEach(o => + { + o.Source = source; + }); + tempPrograms.AddRange(list); + } + + // filter duplicate program + tempPrograms = tempPrograms.GroupBy(x => new { x.ExecutePath, x.ExecuteName }) + .Select(g => g.First()).ToList(); + + ProgramCacheStorage.Instance.Programs = tempPrograms; + ProgramCacheStorage.Instance.Save(); } }