示例#1
0
        public SamplePlaylistViewModel() : base(new MockPlaylistView())
        {
            var musicFiles = new[]
            {
                new SampleMusicFile(new MusicMetadata(new TimeSpan(0, 3, 45), 320000)
                {
                    Artists = new[] { @"Culture Beat" },
                    Title   = @"Serenity (Epilog)",
                }, @"C:\Users\Public\Music\Dancefloor\Culture Beat - Serenity"),
                new SampleMusicFile(new MusicMetadata(new TimeSpan(0, 2, 2), 320000)
                {
                    Artists = new[] { "First artist", "Second artist" },
                    Title   = "This track has a very long title. Let's see how the UI handles this.",
                }, ""),
                new SampleMusicFile(new MusicMetadata(new TimeSpan(1, 33, 0), 320000)
                {
                    Artists = new string[0],
                    Title   = "",
                }, @"C:\Users\Public\Music\Dancefloor\Culture Beat - Serenity"),
                new MusicFile(x => { throw new InvalidOperationException("Sample exception."); }, @"C:\corruptfile.mp3")
            };
            var playlistManager = new PlaylistManager();

            playlistManager.AddItems(musicFiles.Select(x => new PlaylistItem(x)));
            PlaylistManager             = playlistManager;
            playlistManager.CurrentItem = playlistManager.Items.First();
        }
示例#2
0
        internal static bool BootstrapLibrary()
        {
            if (String.IsNullOrWhiteSpace(SecretKey))
            {
                return(true);
            }

            BroadcastManager.Init();
            ChatManager.Init();
            PlaylistManager.Init();
            QueueManager.Init();
            SettingsManager.Init();
            UserManager.Init();
            SuggestionManager.Init();
            StatisticsManager.Init();

            // ModuleManager should always load last.
            ModuleManager.Init();

            using (var s_Db = Database.GetConnection())
                if (s_Db.SingleById <CoreSetting>("gsun") == null || s_Db.SingleById <CoreSetting>("gspw") == null)
                {
                    return(false);
                }

            UserManager.Authenticate();
            return(true);
        }
示例#3
0
        public void DeserializeDerivedPlaylist()
        {
            string           playlistDir = Path.Combine(OutputPath, "DeserializeDerivedPlaylist");
            IPlaylistHandler handler     = new LegacyPlaylistHandler();

            if (Directory.Exists(playlistDir))
            {
                Directory.Delete(playlistDir, true);
            }
            Assert.IsFalse(Directory.Exists(playlistDir));

            PlaylistManager manager  = new PlaylistManager(playlistDir, handler);
            var             songs    = CreateSongArray <LegacyPlaylistSong>("Legacy_", "LegacyAuthor_", 1000, Identifier.LevelId | Identifier.Hash | Identifier.Key);
            IPlaylist?      playlist = manager.CreatePlaylist("5LegacySongs", "Five Legacy Songs", "TestAuthor", string.Empty, "Test Description");

            foreach (var song in songs)
            {
                playlist.Add(song);
            }
            playlist.RaisePlaylistChanged();
            manager.RegisterPlaylist(playlist);
            manager.StoreAllPlaylists();
            manager  = new PlaylistManager(playlistDir, handler);
            playlist = manager.GetHandler <LegacyPlaylistHandler>()?.Deserialize <DerivedLegacyPlaylist>(File.OpenRead(Path.Combine(playlistDir, "5LegacySongs.bplist")));
            if (Directory.Exists(playlistDir))
            {
                Directory.Delete(playlistDir, true);
            }
        }
示例#4
0
        public MainPage()
        {
            this.InitializeComponent();
            this.NavigationCacheMode = Windows.UI.Xaml.Navigation.NavigationCacheMode.Enabled;
            player          = new MediaPlayer();
            songs           = new ObservableCollection <Song>();
            playlistManager = new PlaylistManager();
            playlists       = new ObservableCollection <Playlist>(playlistManager.Playlists.Values);
            SongManager.GetAllSongs(songs);
            menuItems = new List <MenuItem>();

            //Load Pane
            menuItems.Add(new MenuItem
            {
                IconFile = "Assets/Icons/adele.png",
                Category = SongCategory.Adele
            });
            menuItems.Add(new MenuItem
            {
                IconFile = "Assets/Icons/Justin.png",
                Category = SongCategory.Justin
            });
            menuItems.Add(new MenuItem
            {
                IconFile = "Assets/Icons/sia.png",
                Category = SongCategory.Sia
            });
            menuItems.Add(new MenuItem
            {
                IconFile = "Assets/Icons/taylor.png",
                Category = SongCategory.Taylor
            });
        }
