示例#1
0
        private void OnDragDrop(object sender, PlayerControlEventArgs <DragEventArgs> e)
        {
            var filter     = m_Form.openFileDialog.Filter.Split('|');
            var extensions = filter[1].Replace(";", string.Empty).Replace(" ", string.Empty).Split('*');

            var files = (string[])e.InputArgs.Data.GetData(DataFormats.FileDrop);

            if (files == null)
            {
                return;
            }

            if (files.Length == 1)
            {
                string filename = files[0];

                if (Directory.Exists(filename))
                {
                    var media = GetAllMediaFiles(filename);
                    m_Form.CloseMedia();
                    m_Form.ClearPlaylist();
                    m_Form.AddFiles(
                        media.Where(file => extensions.Contains(PathHelper.GetExtension(file.ToLower())))
                        .OrderBy(f => f, new NaturalSortComparer())
                        .Where(f => PathHelper.GetExtension(f).Length > 0)
                        .ToArray());
                    m_Form.SetPlaylistIndex(0);
                    return;
                }

                if (IsPlaylistFile(filename))
                {
                    m_Form.OpenPlaylist(filename);
                    return;
                }

                if (PathHelper.GetExtension(filename).Length < 1 || !extensions.Contains(Path.GetExtension(filename)))
                {
                    return;
                }

                m_Form.ActiveFile(filename);
                m_Form.SetPlaylistIndex(0);
            }
            else
            {
                m_Form.AddFiles(
                    files.Where(file => extensions.Contains(PathHelper.GetExtension(file.ToLower())))
                    .OrderBy(f => f, new NaturalSortComparer())
                    .Where(f => PathHelper.GetExtension(f).Length > 0)
                    .ToArray());
                m_Form.SetPlaylistIndex(0);
            }

            e.Handled = true;
        }