Flow.Launcher/Plugins/Flow.Launcher.Plugin.Program/Views/Commands/ProgramSettingDisplay.cs

99 lines
4.4 KiB
C#
Raw Normal View History

2019-09-08 12:16:47 +00:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
2020-04-21 09:12:17 +00:00
using Flow.Launcher.Plugin.Program.Views.Models;
2019-09-08 12:16:47 +00:00
2020-04-21 09:12:17 +00:00
namespace Flow.Launcher.Plugin.Program.Views.Commands
2019-09-08 12:16:47 +00:00
{
internal static class ProgramSettingDisplay
{
2022-10-24 15:26:41 +00:00
internal static List<ProgramSource> LoadProgramSources()
2019-09-08 12:16:47 +00:00
{
// Even though these are disabled, we still want to display them so users can enable later on
2022-10-24 15:26:41 +00:00
return Main._settings
.DisabledProgramSources
.Select(s => new ProgramSource(s))
.Union(Main._settings.ProgramSources)
.ToList();
2019-09-08 12:16:47 +00:00
}
2022-10-24 15:26:41 +00:00
internal static void DisplayAllPrograms()
2019-09-08 12:16:47 +00:00
{
Main._win32s
.Where(t1 => !ProgramSetting.ProgramSettingDisplayList.Any(x => x.UniqueIdentifier == t1.UniqueIdentifier))
2019-09-08 12:16:47 +00:00
.ToList()
2022-10-20 09:15:16 +00:00
.ForEach(t1 => ProgramSetting.ProgramSettingDisplayList.Add(new ProgramSource(t1)));
2019-09-08 12:16:47 +00:00
Main._uwps
.Where(t1 => !ProgramSetting.ProgramSettingDisplayList.Any(x => x.UniqueIdentifier == t1.UniqueIdentifier))
2019-09-08 12:16:47 +00:00
.ToList()
2022-10-20 09:15:16 +00:00
.ForEach(t1 => ProgramSetting.ProgramSettingDisplayList.Add(new ProgramSource(t1)));
2019-09-08 12:16:47 +00:00
}
2019-09-08 12:18:55 +00:00
2022-10-24 15:26:41 +00:00
internal static void SetProgramSourcesStatus(List<ProgramSource> selectedProgramSourcesToDisable, bool status)
2019-09-08 12:18:55 +00:00
{
ProgramSetting.ProgramSettingDisplayList
.Where(t1 => selectedProgramSourcesToDisable.Any(x => x.UniqueIdentifier == t1.UniqueIdentifier && t1.Enabled != status))
2019-09-08 12:18:55 +00:00
.ToList()
.ForEach(t1 => t1.Enabled = status);
2019-09-08 12:18:55 +00:00
Main._win32s
.Where(t1 => selectedProgramSourcesToDisable.Any(x => x.UniqueIdentifier == t1.UniqueIdentifier && t1.Enabled != status))
2019-09-08 12:18:55 +00:00
.ToList()
.ForEach(t1 => t1.Enabled = status);
2019-09-08 12:18:55 +00:00
Main._uwps
.Where(t1 => selectedProgramSourcesToDisable.Any(x => x.UniqueIdentifier == t1.UniqueIdentifier && t1.Enabled != status))
2019-09-08 12:18:55 +00:00
.ToList()
.ForEach(t1 => t1.Enabled = status);
}
2019-09-08 12:18:55 +00:00
2022-10-24 15:26:41 +00:00
internal static void StoreDisabledInSettings()
{
// no need since using refernce now
//Main._settings.ProgramSources
// .Where(t1 => ProgramSetting.ProgramSettingDisplayList.Any(x => x.UniqueIdentifier == t1.UniqueIdentifier && !x.Enabled))
// .ToList()
// .ForEach(t1 => t1.Enabled = false);
// Disabled, not in DisabledProgramSources or ProgramSources
var tmp = ProgramSetting.ProgramSettingDisplayList
.Where(t1 => !t1.Enabled
&& !Main._settings.DisabledProgramSources.Any(x => x.UniqueIdentifier == t1.UniqueIdentifier)
&& !Main._settings.ProgramSources.Any(x => x.UniqueIdentifier == t1.UniqueIdentifier))
.Select(x => new DisabledProgramSource(x));
Main._settings.DisabledProgramSources.AddRange(tmp);
2019-09-08 12:18:55 +00:00
}
2022-10-24 15:26:41 +00:00
internal static void RemoveDisabledFromSettings()
{
//Main._settings.ProgramSources
// .Where(t1 => ProgramSetting.ProgramSettingDisplayList.Any(x => x.UniqueIdentifier == t1.UniqueIdentifier && x.Enabled))
// .ToList()
// .ForEach(t1 => t1.Enabled = true);
Main._settings.DisabledProgramSources
.RemoveAll(t1 => ProgramSetting.ProgramSettingDisplayList.Any(x => x.UniqueIdentifier == t1.UniqueIdentifier && x.Enabled));
}
internal static bool IsReindexRequired(this List<ProgramSource> selectedItems)
{
2022-10-20 08:47:49 +00:00
// Not in cache
if (selectedItems.Any(t1 => t1.Enabled && !Main._uwps.Any(x => t1.UniqueIdentifier == x.UniqueIdentifier))
&& selectedItems.Any(t1 => t1.Enabled && !Main._win32s.Any(x => t1.UniqueIdentifier == x.UniqueIdentifier)))
return true;
// ProgramSources holds list of user added directories,
// so when we enable/disable we need to reindex to show/not show the programs
// that are found in those directories.
2022-10-20 08:47:49 +00:00
if (selectedItems.Any(t1 => Main._settings.ProgramSources.Any(x => t1.UniqueIdentifier == x.UniqueIdentifier)))
return true;
return false;
}
2019-09-08 12:16:47 +00:00
}
}