示例#5
0
        private void Application_Launching(object sender, LaunchingEventArgs e)
        {
            this.RemoveCurrentDeactivationSettings();
            Logger.Instance.Info("App.Application_Launching check 1");
            this.PerformInitialization();
            Logger.Instance.Info("App.Application_Launching check 2");
            this.RestoreState(true);
            Logger.Instance.Info("App.Application_Launching check 3");
            PushNotificationsManager.Instance.Initialize();
            Logger.Instance.Info("App.Application_Launching check 5");
            PlaylistManager.Initialize();
            Logger.Instance.Info("App.Application_Launching check 6");
            //AudioCacheManager.Instance.ClearCache(null);
            //Logger.Instance.Info("App.Application_Launching check 7");
            BaseDataManager.Instance.NeedRefreshBaseData = true;
            App._uriMapper.NeedHandleActivation          = true;
            ContactsManager.Instance.EnsureInSyncAsync(false);
            ContactsSyncManager.Instance.Sync(null);
            ShareLaunchingEventArgs launchingEventArgs = e as ShareLaunchingEventArgs;

            if (launchingEventArgs == null)
            {
                return;
            }
            this.ShareOperation = launchingEventArgs.ShareTargetActivatedEventArgs.ShareOperation;
        }
示例#6
0
        public void PreviousAndNext()
        {
            var manager = new PlaylistManager();

            manager.AddAndReplaceItems(threeItems);

            Assert.IsFalse(manager.CanPreviousItem);
            Assert.IsFalse(manager.CanNextItem);

            AssertHelper.PropertyChangedEvent(manager, x => x.CanNextItem, () => manager.CurrentItem = threeItems[0]);
            Assert.IsFalse(manager.CanPreviousItem);
            Assert.IsTrue(manager.CanNextItem);

            AssertHelper.PropertyChangedEvent(manager, x => x.CanPreviousItem, () => manager.NextItem());
            Assert.AreEqual(threeItems[1], manager.CurrentItem);
            Assert.IsTrue(manager.CanPreviousItem);
            Assert.IsTrue(manager.CanNextItem);

            AssertHelper.PropertyChangedEvent(manager, x => x.CanNextItem, () => manager.NextItem());
            Assert.AreEqual(threeItems[2], manager.CurrentItem);
            Assert.IsTrue(manager.CanPreviousItem);
            Assert.IsFalse(manager.CanNextItem);

            AssertHelper.PropertyChangedEvent(manager, x => x.CanNextItem, () => manager.PreviousItem());
            Assert.AreEqual(threeItems[1], manager.CurrentItem);
            Assert.IsTrue(manager.CanPreviousItem);
            Assert.IsTrue(manager.CanNextItem);
        }
示例#7
0
 public PlayManager(ConfBot config, Player playerConnection, PlaylistManager playlistManager, ResourceResolver resourceResolver)
 {
     confBot = config;
     this.playerConnection = playerConnection;
     this.playlistManager  = playlistManager;
     this.resourceResolver = resourceResolver;
 }
示例#8
0
        public void SongIsCorrectlyAddedToPlaylist()
        {
            // Setup some testdata
            var playlistName = "Sjoerds playlist";
            var song         = new Song()
            {
                Artist = "Robbie Williams",
                Name   = "Angels"
            };

            IPlaylistManager playlistManager = new PlaylistManager();
            var currentPlaylists             = playlistManager.GetPlaylists();

            // Controleer of playlist leeg is
            Assert.IsTrue(currentPlaylists.Count() == 0);

            // Voeg playlist toe
            playlistManager.AddPlaylist(playlistName);

            // Controleer of de playlist is toegevoegd
            Assert.IsTrue(currentPlaylists.Count() == 1);

            // Voeg een song toe aan de playlist
            playlistManager.AddSongToPlaylist(playlistName, song);

            // Ophalen van de songs in de playlist
            var songsInPlaylist = playlistManager.GetPlaylists().Where(x => x.Name == playlistName).FirstOrDefault().Songs;

            // Controleer of de song is toegevoegd
            Assert.IsTrue(songsInPlaylist.Count() == 1);
        }
