From 90a0d775867503815faff7642ddae71692d54827 Mon Sep 17 00:00:00 2001 From: Florian Ostertag Date: Thu, 23 Nov 2023 14:06:08 +0100 Subject: [PATCH] #642: Implemented reading of tags --- Vocaluxe/Base/CCover.cs | 2 ++ Vocaluxe/Base/CSongCategorizer.cs | 3 +++ Vocaluxe/Base/CSongSorter.cs | 3 +++ VocaluxeLib/Enums.cs | 2 ++ VocaluxeLib/Songs/CSong.cs | 2 ++ VocaluxeLib/Songs/CSongLoader.cs | 6 ++++++ VocaluxeLib/Songs/CSongWriter.cs | 1 + 7 files changed, 19 insertions(+) diff --git a/Vocaluxe/Base/CCover.cs b/Vocaluxe/Base/CCover.cs index 0a155740..e19484e0 100644 --- a/Vocaluxe/Base/CCover.cs +++ b/Vocaluxe/Base/CCover.cs @@ -246,6 +246,8 @@ namespace Vocaluxe.Base return ECoverGeneratorType.Edition; case ESongSorting.TR_CONFIG_GENRE: return ECoverGeneratorType.Genre; + case ESongSorting.TR_CONFIG_TAGS: + return ECoverGeneratorType.Tags; case ESongSorting.TR_CONFIG_LANGUAGE: return ECoverGeneratorType.Language; case ESongSorting.TR_CONFIG_YEAR: diff --git a/Vocaluxe/Base/CSongCategorizer.cs b/Vocaluxe/Base/CSongCategorizer.cs index 05a9dba4..860ecc07 100644 --- a/Vocaluxe/Base/CSongCategorizer.cs +++ b/Vocaluxe/Base/CSongCategorizer.cs @@ -142,6 +142,9 @@ namespace Vocaluxe.Base case ESongSorting.TR_CONFIG_GENRE: noCategoryName = CLanguage.Translate("TR_SCREENSONG_NOGENRE"); break; + case ESongSorting.TR_CONFIG_TAGS: + noCategoryName = CLanguage.Translate("TR_SCEENSONG_NOTAGS"); + break; case ESongSorting.TR_CONFIG_LANGUAGE: noCategoryName = CLanguage.Translate("TR_SCREENSONG_NOLANGUAGE"); break; diff --git a/Vocaluxe/Base/CSongSorter.cs b/Vocaluxe/Base/CSongSorter.cs index 8a956107..53c02fae 100644 --- a/Vocaluxe/Base/CSongSorter.cs +++ b/Vocaluxe/Base/CSongSorter.cs @@ -136,6 +136,9 @@ namespace Vocaluxe.Base case ESongSorting.TR_CONFIG_GENRE: values = song.Genres; break; + case ESongSorting.TR_CONFIG_TAGS: + values = song.Tags; + break; case ESongSorting.TR_CONFIG_LANGUAGE: values = song.Languages; break; diff --git a/VocaluxeLib/Enums.cs b/VocaluxeLib/Enums.cs index 39e8399f..1de6327d 100644 --- a/VocaluxeLib/Enums.cs +++ b/VocaluxeLib/Enums.cs @@ -28,6 +28,7 @@ namespace VocaluxeLib Letter, Edition, Genre, + Tags, Language, Year, Decade, @@ -224,6 +225,7 @@ namespace VocaluxeLib TR_CONFIG_TITLE_LETTER, TR_CONFIG_EDITION, TR_CONFIG_GENRE, + TR_CONFIG_TAGS, TR_CONFIG_LANGUAGE, TR_CONFIG_YEAR, TR_CONFIG_DECADE, diff --git a/VocaluxeLib/Songs/CSong.cs b/VocaluxeLib/Songs/CSong.cs index 993ad6c9..50310f5e 100644 --- a/VocaluxeLib/Songs/CSong.cs +++ b/VocaluxeLib/Songs/CSong.cs @@ -167,6 +167,7 @@ namespace VocaluxeLib.Songs public readonly List Editions = new List(); public readonly List Genres = new List(); + public readonly List Tags = new List(); public string Album = ""; public string Year = ""; @@ -261,6 +262,7 @@ namespace VocaluxeLib.Songs Editions = new List(song.Editions); Genres = new List(song.Genres); + Tags = new List(song.Tags); Album = song.Album; Year = song.Year; diff --git a/VocaluxeLib/Songs/CSongLoader.cs b/VocaluxeLib/Songs/CSongLoader.cs index b2374e1d..92a21a72 100644 --- a/VocaluxeLib/Songs/CSongLoader.cs +++ b/VocaluxeLib/Songs/CSongLoader.cs @@ -228,6 +228,12 @@ namespace VocaluxeLib.Songs else _LogWarning("Invalid genre"); break; + case "TAGS": + if (value.Length > 1) + _Song.Tags.AddRange(value.Split(',')); + else + _LogWarning("Invalid tags"); + break; case "ALBUM": _Song.Album = value; break; diff --git a/VocaluxeLib/Songs/CSongWriter.cs b/VocaluxeLib/Songs/CSongWriter.cs index 7d5eb4ca..e0c97031 100644 --- a/VocaluxeLib/Songs/CSongWriter.cs +++ b/VocaluxeLib/Songs/CSongWriter.cs @@ -87,6 +87,7 @@ namespace VocaluxeLib.Songs _WriteHeaderEntry("ARTIST-ON-SORTING", _Song.ArtistSorting); _WriteHeaderEntrys("EDITION", _Song.Editions); _WriteHeaderEntrys("GENRE", _Song.Genres); + _WriteHeaderEntry("TAGS", String.Join(",", _Song.Tags.ToArray())); _WriteHeaderEntrys("LANGUAGE", _Song.Languages); _WriteHeaderEntry("ALBUM", _Song.Album); _WriteHeaderEntry("YEAR", _Song.Year);