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; 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) private void _AddSongToList(CSong song, List<CSongPointer> list)
{ {
string value = null; string value = null;
@@ -172,11 +190,16 @@ namespace Vocaluxe.Base
_AddSongToList(song, sortList); _AddSongToList(song, sortList);
switch (_SongSorting) switch (_SongSorting)
{ {
case ESongSorting.TR_CONFIG_ARTIST_LETTER:
case ESongSorting.TR_CONFIG_ARTIST: case ESongSorting.TR_CONFIG_ARTIST:
case ESongSorting.TR_CONFIG_NONE: case ESongSorting.TR_CONFIG_NONE:
sortList.Sort(_SortByFieldTitle); sortList.Sort(_SortByFieldTitle);
break; break;
case ESongSorting.TR_CONFIG_ARTIST_LETTER:
sortList.Sort(_SortByLetterFieldTitle);
break;
case ESongSorting.TR_CONFIG_TITLE_LETTER:
sortList.Sort(_SortByLetterFieldArtistTitle);
break;
default: default:
sortList.Sort(_SortByFieldArtistTitle); sortList.Sort(_SortByFieldArtistTitle);
break; break;