示例#9
0
        public void ResetNextWithShuffle()
        {
            var manager = new PlaylistManager();

            manager.AddAndReplaceItems(threeItems);
            manager.Shuffle     = true;
            manager.CurrentItem = threeItems[0];

            for (int i = 0; i < 2; i++)
            {
                Assert.IsTrue(manager.CanNextItem);
                manager.NextItem();
            }

            Assert.IsFalse(manager.CanNextItem);

            manager.Reset();

            for (int i = 0; i < 2; i++)
            {
                Assert.IsTrue(manager.CanNextItem);
                manager.NextItem();
            }

            Assert.IsFalse(manager.CanNextItem);
        }
示例#10
0
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
            }

            if (!IsInvalid)
            {
                if (_callbacks != null)
                {
                    _callbacks.Dispose();
                    _callbacks = null;
                }

                try
                {
                    lock (Spotify.Mutex)
                    {
                        Spotify.sp_playlist_release(Handle);
                    }
                }
                catch
                {
                }
                finally
                {
                    PlaylistTrackManager.RemoveAll(this);
                    PlaylistManager.Remove(Handle);
                    Handle = IntPtr.Zero;
                    Debug.WriteLine("Playlist disposed");
                }
            }

            base.Dispose(disposing);
        }
示例#11
0
 public void RemoveFromPlaylist(Song item, int position)
 {
     PlaylistManager.RemoveTrackFromPlaylistDialog(this.item, item, position, () =>
     {
         if (position == 0)
         {
             adapter.NotifyItemChanged(0);
         }
         else
         {
             adapter.NotifyItemRemoved(position);
         }
     }, () =>
     {
         adapter.NotifyItemChanged(position);
     }, () =>
     {
         if (position == 0)
         {
             adapter.NotifyItemChanged(position);
         }
         else
         {
             adapter.NotifyItemInserted(position);
         }
     });
 }
示例#12
0
        private void button1_Click(object sender, EventArgs e)
        {
            PlaylistManager playlistManager = new PlaylistManager();

            playlistManager.Show();
            //Trace.WriteLine(TypeDescriptor.GetComponentName(this.btnProcess));
        }
示例#13
0
 public PlayManager(ConfBot config, IPlayerConnection playerConnection, PlaylistManager playlistManager, ResourceFactory resourceFactory)
 {
     confBot = config;
     this.playerConnection = playerConnection;
     this.playlistManager  = playlistManager;
     this.resourceFactory  = resourceFactory;
 }
        public void MultipleExtensions_NotDefault()
        {
            string           playlistDir     = Path.Combine(OutputPath, "MultipleExtensions_NotDefault");
            IPlaylistHandler expectedHandler = new LegacyPlaylistHandler();

            if (Directory.Exists(playlistDir))
            {
                Directory.Delete(playlistDir, true);
            }
            Assert.IsFalse(Directory.Exists(playlistDir));

            PlaylistManager manager = new PlaylistManager(playlistDir, new MockPlaylistHandler());

            Assert.IsNull(manager.GetHandlerForExtension("bplist"));

            Assert.IsTrue(manager.RegisterHandler(expectedHandler));
            Assert.IsTrue(Directory.Exists(playlistDir));
            Assert.AreEqual(typeof(MockPlaylistHandler), manager.DefaultHandler?.GetType());
            Assert.AreEqual(expectedHandler, manager.GetHandlerForExtension("bplist"));
            Assert.AreEqual(expectedHandler, manager.GetHandlerForExtension("JsOn"));

            if (Directory.Exists(playlistDir))
            {
                Directory.Delete(playlistDir, true);
            }
        }
示例#15
0
        /// <summary>
        /// Invoked when the user clicks on Delink.
        /// </summary>
        /// <param name="sender">The sender of the event</param>
        /// <param name="e">The event data</param>
        private void Delink_Click(object sender, RoutedEventArgs e)
        {
            ThreadStart cloudThread = delegate()
            {
                Dispatcher.Invoke(DispatcherPriority.Background, new Action(delegate()
                {
                    CloudBrowserIsLoading   = true;
                    CloudControlsAreVisible = false;
                }));
                ServiceManager.Delink();

                Dispatcher.Invoke(DispatcherPriority.Background, new Action(delegate()
                {
                    for (int i = 0; i < SettingsManager.Playlists.Count; i++)
                    {
                        var p = SettingsManager.Playlists[i];
                        if (p.ID > 0)
                        {
                            PlaylistManager.RemovePlaylist(p.ID);
                            i--;
                        }
                    }
                }));
            };
            Thread cl_thread = new Thread(cloudThread);

            cl_thread.Name     = "Cloud delink thread";
            cl_thread.Priority = ThreadPriority.Lowest;
            cl_thread.Start();
        }
