private void IterateTrackModelUntilEndMatch (out long viewOrder, bool checkAlbum)
{
var t = TrackModel;
bool in_match = false;
long current_view_order = CurrentTrackViewOrder;
int index = Math.Max (0, TrackModel.IndexOf (current_track));
string current_album = ServiceManager.PlayerEngine.CurrentTrack.AlbumTitle;
string current_artist = ServiceManager.PlayerEngine.CurrentTrack.AlbumArtist;
// view order will point to the last track that has the same album and artist of the
// currently playing track.
viewOrder = current_view_order;
for (int i = index; i < t.Count; i++) {
var track = t[i];
if (current_artist == track.AlbumArtist && (!checkAlbum || current_album == track.AlbumTitle)) {
in_match = true;
viewOrder++;
} else if (!in_match) {
continue;
} else {
viewOrder--;
break;
}
}
}