/// <summary> /// Заполнение списка треков /// </summary> internal void FillListView() { listTracks.Items.Clear(); string[] items = new string[8]; bool isPrev = false; int key = 1; foreach (KeyValuePair <int, Track> track in Proccess.mainPlayList.tracks) { if (HideBgTrack.Checked && track.Value.bg) { continue; } // Номер трека по порядку items[0] = key.ToString(); // Имя трека items[1] = track.Value.name; // Длительность трека items[2] = NAudioPlayer.GetDuration(track.Value.audioFilePath); // Номер OSC трека items[3] = track.Value.oscCommand.ToString(); // MIDI - нота или MIDI - файл items[4] = (track.Value.isMidiNote) ? track.Value.midiNote.ToString() : track.Value.midiFile; /// Получает описание из enum #region GetEnumDescripton var enumType = typeof(nextTrack); var memberData = enumType.GetMember(track.Value.next.ToString()); var Description = (memberData[0].GetCustomAttributes(typeof(DescriptionAttribute), false).FirstOrDefault() as DescriptionAttribute).Description; #endregion items[5] = Description.ToString(); // Ставим метку, что трек находится в плейлисте track.Value.isPlaylistTrack = true; // Тегом элемента ListView является объект трека ListViewItem item = new ListViewItem(items) { Tag = track.Value }; /// --------- УПРАВЛЕНИЕ ЦВЕТОМ ---------------- #region COLOR AND FONTS MANAGED // Если предыдущий трек с параметром "ИГРАТЬ СЛЕД. ТРЕК", // то текущий трек выделяем тем же цветом и шрифтами if (isPrev) { isPrev = false; item.BackColor = Colors.Get("nextTrackColor"); } switch (track.Value.next) { case nextTrack.next: item.BackColor = Colors.Get("nextTrackColor"); isPrev = true; break; case nextTrack.pause: item.BackColor = (isPrev) ? Colors.Get("nextTrackColor") : Color.Pink; break; case nextTrack.bgConcrete: item.BackColor = (isPrev) ? Colors.Get("nextTrackColor") : Colors.Get("concreteBgColor"); break; } if (Fonts.Get("mainFont") != null) { item.Font = Fonts.Get("mainFont"); } if (Fonts.Get("bgFont") != null) { item.Font = (track.Value.bg) ? Fonts.Get("bgFont") : item.Font; } if (Colors.Get("bgTrackFontColor") != null) { item.ForeColor = (track.Value.bg) ? Colors.Get("bgTrackFontColor") : item.ForeColor; } #endregion // добавляем элемент в ListView listTracks.Items.Add(item); key++; } }