using System.Collections.Generic;
using System.Text.Json.Serialization;

namespace AxCopilot.Models;

public class LauncherSettings
{
	[JsonPropertyName("opacity")]
	public double Opacity { get; set; } = 0.96;

	[JsonPropertyName("maxResults")]
	public int MaxResults { get; set; } = 7;

	[JsonPropertyName("theme")]
	public string Theme { get; set; } = "system";

	[JsonPropertyName("position")]
	public string Position { get; set; } = "center-top";

	[JsonPropertyName("width")]
	public double Width { get; set; } = 680.0;

	[JsonPropertyName("webSearchEngine")]
	public string WebSearchEngine { get; set; } = "g";

	[JsonPropertyName("snippetAutoExpand")]
	public bool SnippetAutoExpand { get; set; } = true;

	[JsonPropertyName("language")]
	public string Language { get; set; } = "ko";

	[JsonPropertyName("customTheme")]
	public CustomThemeColors? CustomTheme { get; set; }

	[JsonPropertyName("showNumberBadges")]
	public bool ShowNumberBadges { get; set; } = true;

	[JsonPropertyName("enableFavorites")]
	public bool EnableFavorites { get; set; } = true;

	[JsonPropertyName("enableRecent")]
	public bool EnableRecent { get; set; } = true;

	[JsonPropertyName("enableActionMode")]
	public bool EnableActionMode { get; set; } = true;

	[JsonPropertyName("closeOnFocusLost")]
	public bool CloseOnFocusLost { get; set; } = true;

	[JsonPropertyName("showPrefixBadge")]
	public bool ShowPrefixBadge { get; set; } = true;

	[JsonPropertyName("enableIconAnimation")]
	public bool EnableIconAnimation { get; set; } = true;

	[JsonPropertyName("enableRandomPlaceholder")]
	public bool EnableRandomPlaceholder { get; set; } = true;

	[JsonPropertyName("enableRainbowGlow")]
	public bool EnableRainbowGlow { get; set; } = false;

	[JsonPropertyName("enableSelectionGlow")]
	public bool EnableSelectionGlow { get; set; } = false;

	[JsonPropertyName("showLauncherBorder")]
	public bool ShowLauncherBorder { get; set; } = true;

	[JsonPropertyName("shortcutHelpUseThemeColor")]
	public bool ShortcutHelpUseThemeColor { get; set; } = true;

	[JsonPropertyName("enableTextAction")]
	public bool EnableTextAction { get; set; } = true;

	[JsonPropertyName("textActionCommands")]
	public List<string> TextActionCommands { get; set; } = new List<string> { "translate", "summarize", "grammar", "explain", "rewrite" };

	[JsonPropertyName("textActionTranslateLanguage")]
	public string TextActionTranslateLanguage { get; set; } = "auto";

	[JsonPropertyName("enableFileDialogIntegration")]
	public bool EnableFileDialogIntegration { get; set; } = false;

	[JsonPropertyName("enableClipboardAutoCategory")]
	public bool EnableClipboardAutoCategory { get; set; } = true;

	[JsonPropertyName("maxPinnedClipboardItems")]
	public int MaxPinnedClipboardItems { get; set; } = 20;

	[JsonPropertyName("dockBarItems")]
	public List<string> DockBarItems { get; set; } = new List<string> { "launcher", "clipboard", "capture", "agent", "clock", "cpu" };

	[JsonPropertyName("dockBarAutoShow")]
	public bool DockBarAutoShow { get; set; } = false;

	[JsonPropertyName("dockBarOpacity")]
	public double DockBarOpacity { get; set; } = 0.92;

	[JsonPropertyName("dockBarRainbowGlow")]
	public bool DockBarRainbowGlow { get; set; } = false;

	[JsonPropertyName("dockBarLeft")]
	public double DockBarLeft { get; set; } = -1.0;

	[JsonPropertyName("dockBarTop")]
	public double DockBarTop { get; set; } = -1.0;
}
