using AIStudio.Assistants.Agenda;
using AIStudio.Assistants.Coding;
using AIStudio.Assistants.IconFinder;
using AIStudio.Assistants.RewriteImprove;
using AIStudio.Assistants.TextSummarizer;
using AIStudio.Assistants.EMail;
using AIStudio.Settings.DataModel;
using WritingStylesRewrite = AIStudio.Assistants.RewriteImprove.WritingStyles;
using WritingStylesEMail = AIStudio.Assistants.EMail.WritingStyles;
namespace AIStudio.Settings;
///
/// A data structure to map a name to a value.
///
/// The name of the value, to be displayed in the UI.
/// The value to be stored.
/// The type of the value to store.
public readonly record struct ConfigurationSelectData(string Name, T Value);
///
/// A static factory class to get the lists of selectable values.
///
public static class ConfigurationSelectDataFactory
{
public static IEnumerable> GetSendBehaviorData()
{
yield return new("No key is sending the input", SendBehavior.NO_KEY_IS_SENDING);
yield return new("Modifier key + enter is sending the input", SendBehavior.MODIFER_ENTER_IS_SENDING);
yield return new("Enter is sending the input", SendBehavior.ENTER_IS_SENDING);
}
public static IEnumerable> GetUpdateBehaviorData()
{
yield return new("No automatic update checks", UpdateBehavior.NO_CHECK);
yield return new("Once at startup", UpdateBehavior.ONCE_STARTUP);
yield return new("Check every hour", UpdateBehavior.HOURLY);
yield return new("Check every day", UpdateBehavior.DAILY);
yield return new ("Check every week", UpdateBehavior.WEEKLY);
}
public static IEnumerable> GetWorkspaceStorageBehaviorData()
{
yield return new("Disable workspaces", WorkspaceStorageBehavior.DISABLE_WORKSPACES);
yield return new("Store chats automatically", WorkspaceStorageBehavior.STORE_CHATS_AUTOMATICALLY);
yield return new("Store chats manually", WorkspaceStorageBehavior.STORE_CHATS_MANUALLY);
}
public static IEnumerable> GetWorkspaceStorageTemporaryMaintenancePolicyData()
{
yield return new("No automatic maintenance for temporary chats", WorkspaceStorageTemporaryMaintenancePolicy.NO_AUTOMATIC_MAINTENANCE);
yield return new("Delete temporary chats older than 7 days", WorkspaceStorageTemporaryMaintenancePolicy.DELETE_OLDER_THAN_7_DAYS);
yield return new("Delete temporary chats older than 30 days", WorkspaceStorageTemporaryMaintenancePolicy.DELETE_OLDER_THAN_30_DAYS);
yield return new("Delete temporary chats older than 90 days", WorkspaceStorageTemporaryMaintenancePolicy.DELETE_OLDER_THAN_90_DAYS);
yield return new("Delete temporary chats older than 180 days", WorkspaceStorageTemporaryMaintenancePolicy.DELETE_OLDER_THAN_180_DAYS);
yield return new("Delete temporary chats older than 1 year", WorkspaceStorageTemporaryMaintenancePolicy.DELETE_OLDER_THAN_365_DAYS);
}
public static IEnumerable> GetNavBehaviorData()
{
yield return new("Navigation expands on mouse hover", NavBehavior.EXPAND_ON_HOVER);
yield return new("Navigation never expands, but there are tooltips", NavBehavior.NEVER_EXPAND_USE_TOOLTIPS);
yield return new("Navigation never expands, no tooltips", NavBehavior.NEVER_EXPAND_NO_TOOLTIPS);
yield return new("Always expand navigation", NavBehavior.ALWAYS_EXPAND);
}
public static IEnumerable> GetIconSourcesData()
{
foreach (var source in Enum.GetValues())
yield return new(source.Name(), source);
}
public static IEnumerable> GetCommonLanguagesData()
{
foreach (var language in Enum.GetValues())
yield return new(language.Name(), language);
}
public static IEnumerable> GetCommonLanguagesTranslationData()
{
foreach (var language in Enum.GetValues())
if(language is CommonLanguages.AS_IS)
yield return new("Not yet specified", language);
else
yield return new(language.Name(), language);
}
public static IEnumerable> GetCommonCodingLanguagesData()
{
foreach (var language in Enum.GetValues())
yield return new(language.Name(), language);
}
public static IEnumerable> GetComplexityData()
{
foreach (var complexity in Enum.GetValues())
yield return new(complexity.Name(), complexity);
}
public static IEnumerable> GetNumberParticipantsData()
{
foreach (var number in Enum.GetValues())
yield return new(number.Name(), number);
}
public static IEnumerable> GetWritingStyles4RewriteData()
{
foreach (var style in Enum.GetValues())
yield return new(style.Name(), style);
}
public static IEnumerable> GetWritingStyles4EMailData()
{
foreach (var style in Enum.GetValues())
yield return new(style.Name(), style);
}
public static IEnumerable> GetSentenceStructureData()
{
foreach (var voice in Enum.GetValues())
yield return new(voice.Name(), voice);
}
}