Added option to config.xml to ignore articles of title and artist on sorting. Do we need a entry on options screen?

This commit is contained in:
Florian Kuepper committed 2012-05-30 14:47:14 +02:00
1 parent 391036bb5f
commit 6c70c52a1f
2 files changed
+161 -33

No files matched your search

+5
View File
@@ -210,6 +210,7 @@ namespace Vocaluxe.Base
public static List<string> SongFolder = new List<string>();
public static ESongMenu SongMenu = ESongMenu.TR_CONFIG_TILE_BOARD;
public static ESongSorting SongSorting = ESongSorting.TR_CONFIG_ARTIST;
public static EOffOn IgnoreArticles = EOffOn.TR_CONFIG_ON;
public static float ScoreAnimationTime = 10;
public static ETimerMode TimerMode = ETimerMode.TR_CONFIG_TIMERMODE_REMAINING;
public static int NumPlayer = 2;
@@ -347,6 +348,7 @@ namespace Vocaluxe.Base
CHelper.TryGetEnumValueFromXML<ESongMenu>("//root/Game/SongMenu", navigator, ref SongMenu);
CHelper.TryGetEnumValueFromXML<ESongSorting>("//root/Game/SongSorting", navigator, ref SongSorting);
CHelper.TryGetEnumValueFromXML<EOffOn>("//root/Game/IgnoreArticles", navigator, ref IgnoreArticles);
CHelper.TryGetFloatValueFromXML("//root/Game/ScoreAnimationTime", navigator, ref ScoreAnimationTime);
CHelper.TryGetEnumValueFromXML<ETimerMode>("//root/Game/TimerMode", navigator, ref TimerMode);
CHelper.TryGetIntValueFromXML("//root/Game/NumPlayer", navigator, ref NumPlayer);
@@ -578,6 +580,9 @@ namespace Vocaluxe.Base
writer.WriteComment("SongSorting: " + ListStrings(Enum.GetNames(typeof(ESongSorting))));
writer.WriteElementString("SongSorting", Enum.GetName(typeof(ESongSorting), SongSorting));
writer.WriteComment("Ignore articles on song-sorting: " + ListStrings(Enum.GetNames(typeof(EOffOn))));
writer.WriteElementString("IgnoreArticles", Enum.GetName(typeof(EOffOn), IgnoreArticles));
writer.WriteComment("ScoreAnimationTime: Values >= 1 or 0 for no animation. Time is in seconds.");
writer.WriteElementString("ScoreAnimationTime", ScoreAnimationTime.ToString());
+156 -33
View File
@@ -353,12 +353,28 @@ namespace Vocaluxe.Base
int res = s1.SortString.ToUpper().CompareTo(s2.SortString.ToUpper());
if (res == 0)
{
res = _Songs[s1.SongID].Artist.ToUpper().CompareTo(_Songs[s2.SongID].Artist.ToUpper());
if (res == 0)
if (CConfig.IgnoreArticles == EOffOn.TR_CONFIG_ON)
{
return _Songs[s1.SongID].Title.ToUpper().CompareTo(_Songs[s2.SongID].Title.ToUpper());
string string1 = IgnoreArticle(_Songs[s1.SongID].Artist.ToUpper());
string string2 = IgnoreArticle(_Songs[s2.SongID].Artist.ToUpper());
res = string1.CompareTo(string2);
if (res == 0)
{
string1 = IgnoreArticle(_Songs[s1.SongID].Title.ToUpper());
string2 = IgnoreArticle(_Songs[s2.SongID].Title.ToUpper());
return string1.CompareTo(string2);
}
return res;
}
else
{
res = _Songs[s1.SongID].Artist.ToUpper().CompareTo(_Songs[s2.SongID].Artist.ToUpper());
if (res == 0)
{
return _Songs[s1.SongID].Title.ToUpper().CompareTo(_Songs[s2.SongID].Title.ToUpper());
}
return res;
}
return res;
}
return res;
});
@@ -407,12 +423,28 @@ namespace Vocaluxe.Base
int res = s1.SortString.ToUpper().CompareTo(s2.SortString.ToUpper());
if (res == 0)
{
res = _Songs[s1.SongID].Artist.ToUpper().CompareTo(_Songs[s2.SongID].Artist.ToUpper());
if (res == 0)
if (CConfig.IgnoreArticles == EOffOn.TR_CONFIG_ON)
{
return _Songs[s1.SongID].Title.ToUpper().CompareTo(_Songs[s2.SongID].Title.ToUpper());
string string1 = IgnoreArticle(_Songs[s1.SongID].Artist.ToUpper());
string string2 = IgnoreArticle(_Songs[s2.SongID].Artist.ToUpper());
res = string1.CompareTo(string2);
if (res == 0)
{
string1 = IgnoreArticle(_Songs[s1.SongID].Title.ToUpper());
string2 = IgnoreArticle(_Songs[s2.SongID].Title.ToUpper());
return string1.CompareTo(string2);
}
return res;
}
else
{
res = _Songs[s1.SongID].Artist.ToUpper().CompareTo(_Songs[s2.SongID].Artist.ToUpper());
if (res == 0)
{
return _Songs[s1.SongID].Title.ToUpper().CompareTo(_Songs[s2.SongID].Title.ToUpper());
}
return res;
}
return res;
}
return res;
});
@@ -480,12 +512,28 @@ namespace Vocaluxe.Base
int res = s1.SortString.ToUpper().CompareTo(s2.SortString.ToUpper());
if (res == 0)
{
res = _Songs[s1.SongID].Artist.ToUpper().CompareTo(_Songs[s2.SongID].Artist.ToUpper());
if (res == 0)
if (CConfig.IgnoreArticles == EOffOn.TR_CONFIG_ON)
{
return _Songs[s1.SongID].Title.ToUpper().CompareTo(_Songs[s2.SongID].Title.ToUpper());
string string1 = IgnoreArticle(_Songs[s1.SongID].Artist.ToUpper());
string string2 = IgnoreArticle(_Songs[s2.SongID].Artist.ToUpper());
res = string1.CompareTo(string2);
if (res == 0)
{
string1 = IgnoreArticle(_Songs[s1.SongID].Title.ToUpper());
string2 = IgnoreArticle(_Songs[s2.SongID].Title.ToUpper());
return string1.CompareTo(string2);
}
return res;
}
else
{
res = _Songs[s1.SongID].Artist.ToUpper().CompareTo(_Songs[s2.SongID].Artist.ToUpper());
if (res == 0)
{
return _Songs[s1.SongID].Title.ToUpper().CompareTo(_Songs[s2.SongID].Title.ToUpper());
}
return res;
}
return res;
}
return res;
});
@@ -506,17 +554,33 @@ namespace Vocaluxe.Base
case ESongSorting.TR_CONFIG_ARTIST:
foreach (CSong song in _SongList)
{
_SortList.Add(new SongPointer(song.ID, song.Artist));
_SortList.Add(new SongPointer(song.ID, song.Artist));
}
_SortList.Sort(delegate(SongPointer s1, SongPointer s2)
{
int res = s1.SortString.ToUpper().CompareTo(s2.SortString.ToUpper());
if (res == 0)
{
if (CConfig.IgnoreArticles == EOffOn.TR_CONFIG_ON)
{
return _Songs[s1.SongID].Title.ToUpper().CompareTo(_Songs[s2.SongID].Title.ToUpper());
string string1 = IgnoreArticle(s1.SortString.ToUpper());
string string2 = IgnoreArticle(s2.SortString.ToUpper());
int res = string1.CompareTo(string2);
if (res == 0)
{
string1 = IgnoreArticle(_Songs[s1.SongID].Title.ToUpper());
string2 = IgnoreArticle(_Songs[s2.SongID].Title.ToUpper());
return string1.CompareTo(string2);
}
return res;
}
else
{
int res = s1.SortString.ToUpper().CompareTo(s2.SortString.ToUpper());
if (res == 0)
{
return _Songs[s1.SongID].Title.ToUpper().CompareTo(_Songs[s2.SongID].Title.ToUpper());
}
return res;
}
return res;
});
_SongsSortList = _SortList.ToArray();
@@ -535,7 +599,10 @@ namespace Vocaluxe.Base
case ESongSorting.TR_CONFIG_ARTIST_LETTER:
foreach (CSong song in _SongList)
{
_SortList.Add(new SongPointer(song.ID, song.Artist));
if (CConfig.IgnoreArticles == EOffOn.TR_CONFIG_ON)
_SortList.Add(new SongPointer(song.ID, IgnoreArticle(song.Artist)));
else
_SortList.Add(new SongPointer(song.ID, song.Artist));
}
_SortList.Sort(delegate(SongPointer s1, SongPointer s2)
@@ -583,7 +650,10 @@ namespace Vocaluxe.Base
case ESongSorting.TR_CONFIG_TITLE_LETTER:
foreach (CSong song in _SongList)
{
_SortList.Add(new SongPointer(song.ID, song.Title));
if (CConfig.IgnoreArticles == EOffOn.TR_CONFIG_ON)
_SortList.Add(new SongPointer(song.ID, IgnoreArticle(song.Title)));
else
_SortList.Add(new SongPointer(song.ID, song.Title));
}
_SortList.Sort(delegate(SongPointer s1, SongPointer s2)
@@ -591,7 +661,7 @@ namespace Vocaluxe.Base
int res = s1.SortString.ToUpper().CompareTo(s2.SortString.ToUpper());
if (res == 0)
{
return _Songs[s1.SongID].Artist.ToUpper().CompareTo(_Songs[s2.SongID].Artist.ToUpper());
return _Songs[s1.SongID].Title.ToUpper().CompareTo(_Songs[s2.SongID].Artist.ToUpper());
}
return res;
});
@@ -639,12 +709,28 @@ namespace Vocaluxe.Base
int res = s1.SortString.CompareTo(s2.SortString);
if (res == 0)
{
res = _Songs[s1.SongID].Artist.ToUpper().CompareTo(_Songs[s2.SongID].Artist.ToUpper());
if (res == 0)
if (CConfig.IgnoreArticles == EOffOn.TR_CONFIG_ON)
{
return _Songs[s1.SongID].Title.ToUpper().CompareTo(_Songs[s2.SongID].Title.ToUpper());
string string1 = IgnoreArticle(_Songs[s1.SongID].Artist.ToUpper());
string string2 = IgnoreArticle(_Songs[s2.SongID].Artist.ToUpper());
res = string1.CompareTo(string2);
if (res == 0)
{
string1 = IgnoreArticle(_Songs[s1.SongID].Title.ToUpper());
string2 = IgnoreArticle(_Songs[s2.SongID].Title.ToUpper());
return string1.CompareTo(string2);
}
return res;
}
else
{
res = _Songs[s1.SongID].Artist.ToUpper().CompareTo(_Songs[s2.SongID].Artist.ToUpper());
if (res == 0)
{
return _Songs[s1.SongID].Title.ToUpper().CompareTo(_Songs[s2.SongID].Title.ToUpper());
}
return res;
}
return res;
}
return res;
});
@@ -686,12 +772,28 @@ namespace Vocaluxe.Base
int res = s1.SortString.CompareTo(s2.SortString);
if (res == 0)
{
res = _Songs[s1.SongID].Artist.ToUpper().CompareTo(_Songs[s2.SongID].Artist.ToUpper());
if (res == 0)
if (CConfig.IgnoreArticles == EOffOn.TR_CONFIG_ON)
{
return _Songs[s1.SongID].Title.ToUpper().CompareTo(_Songs[s2.SongID].Title.ToUpper());
string string1 = IgnoreArticle(_Songs[s1.SongID].Artist.ToUpper());
string string2 = IgnoreArticle(_Songs[s2.SongID].Artist.ToUpper());
res = string1.CompareTo(string2);
if (res == 0)
{
string1 = IgnoreArticle(_Songs[s1.SongID].Title.ToUpper());
string2 = IgnoreArticle(_Songs[s2.SongID].Title.ToUpper());
return string1.CompareTo(string2);
}
return res;
}
else
{
res = _Songs[s1.SongID].Artist.ToUpper().CompareTo(_Songs[s2.SongID].Artist.ToUpper());
if (res == 0)
{
return _Songs[s1.SongID].Title.ToUpper().CompareTo(_Songs[s2.SongID].Title.ToUpper());
}
return res;
}
return res;
}
return res;
});
@@ -740,12 +842,28 @@ namespace Vocaluxe.Base
int res = s1.SortString.CompareTo(s2.SortString);
if (res == 0)
{
res = _Songs[s1.SongID].Artist.ToUpper().CompareTo(_Songs[s2.SongID].Artist.ToUpper());
if (res == 0)
if (CConfig.IgnoreArticles == EOffOn.TR_CONFIG_ON)
{
return _Songs[s1.SongID].Title.ToUpper().CompareTo(_Songs[s2.SongID].Title.ToUpper());
string string1 = IgnoreArticle(_Songs[s1.SongID].Artist.ToUpper());
string string2 = IgnoreArticle(_Songs[s2.SongID].Artist.ToUpper());
res = string1.CompareTo(string2);
if (res == 0)
{
string1 = IgnoreArticle(_Songs[s1.SongID].Title.ToUpper());
string2 = IgnoreArticle(_Songs[s2.SongID].Title.ToUpper());
return string1.CompareTo(string2);
}
return res;
}
else
{
res = _Songs[s1.SongID].Artist.ToUpper().CompareTo(_Songs[s2.SongID].Artist.ToUpper());
if (res == 0)
{
return _Songs[s1.SongID].Title.ToUpper().CompareTo(_Songs[s2.SongID].Title.ToUpper());
}
return res;
}
return res;
}
return res;
});
@@ -920,5 +1038,10 @@ namespace Vocaluxe.Base
_CoverLoaded = true;
CDataBase.CommitCovers();
}
private static string IgnoreArticle(string _string)
{
return Regex.Replace(_string, @"^\s*(de|het|de|der|die|das|des|dem|den|the|el|la|lo|los|las|le|la|les|il|lo|la|i|gli|a|az)\s+", string.Empty, RegexOptions.IgnoreCase);
}
}
}