diff --git a/Output/Readme.txt b/Output/Readme.txt index c0d408a1..d6840537 100644 --- a/Output/Readme.txt +++ b/Output/Readme.txt @@ -1,4 +1,4 @@ -Vocaluxe 0.4 README +Vocaluxe 0.4.1 README ---------------------------- ================================= diff --git a/Vocaluxe/Base/CCover.cs b/Vocaluxe/Base/CCover.cs index f464d6d9..152d378a 100644 --- a/Vocaluxe/Base/CCover.cs +++ b/Vocaluxe/Base/CCover.cs @@ -252,6 +252,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 d4b59f13..cc253c0b 100644 --- a/Vocaluxe/Base/CSongSorter.cs +++ b/Vocaluxe/Base/CSongSorter.cs @@ -154,6 +154,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 02cb86a7..618945b1 100644 --- a/VocaluxeLib/Enums.cs +++ b/VocaluxeLib/Enums.cs @@ -28,6 +28,7 @@ namespace VocaluxeLib Letter, Edition, Genre, + Tags, Language, Year, Decade, @@ -233,6 +234,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 bc101698..17cdb3e7 100644 --- a/VocaluxeLib/Songs/CSong.cs +++ b/VocaluxeLib/Songs/CSong.cs @@ -89,7 +89,7 @@ namespace VocaluxeLib.Songs public SShortEnd ShortEnd; - public Encoding Encoding = Encoding.Default; + public Encoding Encoding = new UTF8Encoding(); public bool ManualEncoding; public string Folder = String.Empty; public string FolderName = String.Empty; @@ -168,6 +168,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 = ""; @@ -262,6 +263,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 762e9d3c..79114cfd 100644 --- a/VocaluxeLib/Songs/CSongLoader.cs +++ b/VocaluxeLib/Songs/CSongLoader.cs @@ -210,6 +210,12 @@ namespace VocaluxeLib.Songs else CLog.CSongLog.Warning("[{SongFileName}] Invalid genre: {Value}", CLog.Params(_Song.FileName, value)); 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 bdae39c4..a7423147 100644 --- a/VocaluxeLib/Songs/CSongWriter.cs +++ b/VocaluxeLib/Songs/CSongWriter.cs @@ -88,6 +88,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);