示例#16
0
 private void Application_Activated(object sender, ActivatedEventArgs e)
 {
     Logger.Instance.Info("App.Application_Activated check 1, InstancePreserved=" + e.IsApplicationInstancePreserved.ToString());
     if (!e.IsApplicationInstancePreserved)
     {
         this.RestoreSessionType();
     }
     if (e.IsApplicationInstancePreserved)
     {
         this.StartState = StartState.Reactivated;
         if (!ConversationsViewModel.IsInstanceNull)
         {
             ConversationsViewModel.Instance.NeedRefresh = true;
         }
         NetworkStatusInfo.Instance.RetrieveNetworkStatus();
     }
     else
     {
         this.PerformInitialization();
         this.StartState = StartState.TombstonedThenRessurected;
         this.RestoreState(false);
     }
     Logger.Instance.Info("App.Application_Activated check 3");
     PushNotificationsManager.Instance.Initialize();
     Logger.Instance.Info("App.Application_Activated check 4");
     PlaylistManager.Initialize();
     Logger.Instance.Info("App.Application_Activated check 5");
     ContactsManager.Instance.EnsureInSyncAsync(false);
     BaseDataManager.Instance.NeedRefreshBaseData = true;
     App._uriMapper.NeedHandleActivation          = true;
 }
        public void FromParent()
        {
            string playlistsPath = Path.Combine(OutputPath, "FromParent");

            Directory.CreateDirectory(playlistsPath);
            string subDirectory = Path.Combine(playlistsPath, "ChildFolder");

            Directory.CreateDirectory(subDirectory);
            string parentPlaylist     = "5LegacySongs.bPlist";
            string parentPlaylistPath = Path.Combine(playlistsPath, parentPlaylist);
            string childPlaylist      = "MDBB.blist";
            string childPlaylistPath  = Path.Combine(subDirectory, childPlaylist);

            if (!File.Exists(parentPlaylistPath))
            {
                File.Copy(Path.Combine(TestTools.DataFolder, "GetPlaylistTests", parentPlaylist), parentPlaylistPath);
            }
            if (!File.Exists(childPlaylistPath))
            {
                File.Copy(Path.Combine(TestTools.DataFolder, "BlisterPlaylists", childPlaylist), childPlaylistPath);
            }
            PlaylistManager manager = new PlaylistManager(playlistsPath, new LegacyPlaylistHandler(), new BlistPlaylistHandler());

            Assert.IsTrue(manager.HasChildren);
            PlaylistManager childManager = manager.GetChildManagers().First();

            childManager.SupportsExtension("bplist");
            IPlaylistHandler?handler = childManager.GetHandlerForExtension("bplist");

            Assert.IsNotNull(handler);
            handler = childManager.GetHandler <LegacyPlaylistHandler>();
            Assert.IsNotNull(handler);
            string[] supportedExtensions = childManager.GetSupportedExtensions();
            Assert.AreEqual(3, supportedExtensions.Length);
        }
示例#18
0
        public void Should_AddSongsToPlaylistAndReturnHowAdded_When_CalledUpdatePlaylist()
        {
            //Arrange
            Playlist    playlistToUpdate = new Playlist(1, "Testing"); // its empty at the beginning.
            Song        song1            = new Song(1, "The Weeknd", "The Hills", GenreName.Pop, 2015, 1, "");
            Song        song2            = new Song(2, "Alicja Majewska", "Żyć się chce", GenreName.Pop, 2019, 1, "");
            Song        song3            = new Song(3, "Selah Sue", "Crazy Vibes", GenreName.Jazz, 2011, 1, "");
            List <Song> allSongs         = new List <Song>();

            allSongs.Add(song1);
            allSongs.Add(song2);
            allSongs.Add(song3);
            List <int> chosedSongIds = new List <int>();

            chosedSongIds.Add(1);
            chosedSongIds.Add(3);  //add ids of song1, song3.
            var playlistServiceMock = new Mock <IPlaylistService>();
            var songServiceMock     = new Mock <ISongService>();

            songServiceMock.Setup(m => m.GetAllItems()).Returns(allSongs);
            playlistServiceMock.Setup(m => m.GetPlaylistById(1)).Returns(playlistToUpdate);
            playlistServiceMock.Setup(m => m.ReturnSongsAsidePlaylist(allSongs, playlistToUpdate)).Returns(allSongs);

            var playlistManager = new PlaylistManager(new MenuView(), songServiceMock.Object, playlistServiceMock.Object);
            //Act
            var result1 = playlistManager.UpdatePlaylist(1, chosedSongIds);

            //Assert
            result1.Should().BeOfType(typeof(int));
            result1.Should().Be(2);
            playlistToUpdate.Content.Should().HaveCount(2);
            playlistToUpdate.Content.Should().Contain(song1);
            playlistToUpdate.Content.Should().Contain(song3);
            playlistToUpdate.Content.Should().NotContain(song2);
        }
