From 249b91d3277beddfe78c1983e046b51b6f128ce3 Mon Sep 17 00:00:00 2001 From: Florian Kuepper Date: Sat, 2 Jun 2012 11:50:20 +0200 Subject: [PATCH] Changed ignore-articles function to tag-based. --- Vocaluxe/Base/CSongs.cs | 78 ++++++++++++++++---------------------- Vocaluxe/Lib/Song/CSong.cs | 26 +++++++++++++ 2 files changed, 58 insertions(+), 46 deletions(-) diff --git a/Vocaluxe/Base/CSongs.cs b/Vocaluxe/Base/CSongs.cs index 973c3a2f..7af52f36 100644 --- a/Vocaluxe/Base/CSongs.cs +++ b/Vocaluxe/Base/CSongs.cs @@ -355,14 +355,10 @@ namespace Vocaluxe.Base { if (CConfig.IgnoreArticles == EOffOn.TR_CONFIG_ON) { - string string1 = IgnoreArticle(_Songs[s1.SongID].Artist.ToUpper()); - string string2 = IgnoreArticle(_Songs[s2.SongID].Artist.ToUpper()); - res = string1.CompareTo(string2); + res = _Songs[s1.SongID].ArtistSorting.ToUpper().CompareTo(_Songs[s2.SongID].ArtistSorting.ToUpper()); if (res == 0) { - string1 = IgnoreArticle(_Songs[s1.SongID].Title.ToUpper()); - string2 = IgnoreArticle(_Songs[s2.SongID].Title.ToUpper()); - return string1.CompareTo(string2); + return _Songs[s1.SongID].TitleSorting.ToUpper().CompareTo(_Songs[s2.SongID].TitleSorting.ToUpper()); } return res; } @@ -425,14 +421,10 @@ namespace Vocaluxe.Base { if (CConfig.IgnoreArticles == EOffOn.TR_CONFIG_ON) { - string string1 = IgnoreArticle(_Songs[s1.SongID].Artist.ToUpper()); - string string2 = IgnoreArticle(_Songs[s2.SongID].Artist.ToUpper()); - res = string1.CompareTo(string2); + res = _Songs[s1.SongID].ArtistSorting.ToUpper().CompareTo(_Songs[s2.SongID].ArtistSorting.ToUpper()); if (res == 0) { - string1 = IgnoreArticle(_Songs[s1.SongID].Title.ToUpper()); - string2 = IgnoreArticle(_Songs[s2.SongID].Title.ToUpper()); - return string1.CompareTo(string2); + return _Songs[s1.SongID].TitleSorting.ToUpper().CompareTo(_Songs[s2.SongID].TitleSorting.ToUpper()); } return res; } @@ -514,14 +506,10 @@ namespace Vocaluxe.Base { if (CConfig.IgnoreArticles == EOffOn.TR_CONFIG_ON) { - string string1 = IgnoreArticle(_Songs[s1.SongID].Artist.ToUpper()); - string string2 = IgnoreArticle(_Songs[s2.SongID].Artist.ToUpper()); - res = string1.CompareTo(string2); + res = _Songs[s1.SongID].ArtistSorting.ToUpper().CompareTo(_Songs[s2.SongID].ArtistSorting.ToUpper()); if (res == 0) { - string1 = IgnoreArticle(_Songs[s1.SongID].Title.ToUpper()); - string2 = IgnoreArticle(_Songs[s2.SongID].Title.ToUpper()); - return string1.CompareTo(string2); + return _Songs[s1.SongID].TitleSorting.ToUpper().CompareTo(_Songs[s2.SongID].TitleSorting.ToUpper()); } return res; } @@ -561,14 +549,10 @@ namespace Vocaluxe.Base { if (CConfig.IgnoreArticles == EOffOn.TR_CONFIG_ON) { - string string1 = IgnoreArticle(s1.SortString.ToUpper()); - string string2 = IgnoreArticle(s2.SortString.ToUpper()); - int res = string1.CompareTo(string2); + int res = _Songs[s1.SongID].ArtistSorting.ToUpper().CompareTo(_Songs[s2.SongID].ArtistSorting.ToUpper()); if (res == 0) { - string1 = IgnoreArticle(_Songs[s1.SongID].Title.ToUpper()); - string2 = IgnoreArticle(_Songs[s2.SongID].Title.ToUpper()); - return string1.CompareTo(string2); + return _Songs[s1.SongID].TitleSorting.ToUpper().CompareTo(_Songs[s2.SongID].TitleSorting.ToUpper()); } return res; } @@ -600,7 +584,7 @@ namespace Vocaluxe.Base foreach (CSong song in _SongList) { if (CConfig.IgnoreArticles == EOffOn.TR_CONFIG_ON) - _SortList.Add(new SongPointer(song.ID, IgnoreArticle(song.Artist))); + _SortList.Add(new SongPointer(song.ID, song.ArtistSorting)); else _SortList.Add(new SongPointer(song.ID, song.Artist)); } @@ -610,7 +594,14 @@ namespace Vocaluxe.Base int res = s1.SortString.ToUpper().CompareTo(s2.SortString.ToUpper()); if (res == 0) { - return _Songs[s1.SongID].Title.ToUpper().CompareTo(_Songs[s2.SongID].Title.ToUpper()); + if (CConfig.IgnoreArticles == EOffOn.TR_CONFIG_ON) + { + return _Songs[s1.SongID].TitleSorting.ToUpper().CompareTo(_Songs[s2.SongID].TitleSorting.ToUpper()); + } + else + { + return _Songs[s1.SongID].Title.ToUpper().CompareTo(_Songs[s2.SongID].Title.ToUpper()); + } } return res; }); @@ -651,7 +642,7 @@ namespace Vocaluxe.Base foreach (CSong song in _SongList) { if (CConfig.IgnoreArticles == EOffOn.TR_CONFIG_ON) - _SortList.Add(new SongPointer(song.ID, IgnoreArticle(song.Title))); + _SortList.Add(new SongPointer(song.ID, song.TitleSorting)); else _SortList.Add(new SongPointer(song.ID, song.Title)); } @@ -661,7 +652,14 @@ namespace Vocaluxe.Base int res = s1.SortString.ToUpper().CompareTo(s2.SortString.ToUpper()); if (res == 0) { - return _Songs[s1.SongID].Title.ToUpper().CompareTo(_Songs[s2.SongID].Artist.ToUpper()); + if (CConfig.IgnoreArticles == EOffOn.TR_CONFIG_ON) + { + return _Songs[s1.SongID].ArtistSorting.ToUpper().CompareTo(_Songs[s2.SongID].ArtistSorting.ToUpper()); + } + else + { + return _Songs[s1.SongID].Artist.ToUpper().CompareTo(_Songs[s2.SongID].Artist.ToUpper()); + } } return res; }); @@ -711,14 +709,10 @@ namespace Vocaluxe.Base { if (CConfig.IgnoreArticles == EOffOn.TR_CONFIG_ON) { - string string1 = IgnoreArticle(_Songs[s1.SongID].Artist.ToUpper()); - string string2 = IgnoreArticle(_Songs[s2.SongID].Artist.ToUpper()); - res = string1.CompareTo(string2); + res = _Songs[s1.SongID].ArtistSorting.ToUpper().CompareTo(_Songs[s2.SongID].ArtistSorting.ToUpper()); if (res == 0) { - string1 = IgnoreArticle(_Songs[s1.SongID].Title.ToUpper()); - string2 = IgnoreArticle(_Songs[s2.SongID].Title.ToUpper()); - return string1.CompareTo(string2); + return _Songs[s1.SongID].TitleSorting.ToUpper().CompareTo(_Songs[s2.SongID].TitleSorting.ToUpper()); } return res; } @@ -774,14 +768,10 @@ namespace Vocaluxe.Base { if (CConfig.IgnoreArticles == EOffOn.TR_CONFIG_ON) { - string string1 = IgnoreArticle(_Songs[s1.SongID].Artist.ToUpper()); - string string2 = IgnoreArticle(_Songs[s2.SongID].Artist.ToUpper()); - res = string1.CompareTo(string2); + res = _Songs[s1.SongID].ArtistSorting.ToUpper().CompareTo(_Songs[s2.SongID].ArtistSorting.ToUpper()); if (res == 0) { - string1 = IgnoreArticle(_Songs[s1.SongID].Title.ToUpper()); - string2 = IgnoreArticle(_Songs[s2.SongID].Title.ToUpper()); - return string1.CompareTo(string2); + return _Songs[s1.SongID].TitleSorting.ToUpper().CompareTo(_Songs[s2.SongID].TitleSorting.ToUpper()); } return res; } @@ -844,14 +834,10 @@ namespace Vocaluxe.Base { if (CConfig.IgnoreArticles == EOffOn.TR_CONFIG_ON) { - string string1 = IgnoreArticle(_Songs[s1.SongID].Artist.ToUpper()); - string string2 = IgnoreArticle(_Songs[s2.SongID].Artist.ToUpper()); - res = string1.CompareTo(string2); + res = _Songs[s1.SongID].ArtistSorting.ToUpper().CompareTo(_Songs[s2.SongID].ArtistSorting.ToUpper()); if (res == 0) { - string1 = IgnoreArticle(_Songs[s1.SongID].Title.ToUpper()); - string2 = IgnoreArticle(_Songs[s2.SongID].Title.ToUpper()); - return string1.CompareTo(string2); + return _Songs[s1.SongID].TitleSorting.ToUpper().CompareTo(_Songs[s2.SongID].TitleSorting.ToUpper()); } return res; } diff --git a/Vocaluxe/Lib/Song/CSong.cs b/Vocaluxe/Lib/Song/CSong.cs index 03d69a0f..fee895b1 100644 --- a/Vocaluxe/Lib/Song/CSong.cs +++ b/Vocaluxe/Lib/Song/CSong.cs @@ -89,6 +89,9 @@ namespace Vocaluxe.Lib.Song public string Title = String.Empty; public string Artist = String.Empty; + public string TitleSorting = String.Empty; + public string ArtistSorting = String.Empty; + public float Start = 0f; public float Finish = 0f; @@ -239,6 +242,18 @@ namespace Vocaluxe.Lib.Song HeaderFlags |= EHeaderFlags.Artist; } break; + case "TITLE-ON-SORTING": + if (Value != String.Empty) + { + this.TitleSorting = Value; + } + break; + case "ARTIST-ON-SORTING": + if (Value != String.Empty) + { + this.ArtistSorting = Value; + } + break; case "MP3": if (File.Exists(Path.Combine(this.Folder, Value))) { @@ -340,6 +355,17 @@ namespace Vocaluxe.Lib.Song CheckFiles(); + //Before saving this tags to .txt: Check, if ArtistSorting and Artist are equal, then don't save this tag. + if (this.ArtistSorting == "") + { + this.ArtistSorting = this.Artist; + } + + if (this.TitleSorting == "") + { + this.TitleSorting = this.Title; + } + return true; }