示例#1
0
        public PlayListControl(IAimpPlaylist playList, IAimpPlayer player)
        {
            InitializeComponent();

            listView1.Columns.Add("trackId", "#");
            listView1.Columns.Add("trackName", "Name");
            listView1.Columns.Add("Duration", "Duration");
            listView1.MultiSelect = false;
            listView1.HeaderStyle = ColumnHeaderStyle.Nonclickable;
            listView1.View        = View.Details;

            listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
            listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);

            _playList = playList;
            _player   = player;

            LoadTracks();

            playList.Changed += (sender, type) =>
            {
                if (type.HasFlag(PlaylistNotifyType.AIMP_PLAYLIST_NOTIFY_STATISTICS))
                {
                    RefreshTracks();
                }
            };
        }
示例#2
0
 private void PlayListOnChanged(IAimpPlaylist sender, PlaylistNotifyType notifType)
 {
     Logger.Instance.AddInfoMessage($"[Event] IAimpPlaylist.Changed: {sender.Id} {sender.Name}");
     if (notifType.HasFlag(PlaylistNotifyType.AIMP_PLAYLIST_NOTIFY_STATISTICS))
     {
     }
 }
示例#3
0
        public void GetPlayablePlaylist_ShouldReturnPlaylist()
        {
            IAimpPlaylist playlist = null;

            ExecuteInMainThread(() =>
            {
                var playlistResult = Player.ServicePlaylistManager.CreatePlaylistFromFile(PlaylistPath, true);
                this.AreEqual(ActionResultType.OK, playlistResult.ResultType);
                playlist = playlistResult.Result;
            });

            ExecuteInThread(() =>
            {
                Thread.Sleep(10000);
            });

            ExecuteInMainThread(() =>
            {
                var result = Player.ServicePlaylistManager.GetPlayablePlaylist();

                this.AreEqual(ActionResultType.OK, result.ResultType);
                this.NotNull(result.Result);

                playlist.Close(PlaylistCloseFlag.ForceRemove);
            });
        }
示例#4
0
 public AimpActionResult OnPlaylistAdded(IAimpPlaylist playlist)
 {
     listView1.Items.Add(new ListViewItem
     {
         Text = playlist.Name,
         Tag  = playlist.Id
     });
     return(new AimpActionResult(ActionResultType.OK));
 }
示例#5
0
        public AimpActionResult OnPlaylistRemoved(IAimpPlaylist playlist)
        {
            var item = listView1.Items.Cast <ListViewItem>().FirstOrDefault(c => c.Tag == playlist.Id);

            if (item != null)
            {
                listView1.Items.Remove(item);
            }

            return(new AimpActionResult(ActionResultType.OK));
        }
示例#6
0
        public override void SetUp()
        {
            base.SetUp();

            ExecuteInMainThread(() =>
            {
                var playlistResult = Player.ServicePlaylistManager.CreatePlaylistFromFile(PlaylistPath, true);
                this.AreEqual(ActionResultType.OK, playlistResult.ResultType, "playlistResult.ResultType");
                this.NotNull(playlistResult.Result, "playlistResult.Result");
                _playlist = playlistResult.Result;
            });
        }
示例#7
0
        private void AddPlayListTab(string id, string name, IAimpPlaylist playList)
        {
            var tab = new TabPage(id)
            {
                Text = name,
                Tag  = playList
            };

            var pl = new PlayListControl(playList, _aimpPlayer);

            tab.Controls.Add(pl);
            tabPlayLists.TabPages.Add(tab);

            playList.Activated += sender => { tabPlayLists.SelectedTab = tab; };
        }
示例#8
0
        public override void SetUp()
        {
            base.SetUp();

            ExecuteInMainThread(() =>
            {
                var playlistResult = Player.ServicePlaylistManager.CreatePlaylistFromFile(PlaylistPath, true);

                if (playlistResult.ResultType == ActionResultType.OK)
                {
                    _playlist = playlistResult.Result;
                }
                else
                {
                    TestContext.WriteLine($"Cannot create a playlist: {PlaylistPath}");
                }
            });
        }
示例#9
0
        public override void SetUp()
        {
            base.SetUp();

            ExecuteInMainThread(() =>
            {
                var playlistPath   = Path.Combine(RootPath, "resources", "issue_19.aimppl4");
                var playlistResult = Player.ServicePlaylistManager.CreatePlaylistFromFile(playlistPath, true);

                if (playlistResult.ResultType == ActionResultType.OK)
                {
                    _playlist = playlistResult.Result;
                }
                else
                {
                    TestContext.WriteLine($"Cannot create a playlist: {playlistPath}");
                }
            });
        }
示例#10
0
        public void CheckHook_IAimpExtensionPlayerHook_OK()
        {
            IAimpPlaylist playList = null;

            ExecuteInMainThread(() =>
            {
                var executed  = false;
                var extension = new AimpExtensionPlayerHook(s =>
                {
                    executed = true;
                    this.AreEqual(TrackUrl1, s, "fileUrl", "Source file url and hooked url do not match");
                    return(true);
                });

                var result = Player.Core.RegisterExtension(extension);
                AssertOKResult(result.ResultType, "Unable to register a AimpExtensionPlayerHook");

                var createPlaylistResult = Player.ServicePlaylistManager.CreatePlaylist("AimpExtensionPlayerHook", true);
                AssertOKResult(createPlaylistResult.ResultType, "Cannot create a playlist from file");
                createPlaylistResult.Result.Add(TrackUrl1, PlaylistFlags.NoCheckFormat, PlaylistFilePosition.CurrentPosition);

                if (createPlaylistResult.ResultType == ActionResultType.OK)
                {
                    playList = createPlaylistResult.Result;
                    var r    = Player.Play(createPlaylistResult.Result);
                }
            });

            ExecuteAndWait(() =>
            {
                Thread.Sleep(25000);
            });

            ExecuteInMainThread(() =>
            {
                playList?.Close(PlaylistCloseFlag.ForceRemove);
            });
        }
示例#11
0
 /// <summary>
 /// Initializes a new instance of the <see cref="AimpPlaylistEventArgs" /> class.
 /// </summary>
 /// <param name="playlist">The playlist.</param>
 public AimpPlaylistEventArgs(IAimpPlaylist playlist)
 {
     Playlist = playlist;
 }
示例#12
0
 private IAimpPlaylistPreimage GetPlaylistPreimage(IAimpPlaylist pl)
 {
     return(pl.PreImage);
 }
示例#13
0
 private void SetPlaylistPreimage(IAimpPlaylist pl, IAimpPlaylistPreimage preimage)
 {
     pl.PreImage = preimage;
 }
示例#14
0
 private void PlAdded(IAimpPlaylist pl)
 {
     _playlists.Add($"{pl.Id};{pl.Name}");
 }
示例#15
0
 public AimpActionResult OnPlaylistRemoved(IAimpPlaylist playlist)
 {
     return(AimpActionResult.Ok);
 }
示例#16
0
 public AimpActionResult OnPlaylistRemoved(IAimpPlaylist playlist)
 {
     return(new AimpActionResult(ActionResultType.OK));
 }
示例#17
0
 private void PlRemoved(IAimpPlaylist pl)
 {
     _playlists.Remove($"{pl.Id};{pl.Name}");
 }