示例#19
0
 public void ProcessJob(JobResult job)
 {
     if (job.Successful)
     {
         HistoryManager.TryUpdateFlag(job.Song, HistoryFlag.Downloaded);
         var recentPlaylist = Config.RecentPlaylistDays > 0 ? PlaylistManager.GetPlaylist(BuiltInPlaylist.BeatSyncRecent) : null;
         recentPlaylist?.TryAdd(job.Song);
     }
     else if (job.DownloadResult.Status != DownloadResultStatus.Success)
     {
         if (job.DownloadResult.HttpStatusCode == 404)
         {
             // Song isn't on Beat Saver anymore, keep it in history so it isn't attempted again.
             Logger.log?.Debug($"Setting 404 flag for {job.Song.ToString()}");
             if (!HistoryManager.TryUpdateFlag(job.Song, HistoryFlag.NotFound))
             {
                 Logger.log?.Debug($"Failed to update flag for {job.Song.ToString()}");
             }
             PlaylistManager.RemoveSongFromAll(job.Song);
         }
         else
         {
             // Download failed for some reason, remove from history so it tries again.
             HistoryManager.TryRemove(job.Song.Hash);
         }
     }
     else if (job.ZipResult?.ResultStatus != ZipExtractResultStatus.Success)
     {
         // Unzipping failed for some reason, remove from history so it tries again.
         HistoryManager.TryRemove(job.Song.Hash);
     }
 }
示例#20
0
        public void Should_ReturnZero_When_CalledUpdatePlaylistWithEmptySongIds()
        {
            //Arrange
            Playlist    playlistToUpdate = new Playlist(1, "Testing"); // its empty at the beginning.
            Song        song1            = new Song(1, "The Weeknd", "The Hills", GenreName.Pop, 2015, 1, "");
            Song        song2            = new Song(2, "Alicja Majewska", "Żyć się chce", GenreName.Pop, 2019, 1, "");
            Song        song3            = new Song(3, "Selah Sue", "Crazy Vibes", GenreName.Jazz, 2011, 1, "");
            List <Song> allSongs         = new List <Song>();

            allSongs.Add(song1);
            allSongs.Add(song2);
            allSongs.Add(song3);

            var playlistServiceMock = new Mock <IPlaylistService>();
            var songServiceMock     = new Mock <ISongService>();

            songServiceMock.Setup(m => m.GetAllItems()).Returns(allSongs);
            playlistServiceMock.Setup(m => m.GetPlaylistById(1)).Returns(playlistToUpdate);
            playlistServiceMock.Setup(m => m.ReturnSongsAsidePlaylist(allSongs, playlistToUpdate)).Returns(allSongs);

            var playlistManager = new PlaylistManager(new MenuView(), songServiceMock.Object, playlistServiceMock.Object);
            //Act
            var result = playlistManager.UpdatePlaylist(1, new List <int>());

            //Assert
            result.Should().BeOfType(typeof(int));
            result.Should().Be(0);
        }
示例#21
0
 public static void BroadcastTrackIfNeeded(BackgroundAudioPlayer player, List <AudioObj> playlist = null, PlaybackSettings settings = null, bool allowCache = false, bool bypassChecks = false)
 {
     try
     {
         if (!bypassChecks && (player.PlayerState != Microsoft.Phone.BackgroundAudio.PlayState.Playing || (DateTime.Now - AudioTrackHelper._lastTimeBroadcastAttempt).TotalSeconds < 3.0))
         {
             return;
         }
         AudioTrackHelper._lastTimeBroadcastAttempt = DateTime.Now;
         if (settings == null)
         {
             settings = PlaylistManager.ReadPlaybackSettings(allowCache);
             if (!settings.Broadcast)
             {
                 return;
             }
         }
         AudioTrack track = player.Track;
         if (track == null || track.GetTagId() == null)
         {
             return;
         }
         AudioTrackHelper.EnsureAppGlobalStateInitialized();
         AudioService.Instance.StatusSet("", track.GetTagId(), (Action <BackendResult <long, ResultCode> >)(res => {}));
     }
     catch (Exception ex)
     {
         Logger.Instance.Error("Broadcast track failed", ex);
     }
 }
