diff --git a/Images/Plus Minus.psd b/Images/Plus Minus.psd index ae3fff21..187f6a4b 100644 Binary files a/Images/Plus Minus.psd and b/Images/Plus Minus.psd differ diff --git a/Images/Stoplight with pdf.psd b/Images/Stoplight with pdf.psd index 80542c2c..75fe9069 100644 Binary files a/Images/Stoplight with pdf.psd and b/Images/Stoplight with pdf.psd differ diff --git a/Images/Stoplight.psd b/Images/Stoplight.psd index 9b5f8105..4a11a81e 100644 Binary files a/Images/Stoplight.psd and b/Images/Stoplight.psd differ diff --git a/Source/LibationAvalonia/App.axaml.cs b/Source/LibationAvalonia/App.axaml.cs index 9bf752c7..398a89df 100644 --- a/Source/LibationAvalonia/App.axaml.cs +++ b/Source/LibationAvalonia/App.axaml.cs @@ -136,12 +136,12 @@ public class App : Application [PropertyChangeFilter(nameof(ThemeVariant))] private static void ThemeVariant_PropertyChanged(object sender, PropertyChangedEventArgsEx e) - => OpenAndApplyTheme(e.NewValue as string); + => OpenAndApplyTheme(e.NewValue as Configuration.Theme? ?? Configuration.Theme.System); private static void OnActualThemeVariantChanged(object? sender, EventArgs e) - => OpenAndApplyTheme(Configuration.Instance.GetString(propertyName: nameof(ThemeVariant))); + => OpenAndApplyTheme(Configuration.Instance.ThemeVariant); - private static void OpenAndApplyTheme(string? themeVariant) + private static void OpenAndApplyTheme(Configuration.Theme themeVariant) { using ChardonnayThemePersister? themePersister = ChardonnayThemePersister.Create(); themePersister?.Target.ApplyTheme(themeVariant); diff --git a/Source/LibationAvalonia/Controls/Settings/Important.axaml.cs b/Source/LibationAvalonia/Controls/Settings/Important.axaml.cs index 66148fc8..e00c97b0 100644 --- a/Source/LibationAvalonia/Controls/Settings/Important.axaml.cs +++ b/Source/LibationAvalonia/Controls/Settings/Important.axaml.cs @@ -52,7 +52,8 @@ namespace LibationAvalonia.Controls.Settings var parent = ThemeComboBox.Parent as Panel; if (parent?.Children.Remove(ThemeComboBox) ?? false) { - Configuration.Instance.SetString(ViewModel?.ThemeVariant, nameof(ViewModel.ThemeVariant)); + + Configuration.Instance.ThemeVariant = ViewModel?.ThemeVariant.Value ?? Configuration.Theme.System; parent.Children.Add(ThemeComboBox); } ThemeComboBox.SelectionChanged += ThemeComboBox_SelectionChanged; diff --git a/Source/LibationAvalonia/Dialogs/DialogWindow.cs b/Source/LibationAvalonia/Dialogs/DialogWindow.cs index 1bb07286..7489cebe 100644 --- a/Source/LibationAvalonia/Dialogs/DialogWindow.cs +++ b/Source/LibationAvalonia/Dialogs/DialogWindow.cs @@ -29,11 +29,11 @@ namespace LibationAvalonia.Dialogs if (Design.IsDesignMode) { - var themeVariant = Configuration.CreateMockInstance().GetString(propertyName: nameof(ThemeVariant)); + var themeVariant = Configuration.CreateMockInstance().ThemeVariant; RequestedThemeVariant = themeVariant switch { - nameof(ThemeVariant.Dark) => ThemeVariant.Dark, - nameof(ThemeVariant.Light) => ThemeVariant.Light, + Configuration.Theme.Dark => ThemeVariant.Dark, + Configuration.Theme.Light => ThemeVariant.Light, _ => ThemeVariant.Default, }; } diff --git a/Source/LibationAvalonia/Themes/ChardonnayTheme.cs b/Source/LibationAvalonia/Themes/ChardonnayTheme.cs index ba13cd17..177fa1b5 100644 --- a/Source/LibationAvalonia/Themes/ChardonnayTheme.cs +++ b/Source/LibationAvalonia/Themes/ChardonnayTheme.cs @@ -37,7 +37,7 @@ public class ChardonnayTheme : IUpdatable, ICloneable /// Invoke public void Save() => Updated?.Invoke(this, EventArgs.Empty); - public Color GetColor(string? themeVariant, string itemName) + public Color GetColor(LibationFileManager.Configuration.Theme themeVariant, string itemName) => GetColor(FromVariantName(themeVariant), itemName); public Color GetColor(ThemeVariant themeVariant, string itemName) @@ -46,7 +46,7 @@ public class ChardonnayTheme : IUpdatable, ICloneable return ThemeColors[themeVariant].TryGetValue(itemName, out var color) ? color : default; } - public ChardonnayTheme SetColor(string? themeVariant, Expression> colorSelector, Color color) + public ChardonnayTheme SetColor(LibationFileManager.Configuration.Theme themeVariant, Expression> colorSelector, Color color) => SetColor(FromVariantName(themeVariant), colorSelector, color); public ChardonnayTheme SetColor(ThemeVariant themeVariant, Expression> colorSelector, Color color) @@ -59,7 +59,7 @@ public class ChardonnayTheme : IUpdatable, ICloneable return this; } - public ChardonnayTheme SetColor(string? themeVariant, string itemName, Color itemColor) + public ChardonnayTheme SetColor(LibationFileManager.Configuration.Theme themeVariant, string itemName, Color itemColor) => SetColor(FromVariantName(themeVariant), itemName, itemColor); public ChardonnayTheme SetColor(ThemeVariant themeVariant, string itemName, Color itemColor) @@ -69,7 +69,7 @@ public class ChardonnayTheme : IUpdatable, ICloneable return this; } - public FrozenDictionary GetThemeColors(string? themeVariant) + public FrozenDictionary GetThemeColors(LibationFileManager.Configuration.Theme themeVariant) => GetThemeColors(FromVariantName(themeVariant)); public FrozenDictionary GetThemeColors(ThemeVariant themeVariant) @@ -78,7 +78,7 @@ public class ChardonnayTheme : IUpdatable, ICloneable return ThemeColors[themeVariant].ToFrozenDictionary(); } - public void ApplyTheme(string? themeVariant) + public void ApplyTheme(LibationFileManager.Configuration.Theme themeVariant) => ApplyTheme(FromVariantName(themeVariant)); public void ApplyTheme(ThemeVariant themeVariant) @@ -195,11 +195,11 @@ public class ChardonnayTheme : IUpdatable, ICloneable throw new InvalidOperationException("FluentTheme.Palettes only supports Light and Dark variants."); } - private static ThemeVariant FromVariantName(string? variantName) + private static ThemeVariant FromVariantName(LibationFileManager.Configuration.Theme variantName) => variantName switch { - nameof(ThemeVariant.Dark) => ThemeVariant.Dark, - nameof(ThemeVariant.Light) => ThemeVariant.Light, + LibationFileManager.Configuration.Theme.Dark => ThemeVariant.Dark, + LibationFileManager.Configuration.Theme.Light => ThemeVariant.Light, // "System" _ => ThemeVariant.Default }; diff --git a/Source/LibationAvalonia/ViewModels/Settings/ImportantSettingsVM.cs b/Source/LibationAvalonia/ViewModels/Settings/ImportantSettingsVM.cs index eaf5e5fc..d0d71550 100644 --- a/Source/LibationAvalonia/ViewModels/Settings/ImportantSettingsVM.cs +++ b/Source/LibationAvalonia/ViewModels/Settings/ImportantSettingsVM.cs @@ -12,8 +12,7 @@ namespace LibationAvalonia.ViewModels.Settings { public class ImportantSettingsVM : ViewModelBase { - private string themeVariant; - private string initialThemeVariant; + private EnumDisplay themeVariant; private readonly Configuration config; public ImportantSettingsVM(Configuration config) @@ -30,9 +29,7 @@ namespace LibationAvalonia.ViewModels.Settings GridScaleFactor = scaleFactorToLinearRange(config.GridScaleFactor); GridFontScaleFactor = scaleFactorToLinearRange(config.GridFontScaleFactor); - themeVariant = initialThemeVariant = config.GetString(propertyName: nameof(ThemeVariant)) ?? ""; - if (string.IsNullOrWhiteSpace(initialThemeVariant)) - themeVariant = initialThemeVariant = "System"; + themeVariant = Themes.Single(v => v.Value == config.ThemeVariant); } public void SaveSettings(Configuration config) @@ -91,7 +88,10 @@ namespace LibationAvalonia.ViewModels.Settings public string GridScaleFactorText { get; } = Configuration.GetDescription(nameof(Configuration.GridScaleFactor)); public string GridFontScaleFactorText { get; } = Configuration.GetDescription(nameof(Configuration.GridFontScaleFactor)); public string BetaOptInText { get; } = Configuration.GetDescription(nameof(Configuration.BetaOptIn)); - public string[] Themes { get; } = { "System", nameof(Avalonia.Styling.ThemeVariant.Light), nameof(Avalonia.Styling.ThemeVariant.Dark) }; + public EnumDisplay[] Themes { get; } + = Enum.GetValues() + .Select(v => new EnumDisplay(v)) + .ToArray(); public string BooksDirectory { get; set; } public bool SavePodcastsToParentFolder { get; set; } @@ -103,7 +103,7 @@ namespace LibationAvalonia.ViewModels.Settings public bool UseWebView { get; set; } public Serilog.Events.LogEventLevel LoggingLevel { get; set; } - public string ThemeVariant + public EnumDisplay ThemeVariant { get => themeVariant; set => this.RaiseAndSetIfChanged(ref themeVariant, value); diff --git a/Source/LibationFileManager/Configuration.PersistentSettings.cs b/Source/LibationFileManager/Configuration.PersistentSettings.cs index 39f38391..30c8dbc2 100644 --- a/Source/LibationFileManager/Configuration.PersistentSettings.cs +++ b/Source/LibationFileManager/Configuration.PersistentSettings.cs @@ -154,6 +154,9 @@ namespace LibationFileManager set => SetString(value); } + [Description("Libation's display color theme")] + public Theme ThemeVariant { get => GetNonString(defaultValue: Theme.System); set => SetNonString(value); } + [Description("Allow Libation to fix up audiobook metadata")] public bool AllowLibationFixup { get => GetNonString(defaultValue: true); set => SetNonString(value); } @@ -261,6 +264,14 @@ namespace LibationFileManager Ignore = 3 } + [JsonConverter(typeof(StringEnumConverter))] + public enum Theme + { + System = 0, + Light = 1, + Dark = 2 + } + [JsonConverter(typeof(StringEnumConverter))] public enum DateTimeSource { diff --git a/Source/LibationWinForms/AccessibleDataGridViewButtonCell.cs b/Source/LibationWinForms/AccessibleDataGridViewButtonCell.cs index 2a384d9e..cc879e76 100644 --- a/Source/LibationWinForms/AccessibleDataGridViewButtonCell.cs +++ b/Source/LibationWinForms/AccessibleDataGridViewButtonCell.cs @@ -1,8 +1,9 @@ -using System.Windows.Forms; +using LibationWinForms.GridView; +using System.Windows.Forms; namespace LibationWinForms { - public class AccessibleDataGridViewButtonCell : DataGridViewButtonCell + public class AccessibleDataGridViewButtonCell : DataGridViewButtonCell { protected string AccessibilityName { get; } @@ -24,7 +25,8 @@ namespace LibationWinForms public AccessibleDataGridViewButtonCell(string accessibilityName) : base() { AccessibilityName = accessibilityName; - } + FlatStyle = Application.IsDarkModeEnabled ? FlatStyle.Flat : FlatStyle.System; + } protected class ButtonCellAccessibilityObject : DataGridViewButtonCellAccessibleObject { diff --git a/Source/LibationWinForms/AccessibleDataGridViewComboBoxCell.cs b/Source/LibationWinForms/AccessibleDataGridViewComboBoxCell.cs new file mode 100644 index 00000000..769af451 --- /dev/null +++ b/Source/LibationWinForms/AccessibleDataGridViewComboBoxCell.cs @@ -0,0 +1,45 @@ +using System.Windows.Forms; + +namespace LibationWinForms +{ + public class AccessibleDataGridViewComboBoxCell : DataGridViewComboBoxCell + { + protected string AccessibilityName { get; } + + /// + /// Get or set description for accessibility. eg: screen readers. Also sets the ToolTipText + /// + protected string AccessibilityDescription + { + get => field; + set + { + field = value; + ToolTipText = value; + } + } + + protected override AccessibleObject CreateAccessibilityInstance() => new ComboBoxCellAccessibilityObject(this, name: AccessibilityName, description: AccessibilityDescription); + + public AccessibleDataGridViewComboBoxCell(string accessibilityName) : base() + { + FlatStyle = Application.IsDarkModeEnabled ? FlatStyle.Flat : FlatStyle.Standard; + AccessibilityName = accessibilityName; + } + + protected class ComboBoxCellAccessibilityObject : DataGridViewComboBoxCellAccessibleObject + { + private string _name; + public override string Name => _name; + + private string _description; + public override string Description => _description; + + public ComboBoxCellAccessibilityObject(DataGridViewCell owner, string name, string description) : base(owner) + { + _name = name; + _description = description; + } + } + } +} diff --git a/Source/LibationWinForms/Dialogs/AboutDialog.cs b/Source/LibationWinForms/Dialogs/AboutDialog.cs index e9f2cf51..eafc6cff 100644 --- a/Source/LibationWinForms/Dialogs/AboutDialog.cs +++ b/Source/LibationWinForms/Dialogs/AboutDialog.cs @@ -14,7 +14,7 @@ namespace LibationWinForms.Dialogs InitializeComponent(); this.SetLibationIcon(); releaseNotesLbl.Text = $"Libation {AppScaffolding.LibationScaffolding.Variety} v{AppScaffolding.LibationScaffolding.BuildVersion}"; - + pictureBox1.Image = Application.IsDarkModeEnabled ? Properties.Resources.cheers_dark : Properties.Resources.cheers; rmcrackanLbl.Tag = LibationContributor.PrimaryContributors.Single(c => c.Name == rmcrackanLbl.Text); MBucariLbl.Tag = LibationContributor.PrimaryContributors.Single(c => c.Name == MBucariLbl.Text); @@ -22,8 +22,13 @@ namespace LibationWinForms.Dialogs { var label = new LinkLabel { Tag = contributor, Text = contributor.Name, AutoSize = true }; label.LinkClicked += ContributorLabel_LinkClicked; + label.SetLinkLabelColors(); flowLayoutPanel1.Controls.Add(label); } + rmcrackanLbl.SetLinkLabelColors(); + MBucariLbl.SetLinkLabelColors(); + releaseNotesLbl.SetLinkLabelColors(); + getLibationLbl.SetLinkLabelColors(); var toolTip = new ToolTip(); toolTip.SetToolTip(releaseNotesLbl, "View Release Notes"); diff --git a/Source/LibationWinForms/Dialogs/AccountsDialog.Designer.cs b/Source/LibationWinForms/Dialogs/AccountsDialog.Designer.cs index dcbfa698..7a77bebd 100644 --- a/Source/LibationWinForms/Dialogs/AccountsDialog.Designer.cs +++ b/Source/LibationWinForms/Dialogs/AccountsDialog.Designer.cs @@ -31,11 +31,11 @@ this.cancelBtn = new System.Windows.Forms.Button(); this.saveBtn = new System.Windows.Forms.Button(); this.dataGridView1 = new System.Windows.Forms.DataGridView(); - this.DeleteAccount = new System.Windows.Forms.DataGridViewButtonColumn(); - this.ExportAccount = new System.Windows.Forms.DataGridViewButtonColumn(); + this.DeleteAccount = new DeleteColumn(); + this.ExportAccount = new ExportColumn(); this.LibraryScan = new System.Windows.Forms.DataGridViewCheckBoxColumn(); this.AccountId = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.Locale = new System.Windows.Forms.DataGridViewComboBoxColumn(); + this.Locale = new LocaleColumn(); this.AccountName = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.importBtn = new System.Windows.Forms.Button(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); @@ -165,11 +165,11 @@ private System.Windows.Forms.Button saveBtn; private System.Windows.Forms.DataGridView dataGridView1; private System.Windows.Forms.Button importBtn; - private System.Windows.Forms.DataGridViewButtonColumn DeleteAccount; - private System.Windows.Forms.DataGridViewButtonColumn ExportAccount; + private DeleteColumn DeleteAccount; + private ExportColumn ExportAccount; private System.Windows.Forms.DataGridViewCheckBoxColumn LibraryScan; private System.Windows.Forms.DataGridViewTextBoxColumn AccountId; - private System.Windows.Forms.DataGridViewComboBoxColumn Locale; + private LocaleColumn Locale; private System.Windows.Forms.DataGridViewTextBoxColumn AccountName; } } \ No newline at end of file diff --git a/Source/LibationWinForms/Dialogs/AccountsDialog.cs b/Source/LibationWinForms/Dialogs/AccountsDialog.cs index 4ee571bf..9d39bda8 100644 --- a/Source/LibationWinForms/Dialogs/AccountsDialog.cs +++ b/Source/LibationWinForms/Dialogs/AccountsDialog.cs @@ -20,7 +20,7 @@ namespace LibationWinForms.Dialogs public AccountsDialog() { InitializeComponent(); - + dataGridView1.EnableHeadersVisualStyles = !Application.IsDarkModeEnabled; dataGridView1.Columns[COL_AccountName].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; populateDropDown(); @@ -299,5 +299,55 @@ namespace LibationWinForms.Dialogs ex); } } + #region Accessable Columns + + public class DeleteColumn : DataGridViewButtonColumn + { + public DeleteColumn() : base() + { + this.CellTemplate = new DeleteColumnCell(); + } + } + + public class ExportColumn : DataGridViewButtonColumn + { + public ExportColumn() : base() + { + this.CellTemplate = new ExportColumnCell(); + } + } + + public class LocaleColumn : DataGridViewComboBoxColumn + { + public LocaleColumn() : base() + { + this.CellTemplate = new LocaleColumnCell(); + } + } + + public class DeleteColumnCell : AccessibleDataGridViewButtonCell + { + public DeleteColumnCell() : base("Delete account from Libation") + { + ToolTipText = AccessibilityName; + } + } + + public class LocaleColumnCell : AccessibleDataGridViewComboBoxCell + { + public LocaleColumnCell() : base("Select Audible account region") + { + ToolTipText = AccessibilityName; + } + } + + public class ExportColumnCell : AccessibleDataGridViewButtonCell + { + public ExportColumnCell() : base("Export account to mkb79/audible-cli format") + { + ToolTipText = AccessibilityName; + } + } + #endregion } } diff --git a/Source/LibationWinForms/Dialogs/BookDetailsDialog.cs b/Source/LibationWinForms/Dialogs/BookDetailsDialog.cs index d7f7a5b8..58dbb32d 100644 --- a/Source/LibationWinForms/Dialogs/BookDetailsDialog.cs +++ b/Source/LibationWinForms/Dialogs/BookDetailsDialog.cs @@ -27,6 +27,7 @@ namespace LibationWinForms.Dialogs { InitializeComponent(); this.SetLibationIcon(); + audibleLink.SetLinkLabelColors(); } public BookDetailsDialog(LibraryBook libraryBook) : this() { @@ -40,6 +41,7 @@ namespace LibationWinForms.Dialogs { this.Text = Book.TitleWithSubtitle; dolbyAtmosPb.Visible = Book.IsSpatial; + dolbyAtmosPb.Image = Application.IsDarkModeEnabled ? Properties.Resources.Dolby_Atmos_Vertical_80_dark : Properties.Resources.Dolby_Atmos_Vertical_80; (_, var picture) = PictureStorage.GetPicture(new PictureDefinition(Book.PictureId, PictureSize._80x80)); this.coverPb.Image = WinFormsUtil.TryLoadImageOrDefault(picture, PictureSize._80x80); @@ -138,6 +140,7 @@ namespace LibationWinForms.Dialogs var locale = AudibleApi.Localization.Get(_libraryBook.Book.Locale); var link = $"https://www.audible.{locale.TopDomain}/pd/{Book.AudibleProductId}"; Go.To.Url(link); + e.Link.Visited = true; } } } diff --git a/Source/LibationWinForms/Dialogs/BookRecordsDialog.cs b/Source/LibationWinForms/Dialogs/BookRecordsDialog.cs index c705d074..d9edb711 100644 --- a/Source/LibationWinForms/Dialogs/BookRecordsDialog.cs +++ b/Source/LibationWinForms/Dialogs/BookRecordsDialog.cs @@ -21,7 +21,7 @@ namespace LibationWinForms.Dialogs public BookRecordsDialog() { InitializeComponent(); - + dataGridView1.EnableHeadersVisualStyles = !Application.IsDarkModeEnabled; if (!DesignMode) { //Prevent the designer from auto-generating columns diff --git a/Source/LibationWinForms/Dialogs/EditQuickFilters.cs b/Source/LibationWinForms/Dialogs/EditQuickFilters.cs index 5669633b..99f3ac5a 100644 --- a/Source/LibationWinForms/Dialogs/EditQuickFilters.cs +++ b/Source/LibationWinForms/Dialogs/EditQuickFilters.cs @@ -55,7 +55,7 @@ namespace LibationWinForms.Dialogs public EditQuickFilters() { InitializeComponent(); - + dataGridView1.EnableHeadersVisualStyles = !Application.IsDarkModeEnabled; dataGridView1.Columns[COL_Filter].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; populateGridValues(); diff --git a/Source/LibationWinForms/Dialogs/SettingsDialog.Designer.cs b/Source/LibationWinForms/Dialogs/SettingsDialog.Designer.cs index 53dafff0..d00ceaef 100644 --- a/Source/LibationWinForms/Dialogs/SettingsDialog.Designer.cs +++ b/Source/LibationWinForms/Dialogs/SettingsDialog.Designer.cs @@ -44,13 +44,13 @@ allowLibationFixupCbox = new System.Windows.Forms.CheckBox(); convertLossyRb = new System.Windows.Forms.RadioButton(); convertLosslessRb = new System.Windows.Forms.RadioButton(); - inProgressSelectControl = new DirectorySelectControl(); logsBtn = new System.Windows.Forms.Button(); - booksSelectControl = new DirectoryOrCustomSelectControl(); loggingLevelLbl = new System.Windows.Forms.Label(); loggingLevelCb = new System.Windows.Forms.ComboBox(); tabControl = new System.Windows.Forms.TabControl(); tab1ImportantSettings = new System.Windows.Forms.TabPage(); + themeCb = new System.Windows.Forms.ComboBox(); + label22 = new System.Windows.Forms.Label(); groupBox1 = new System.Windows.Forms.GroupBox(); applyDisplaySettingsBtn = new System.Windows.Forms.Button(); gridScaleFactorLbl = new System.Windows.Forms.Label(); @@ -58,6 +58,7 @@ gridFontScaleFactorLbl = new System.Windows.Forms.Label(); gridFontScaleFactorTbar = new System.Windows.Forms.TrackBar(); booksGb = new System.Windows.Forms.GroupBox(); + booksSelectControl = new DirectoryOrCustomSelectControl(); lastWriteTimeCb = new System.Windows.Forms.ComboBox(); creationTimeCb = new System.Windows.Forms.ComboBox(); lastWriteTimeLbl = new System.Windows.Forms.Label(); @@ -72,6 +73,7 @@ saveMetadataToFileCbox = new System.Windows.Forms.CheckBox(); useCoverAsFolderIconCb = new System.Windows.Forms.CheckBox(); inProgressFilesGb = new System.Windows.Forms.GroupBox(); + inProgressSelectControl = new DirectoryOrCustomSelectControl(); customFileNamingGb = new System.Windows.Forms.GroupBox(); editCharreplacementBtn = new System.Windows.Forms.Button(); chapterFileTemplateBtn = new System.Windows.Forms.Button(); @@ -137,6 +139,7 @@ retainAaxFileCbox = new System.Windows.Forms.CheckBox(); downloadCoverArtCbox = new System.Windows.Forms.CheckBox(); createCueSheetCbox = new System.Windows.Forms.CheckBox(); + themeLbl = new System.Windows.Forms.Label(); badBookGb.SuspendLayout(); tabControl.SuspendLayout(); tab1ImportantSettings.SuspendLayout(); @@ -172,7 +175,7 @@ // inProgressDescLbl // inProgressDescLbl.AutoSize = true; - inProgressDescLbl.Location = new System.Drawing.Point(7, 19); + inProgressDescLbl.Location = new System.Drawing.Point(7, 17); inProgressDescLbl.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); inProgressDescLbl.Name = "inProgressDescLbl"; inProgressDescLbl.Size = new System.Drawing.Size(100, 45); @@ -182,8 +185,8 @@ // saveBtn // saveBtn.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; - saveBtn.Location = new System.Drawing.Point(668, 499); - saveBtn.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + saveBtn.Location = new System.Drawing.Point(668, 501); + saveBtn.Margin = new System.Windows.Forms.Padding(4, 1, 4, 1); saveBtn.Name = "saveBtn"; saveBtn.Size = new System.Drawing.Size(88, 27); saveBtn.TabIndex = 98; @@ -195,8 +198,8 @@ // cancelBtn.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; cancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel; - cancelBtn.Location = new System.Drawing.Point(786, 499); - cancelBtn.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + cancelBtn.Location = new System.Drawing.Point(785, 501); + cancelBtn.Margin = new System.Windows.Forms.Padding(1); cancelBtn.Name = "cancelBtn"; cancelBtn.Size = new System.Drawing.Size(88, 27); cancelBtn.TabIndex = 99; @@ -341,15 +344,6 @@ convertLosslessRb.UseVisualStyleBackColor = true; convertLosslessRb.CheckedChanged += convertFormatRb_CheckedChanged; // - // inProgressSelectControl - // - inProgressSelectControl.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; - inProgressSelectControl.Location = new System.Drawing.Point(6, 85); - inProgressSelectControl.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); - inProgressSelectControl.Name = "inProgressSelectControl"; - inProgressSelectControl.Size = new System.Drawing.Size(830, 49); - inProgressSelectControl.TabIndex = 19; - // // logsBtn // logsBtn.Location = new System.Drawing.Point(256, 424); @@ -360,15 +354,6 @@ logsBtn.UseVisualStyleBackColor = true; logsBtn.Click += logsBtn_Click; // - // booksSelectControl - // - booksSelectControl.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; - booksSelectControl.Location = new System.Drawing.Point(6, 37); - booksSelectControl.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); - booksSelectControl.Name = "booksSelectControl"; - booksSelectControl.Size = new System.Drawing.Size(832, 102); - booksSelectControl.TabIndex = 2; - // // loggingLevelLbl // loggingLevelLbl.AutoSize = true; @@ -397,12 +382,16 @@ tabControl.Location = new System.Drawing.Point(12, 12); tabControl.Name = "tabControl"; tabControl.SelectedIndex = 0; - tabControl.Size = new System.Drawing.Size(864, 481); + tabControl.Size = new System.Drawing.Size(864, 485); tabControl.TabIndex = 100; // // tab1ImportantSettings // tab1ImportantSettings.AutoScroll = true; + tab1ImportantSettings.BackColor = System.Drawing.SystemColors.Window; + tab1ImportantSettings.Controls.Add(themeLbl); + tab1ImportantSettings.Controls.Add(themeCb); + tab1ImportantSettings.Controls.Add(label22); tab1ImportantSettings.Controls.Add(groupBox1); tab1ImportantSettings.Controls.Add(booksGb); tab1ImportantSettings.Controls.Add(logsBtn); @@ -411,10 +400,28 @@ tab1ImportantSettings.Location = new System.Drawing.Point(4, 24); tab1ImportantSettings.Name = "tab1ImportantSettings"; tab1ImportantSettings.Padding = new System.Windows.Forms.Padding(3); - tab1ImportantSettings.Size = new System.Drawing.Size(856, 453); + tab1ImportantSettings.Size = new System.Drawing.Size(856, 457); tab1ImportantSettings.TabIndex = 0; tab1ImportantSettings.Text = "Important settings"; - tab1ImportantSettings.UseVisualStyleBackColor = true; + // + // themeCb + // + themeCb.FormattingEnabled = true; + themeCb.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + themeCb.Location = new System.Drawing.Point(63, 390); + themeCb.Name = "themeCb"; + themeCb.Size = new System.Drawing.Size(121, 23); + themeCb.TabIndex = 11; + themeCb.SelectedIndexChanged += themeCb_SelectedIndexChanged; + // + // label22 + // + label22.AutoSize = true; + label22.Location = new System.Drawing.Point(4, 393); + label22.Name = "label22"; + label22.Size = new System.Drawing.Size(44, 15); + label22.TabIndex = 10; + label22.Text = "Theme"; // // groupBox1 // @@ -434,7 +441,7 @@ // applyDisplaySettingsBtn // applyDisplaySettingsBtn.Anchor = System.Windows.Forms.AnchorStyles.Right; - applyDisplaySettingsBtn.Location = new System.Drawing.Point(689, 26); + applyDisplaySettingsBtn.Location = new System.Drawing.Point(672, 26); applyDisplaySettingsBtn.Name = "applyDisplaySettingsBtn"; applyDisplaySettingsBtn.Size = new System.Drawing.Size(148, 34); applyDisplaySettingsBtn.TabIndex = 9; @@ -487,13 +494,13 @@ // booksGb // booksGb.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + booksGb.Controls.Add(booksSelectControl); booksGb.Controls.Add(lastWriteTimeCb); booksGb.Controls.Add(creationTimeCb); booksGb.Controls.Add(lastWriteTimeLbl); booksGb.Controls.Add(creationTimeLbl); booksGb.Controls.Add(overwriteExistingCbox); booksGb.Controls.Add(saveEpisodesToSeriesFolderCbox); - booksGb.Controls.Add(booksSelectControl); booksGb.Controls.Add(booksLocationDescLbl); booksGb.Location = new System.Drawing.Point(6, 6); booksGb.Name = "booksGb"; @@ -502,6 +509,14 @@ booksGb.TabStop = false; booksGb.Text = "Books location"; // + // booksSelectControl + // + booksSelectControl.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + booksSelectControl.Location = new System.Drawing.Point(8, 37); + booksSelectControl.Name = "booksSelectControl"; + booksSelectControl.Size = new System.Drawing.Size(830, 80); + booksSelectControl.TabIndex = 6; + // // lastWriteTimeCb // lastWriteTimeCb.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; @@ -563,6 +578,7 @@ // tab2ImportLibrary // tab2ImportLibrary.AutoScroll = true; + tab2ImportLibrary.BackColor = System.Drawing.SystemColors.Window; tab2ImportLibrary.Controls.Add(autoDownloadEpisodesCb); tab2ImportLibrary.Controls.Add(autoScanCb); tab2ImportLibrary.Controls.Add(showImportedStatsCb); @@ -571,10 +587,9 @@ tab2ImportLibrary.Location = new System.Drawing.Point(4, 24); tab2ImportLibrary.Name = "tab2ImportLibrary"; tab2ImportLibrary.Padding = new System.Windows.Forms.Padding(3); - tab2ImportLibrary.Size = new System.Drawing.Size(856, 453); + tab2ImportLibrary.Size = new System.Drawing.Size(856, 457); tab2ImportLibrary.TabIndex = 1; tab2ImportLibrary.Text = "Import library"; - tab2ImportLibrary.UseVisualStyleBackColor = true; // // autoDownloadEpisodesCb // @@ -609,6 +624,7 @@ // tab3DownloadDecrypt // tab3DownloadDecrypt.AutoScroll = true; + tab3DownloadDecrypt.BackColor = System.Drawing.SystemColors.Window; tab3DownloadDecrypt.Controls.Add(saveMetadataToFileCbox); tab3DownloadDecrypt.Controls.Add(useCoverAsFolderIconCb); tab3DownloadDecrypt.Controls.Add(inProgressFilesGb); @@ -617,15 +633,15 @@ tab3DownloadDecrypt.Location = new System.Drawing.Point(4, 24); tab3DownloadDecrypt.Name = "tab3DownloadDecrypt"; tab3DownloadDecrypt.Padding = new System.Windows.Forms.Padding(3); - tab3DownloadDecrypt.Size = new System.Drawing.Size(856, 453); + tab3DownloadDecrypt.Size = new System.Drawing.Size(856, 457); tab3DownloadDecrypt.TabIndex = 2; tab3DownloadDecrypt.Text = "Download/Decrypt"; - tab3DownloadDecrypt.UseVisualStyleBackColor = true; // // saveMetadataToFileCbox // + saveMetadataToFileCbox.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; saveMetadataToFileCbox.AutoSize = true; - saveMetadataToFileCbox.Location = new System.Drawing.Point(482, 428); + saveMetadataToFileCbox.Location = new System.Drawing.Point(481, 435); saveMetadataToFileCbox.Name = "saveMetadataToFileCbox"; saveMetadataToFileCbox.Size = new System.Drawing.Size(166, 19); saveMetadataToFileCbox.TabIndex = 22; @@ -634,8 +650,9 @@ // // useCoverAsFolderIconCb // + useCoverAsFolderIconCb.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left; useCoverAsFolderIconCb.AutoSize = true; - useCoverAsFolderIconCb.Location = new System.Drawing.Point(7, 428); + useCoverAsFolderIconCb.Location = new System.Drawing.Point(6, 435); useCoverAsFolderIconCb.Name = "useCoverAsFolderIconCb"; useCoverAsFolderIconCb.Size = new System.Drawing.Size(180, 19); useCoverAsFolderIconCb.TabIndex = 22; @@ -644,16 +661,24 @@ // // inProgressFilesGb // - inProgressFilesGb.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; - inProgressFilesGb.Controls.Add(inProgressDescLbl); + inProgressFilesGb.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; inProgressFilesGb.Controls.Add(inProgressSelectControl); + inProgressFilesGb.Controls.Add(inProgressDescLbl); inProgressFilesGb.Location = new System.Drawing.Point(6, 281); inProgressFilesGb.Name = "inProgressFilesGb"; - inProgressFilesGb.Size = new System.Drawing.Size(842, 141); + inProgressFilesGb.Size = new System.Drawing.Size(842, 148); inProgressFilesGb.TabIndex = 21; inProgressFilesGb.TabStop = false; inProgressFilesGb.Text = "In progress files"; // + // inProgressSelectControl + // + inProgressSelectControl.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + inProgressSelectControl.Location = new System.Drawing.Point(6, 65); + inProgressSelectControl.Name = "inProgressSelectControl"; + inProgressSelectControl.Size = new System.Drawing.Size(830, 80); + inProgressSelectControl.TabIndex = 19; + // // customFileNamingGb // customFileNamingGb.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; @@ -775,6 +800,7 @@ // tab4AudioFileOptions // tab4AudioFileOptions.AutoScroll = true; + tab4AudioFileOptions.BackColor = System.Drawing.SystemColors.Window; tab4AudioFileOptions.Controls.Add(request_xHE_AAC_Cbox); tab4AudioFileOptions.Controls.Add(requestSpatialCbox); tab4AudioFileOptions.Controls.Add(useWidevineCbox); @@ -798,10 +824,9 @@ tab4AudioFileOptions.Location = new System.Drawing.Point(4, 24); tab4AudioFileOptions.Name = "tab4AudioFileOptions"; tab4AudioFileOptions.Padding = new System.Windows.Forms.Padding(3); - tab4AudioFileOptions.Size = new System.Drawing.Size(856, 453); + tab4AudioFileOptions.Size = new System.Drawing.Size(856, 457); tab4AudioFileOptions.TabIndex = 3; tab4AudioFileOptions.Text = "Audio File Options"; - tab4AudioFileOptions.UseVisualStyleBackColor = true; // // request_xHE_AAC_Cbox // @@ -1183,6 +1208,7 @@ // label19.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; label19.AutoSize = true; + label19.BackColor = System.Drawing.SystemColors.ControlLightLight; label19.Location = new System.Drawing.Point(332, 47); label19.Name = "label19"; label19.Size = new System.Drawing.Size(20, 15); @@ -1193,6 +1219,7 @@ // label18.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; label18.AutoSize = true; + label18.BackColor = System.Drawing.SystemColors.ControlLightLight; label18.Location = new System.Drawing.Point(291, 47); label18.Name = "label18"; label18.Size = new System.Drawing.Size(20, 15); @@ -1203,6 +1230,7 @@ // label17.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; label17.AutoSize = true; + label17.BackColor = System.Drawing.SystemColors.ControlLightLight; label17.Location = new System.Drawing.Point(251, 47); label17.Name = "label17"; label17.Size = new System.Drawing.Size(20, 15); @@ -1213,6 +1241,7 @@ // label16.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; label16.AutoSize = true; + label16.BackColor = System.Drawing.SystemColors.ControlLightLight; label16.Location = new System.Drawing.Point(212, 47); label16.Name = "label16"; label16.Size = new System.Drawing.Size(20, 15); @@ -1223,6 +1252,7 @@ // label12.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; label12.AutoSize = true; + label12.BackColor = System.Drawing.SystemColors.ControlLightLight; label12.Location = new System.Drawing.Point(170, 47); label12.Name = "label12"; label12.Size = new System.Drawing.Size(20, 15); @@ -1233,6 +1263,7 @@ // label15.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; label15.AutoSize = true; + label15.BackColor = System.Drawing.SystemColors.ControlLightLight; label15.Location = new System.Drawing.Point(130, 47); label15.Name = "label15"; label15.Size = new System.Drawing.Size(20, 15); @@ -1243,6 +1274,7 @@ // label9.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; label9.AutoSize = true; + label9.BackColor = System.Drawing.SystemColors.ControlLightLight; label9.Location = new System.Drawing.Point(89, 47); label9.Name = "label9"; label9.Size = new System.Drawing.Size(20, 15); @@ -1253,6 +1285,7 @@ // label8.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; label8.AutoSize = true; + label8.BackColor = System.Drawing.SystemColors.ControlLightLight; label8.Location = new System.Drawing.Point(371, 47); label8.Name = "label8"; label8.Size = new System.Drawing.Size(20, 15); @@ -1281,6 +1314,7 @@ // label14.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; label14.AutoSize = true; + label14.BackColor = System.Drawing.SystemColors.ControlLightLight; label14.Location = new System.Drawing.Point(50, 47); label14.Name = "label14"; label14.Size = new System.Drawing.Size(20, 15); @@ -1291,6 +1325,7 @@ // label2.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; label2.AutoSize = true; + label2.BackColor = System.Drawing.SystemColors.ControlLightLight; label2.Location = new System.Drawing.Point(10, 47); label2.Name = "label2"; label2.Size = new System.Drawing.Size(20, 15); @@ -1403,6 +1438,15 @@ createCueSheetCbox.UseVisualStyleBackColor = true; createCueSheetCbox.CheckedChanged += allowLibationFixupCbox_CheckedChanged; // + // themeLbl + // + themeLbl.AutoSize = true; + themeLbl.Location = new System.Drawing.Point(190, 393); + themeLbl.Name = "themeLbl"; + themeLbl.Size = new System.Drawing.Size(296, 15); + themeLbl.TabIndex = 12; + themeLbl.Text = "You must restart Libation for this change to take effect."; + // // SettingsDialog // AcceptButton = saveBtn; @@ -1464,8 +1508,6 @@ public System.Windows.Forms.Button saveBtn; public System.Windows.Forms.Button cancelBtn; private System.Windows.Forms.CheckBox allowLibationFixupCbox; - private DirectoryOrCustomSelectControl booksSelectControl; - private DirectorySelectControl inProgressSelectControl; private System.Windows.Forms.RadioButton convertLossyRb; private System.Windows.Forms.RadioButton convertLosslessRb; private System.Windows.Forms.Button logsBtn; @@ -1568,5 +1610,10 @@ private System.Windows.Forms.CheckBox useWidevineCbox; private System.Windows.Forms.CheckBox requestSpatialCbox; private System.Windows.Forms.CheckBox request_xHE_AAC_Cbox; + private DirectoryOrCustomSelectControl inProgressSelectControl; + private DirectoryOrCustomSelectControl booksSelectControl; + private System.Windows.Forms.Label label22; + private System.Windows.Forms.ComboBox themeCb; + private System.Windows.Forms.Label themeLbl; } } \ No newline at end of file diff --git a/Source/LibationWinForms/Dialogs/SettingsDialog.Important.cs b/Source/LibationWinForms/Dialogs/SettingsDialog.Important.cs index d0295e9c..22bb44fb 100644 --- a/Source/LibationWinForms/Dialogs/SettingsDialog.Important.cs +++ b/Source/LibationWinForms/Dialogs/SettingsDialog.Important.cs @@ -1,4 +1,6 @@ using Dinah.Core; +using DocumentFormat.OpenXml.Drawing; +using DocumentFormat.OpenXml.Office2013.Theme; using FileManager; using LibationFileManager; using LibationUiBase; @@ -19,6 +21,8 @@ namespace LibationWinForms.Dialogs else Go.To.Folder(Configuration.Instance.LibationFiles.Location.ShortPathName); } + private Configuration.Theme themeVariant; + private Configuration.Theme initialThemeVariant; private void Load_Important(Configuration config) { @@ -44,6 +48,10 @@ namespace LibationWinForms.Dialogs creationTimeCb.SelectedItem = dateTimeSources.SingleOrDefault(v => v.Value == config.CreationTime) ?? dateTimeSources[0]; lastWriteTimeCb.SelectedItem = dateTimeSources.SingleOrDefault(v => v.Value == config.LastWriteTime) ?? dateTimeSources[0]; + themeVariant = initialThemeVariant = config.ThemeVariant; + var themes = Enum.GetValues().Select(v => new EnumDisplay(v)).ToArray(); + themeCb.Items.AddRange(themes); + themeCb.SelectedItem = themes.SingleOrDefault(v => v.Value == themeVariant) ?? themes[0]; booksSelectControl.SetSearchTitle("books location"); booksSelectControl.SetDirectoryItems( @@ -110,6 +118,7 @@ namespace LibationWinForms.Dialogs config.CreationTime = (creationTimeCb.SelectedItem as EnumDisplay)?.Value ?? Configuration.DateTimeSource.File; config.LastWriteTime = (lastWriteTimeCb.SelectedItem as EnumDisplay)?.Value ?? Configuration.DateTimeSource.File; + config.ThemeVariant = (themeCb.SelectedItem as EnumDisplay)?.Value ?? Configuration.Theme.System; return true; } @@ -123,5 +132,15 @@ namespace LibationWinForms.Dialogs config.GridFontScaleFactor = linearRangeToScaleFactor(gridFontScaleFactorTbar.Value); config.GridScaleFactor = linearRangeToScaleFactor(gridScaleFactorTbar.Value); } + + private void themeCb_SelectedIndexChanged(object? sender, EventArgs e) + { + var selected = themeCb.SelectedItem as EnumDisplay; + if (selected != null) + { + themeVariant = selected.Value; + themeLbl.Visible = themeVariant != initialThemeVariant; + } + } } } diff --git a/Source/LibationWinForms/Form1.ScanNotification.cs b/Source/LibationWinForms/Form1.ScanNotification.cs index e0e8226c..e7c82255 100644 --- a/Source/LibationWinForms/Form1.ScanNotification.cs +++ b/Source/LibationWinForms/Form1.ScanNotification.cs @@ -21,6 +21,7 @@ namespace LibationWinForms scanLibraryOfAllAccountsToolStripMenuItem.Enabled = false; scanLibraryOfSomeAccountsToolStripMenuItem.Enabled = false; + this.scanningToolStripMenuItem.Image = System.Windows.Forms.Application.IsDarkModeEnabled ? Properties.Resources.import_16x16_dark : Properties.Resources.import_16x16; this.scanningToolStripMenuItem.Visible = true; this.scanningToolStripMenuItem.Text = (accountsLength == 1) diff --git a/Source/LibationWinForms/Form1._NonUI.cs b/Source/LibationWinForms/Form1._NonUI.cs index 314758eb..783a18ce 100644 --- a/Source/LibationWinForms/Form1._NonUI.cs +++ b/Source/LibationWinForms/Form1._NonUI.cs @@ -22,7 +22,7 @@ namespace LibationWinForms PictureStorage.SetDefaultImage(PictureSize.Native, Properties.Resources.default_cover_500x500.ToBytes(format)); BaseUtil.SetLoadImageDelegate(WinFormsUtil.TryLoadImageOrDefault); - BaseUtil.SetLoadResourceImageDelegate(Properties.Resources.ResourceManager.GetObject); + BaseUtil.SetLoadResourceImageDelegate(LoadResourceImage); // wire-up event to automatically download after scan. // winforms only. this should NOT be allowed in cli @@ -36,6 +36,13 @@ namespace LibationWinForms }; } + private static object LoadResourceImage(string resourceName) + { + if (Application.IsDarkModeEnabled) + resourceName += "_dark"; + return Properties.Resources.ResourceManager.GetObject(resourceName); + } + private void AudibleApiStorage_LoadError(object sender, AccountSettingsLoadErrorEventArgs e) { try diff --git a/Source/LibationWinForms/GridView/EditTagsDataGridViewImageButtonColumn.cs b/Source/LibationWinForms/GridView/EditTagsDataGridViewImageButtonColumn.cs index 5387c08e..422de6de 100644 --- a/Source/LibationWinForms/GridView/EditTagsDataGridViewImageButtonColumn.cs +++ b/Source/LibationWinForms/GridView/EditTagsDataGridViewImageButtonColumn.cs @@ -23,7 +23,7 @@ namespace LibationWinForms.GridView { public EditTagsDataGridViewImageButtonCell() : base("Edit Tags button") { } - private static Image ButtonImage { get; } = Properties.Resources.edit_25x25; + private static Image ButtonImage => Application.IsDarkModeEnabled ? Properties.Resources.edit_25x25_dark : Properties.Resources.edit_25x25; protected override void Paint(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates elementState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts) { diff --git a/Source/LibationWinForms/GridView/LiberateDataGridViewImageButtonColumn.cs b/Source/LibationWinForms/GridView/LiberateDataGridViewImageButtonColumn.cs index 13d3abd1..05b12a75 100644 --- a/Source/LibationWinForms/GridView/LiberateDataGridViewImageButtonColumn.cs +++ b/Source/LibationWinForms/GridView/LiberateDataGridViewImageButtonColumn.cs @@ -23,6 +23,8 @@ namespace LibationWinForms.GridView private static readonly Brush DISABLED_GRAY = new SolidBrush(Color.FromArgb(0x60, Color.LightGray)); private static readonly Color HiddenForeColor = Color.LightGray; private static readonly Color SERIES_BG_COLOR = Color.FromArgb(230, 255, 230); + private static readonly Color SERIES_BG_COLOR_DARK = Color.FromArgb(76, 82, 93); + private static Color SeriesBgColor => Application.IsDarkModeEnabled ? SERIES_BG_COLOR_DARK:SERIES_BG_COLOR; protected override void Paint(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates elementState, object? value, object? formattedValue, string? errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts) { @@ -32,7 +34,7 @@ namespace LibationWinForms.GridView //Don't paint the button graphic paintParts ^= DataGridViewPaintParts.ContentBackground | DataGridViewPaintParts.ContentForeground | DataGridViewPaintParts.SelectionBackground; - row.DefaultCellStyle.BackColor = status.IsEpisode ? SERIES_BG_COLOR : grid.DefaultCellStyle.BackColor; + row.DefaultCellStyle.BackColor = status.IsEpisode ? SeriesBgColor : grid.DefaultCellStyle.BackColor; row.DefaultCellStyle.ForeColor = status.Opacity == 1 ? grid.DefaultCellStyle.ForeColor : HiddenForeColor; base.Paint(graphics, clipBounds, cellBounds, rowIndex, elementState, null, null, null, cellStyle, advancedBorderStyle, paintParts); diff --git a/Source/LibationWinForms/GridView/ProductsGrid.cs b/Source/LibationWinForms/GridView/ProductsGrid.cs index 2f8f1941..0d754e2a 100644 --- a/Source/LibationWinForms/GridView/ProductsGrid.cs +++ b/Source/LibationWinForms/GridView/ProductsGrid.cs @@ -53,6 +53,7 @@ namespace LibationWinForms.GridView setGridScale(Configuration.Instance.GridScaleFactor); Configuration.Instance.PropertyChanged += Configuration_ScaleChanged; Configuration.Instance.PropertyChanged += Configuration_FontScaleChanged; + gridEntryDataGridView.EnableHeadersVisualStyles = !Application.IsDarkModeEnabled; gridEntryDataGridView.Disposed += (_, _) => { diff --git a/Source/LibationWinForms/ProcessQueue/ProcessBookControl.Designer.cs b/Source/LibationWinForms/ProcessQueue/ProcessBookControl.Designer.cs index 3f1e9fa2..c198cf1b 100644 --- a/Source/LibationWinForms/ProcessQueue/ProcessBookControl.Designer.cs +++ b/Source/LibationWinForms/ProcessQueue/ProcessBookControl.Designer.cs @@ -29,184 +29,177 @@ private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ProcessBookControl)); - this.pictureBox1 = new System.Windows.Forms.PictureBox(); - this.progressBar1 = new System.Windows.Forms.ProgressBar(); - this.remainingTimeLbl = new System.Windows.Forms.Label(); - this.etaLbl = new System.Windows.Forms.Label(); - this.cancelBtn = new System.Windows.Forms.Button(); - this.statusLbl = new System.Windows.Forms.Label(); - this.bookInfoLbl = new System.Windows.Forms.Label(); - this.moveUpBtn = new System.Windows.Forms.Button(); - this.moveDownBtn = new System.Windows.Forms.Button(); - this.moveFirstBtn = new System.Windows.Forms.Button(); - this.moveLastBtn = new System.Windows.Forms.Button(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); - this.SuspendLayout(); + pictureBox1 = new System.Windows.Forms.PictureBox(); + progressBar1 = new System.Windows.Forms.ProgressBar(); + remainingTimeLbl = new System.Windows.Forms.Label(); + etaLbl = new System.Windows.Forms.Label(); + cancelBtn = new System.Windows.Forms.Button(); + statusLbl = new System.Windows.Forms.Label(); + bookInfoLbl = new System.Windows.Forms.Label(); + moveUpBtn = new System.Windows.Forms.Button(); + moveDownBtn = new System.Windows.Forms.Button(); + moveFirstBtn = new System.Windows.Forms.Button(); + moveLastBtn = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit(); + SuspendLayout(); // // pictureBox1 // - this.pictureBox1.Location = new System.Drawing.Point(2, 2); - this.pictureBox1.Name = "pictureBox1"; - this.pictureBox1.Size = new System.Drawing.Size(80, 80); - this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.pictureBox1.TabIndex = 0; - this.pictureBox1.TabStop = false; + pictureBox1.Location = new System.Drawing.Point(2, 2); + pictureBox1.Name = "pictureBox1"; + pictureBox1.Size = new System.Drawing.Size(80, 80); + pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + pictureBox1.TabIndex = 0; + pictureBox1.TabStop = false; // // progressBar1 // - this.progressBar1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.progressBar1.Location = new System.Drawing.Point(88, 65); - this.progressBar1.MarqueeAnimationSpeed = 0; - this.progressBar1.Name = "progressBar1"; - this.progressBar1.Size = new System.Drawing.Size(212, 17); - this.progressBar1.TabIndex = 2; + progressBar1.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + progressBar1.Location = new System.Drawing.Point(88, 65); + progressBar1.MarqueeAnimationSpeed = 0; + progressBar1.Name = "progressBar1"; + progressBar1.Size = new System.Drawing.Size(212, 17); + progressBar1.TabIndex = 2; // // remainingTimeLbl // - this.remainingTimeLbl.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.remainingTimeLbl.AutoSize = true; - this.remainingTimeLbl.Location = new System.Drawing.Point(338, 65); - this.remainingTimeLbl.Name = "remainingTimeLbl"; - this.remainingTimeLbl.Size = new System.Drawing.Size(30, 15); - this.remainingTimeLbl.TabIndex = 3; - this.remainingTimeLbl.Text = "--:--"; - this.remainingTimeLbl.TextAlign = System.Drawing.ContentAlignment.TopRight; + remainingTimeLbl.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; + remainingTimeLbl.AutoSize = true; + remainingTimeLbl.Location = new System.Drawing.Point(338, 65); + remainingTimeLbl.Name = "remainingTimeLbl"; + remainingTimeLbl.Size = new System.Drawing.Size(30, 15); + remainingTimeLbl.TabIndex = 3; + remainingTimeLbl.Text = "--:--"; + remainingTimeLbl.TextAlign = System.Drawing.ContentAlignment.TopRight; // // etaLbl // - this.etaLbl.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.etaLbl.AutoSize = true; - this.etaLbl.Font = new System.Drawing.Font("Segoe UI", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.etaLbl.Location = new System.Drawing.Point(304, 66); - this.etaLbl.Name = "etaLbl"; - this.etaLbl.Size = new System.Drawing.Size(28, 13); - this.etaLbl.TabIndex = 3; - this.etaLbl.Text = "ETA:"; - this.etaLbl.TextAlign = System.Drawing.ContentAlignment.TopRight; + etaLbl.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; + etaLbl.AutoSize = true; + etaLbl.Font = new System.Drawing.Font("Segoe UI", 8F); + etaLbl.Location = new System.Drawing.Point(304, 66); + etaLbl.Name = "etaLbl"; + etaLbl.Size = new System.Drawing.Size(27, 13); + etaLbl.TabIndex = 3; + etaLbl.Text = "ETA:"; + etaLbl.TextAlign = System.Drawing.ContentAlignment.TopRight; // // cancelBtn // - this.cancelBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.cancelBtn.BackColor = System.Drawing.Color.Transparent; - this.cancelBtn.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("cancelBtn.BackgroundImage"))); - this.cancelBtn.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.cancelBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.cancelBtn.ForeColor = System.Drawing.SystemColors.Control; - this.cancelBtn.Location = new System.Drawing.Point(348, 6); - this.cancelBtn.Margin = new System.Windows.Forms.Padding(0); - this.cancelBtn.Name = "cancelBtn"; - this.cancelBtn.Size = new System.Drawing.Size(20, 20); - this.cancelBtn.TabIndex = 4; - this.cancelBtn.UseVisualStyleBackColor = false; + cancelBtn.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + cancelBtn.BackColor = System.Drawing.Color.Transparent; + cancelBtn.BackgroundImage = (System.Drawing.Image)resources.GetObject("cancelBtn.BackgroundImage"); + cancelBtn.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + cancelBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + cancelBtn.ForeColor = System.Drawing.SystemColors.Control; + cancelBtn.Location = new System.Drawing.Point(348, 6); + cancelBtn.Margin = new System.Windows.Forms.Padding(0); + cancelBtn.Name = "cancelBtn"; + cancelBtn.Size = new System.Drawing.Size(20, 20); + cancelBtn.TabIndex = 4; + cancelBtn.UseVisualStyleBackColor = false; // // statusLbl // - this.statusLbl.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.statusLbl.AutoSize = true; - this.statusLbl.Font = new System.Drawing.Font("Segoe UI", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.statusLbl.Location = new System.Drawing.Point(89, 66); - this.statusLbl.Name = "statusLbl"; - this.statusLbl.Size = new System.Drawing.Size(50, 13); - this.statusLbl.TabIndex = 3; - this.statusLbl.Text = "[STATUS]"; - this.statusLbl.TextAlign = System.Drawing.ContentAlignment.TopRight; + statusLbl.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left; + statusLbl.AutoSize = true; + statusLbl.Font = new System.Drawing.Font("Segoe UI", 8F); + statusLbl.Location = new System.Drawing.Point(89, 66); + statusLbl.Name = "statusLbl"; + statusLbl.Size = new System.Drawing.Size(48, 13); + statusLbl.TabIndex = 3; + statusLbl.Text = "[STATUS]"; + statusLbl.TextAlign = System.Drawing.ContentAlignment.TopRight; // // bookInfoLbl // - this.bookInfoLbl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.bookInfoLbl.Font = new System.Drawing.Font("Segoe UI", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.bookInfoLbl.Location = new System.Drawing.Point(89, 6); - this.bookInfoLbl.Name = "bookInfoLbl"; - this.bookInfoLbl.Size = new System.Drawing.Size(219, 56); - this.bookInfoLbl.TabIndex = 1; - this.bookInfoLbl.Text = "[multi-\r\nline\r\nbook\r\n info]"; + bookInfoLbl.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + bookInfoLbl.Font = new System.Drawing.Font("Segoe UI", 8F); + bookInfoLbl.Location = new System.Drawing.Point(89, 6); + bookInfoLbl.Name = "bookInfoLbl"; + bookInfoLbl.Size = new System.Drawing.Size(219, 56); + bookInfoLbl.TabIndex = 1; + bookInfoLbl.Text = "[multi-\r\nline\r\nbook\r\n info]"; // // moveUpBtn // - this.moveUpBtn.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Right))); - this.moveUpBtn.BackColor = System.Drawing.Color.Transparent; - this.moveUpBtn.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("moveUpBtn.BackgroundImage"))); - this.moveUpBtn.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.moveUpBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.moveUpBtn.ForeColor = System.Drawing.SystemColors.Control; - this.moveUpBtn.Location = new System.Drawing.Point(314, 24); - this.moveUpBtn.Name = "moveUpBtn"; - this.moveUpBtn.Size = new System.Drawing.Size(30, 17); - this.moveUpBtn.TabIndex = 5; - this.moveUpBtn.UseVisualStyleBackColor = false; + moveUpBtn.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; + moveUpBtn.BackColor = System.Drawing.Color.Transparent; + moveUpBtn.BackgroundImage = Properties.Resources.move_up; + moveUpBtn.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + moveUpBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + moveUpBtn.ForeColor = System.Drawing.SystemColors.Control; + moveUpBtn.Location = new System.Drawing.Point(314, 24); + moveUpBtn.Name = "moveUpBtn"; + moveUpBtn.Size = new System.Drawing.Size(30, 17); + moveUpBtn.TabIndex = 5; + moveUpBtn.UseVisualStyleBackColor = false; // // moveDownBtn // - this.moveDownBtn.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Right))); - this.moveDownBtn.BackColor = System.Drawing.Color.Transparent; - this.moveDownBtn.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("moveDownBtn.BackgroundImage"))); - this.moveDownBtn.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.moveDownBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.moveDownBtn.ForeColor = System.Drawing.SystemColors.Control; - this.moveDownBtn.Location = new System.Drawing.Point(314, 40); - this.moveDownBtn.Name = "moveDownBtn"; - this.moveDownBtn.Size = new System.Drawing.Size(30, 17); - this.moveDownBtn.TabIndex = 5; - this.moveDownBtn.UseVisualStyleBackColor = false; + moveDownBtn.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; + moveDownBtn.BackColor = System.Drawing.Color.Transparent; + moveDownBtn.BackgroundImage = Properties.Resources.move_down; + moveDownBtn.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + moveDownBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + moveDownBtn.ForeColor = System.Drawing.SystemColors.Control; + moveDownBtn.Location = new System.Drawing.Point(314, 40); + moveDownBtn.Name = "moveDownBtn"; + moveDownBtn.Size = new System.Drawing.Size(30, 17); + moveDownBtn.TabIndex = 5; + moveDownBtn.UseVisualStyleBackColor = false; // // moveFirstBtn // - this.moveFirstBtn.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Right))); - this.moveFirstBtn.BackColor = System.Drawing.Color.Transparent; - this.moveFirstBtn.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("moveFirstBtn.BackgroundImage"))); - this.moveFirstBtn.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.moveFirstBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.moveFirstBtn.ForeColor = System.Drawing.SystemColors.Control; - this.moveFirstBtn.Location = new System.Drawing.Point(314, 3); - this.moveFirstBtn.Name = "moveFirstBtn"; - this.moveFirstBtn.Size = new System.Drawing.Size(30, 17); - this.moveFirstBtn.TabIndex = 5; - this.moveFirstBtn.UseVisualStyleBackColor = false; + moveFirstBtn.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; + moveFirstBtn.BackColor = System.Drawing.Color.Transparent; + moveFirstBtn.BackgroundImage = Properties.Resources.move_first; + moveFirstBtn.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + moveFirstBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + moveFirstBtn.ForeColor = System.Drawing.SystemColors.Control; + moveFirstBtn.Location = new System.Drawing.Point(314, 3); + moveFirstBtn.Name = "moveFirstBtn"; + moveFirstBtn.Size = new System.Drawing.Size(30, 17); + moveFirstBtn.TabIndex = 5; + moveFirstBtn.UseVisualStyleBackColor = false; // // moveLastBtn // - this.moveLastBtn.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Right))); - this.moveLastBtn.BackColor = System.Drawing.Color.Transparent; - this.moveLastBtn.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("moveLastBtn.BackgroundImage"))); - this.moveLastBtn.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.moveLastBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.moveLastBtn.ForeColor = System.Drawing.SystemColors.Control; - this.moveLastBtn.Location = new System.Drawing.Point(314, 63); - this.moveLastBtn.Name = "moveLastBtn"; - this.moveLastBtn.Size = new System.Drawing.Size(30, 17); - this.moveLastBtn.TabIndex = 5; - this.moveLastBtn.UseVisualStyleBackColor = false; + moveLastBtn.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; + moveLastBtn.BackColor = System.Drawing.Color.Transparent; + moveLastBtn.BackgroundImage = Properties.Resources.move_last; + moveLastBtn.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + moveLastBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + moveLastBtn.ForeColor = System.Drawing.SystemColors.Control; + moveLastBtn.Location = new System.Drawing.Point(314, 63); + moveLastBtn.Name = "moveLastBtn"; + moveLastBtn.Size = new System.Drawing.Size(30, 17); + moveLastBtn.TabIndex = 5; + moveLastBtn.UseVisualStyleBackColor = false; // // ProcessBookControl // - this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; - this.BackColor = System.Drawing.SystemColors.ControlLight; - this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.Controls.Add(this.moveLastBtn); - this.Controls.Add(this.moveDownBtn); - this.Controls.Add(this.moveFirstBtn); - this.Controls.Add(this.moveUpBtn); - this.Controls.Add(this.cancelBtn); - this.Controls.Add(this.statusLbl); - this.Controls.Add(this.etaLbl); - this.Controls.Add(this.remainingTimeLbl); - this.Controls.Add(this.progressBar1); - this.Controls.Add(this.bookInfoLbl); - this.Controls.Add(this.pictureBox1); - this.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2); - this.Name = "ProcessBookControl"; - this.Size = new System.Drawing.Size(375, 86); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); + AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); + AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; + BackColor = System.Drawing.SystemColors.ControlLight; + BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + Controls.Add(moveLastBtn); + Controls.Add(moveDownBtn); + Controls.Add(moveFirstBtn); + Controls.Add(moveUpBtn); + Controls.Add(cancelBtn); + Controls.Add(statusLbl); + Controls.Add(etaLbl); + Controls.Add(remainingTimeLbl); + Controls.Add(progressBar1); + Controls.Add(bookInfoLbl); + Controls.Add(pictureBox1); + Margin = new System.Windows.Forms.Padding(4, 2, 4, 2); + Name = "ProcessBookControl"; + Size = new System.Drawing.Size(375, 86); + ((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit(); + ResumeLayout(false); + PerformLayout(); } diff --git a/Source/LibationWinForms/ProcessQueue/ProcessBookControl.cs b/Source/LibationWinForms/ProcessQueue/ProcessBookControl.cs index 35718afa..83524efc 100644 --- a/Source/LibationWinForms/ProcessQueue/ProcessBookControl.cs +++ b/Source/LibationWinForms/ProcessQueue/ProcessBookControl.cs @@ -12,10 +12,10 @@ namespace LibationWinForms.ProcessQueue private readonly int ProgressBarDistanceFromEdge; private object? m_OldContext; - private static Color FailedColor { get; } = Color.LightCoral; - private static Color CancelledColor { get; } = Color.Khaki; + private static Color FailedColor => Application.IsDarkModeEnabled ? Color.FromArgb(0x50, 0x27, 0x27) : Color.LightCoral; + private static Color CancelledColor => Application.IsDarkModeEnabled ? Color.FromArgb(0x4e, 0x4b, 0x15) : Color.Khaki; private static Color QueuedColor { get; } = SystemColors.Control; - private static Color SuccessColor { get; } = Color.PaleGreen; + private static Color SuccessColor => Application.IsDarkModeEnabled ? Color.FromArgb(0x1c, 0x3e, 0x20) : Color.PaleGreen; public ProcessBookControl() { @@ -23,6 +23,10 @@ namespace LibationWinForms.ProcessQueue remainingTimeLbl.Visible = false; progressBar1.Visible = false; etaLbl.Visible = false; + moveDownBtn.BackgroundImage = Application.IsDarkModeEnabled ? Properties.Resources.move_down_dark : Properties.Resources.move_down; + moveUpBtn.BackgroundImage = Application.IsDarkModeEnabled ? Properties.Resources.move_up_dark : Properties.Resources.move_up; + moveFirstBtn.BackgroundImage = Application.IsDarkModeEnabled ? Properties.Resources.move_first_dark : Properties.Resources.move_first; + moveLastBtn.BackgroundImage = Application.IsDarkModeEnabled ? Properties.Resources.move_last_dark : Properties.Resources.move_last; CancelBtnDistanceFromEdge = Width - cancelBtn.Location.X; ProgressBarDistanceFromEdge = Width - progressBar1.Location.X - progressBar1.Width; diff --git a/Source/LibationWinForms/ProcessQueue/ProcessBookControl.resx b/Source/LibationWinForms/ProcessQueue/ProcessBookControl.resx index 83921ba7..218b7826 100644 --- a/Source/LibationWinForms/ProcessQueue/ProcessBookControl.resx +++ b/Source/LibationWinForms/ProcessQueue/ProcessBookControl.resx @@ -1,4 +1,64 @@ - + + + @@ -76,662 +136,638 @@ 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 - /x9W31o+WFcHNAAAAABJRU5ErkJggg== + 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 @@ -743,125 +779,15 @@ True - - - iVBORw0KGgoAAAANSUhEUgAAAMgAAABNCAYAAADjJSv1AAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1 - MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAACwwAAAsMAT9AIsgAAATRSURBVHhe7Zlfp6ZVHIaHISIi - Oo2I6ANEDDFERx3FMERERN8gIoaIoc8QERERnQ5DREQfICKio4iOYs/vmndmrNlz79nPs55nrWf9uS8u - xn0y27vf2/rd9pWzszNr7QXK0Fp7UobW2pMytNaelKG19qQMrbUnZWitPSlDa+1JGaI5jHfCZ07/NDWR - PVAhmuq8GP4Y8uH/Fr4amorIHqgQTVXeDv8O+eAf+l/4UWgqIXugQjRVeDb8MkyLcd7vQ14XUxjZAxWi - Kc5rIadUWoaL/CvklTEFkT1QIZqifBxyQqUlWOLt0AO+ELIHKkRTBE6lH8L0S79WD/hCyB6oEM3ucCJx - KqVf9lw94Asge6BCNLvBScRplH7B99IDfkdkD1SIZhc4hZYO8Vz/DN8KzUZkD1SIZjOcQDlDPNcvQg/4 - DcgeqBBNNpw8nD7pl7eWv4Ye8JnIHqgQTRacOpw86Ze2trxaH4ZmJbIHKkSzipJDPFcP+JXIHqgQzWJq - DPFcPeBXIHugQjSLqD3Ec/WAX4DsgQrRPJUjh3iuHvCXIHugQjQX0sIQz9UD/inIHqgQzRNwonCqpF+4 - Xv0ufCE0CbIHKkTzGJwmnCjpl6x3eQWvh+YBsgcqRPMITpIehniun4ce8IHsgQrR3D9BOEXSL9Oo/hJO - P+BlD1SIk8Pp0esQz3X6AS97oEKcFE4NTo70izOb0w542QMV4oRwYnBqpF+WWZ1ywMseqBAn44Pw3zD9 - ktjJBrzsgQpxEmYa4rlOM+BlD1SIEzDjEM+V15VXdmhkD1SIA+Mhni+v7fPhkMgeqBAHxUN8u7y6b4bD - IXugQhwQD/F9vRUONeBlD1SIA8FJ4CFexp/DYQa87IEKcRA4BTzEyzrMgJc9UCF2Dk8/J0D6i7Rl7X7A - yx6oEDvmlZCnP/3l2Tp2PeBlD1SInfJ+6CF+vF0OeNkDFWJn8LR/G6a/JHusvOK85t0ge6BC7Aie9D/C - 9Jdj25DXnFe9C2QPVIgdcDXkKf8/TH8ptj153Zsf8LIHKsTG8RDvT175pge87IEKsWE8xPuV177ZAS97 - oEJsEA/xcWxywMseqBAbw0N8PJsb8LIHKsRG8BAf32YGvOyBCrEBXg49xOewiQEve6BCPJj3Qg/xuXw4 - 4LkaDkH2QIV4EDy134TpB2fnkquB66E6sgcqxAO4Fv4eph+WnVOuB66IqsgeqBArwpP6Weghbs/LNVFt - wMseqBArwVP6U5h+KNamclVUGfCyByrECtwMPcTtEqsMeNkDFWJBngu/DtMPwNolFh3wsgcqxEK8EXqI - 2y0WG/CyByrEnfEQt3u7+4CXPVAh7oiHuC0l1wh/HtgF2QMV4k54iNvScpVwnWwe8LIHKsSNeIjb2nKl - bBrwsgcqxA14iNuj5FrhaslC9kCFmAFP3Kehh7g9Wq6X1QNe9kCFuBKetrth+kNae6SrB7zsgQpxBTfC - f8L0h7O2BVcNeNkDFeICGOJfhekPZG2LLhrwsgcqxEt4PfQQtz156YCXPVAhXgBP1Sehh7jtVQY8188T - yB6oEAUvhXfC9D+ztke5fvhzxGPIHqgQz/Fu6CFuR5IriD9LPBrwsgcqxAd4iNvR5c8T9we87IEKMfAQ - t7PIdXRT9kCF1lo8u3IPfFOKqVljg2IAAAAASUVORK5CYII= - - True - - - iVBORw0KGgoAAAANSUhEUgAAAMgAAABNCAYAAADjJSv1AAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1 - MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAACwwAAAsMAT9AIsgAAATWSURBVHhe7Zlfh+1lGIaHiIiI - 6DQiog8QERHRUacRERHRN4hNRET0GSIiIvoAERERnUZEdBTRUUzP1dLe7559zTtr1vr9/90XF3Uf7D17 - Zt3e5zYXl5eXMcZr9PDi4o3yr5L/iXHL/lI+bz1ADw88VX5Xtn9YjFvys/LRUnuAHt7jofJO+U/Z/sEx - rtk/y9fLu1gP0MMHeaHkKWr/khjX6Lcl19F9WA/QQ+ex8vOy/ctiXItcQe+XXEUPYD1AD/tkwMe1+d8Q - L6/FeoAe3gxP1Pdl+0XEuETvDvEe1gP08Dh4qj4oM+DjEuXKuW+I97AeoIe348Xy17L94mKcU3498cAQ - 72E9QA9vDwP+i7L9ImOcWq4Zfi2hQ7yH9QA9PJ0M+DiXDHF+HXES1gP08Dwy4OPU8usHrpiTsR6gh+eT - AR+nkGuFq+VsrAfo4XBkwMex5Eq51RDvYT1AD4clAz4OKVcJ18mth3gP6wF6OA5vlhnw8Ry5RrhKBsd6 - gB6Ox9NlBnw8xbOHeA/rAXo4Lg+XPJHtPz7G6xxsiPewHqCH08BT+VvZfjNibB10iPewHqCH08GT+WXZ - flNiHGWI97AeoIfTkwEf/3e0Id7DeoAezkMGfOTXAaMN8R7WA/RwPjLg9ynXA1fEbFgP0MP5yYDfj1wN - XA+zYj1AD5dBBvz25Vrgapgd6wF6uCzeKjPgtyXXweRDvIf1AD1cHs+UP5TtNzmuU66CWYZ4D+sBerhM - eIo/LNtvdlyPXAFcA4vEeoAeLpuXygz4dcnrzxWwWKwH6OHyebzMgF+HixniPawH6OF6yIBfrosb4j2s - B+jhusiAX56LHOI9rAfo4frIgF+Gix7iPawH6OF6yYCfz8UP8R7WA/Rw3WTATy+v9+KHeA/rAXq4Dd4u - /y7bH2QcVl5rXu3VYz1AD7cDT/6PZftDjcPIK81rvQmsB+jhtuDp/6hsf7jxdHmVeZ03hfUAPdwmL5cZ - 8OfJa7zaId7DeoAebpcM+NPlFV71EO9hPUAPt08G/PHy6vL6bhrrAXq4DzLgb/ar8oly81gP0MP9kAHv - bnKI97AeoIf7IwP+npsd4j2sB+jhPuGU4KRoPyx7c9NDvIf1AD3cN++UexvwuxjiPawH6GHgxPipbD9E - W3U3Q7yH9QA9DMCp8XHZfpi2JK8kr2UorAfoYWh5pdzagOd13N0Q72E9QA/DVbY04HkVdznEe1gP0MNw - HWse8L+XvIZBsB6gh6HHGgf81+Xuh3gP6wF6GG5iLQOe1+7dMtyA9QA9DMfCycLp0n4olyKv3LNlOALr - AXoYbgOnCydM++Gc20/KR8pwJNYD9DCcAqfM3AM+Q/xErAfoYTgVTpq5BnyG+BlYD9DDcA6cNlMO+Azx - AbAeoIdhCKYY8BniA2E9QA/DUIw54DPEB8R6gB6GoRlywP9RZogPjPUAPQxjMMSA/6bMEB8B6wF6GMaC - k4jTqP3QHyOvz3tlGAnrAXoYxoYTiVOpLcF1/lw+V4YRsR6gh2EKOJU4mdoyXPXTMkN8AqwH6GGYEk6n - qwOe1+XVMkyE9QA9DFPDCcUpxTefV+XJMkyI9QA9DHPAKfXa4T/D1FgPUMMY40ENY4wHNYwxHtQwxnhQ - wxjjQQ1jjAc1jDEe1DDGiJcX/wKcO4zm90rrbQAAAABJRU5ErkJggg== - - True - - - iVBORw0KGgoAAAANSUhEUgAAAMgAAABZCAYAAAB7Ymt4AAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1 - MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAACwwAAAsMAT9AIsgAAAT8SURBVHhe7dlvp+ZVFMbxIWKI - iJ4OEdELiIiIIeZpRERERO8ghoiI6DUMERHRC4iIiOgFRERPI3oUp3WNWWPfa52z53fv+/dv//b34kNn - KR3n3Je9lnPr6urqWpZ7Rv8AjOTeSQ/KL0r6F4v/CBgFBQEqKAhQQUGACgoCVFAQoIKCABUUBKigIEAF - BQEqKAhQQUGACgoCVFAQoIKCABUUBKigIEAFBQEqKAhQQUGACgoCVFAQoIKCABWTC0KWz23zpSl/QdF3 - 5nlDVspJD8ovSmTxvGx+M2UZbvKXedOQFXLSg/KLElk0H5l/TVmCKb4wTxuyUFIP4sCRRaJV6XtTfujP - pVfnJUMWSOpBHDgye7QiaVUqP+yt9Pp8aMjMST2IA0dmi1YirUblB3wuHPAzJ/UgDhyZJVqFph7irf40 - dw2ZIakHceDIxdEK1HKIt/rccMBfmNSDOHCkOVp5tPqUH961/Go44C9I6kEcONIUrTpaecoP7dr0an1g - SENSD+LAkbOy5CHeigO+IakHceDI5KxxiLfigD8zqQdx4MikrH2It+KAn5jUgzhwpJotD/FWHPATknoQ - B47cmD0c4q044J+Q1IM4cCRFK4pWlfID16tvzXOGhKQexIEjJ9FqohWl/JD1Tq/gG4YUST2IA0ceRytJ - D4d4q88MB/yjpB7EgSMPVxCtIuWH6ah+MRzwltSDOHCDR6tHr4d4Kw54S+pBHLhBo1VDK0f5wRnN0Ad8 - 6kEcuAGjFUOrRvlhGdWwB3zqQRy4wfK++ceUHxIMeMCnHsSBGyQjHeKthjrgUw/iwA2QEQ/xVnpd9coe - PqkHceAOHA7xdnptnzWHTepBHLiDhkP8cnp1XzeHTOpBHLgDhkN8Xp+awx3wqQdx4A4UrQQc4sv42Rzq - gE89iAN3kGgV4BBf1qEO+NSDOHCdR0+/VoDyF4llHeKATz2IA9dxXjR6+stfHtbR/QGfehAHrtO8ZzjE - t9ftAZ96EAeus+hp/8aUvyRsS6+4XvOuknoQB66j6En/w5S/HOyDXnO96t0k9SAOXAd5yugp/8+UvxTs - j173Lg741IM4cDsPh3h/9Mrv/oBPPYgDt+NwiPdLr/2uD/jUgzhwOwyH+HHs9oBPPYgDt7NwiB/PLg/4 - 1IM4cDsJh/jx7eqATz2IA7eDvGA4xMewmwM+9SAO3MZ513CIj8UPeG0NmyX1IA7cRtFT+7Upf3AYi7YG - bQ+bJPUgDtwGec38bsofFsak7UFbxOpJPYgDt2L0pH5iOMQRaZtY9YBPPYgDt1L0lP5kyh8KUNJWsdoB - n3oQB26FvGM4xDHFagd86kEcuAXzjPnKlD8AYIrFD/jUgzhwC+VVwyGOSyx6wKcexIGbORzimNsiB3zq - QRy4GcMhjqVoG9GfB2ZL6kEcuJnCIY6laSvRdjLLAZ96EAfuwnCIY23aUi4+4FMP4sBdEA5xbEXbiraW - 5qQexIFriJ64+4ZDHFvT9tJ0wKcexIE7M3rafjTlNwlsqemATz2IA3dG3jZ/m/KbA/bg7AM+9SAO3ITo - EH9gym8I2KPJB3zqQRy4J+QVwyGOnkw64FMP4sDdED1VHxsOcfRKB7y2n2uTehAH7prcMT+Y8n8G9Ejb - j/4ckZJ6EAcu5C3DIY4j0RakP0ucHPCpB3HgHoVDHEenP088PuBTD+LAWTjEMQptRw8P+NMeXN36HzdL - jfkqyMbMAAAAAElFTkSuQmCC - - True - - - iVBORw0KGgoAAAANSUhEUgAAAMgAAABZCAYAAAB7Ymt4AAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1 - MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAACwwAAAsMAT9AIsgAAAUASURBVHhe7Zntpq1lFIYXERER - +wAiIjqAiIiIfQYRERHRGURERMQ+hoiIiA4gIiKivxER/YroV6zGncbezxxjrrHmmvP9eJ73vS6uH+uW - vVdrz9szbuvq+vr6wP95w/zLVIC4ZX8xX4w9cHPwiGfM78z2D0Pckp+ZT5qpB24ODnnM/MD8x2z/YMSR - /dN83XxI7IGbg+O8ZOopav8SxBH91tR1dEDsgZuDm3nK/Nxs/zLEUdQV9L6pqygRe+Dm4HYY8Dia/w1x - 80ZiD9wcnIaeqO/N9ptA7NGHQ7wi9sDNwenoqfrQZMBjj+rKORjiFbEHbg7uzsvmr2b7zSGuqX49kYZ4 - ReyBm4Pz0ID/wmy/ScSl1TWjX0scHeIVsQduDi6DAY9rqSGuX0ecReyBm4PLYcDj0urXD7pizib2wM3B - NDDgcQl1rehquZjYAzcH08KAx7nUlXKnIV4Re+DmYHoY8Dilukp0ndx5iFfEHrg5mI83TQY8XqKuEV0l - kxN74OZgXp41GfB4jhcP8YrYAzcH8/O4qSey/Z9HvMnJhnhF7IGbg+XQU/mb2f4wEFsnHeIVsQduDpZF - T+aXZvtDQZxliFfEHrg5WAcGPLqzDfGK2AM3B+vBgEf9OmC2IV4Re+DmYF0Y8PtU14OuiNWIPXBz0AcM - +P2oq0HXw6rEHrg56AcG/PbVtaCrYXViD9wc9MdbJgN+W+o6WHyIV8QeuDnok+fMH8z2h4xjqqtglSFe - EXvg5qBf9BR/ZLY/bBxHXQG6Brok9sDNQf+8YjLgx1Kvv66Abok9cHMwBk+bDPgx7GaIV8QeuDkYCwZ8 - v3Y3xCtiD9wcjAcDvj+7HOIVsQduDsaEAd+HXQ/xitgDNwdjw4Bfz+6HeEXsgZuD8WHAL69e7+6HeEXs - gZuD7fC2+bfZ/kPitOq11qs9PLEHbg62hZ78H832HxWnUa+0XutNEHvg5mB76On/2Gz/cfF89Srrdd4U - sQduDrbLqyYD/jL1Gg87xCtiD9wcbBsG/PnqFR56iFfEHrg52AcM+NPVq6vXd9PEHrg52A8M+Nv9yrxn - bp7YAzcH+4IBf9xNDvGK2AM3B/uEAf/IzQ7xitgDNwf7RaeETor2w7I3Nz3EK2IP3BzAO+beBvwuhnhF - 7IGbAxA6MX4y2w/RVt3NEK+IPXBzAI5OjU/M9sO0JfVK6rUEI/bAzQFEXjO3NuD1Ou5uiFfEHrg5gGNs - acDrVdzlEK+IPXBzABUjD/jfTb2GcITYAzcHcBsjDvivzd0P8YrYAzcHcAqjDHi9du+acAuxB24O4C7o - ZNHp0n4oe1Gv3PMmnEDsgZsDuCs6XXTCtB/Otf3UfMKEE4k9cHMA56JTZu0BzxA/k9gDNwdwCTpp1hrw - DPELiD1wcwCXotNmyQHPEJ+A2AM3BzAVSwx4hvhExB64OYApmXPAM8QnJPbAzQHMwZQD/g+TIT4xsQdu - DmAuphjw35gM8RmIPXBzAHOik0inUfuhP0W9Pu+ZMBOxB+7hF7AUOpF0KrUluMmfzRdMmJG2B62HX8CS - 6FTSydSWIfrAZIgvQNuD1sMvrq7u679F3Jn32x60Hn5BQXCfUhDEQgqCWEhBEAspCGIhBUEspCCIhRQE - sZCCIBZSEMRCCoJYSEEQCykIYiEFQSykIIiFFASxkIIgFlIQxEIKglhIQRALKQhiIQVBLKQgiIU3FOT6 - 6l8KOJAbKVKmPQAAAABJRU5ErkJggg== - - True diff --git a/Source/LibationWinForms/ProcessQueue/ProcessQueueControl.cs b/Source/LibationWinForms/ProcessQueue/ProcessQueueControl.cs index 15bcc5d6..5a14901e 100644 --- a/Source/LibationWinForms/ProcessQueue/ProcessQueueControl.cs +++ b/Source/LibationWinForms/ProcessQueue/ProcessQueueControl.cs @@ -31,7 +31,11 @@ internal partial class ProcessQueueControl : UserControl virtualFlowControl2.ButtonClicked += VirtualFlowControl2_ButtonClicked; virtualFlowControl2.DataContext = ViewModel.Queue; + queueNumberLbl.Image = Application.IsDarkModeEnabled ? Properties.Resources.queue_queued_dark : Properties.Resources.queue_queued; + errorNumberLbl.Image = Application.IsDarkModeEnabled ? Properties.Resources.queue_error_dark : Properties.Resources.queue_error; + completedNumberLbl.Image = Application.IsDarkModeEnabled ? Properties.Resources.queue_completed_dark : Properties.Resources.queue_completed; + logDGV.EnableHeadersVisualStyles = !Application.IsDarkModeEnabled; ViewModel.PropertyChanged += ProcessQueue_PropertyChanged; ViewModel.LogEntries.CollectionChanged += LogEntries_CollectionChanged; ProcessQueue_PropertyChanged(this, new PropertyChangedEventArgs(null)); diff --git a/Source/LibationWinForms/Program.cs b/Source/LibationWinForms/Program.cs index 8862a63e..7cd67d18 100644 --- a/Source/LibationWinForms/Program.cs +++ b/Source/LibationWinForms/Program.cs @@ -46,10 +46,11 @@ namespace LibationWinForms LibationUiBase.Forms.MessageBoxBase.ShowAsyncImpl = ShowMessageBox; // do this as soon as possible (post-config) - RunSetupIfNeededAsync(config).Wait(); + RunSetupIfNeededAsync(config); // most migrations go in here LibationScaffolding.RunPostConfigMigrations(config); + SetThemeColor(config); // migrations which require Forms or are long-running RunWindowsOnlyMigrations(config); @@ -117,7 +118,19 @@ namespace LibationWinForms } #endregion; - private static async Task RunSetupIfNeededAsync(Configuration config) + private static void SetThemeColor(Configuration config) + { + var theme = config.ThemeVariant switch + { + Configuration.Theme.Light => SystemColorMode.Classic, + Configuration.Theme.Dark => SystemColorMode.Dark, + _ => SystemColorMode.System, + }; + + Application.SetColorMode(theme); + } + + private static void RunSetupIfNeededAsync(Configuration config) { var setup = new LibationSetup(config.LibationFiles) { @@ -125,7 +138,7 @@ namespace LibationWinForms SelectFolderPrompt = SelectInstallLocation }; - if (!await setup.RunSetupIfNeededAsync()) + if (!setup.RunSetupIfNeededAsync().GetAwaiter().GetResult()) { MessageBox.Show("Initial set up cancelled.", "Cancelled", MessageBoxButtons.OK, MessageBoxIcon.Warning); Application.Exit(); diff --git a/Source/LibationWinForms/Properties/Resources.Designer.cs b/Source/LibationWinForms/Properties/Resources.Designer.cs index 197f945a..d0d9cb7f 100644 --- a/Source/LibationWinForms/Properties/Resources.Designer.cs +++ b/Source/LibationWinForms/Properties/Resources.Designer.cs @@ -19,7 +19,7 @@ namespace LibationWinForms.Properties { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "18.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { @@ -70,6 +70,16 @@ namespace LibationWinForms.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap cheers_dark { + get { + object obj = ResourceManager.GetObject("cheers_dark", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -110,6 +120,16 @@ namespace LibationWinForms.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Dolby_Atmos_Vertical_80_dark { + get { + object obj = ResourceManager.GetObject("Dolby_Atmos_Vertical_80_dark", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -123,29 +143,9 @@ namespace LibationWinForms.Properties { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap edit_64x64 { + internal static System.Drawing.Bitmap edit_25x25_dark { get { - object obj = ResourceManager.GetObject("edit_64x64", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap edit_tags_25x25 { - get { - object obj = ResourceManager.GetObject("edit_tags_25x25", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap edit_tags_50x50 { - get { - object obj = ResourceManager.GetObject("edit_tags_50x50", resourceCulture); + object obj = ResourceManager.GetObject("edit_25x25_dark", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -160,6 +160,16 @@ namespace LibationWinForms.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap error_dark { + get { + object obj = ResourceManager.GetObject("error_dark", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -170,6 +180,16 @@ namespace LibationWinForms.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap import_16x16_dark { + get { + object obj = ResourceManager.GetObject("import_16x16_dark", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -180,6 +200,16 @@ namespace LibationWinForms.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap liberate_green_dark { + get { + object obj = ResourceManager.GetObject("liberate_green_dark", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -190,6 +220,16 @@ namespace LibationWinForms.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap liberate_green_pdf_no_dark { + get { + object obj = ResourceManager.GetObject("liberate_green_pdf_no_dark", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -200,6 +240,16 @@ namespace LibationWinForms.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap liberate_green_pdf_yes_dark { + get { + object obj = ResourceManager.GetObject("liberate_green_pdf_yes_dark", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -210,6 +260,16 @@ namespace LibationWinForms.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap liberate_red_dark { + get { + object obj = ResourceManager.GetObject("liberate_red_dark", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -220,6 +280,16 @@ namespace LibationWinForms.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap liberate_red_pdf_no_dark { + get { + object obj = ResourceManager.GetObject("liberate_red_pdf_no_dark", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -230,6 +300,16 @@ namespace LibationWinForms.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap liberate_red_pdf_yes_dark { + get { + object obj = ResourceManager.GetObject("liberate_red_pdf_yes_dark", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -240,6 +320,16 @@ namespace LibationWinForms.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap liberate_yellow_dark { + get { + object obj = ResourceManager.GetObject("liberate_yellow_dark", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -250,6 +340,16 @@ namespace LibationWinForms.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap liberate_yellow_pdf_no_dark { + get { + object obj = ResourceManager.GetObject("liberate_yellow_pdf_no_dark", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -260,6 +360,16 @@ namespace LibationWinForms.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap liberate_yellow_pdf_yes_dark { + get { + object obj = ResourceManager.GetObject("liberate_yellow_pdf_yes_dark", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -270,6 +380,96 @@ namespace LibationWinForms.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap minus_dark { + get { + object obj = ResourceManager.GetObject("minus_dark", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap move_down { + get { + object obj = ResourceManager.GetObject("move_down", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap move_down_dark { + get { + object obj = ResourceManager.GetObject("move_down_dark", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap move_first { + get { + object obj = ResourceManager.GetObject("move_first", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap move_first_dark { + get { + object obj = ResourceManager.GetObject("move_first_dark", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap move_last { + get { + object obj = ResourceManager.GetObject("move_last", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap move_last_dark { + get { + object obj = ResourceManager.GetObject("move_last_dark", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap move_up { + get { + object obj = ResourceManager.GetObject("move_up", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap move_up_dark { + get { + object obj = ResourceManager.GetObject("move_up_dark", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -279,5 +479,75 @@ namespace LibationWinForms.Properties { return ((System.Drawing.Bitmap)(obj)); } } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap plus_dark { + get { + object obj = ResourceManager.GetObject("plus_dark", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap queue_completed { + get { + object obj = ResourceManager.GetObject("queue_completed", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap queue_completed_dark { + get { + object obj = ResourceManager.GetObject("queue_completed_dark", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap queue_error { + get { + object obj = ResourceManager.GetObject("queue_error", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap queue_error_dark { + get { + object obj = ResourceManager.GetObject("queue_error_dark", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap queue_queued { + get { + object obj = ResourceManager.GetObject("queue_queued", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap queue_queued_dark { + get { + object obj = ResourceManager.GetObject("queue_queued_dark", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } } } diff --git a/Source/LibationWinForms/Properties/Resources.resx b/Source/LibationWinForms/Properties/Resources.resx index 1c7458d0..98cf3e0e 100644 --- a/Source/LibationWinForms/Properties/Resources.resx +++ b/Source/LibationWinForms/Properties/Resources.resx @@ -130,8 +130,8 @@ ..\Resources\liberate_yellow.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\edit_64x64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\edit_25x25.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\img-coverart-prod-unavailable_300x300.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -142,15 +142,9 @@ ..\Resources\liberate_red.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\edit-tags-50x50.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\liberate_green_pdf_yes.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\edit_25x25.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\plus.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -178,10 +172,97 @@ ..\Resources\liberate_yellow_pdf_no.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\edit-tags-25x25.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\Dolby_Atmos_Vertical_80.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\liberate_green_dark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\liberate_green_pdf_no_dark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\liberate_green_pdf_yes_dark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\liberate_red_dark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\liberate_red_pdf_no_dark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\liberate_red_pdf_yes_dark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\plus_dark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\minus_dark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\liberate_yellow_pdf_yes_dark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\liberate_yellow_pdf_no_dark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\liberate_yellow_dark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Dolby_Atmos_Vertical_80_dark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\cheers_dark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\edit_25x25_dark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\error_dark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\import_16x16_dark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\move_first.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\move_first_dark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\move_up.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\move_up_dark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\move_down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\move_down_dark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\move_last.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\move_last_dark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\queue_completed.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\queue_completed_dark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\queue_error.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\queue_error_dark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\queue_queued.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\queue_queued_dark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/Source/LibationWinForms/Resources/Dolby_Atmos_Vertical_80_dark.png b/Source/LibationWinForms/Resources/Dolby_Atmos_Vertical_80_dark.png new file mode 100644 index 00000000..de176eee Binary files /dev/null and b/Source/LibationWinForms/Resources/Dolby_Atmos_Vertical_80_dark.png differ diff --git a/Source/LibationWinForms/Resources/cheers_dark.png b/Source/LibationWinForms/Resources/cheers_dark.png new file mode 100644 index 00000000..d380da2c Binary files /dev/null and b/Source/LibationWinForms/Resources/cheers_dark.png differ diff --git a/Source/LibationWinForms/Resources/edit-tags-25x25.png b/Source/LibationWinForms/Resources/edit-tags-25x25.png deleted file mode 100644 index 82b24209..00000000 Binary files a/Source/LibationWinForms/Resources/edit-tags-25x25.png and /dev/null differ diff --git a/Source/LibationWinForms/Resources/edit-tags-50x50.png b/Source/LibationWinForms/Resources/edit-tags-50x50.png deleted file mode 100644 index 7b0043ac..00000000 Binary files a/Source/LibationWinForms/Resources/edit-tags-50x50.png and /dev/null differ diff --git a/Source/LibationWinForms/Resources/edit_25x25.png b/Source/LibationWinForms/Resources/edit_25x25.png index 12e70d0f..2f287651 100644 Binary files a/Source/LibationWinForms/Resources/edit_25x25.png and b/Source/LibationWinForms/Resources/edit_25x25.png differ diff --git a/Source/LibationWinForms/Resources/edit_25x25_dark.png b/Source/LibationWinForms/Resources/edit_25x25_dark.png new file mode 100644 index 00000000..204f3f99 Binary files /dev/null and b/Source/LibationWinForms/Resources/edit_25x25_dark.png differ diff --git a/Source/LibationWinForms/Resources/error.png b/Source/LibationWinForms/Resources/error.png index 700ce41e..2b08236c 100644 Binary files a/Source/LibationWinForms/Resources/error.png and b/Source/LibationWinForms/Resources/error.png differ diff --git a/Source/LibationWinForms/Resources/error_dark.png b/Source/LibationWinForms/Resources/error_dark.png new file mode 100644 index 00000000..ce6eeb5b Binary files /dev/null and b/Source/LibationWinForms/Resources/error_dark.png differ diff --git a/Source/LibationWinForms/Resources/import_16x16_dark.png b/Source/LibationWinForms/Resources/import_16x16_dark.png new file mode 100644 index 00000000..5804efcd Binary files /dev/null and b/Source/LibationWinForms/Resources/import_16x16_dark.png differ diff --git a/Source/LibationWinForms/Resources/liberate_green.png b/Source/LibationWinForms/Resources/liberate_green.png index 86171e0c..e105af6b 100644 Binary files a/Source/LibationWinForms/Resources/liberate_green.png and b/Source/LibationWinForms/Resources/liberate_green.png differ diff --git a/Source/LibationWinForms/Resources/liberate_green_dark.png b/Source/LibationWinForms/Resources/liberate_green_dark.png new file mode 100644 index 00000000..74ead89c Binary files /dev/null and b/Source/LibationWinForms/Resources/liberate_green_dark.png differ diff --git a/Source/LibationWinForms/Resources/liberate_green_pdf_no.png b/Source/LibationWinForms/Resources/liberate_green_pdf_no.png index a128c088..3819ea15 100644 Binary files a/Source/LibationWinForms/Resources/liberate_green_pdf_no.png and b/Source/LibationWinForms/Resources/liberate_green_pdf_no.png differ diff --git a/Source/LibationWinForms/Resources/liberate_green_pdf_no_dark.png b/Source/LibationWinForms/Resources/liberate_green_pdf_no_dark.png new file mode 100644 index 00000000..f3480a81 Binary files /dev/null and b/Source/LibationWinForms/Resources/liberate_green_pdf_no_dark.png differ diff --git a/Source/LibationWinForms/Resources/liberate_green_pdf_yes.png b/Source/LibationWinForms/Resources/liberate_green_pdf_yes.png index baac0151..9dc4cdc4 100644 Binary files a/Source/LibationWinForms/Resources/liberate_green_pdf_yes.png and b/Source/LibationWinForms/Resources/liberate_green_pdf_yes.png differ diff --git a/Source/LibationWinForms/Resources/liberate_green_pdf_yes_dark.png b/Source/LibationWinForms/Resources/liberate_green_pdf_yes_dark.png new file mode 100644 index 00000000..60793e2f Binary files /dev/null and b/Source/LibationWinForms/Resources/liberate_green_pdf_yes_dark.png differ diff --git a/Source/LibationWinForms/Resources/liberate_red.png b/Source/LibationWinForms/Resources/liberate_red.png index 8e4b34e4..6d7a4bc7 100644 Binary files a/Source/LibationWinForms/Resources/liberate_red.png and b/Source/LibationWinForms/Resources/liberate_red.png differ diff --git a/Source/LibationWinForms/Resources/liberate_red_dark.png b/Source/LibationWinForms/Resources/liberate_red_dark.png new file mode 100644 index 00000000..1805d906 Binary files /dev/null and b/Source/LibationWinForms/Resources/liberate_red_dark.png differ diff --git a/Source/LibationWinForms/Resources/liberate_red_pdf_no.png b/Source/LibationWinForms/Resources/liberate_red_pdf_no.png index 6506603c..a7c83d7d 100644 Binary files a/Source/LibationWinForms/Resources/liberate_red_pdf_no.png and b/Source/LibationWinForms/Resources/liberate_red_pdf_no.png differ diff --git a/Source/LibationWinForms/Resources/liberate_red_pdf_no_dark.png b/Source/LibationWinForms/Resources/liberate_red_pdf_no_dark.png new file mode 100644 index 00000000..818b5cb3 Binary files /dev/null and b/Source/LibationWinForms/Resources/liberate_red_pdf_no_dark.png differ diff --git a/Source/LibationWinForms/Resources/liberate_red_pdf_yes.png b/Source/LibationWinForms/Resources/liberate_red_pdf_yes.png index 0d5b5eb6..b82081e7 100644 Binary files a/Source/LibationWinForms/Resources/liberate_red_pdf_yes.png and b/Source/LibationWinForms/Resources/liberate_red_pdf_yes.png differ diff --git a/Source/LibationWinForms/Resources/liberate_red_pdf_yes_dark.png b/Source/LibationWinForms/Resources/liberate_red_pdf_yes_dark.png new file mode 100644 index 00000000..26502f04 Binary files /dev/null and b/Source/LibationWinForms/Resources/liberate_red_pdf_yes_dark.png differ diff --git a/Source/LibationWinForms/Resources/liberate_yellow.png b/Source/LibationWinForms/Resources/liberate_yellow.png index 8b3e8aab..d2548401 100644 Binary files a/Source/LibationWinForms/Resources/liberate_yellow.png and b/Source/LibationWinForms/Resources/liberate_yellow.png differ diff --git a/Source/LibationWinForms/Resources/liberate_yellow_dark.png b/Source/LibationWinForms/Resources/liberate_yellow_dark.png new file mode 100644 index 00000000..6ccabbbd Binary files /dev/null and b/Source/LibationWinForms/Resources/liberate_yellow_dark.png differ diff --git a/Source/LibationWinForms/Resources/liberate_yellow_pdf_no.png b/Source/LibationWinForms/Resources/liberate_yellow_pdf_no.png index 2bddcffd..7c005335 100644 Binary files a/Source/LibationWinForms/Resources/liberate_yellow_pdf_no.png and b/Source/LibationWinForms/Resources/liberate_yellow_pdf_no.png differ diff --git a/Source/LibationWinForms/Resources/liberate_yellow_pdf_no_dark.png b/Source/LibationWinForms/Resources/liberate_yellow_pdf_no_dark.png new file mode 100644 index 00000000..23c29b61 Binary files /dev/null and b/Source/LibationWinForms/Resources/liberate_yellow_pdf_no_dark.png differ diff --git a/Source/LibationWinForms/Resources/liberate_yellow_pdf_yes.png b/Source/LibationWinForms/Resources/liberate_yellow_pdf_yes.png index b51a28ad..212a50ea 100644 Binary files a/Source/LibationWinForms/Resources/liberate_yellow_pdf_yes.png and b/Source/LibationWinForms/Resources/liberate_yellow_pdf_yes.png differ diff --git a/Source/LibationWinForms/Resources/liberate_yellow_pdf_yes_dark.png b/Source/LibationWinForms/Resources/liberate_yellow_pdf_yes_dark.png new file mode 100644 index 00000000..69345bbe Binary files /dev/null and b/Source/LibationWinForms/Resources/liberate_yellow_pdf_yes_dark.png differ diff --git a/Source/LibationWinForms/Resources/minus.png b/Source/LibationWinForms/Resources/minus.png index 8aee13b4..29d11a33 100644 Binary files a/Source/LibationWinForms/Resources/minus.png and b/Source/LibationWinForms/Resources/minus.png differ diff --git a/Source/LibationWinForms/Resources/minus_dark.png b/Source/LibationWinForms/Resources/minus_dark.png new file mode 100644 index 00000000..485899cb Binary files /dev/null and b/Source/LibationWinForms/Resources/minus_dark.png differ diff --git a/Source/LibationWinForms/Resources/move_down.png b/Source/LibationWinForms/Resources/move_down.png new file mode 100644 index 00000000..40760aff Binary files /dev/null and b/Source/LibationWinForms/Resources/move_down.png differ diff --git a/Source/LibationWinForms/Resources/move_down_dark.png b/Source/LibationWinForms/Resources/move_down_dark.png new file mode 100644 index 00000000..838c2515 Binary files /dev/null and b/Source/LibationWinForms/Resources/move_down_dark.png differ diff --git a/Source/LibationWinForms/Resources/move_first.png b/Source/LibationWinForms/Resources/move_first.png new file mode 100644 index 00000000..0f95e8d6 Binary files /dev/null and b/Source/LibationWinForms/Resources/move_first.png differ diff --git a/Source/LibationWinForms/Resources/move_first_dark.png b/Source/LibationWinForms/Resources/move_first_dark.png new file mode 100644 index 00000000..823404da Binary files /dev/null and b/Source/LibationWinForms/Resources/move_first_dark.png differ diff --git a/Source/LibationWinForms/Resources/move_last.png b/Source/LibationWinForms/Resources/move_last.png new file mode 100644 index 00000000..f8a5628d Binary files /dev/null and b/Source/LibationWinForms/Resources/move_last.png differ diff --git a/Source/LibationWinForms/Resources/move_last_dark.png b/Source/LibationWinForms/Resources/move_last_dark.png new file mode 100644 index 00000000..78f67a23 Binary files /dev/null and b/Source/LibationWinForms/Resources/move_last_dark.png differ diff --git a/Source/LibationWinForms/Resources/move_up.png b/Source/LibationWinForms/Resources/move_up.png new file mode 100644 index 00000000..613c8747 Binary files /dev/null and b/Source/LibationWinForms/Resources/move_up.png differ diff --git a/Source/LibationWinForms/Resources/move_up_dark.png b/Source/LibationWinForms/Resources/move_up_dark.png new file mode 100644 index 00000000..d9469e2d Binary files /dev/null and b/Source/LibationWinForms/Resources/move_up_dark.png differ diff --git a/Source/LibationWinForms/Resources/plus.png b/Source/LibationWinForms/Resources/plus.png index 41b056db..54edd0a9 100644 Binary files a/Source/LibationWinForms/Resources/plus.png and b/Source/LibationWinForms/Resources/plus.png differ diff --git a/Source/LibationWinForms/Resources/plus_dark.png b/Source/LibationWinForms/Resources/plus_dark.png new file mode 100644 index 00000000..ba07ebc1 Binary files /dev/null and b/Source/LibationWinForms/Resources/plus_dark.png differ diff --git a/Source/LibationWinForms/Resources/queue_completed.png b/Source/LibationWinForms/Resources/queue_completed.png new file mode 100644 index 00000000..9bb2a99d Binary files /dev/null and b/Source/LibationWinForms/Resources/queue_completed.png differ diff --git a/Source/LibationWinForms/Resources/queue_completed_dark.png b/Source/LibationWinForms/Resources/queue_completed_dark.png new file mode 100644 index 00000000..4e8b0360 Binary files /dev/null and b/Source/LibationWinForms/Resources/queue_completed_dark.png differ diff --git a/Source/LibationWinForms/Resources/queue_error.png b/Source/LibationWinForms/Resources/queue_error.png new file mode 100644 index 00000000..30b00ba2 Binary files /dev/null and b/Source/LibationWinForms/Resources/queue_error.png differ diff --git a/Source/LibationWinForms/Resources/queue_error_dark.png b/Source/LibationWinForms/Resources/queue_error_dark.png new file mode 100644 index 00000000..b89cf826 Binary files /dev/null and b/Source/LibationWinForms/Resources/queue_error_dark.png differ diff --git a/Source/LibationWinForms/Resources/queue_queued.png b/Source/LibationWinForms/Resources/queue_queued.png new file mode 100644 index 00000000..2e25cb9f Binary files /dev/null and b/Source/LibationWinForms/Resources/queue_queued.png differ diff --git a/Source/LibationWinForms/Resources/queue_queued_dark.png b/Source/LibationWinForms/Resources/queue_queued_dark.png new file mode 100644 index 00000000..8f059bfc Binary files /dev/null and b/Source/LibationWinForms/Resources/queue_queued_dark.png differ diff --git a/Source/LibationWinForms/SeriesView/SeriesViewDialog.cs b/Source/LibationWinForms/SeriesView/SeriesViewDialog.cs index aac9a704..372420f4 100644 --- a/Source/LibationWinForms/SeriesView/SeriesViewDialog.cs +++ b/Source/LibationWinForms/SeriesView/SeriesViewDialog.cs @@ -44,6 +44,7 @@ namespace LibationWinForms.SeriesView dgv.CellContentClick += Dgv_CellContentClick; dgv.DataSource = new SeriesEntryBindingList(seriesEntries[series]); dgv.BindingContextChanged += (_, _) => dgv.Sort(dgv.Columns["Order"], ListSortDirection.Ascending); + dgv.EnableHeadersVisualStyles = !Application.IsDarkModeEnabled; var tab = new TabPage { Text = series.Title }; tab.Controls.Add(dgv); @@ -171,6 +172,8 @@ namespace LibationWinForms.SeriesView TrackVisitedState = true, SortMode = DataGridViewColumnSortMode.Automatic, Width = 200, + LinkColor = ThemeExtensions.LinkColor, + VisitedLinkColor = ThemeExtensions.VisitedLinkColor, }); dgv.CellToolTipTextNeeded += Dgv_CellToolTipTextNeeded; diff --git a/Source/LibationWinForms/ThemeExtensions.cs b/Source/LibationWinForms/ThemeExtensions.cs new file mode 100644 index 00000000..8b1e7b0d --- /dev/null +++ b/Source/LibationWinForms/ThemeExtensions.cs @@ -0,0 +1,22 @@ +using System.Drawing; +using System.Windows.Forms; + +namespace LibationWinForms; + +internal static class ThemeExtensions +{ + private static readonly Color LinkLabelNew = Color.FromKnownColor(KnownColor.Blue); + private static readonly Color LinkLabelVisited = Color.FromKnownColor(KnownColor.Purple); + private static readonly Color LinkLabelNew_Dark = Color.FromKnownColor(KnownColor.CornflowerBlue); + private static readonly Color LinkLabelVisited_Dark = Color.FromKnownColor(KnownColor.Orchid); + public static Color LinkColor => Application.IsDarkModeEnabled ? LinkLabelNew_Dark : LinkLabelNew; + public static Color VisitedLinkColor => Application.IsDarkModeEnabled ? LinkLabelVisited_Dark : LinkLabelVisited; + extension(LinkLabel ll) + { + public void SetLinkLabelColors() + { + ll.VisitedLinkColor = VisitedLinkColor; + ll.LinkColor = LinkColor; + } + } +}