2010-04-06 14:22:27 +00:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
|
using System.Data;
|
|
|
|
|
|
using System.Drawing;
|
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
using System.IO;
|
|
|
|
|
|
using System.Diagnostics;
|
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
|
using CUEControls;
|
|
|
|
|
|
using CUETools.Codecs;
|
|
|
|
|
|
using CUETools.Processor;
|
|
|
|
|
|
|
|
|
|
|
|
namespace CUEPlayer
|
|
|
|
|
|
{
|
|
|
|
|
|
public partial class Playlist : Form
|
|
|
|
|
|
{
|
|
|
|
|
|
private CUEConfig _config;
|
|
|
|
|
|
private ShellIconMgr _icon_mgr;
|
|
|
|
|
|
private DataSet1 dataSet;
|
|
|
|
|
|
|
|
|
|
|
|
public Playlist()
|
|
|
|
|
|
{
|
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void Init(frmCUEPlayer parent)
|
|
|
|
|
|
{
|
|
|
|
|
|
_config = parent.Config;
|
|
|
|
|
|
dataSet = parent.DataSet;
|
|
|
|
|
|
MdiParent = parent;
|
|
|
|
|
|
Show();
|
|
|
|
|
|
_icon_mgr = parent.IconMgr;
|
|
|
|
|
|
listViewTracks.SmallImageList = _icon_mgr.ImageList;
|
|
|
|
|
|
foreach (DataSet1.PlaylistRow row in dataSet.Playlist)
|
2010-04-16 04:30:51 +00:00
|
|
|
|
{
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
listViewTracks.Items.Add(ToItem(row));
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
{
|
|
|
|
|
|
Trace.WriteLine(ex.Message);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2010-04-06 14:22:27 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public ListView List
|
|
|
|
|
|
{
|
|
|
|
|
|
get
|
|
|
|
|
|
{
|
|
|
|
|
|
return listViewTracks;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public ListViewItem ToItem(DataSet1.PlaylistRow row)
|
|
|
|
|
|
{
|
|
|
|
|
|
ListViewGroup in_group = null;
|
|
|
|
|
|
string group_name = (row.artist ?? "") + " - " + (row.album ?? "");
|
|
|
|
|
|
foreach (ListViewGroup group in listViewTracks.Groups)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (group.Name == group_name)
|
|
|
|
|
|
{
|
|
|
|
|
|
in_group = group;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (in_group == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
in_group = new ListViewGroup(group_name, group_name);
|
|
|
|
|
|
listViewTracks.Groups.Add(in_group);
|
|
|
|
|
|
}
|
|
|
|
|
|
int iconIndex = _icon_mgr.GetIconIndex(new FileInfo(row.path), true);
|
|
|
|
|
|
ListViewItem item = new ListViewItem(row.title, iconIndex);
|
|
|
|
|
|
TimeSpan Length = TimeSpan.FromSeconds(row.length);
|
|
|
|
|
|
string lenStr = string.Format("{0:d}.{1:d2}:{2:d2}:{3:d2}", Length.Days, Length.Hours, Length.Minutes, Length.Seconds).TrimStart('0', ':', '.');
|
|
|
|
|
|
item.SubItems.Add(new ListViewItem.ListViewSubItem(item, lenStr));
|
|
|
|
|
|
item.Group = in_group;
|
|
|
|
|
|
item.Tag = row;
|
|
|
|
|
|
return item;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void exploreToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (listViewTracks.SelectedIndices.Count == 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
int index = listViewTracks.SelectedIndices[0];
|
|
|
|
|
|
string path = (listViewTracks.Items[index].Tag as DataSet1.PlaylistRow).path;
|
|
|
|
|
|
(MdiParent as frmCUEPlayer).browser.TreeView.SelectedPath = path;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void removeToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
while (listViewTracks.SelectedIndices.Count > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
int index = listViewTracks.SelectedIndices[0];
|
|
|
|
|
|
(listViewTracks.Items[index].Tag as DataSet1.PlaylistRow).Delete();
|
|
|
|
|
|
listViewTracks.Items.RemoveAt(index);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void listViewTracks_DragDrop(object sender, DragEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (e.Data.GetDataPresent(DataFormats.FileDrop))
|
|
|
|
|
|
{
|
|
|
|
|
|
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
|
|
|
|
|
|
if (files.Length == 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
string path = files[0];
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
CUESheet cue = new CUESheet(_config);
|
|
|
|
|
|
cue.Open(path);
|
|
|
|
|
|
for (int iTrack = 0; iTrack < cue.TrackCount; iTrack++)
|
|
|
|
|
|
{
|
|
|
|
|
|
DataSet1.PlaylistRow row = dataSet.Playlist.AddPlaylistRow(
|
|
|
|
|
|
path,
|
2011-06-11 19:26:25 +00:00
|
|
|
|
cue.Metadata.Artist,
|
|
|
|
|
|
cue.Metadata.Tracks[iTrack].Title,
|
|
|
|
|
|
cue.Metadata.Title,
|
2010-04-06 14:22:27 +00:00
|
|
|
|
(int)cue.TOC[cue.TOC.FirstAudio + iTrack].Length / 75,
|
|
|
|
|
|
iTrack + 1);
|
|
|
|
|
|
listViewTracks.Items.Add(ToItem(row));
|
|
|
|
|
|
}
|
|
|
|
|
|
cue.Close();
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
{
|
|
|
|
|
|
Trace.WriteLine(ex.Message);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
FileInfo fi = new FileInfo(path);
|
|
|
|
|
|
if (fi.Extension != ".cue")
|
|
|
|
|
|
{
|
|
|
|
|
|
DataSet1.PlaylistRow row = dataSet.Playlist.AddPlaylistRow(
|
|
|
|
|
|
path,
|
|
|
|
|
|
null, // cue.Artist,
|
|
|
|
|
|
null, // cue.Tracks[iTrack].Title,
|
|
|
|
|
|
null, // cue.Title,
|
|
|
|
|
|
0, // (int)cue.TOC[cue.TOC.FirstAudio + iTrack].Length / 75,
|
|
|
|
|
|
0);
|
|
|
|
|
|
listViewTracks.Items.Add(ToItem(row));
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void listViewTracks_DragOver(object sender, DragEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (e.Data.GetDataPresent(DataFormats.FileDrop))
|
|
|
|
|
|
{
|
|
|
|
|
|
e.Effect = DragDropEffects.Copy;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void listViewTracks_KeyDown(object sender, KeyEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (e.KeyCode == Keys.Delete)
|
|
|
|
|
|
removeToolStripMenuItem_Click(sender, EventArgs.Empty);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void listViewTracks_ItemDrag(object sender, ItemDragEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (e.Item != null && e.Item is ListViewItem)
|
|
|
|
|
|
{
|
|
|
|
|
|
DataObject dobj = new DataObject(DataFormats.Serializable, listViewTracks.SelectedIndices);
|
|
|
|
|
|
DragDropEffects effects = DoDragDrop(dobj, DragDropEffects.All);
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2010-04-16 04:30:51 +00:00
|
|
|
|
|
|
|
|
|
|
private void Playlist_Load(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
2010-04-06 14:22:27 +00:00
|
|
|
|
}
|
|
|
|
|
|
}
|