示例#22
0
        /// <summary>
        /// Initializes the playlist generation module
        /// </summary>
        public void Initialize()
        {
            // create playlist generation manager, load it and register with container
            PlaylistManager playlistGenerationManager = Container.Resolve <PlaylistManager>();

            playlistGenerationManager.Load(PlaylistGeneratorsXMLFile);
            Container.RegisterInstance <PlaylistManager>(playlistGenerationManager);

            // save the generators on exit
            Application.Current.Exit +=
                (sender, e) =>
            {
                try
                {
                    playlistGenerationManager.Save(PlaylistGeneratorsXMLFile);
                }
                catch { }
            };

            // create playlist generation view model
            PlaylistGenerationViewModel playlistGenerationVM = Container.Resolve <PlaylistGenerationViewModel>();

            playlistGenerationManager.GeneratorAdded += playlistGenerationVM.OnGeneratorAdded;

            // set selected if first tab in tabs region
            if (!RegionManager.Regions["TabsRegion"].Views.Any())
            {
                playlistGenerationVM.IsSelected = true;
            }

            // register view
            RegionManager.RegisterViewWithRegion("TabsRegion", () => playlistGenerationVM);
        }
示例#23
0
        public void GetData(GenericCollectionViewModel <List <AudioObj>, AudioHeader> caller, int offset, int count, Action <BackendResult <List <AudioObj>, ResultCode> > callback)
        {
            Playlist playlist = PlaylistManager.LoadTracksFromIsolatedStorage(true);

            if (playlist.Tracks == null)
            {
                playlist.Tracks = (new List <AudioObj>());
            }
            List <AudioObj> resultData = playlist.Tracks;

            if (this.Shuffle)
            {
                resultData = new List <AudioObj>();
                List <int> .Enumerator enumerator = playlist.ShuffledIndexes.GetEnumerator();
                try
                {
                    while (enumerator.MoveNext())
                    {
                        int current = enumerator.Current;
                        resultData.Add(playlist.Tracks[current]);
                    }
                }
                finally
                {
                    enumerator.Dispose();
                }
            }
            callback(new BackendResult <List <AudioObj>, ResultCode>(ResultCode.Succeeded, resultData));
        }
        public void TestSearchAndAddTrack()
        {
            UserManager     userManager     = (UserManager)DbInitializer.CreateUserManager();
            PlaylistManager playlistManager = (PlaylistManager)DbInitializer.CreatePlaylistManager();
            var             user            = userManager.ReadUser("*****@*****.**");

            var playlistje = playlistManager.CreatePlaylistForUser("testPlaylist", "teste", "tesje", 2, true, null, user);
            var result     = controller.SearchTrack("kshmr - bazaar");
            var tracks     = result.Data as List <Track>;

            Assert.IsNotNull(tracks);
            Assert.IsTrue(tracks.Any(t => t.Title.ToString().ToLower().Contains("bazaar")));

            var addTrackResult = controller.AddTrack(playlistje.Id, tracks.First().TrackSource.TrackId);

            Assert.IsNotNull(addTrackResult as JsonResult); // if the result is a JsonResult, the track is added successfully

            var playlistResult = controller.View(playlistje.Key) as ViewResult;

            Assert.IsNotNull(playlistResult);

            playlistje = playlistResult.Model as Playlist;

            Assert.IsNotNull(playlistje);
            Assert.AreEqual(1, playlistje.PlaylistTracks.Count);
        }
