sort by initial letter first when sorting by letter

This commit is contained in:
RumovZ committed 2020-04-25 10:18:57 +02:00
1 parent 2682f731ae
commit 75045c6f39
1 file changed
+24 -1
+24 -1
View File
@@ -111,6 +111,24 @@ namespace Vocaluxe.Base
return res;
}
/// <summary>
/// Compares two songs by means of: first letter of sorting field, sorting field, title.
/// </summary>
private int _SortByLetterFieldTitle(CSongPointer s1, CSongPointer s2)
{
int res = String.Compare(s1.SortString[0].ToString(), s2.SortString[0].ToString(), StringComparison.CurrentCultureIgnoreCase);
return res != 0 ? res : _SortByFieldTitle(s1, s2);
}
/// <summary>
/// Compares two songs by means of: first letter of sorting field, sorting field, artist, title.
/// </summary>
private int _SortByLetterFieldArtistTitle(CSongPointer s1, CSongPointer s2)
{
int res = String.Compare(s1.SortString[0].ToString(), s2.SortString[0].ToString(), StringComparison.CurrentCultureIgnoreCase);
return res != 0 ? res : _SortByFieldArtistTitle(s1, s2);
}
private void _AddSongToList(CSong song, List<CSongPointer> list)
{
string value = null;
@@ -172,11 +190,16 @@ namespace Vocaluxe.Base
_AddSongToList(song, sortList);
switch (_SongSorting)
{
case ESongSorting.TR_CONFIG_ARTIST_LETTER:
case ESongSorting.TR_CONFIG_ARTIST:
case ESongSorting.TR_CONFIG_NONE:
sortList.Sort(_SortByFieldTitle);
break;
case ESongSorting.TR_CONFIG_ARTIST_LETTER:
sortList.Sort(_SortByLetterFieldTitle);
break;
case ESongSorting.TR_CONFIG_TITLE_LETTER:
sortList.Sort(_SortByLetterFieldArtistTitle);
break;
default:
sortList.Sort(_SortByFieldArtistTitle);
break;