示例#25
0
        public void TotalDurationWithMetadataLoading()
        {
            var manager = new PlaylistManager();

            Assert.AreEqual(TimeSpan.Zero, manager.TotalDuration);
            var firstFile = new MockMusicFile(new MusicMetadata(TimeSpan.FromSeconds(10), 0), "");

            manager.AddAndReplaceItems(new[] { new PlaylistItem(firstFile) });

            var secondMetadata = new MusicMetadata(TimeSpan.FromSeconds(20), 0);
            var secondFile     = new MusicFile(async x =>
            {
                await Task.Delay(10);
                return(secondMetadata);
            }, "");

            manager.AddItems(new[] { new PlaylistItem(secondFile) });
            Assert.IsTrue(manager.IsTotalDurationEstimated);
            Assert.AreEqual(TimeSpan.FromSeconds(20), manager.TotalDuration);
            AssertHelper.PropertyChangedEvent(manager, x => x.TotalDuration, () => secondFile.GetMetadataAsync().GetResult());
            Assert.IsFalse(manager.IsTotalDurationEstimated);
            Assert.AreEqual(TimeSpan.FromSeconds(30), manager.TotalDuration);

            var thirdFile = new MockMusicFile(new MusicMetadata(TimeSpan.FromSeconds(30), 0), "");

            AssertHelper.PropertyChangedEvent(manager, x => x.TotalDuration, () => manager.AddItems(new[] { new PlaylistItem(thirdFile) }));
            Assert.AreEqual(TimeSpan.FromSeconds(60), manager.TotalDuration);
        }
示例#26
0
        //load pl
        public static IList <Test> LoadPlaylist(Project project, string playlistpath)
        {
            IList <Test> test_list = null;

            try
            {
                PlaylistManager pl_manager = new PlaylistManager(project);
                pl_manager.LoadPlaylist(playlistpath);
                if (pl_manager.IsPlaylistLoaded() == true)
                {
                    Log(String.Format("Playlist loaded:- {0}", playlistpath));
                }
                else
                {
                    Log("Error loading playlist");
                }
                test_list = project.GetTests();
                Log(String.Format("{0} tests found", test_list.Count.ToString()));
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception:-{0}", e.ToString());
            }
            return(test_list);
        }
        protected override void OnInitialize()
        {
            base.OnInitialize();

            musicFileContext = Container.GetExportedValue <MockMusicFileContext>();
            musicFiles       = new ObservableCollection <MusicFile>()
            {
                musicFileContext.Create(@"C:\Users\Public\Music\Dancefloor\Culture Beat - Serenity.wav"),
                musicFileContext.Create(@"C:\Culture Beat - Serenity - Epilog.wma"),
            };
            selectionService = Container.GetExportedValue <SelectionService>();
            selectionService.Initialize(musicFiles);

            playlistManager             = new PlaylistManager();
            controller                  = Container.GetExportedValue <PlaylistController>();
            controller.PlaylistSettings = new PlaylistSettings();
            controller.PlaylistManager  = playlistManager;
            controller.Initialize();
            controller.Run();

            shellService = Container.GetExportedValue <ShellService>();
            var view = shellService.PlaylistView;

            viewModel = ViewHelper.GetViewModel <PlaylistViewModel>((IView)view);
        }
示例#28
0
        /// <summary>
        /// Load the master playlist and find the three playlists used to render the gui
        /// default will be default playlist that starts playing
        /// channels will render all channels as selectable buttons
        /// homecontrol will be rendered in a browser control
        /// </summary>
        private void LoadMasterPlaylist()
        {
            // Get master playlist from configuration
            string master = Properties.Settings.Default.MasterPlaylist;

            if (string.IsNullOrWhiteSpace(master))
            {
                throw new Exception("Master playlist not found in AllInOnePlayer.exe.config");
            }

            this.MasterPlaylist = PlaylistManager.Create(new Uri(this.AbsolutePaths(master)), true, "master", false);

            // Get default playlist from master playlist
            ZonePlaylist list;

            this.TryGetPlaylistItem(this.MasterPlaylist.PlayList.Where(playList => playList.ItemName.ToLower().CompareTo(NameDefaultPlaylist) == 0).FirstOrDefault(), out list);
            this.DefaultPlaylist = list;

            // Get channel playlist from master playlist
            this.TryGetPlaylistItem(this.MasterPlaylist.PlayList.Where(playList => playList.ItemName.ToLower().CompareTo(NameChannelPlaylist) == 0).FirstOrDefault(), out list);
            this.ChannelPlaylist = list;

            // Get homecontrol playlist from master playlist
            this.TryGetPlaylistItem(this.MasterPlaylist.PlayList.Where(playList => playList.ItemName.ToLower().CompareTo(NameHomeControlPlaylist) == 0).FirstOrDefault(), out list);
            this.HomeControlPlaylist = list;
        }
示例#29
0
        public bool createPlaylist(string _title, string _description)
        {
            if (!String.IsNullOrEmpty(_title))
            {
                m_newKey = PlaylistManager.createNewPlaylist(_title.Trim(), _description.Trim(), PlaylistManager.PLTypes.Simple);
                if (!String.IsNullOrEmpty(m_newKey))
                {
                    List <Track> currentList = PlaylistManager.currentTrackList;
                    PlaylistManager.currentTrackList = new List <Track>();
                    var entries =
                        from entry in m_importFile.Entries
                        where entry.Matched
                        select entry;

                    foreach (ImportEntry importEntry in entries)
                    {
                        PlaylistManager.addTrack(m_newKey, importEntry.Key, importEntry.TrackType);
                    }
                    PlaylistManager.currentTrackList = currentList;
                    m_importFile = null;
                    return(true);
                }
            }
            return(false);
        }
示例#30
0
    private void Awake()
    {
        _instance = this;

        _dropdown = FindObjectOfType <Dropdown>();

        playButton = GameObject.Find("Play Button");
    }
示例#31
0
        public SpShell(AutoResetEvent aSpotifyEvent, string aUsername, string aPassword, string aBlob, bool aSelftest, ConsoleReader aReader, byte[] aAppKey)
        {
            iReader = aReader;
            iSpotifyEvent = aSpotifyEvent;
            SpotifySessionConfig config = new SpotifySessionConfig();
            config.ApiVersion = 12;
            config.CacheLocation = aSelftest ? "" : "tmp";
            config.SettingsLocation = aSelftest ? "" : "tmp";
            config.ApplicationKey = aAppKey;
            config.UserAgent = "spshell#";
            config.Listener = this;

            try
            {
                iSession = SpotifySession.Create(config);
            }
            catch (SpotifyException e)
            {
                Console.Error.WriteLine("Failed to create session: {0}", e.Message);
                throw;
            }

            iBrowser = new Browser(iSession, this, aReader);
            iSearcher = new Searcher(iSession, aReader);
            iTopLister = new TopLister(iSession, aReader);
            iMessaging = new Messaging(iSession, aReader, iBrowser);
            iStarManager = new StarManager(iSession, aReader, iBrowser);
            iPlaylistManager = new PlaylistManager(iSession, aReader, iBrowser);

            iCommands = new ConsoleCommandDictionary(CmdDone)
                        {
                            { "log",      CmdLog,                  "Enable/Disable logging to console (default off)" },
                            { "logout",   CmdLogout,               "Logout and exit app" },
                            { "exit",     CmdLogout,               "Logout and exit app" },
                            { "quit",     CmdLogout,               "Logout and exit app" },
                            { "browse",   iBrowser.CmdBrowse,      "Browse a Spotify URL" },
                            { "search",   iSearcher.CmdSearch,     "Search" },
                            { "whatsnew", iSearcher.CmdWhatsNew,   "List new albums" },
                            { "toplist",  iTopLister.CmdTopList,   "Browse toplists" },
                            { "post",     iMessaging.CmdPost,      "Post track to a user's inbox" },
                            { "inbox",    iMessaging.CmdInbox,     "View inbox" },
                            { "star",     iStarManager.CmdStar,    "Star a track" },
                            { "unstar",   iStarManager.CmdUnstar,  "Unstar a track" },
                            { "starred",  iStarManager.CmdStarred, "List all starred tracks" },
                            { "playlists",            iPlaylistManager.CmdPlaylists,           "List playlists" },
                            { "playlist",             iPlaylistManager.CmdPlaylist,            "List playlist contents" },
                            { "set_autolink",         iPlaylistManager.CmdSetAutolink,         "Set autolinking state" },
                            { "add_folder",           iPlaylistManager.CmdAddFolder,           "Add playlist folder" },
                            { "update_subscriptions", iPlaylistManager.CmdUpdateSubscriptions, "Update playlist subscription info" },
                            { "add",                  iPlaylistManager.CmdAddTrack,            "Add track to playlist" },
                            { "offline",              iPlaylistManager.CmdPlaylistOffline,     "Set offline mode for a playlist" },
                        };
            iCommands.Add("help", iCommands.CmdHelp, "This help");

            try
            {
                if (aUsername == null)
                {
                    iSession.Relogin();
                    var reloginname = iSession.RememberedUser();
                    Console.Error.WriteLine("Trying to relogin as user {0}", reloginname);
                }
                else
                {
                    iSession.Login(aUsername, aPassword, true, aBlob);
                }
            }
            catch (SpotifyException e)
            {
                if (e.Error == SpotifyError.NoCredentials)
                {
                    Console.Error.WriteLine("No stored credentials");
                    throw;
                }
            }
        }