예제 #1
0
 public void RemoveFromQueue(PlayHistoryViewModel PlayHistoryItem)
 {
     if (PlayHistoryItem != null)
     {
         repo.AnonSetTrackToStop(PlayHistoryItem.PlayHistoryId);
     }
 }
예제 #2
0
        public static void RefreshTrackQueue(object obj)
        {
            var track = new PlayHistoryViewModel();

            _playList         = PlayListController.Instance;
            _player           = MediaPlayerController.Instance;
            _jukeboxAutoqueue = JukeBoxController.Instance;
            using (var uow = new Uow(new MusicFarmerEntities()))
            {
                var repoVotes = new RepositoryVote(uow);
                InitializeRepos(uow);
                SetPlayerSettings();
                SetJukeBoxSettings();
                if (_player.IsMuted)
                {
                    return;
                }

                if (!_player.IsPlaying())
                {
                    ChangeTrack();
                }

                if (_playList.IsPlayingTrack() && !(_player.IsPlaying()))
                {
                    track = _playList.GetPlayingTrack();
                }
                else if ((_player.IsPlaying()) && (!(_playList.IsPlayingTrack())))
                {
                    //Trust me on this one.
                    //___________________________________________________
                    //| Stop the track to resync the DB with the Player  |
                    //|__________________________________________________|

                    _player.Stop();
                    _jukeboxAutoqueue.IncrementPosition();
                    return;
                }
                else if (_playList.HasTrackQueued() && !(_player.IsPlaying()))
                {
                    track = _playList.GetNextQueuedTrack();
                }
                else if (!_player.IsPlaying())
                {
                    SpinUpJukeBox();
                    return;
                }


                if (_player.IsPlaying())
                {
                    track = _playList.GetPlayingTrack();
                    SetPlayerVolumeBasedOnVotes(repoVotes.GetUpVotes(track.PlayHistoryId).Count, repoVotes.GetDownVotes(track.PlayHistoryId).Count);
                }
                else
                {
                    LoadNewTrack(track);
                }
            }
        }
예제 #3
0
 private static void LoadNewTrack(PlayHistoryViewModel track)
 {
     if (track.TrackId != 0)
     {
         PlayTrack(track.Track.TrackURL);
         _playList.SetPlayingTrack(track.PlayHistoryId);
     }
 }
예제 #4
0
        private void FormPlayHistory_Load(object sender, EventArgs e)
        {
            if (DesignMode)
            {
                return;
            }

            m_viewModel = new PlayHistoryViewModel();
            //CreatePlayWnd();

            ucSinglePlayWnd1.Init();
            UpdataTime();
            SetButtonStatus();
            SetPlayStatusText();
        }
예제 #5
0
        private void FormPlayHistory_Load(object sender, EventArgs e)
        {
            if (DesignMode)
            {
                return;
            }

            m_viewModel = new PlayHistoryViewModel();
            //CreatePlayWnd();

            ucSinglePlayWnd1.Init();
            UpdataTime();
            SetButtonStatus();
            SetPlayStatusText();

            new System.Threading.Thread(() => { System.Threading.Thread.Sleep(200); DoPlay(); }).Start();
        }
예제 #6
0
 public static PlayHistory ToData(this PlayHistoryViewModel item)
 {
     if (item == null)
     {
         return(null);
     }
     return(new PlayHistory
     {
         PlayHistoryId = item.PlayHistoryId,
         TrackId = item.TrackId,
         UserId = item.UserId,
         TimePlayed = item.TimePlayed,
         Track = item.Track,
         User = item.User,
         PlayCompleted = item.PlayCompleted
     });
 }
예제 #7
0
 public static PlayHistoryViewModel ToAPIModel(this PlayHistoryViewModel item)
 {
     if (item == null)
     {
         return(null);
     }
     return(new PlayHistoryViewModel
     {
         PlayHistoryId = item.PlayHistoryId,
         TrackId = item.TrackId,
         UserId = item.UserId,
         TimePlayed = item.TimePlayed,
         UserName = item.User.UserName,
         TrackName = item.Track != null ? item.Track.TrackName : "Unknown",
         PlayCompleted = item.PlayCompleted,
         IsPlaying = item.IsPlaying,
     });
 }
예제 #8
0
        public bool Queue(int _TrackId)
        {
            bool _state = false;

            if (!this.IsQueued(_TrackId))
            {
                var                  repo    = _uow.GetRepo <PlayHistory>();
                AuthHelper           _ah     = new AuthHelper(_uow);
                var                  _userId = _ah.SetupUser();
                PlayHistoryViewModel pvm     = new PlayHistoryViewModel
                {
                    TrackId = _TrackId,
                    UserId  = _userId,
                };

                repo.Add(pvm.ToData());
                repo.SaveChanges();
                _state = true;
            }
            return(_state);
        }
예제 #9
0
        static void Main(string[] args)
        {
            int JukeBoxWakeUp = 8;
            int JukeBoxSleep  = 18;

            Console.CursorVisible = false;
            Player = new WMPLib.WindowsMediaPlayer();
            Player.settings.volume = 50;
            var sleepTimer    = 0;
            var jukeBoxOffset = 0;

            using (var _uow = new Uow(new MusicFarmerEntities()))
            {
                var currentVolume = 0;
                RepositoryPlayHistory repo;
                RepositoryVote        repoVote;

                var spin = new ConsoleSpinner();
                while (true)
                {
                    repo     = new RepositoryPlayHistory(_uow);
                    repoVote = new RepositoryVote(_uow);
                    var currentList = repo.GetCurrentlyPlaying();
                    PlayHistoryViewModel _CurrentTrack = currentList.FirstOrDefault();

                    if (!currentList.Any())
                    {
                        if (repo.GetCurrentlyQueued().Any())
                        {
                            _CurrentTrack = repo.GetCurrentlyQueued().FirstOrDefault();
                            repo.SetTrackToPlay(_CurrentTrack.PlayHistoryId);
                        }
                        else
                        {
                            Console.Write("\rThe DJ has left the building... ");
                            spin.SleepTurn();
                            Thread.Sleep(1000);

                            if (DateTime.Now.Hour >= JukeBoxWakeUp && DateTime.Now.Hour <= JukeBoxSleep)
                            {
                                sleepTimer += 1;
                                if (sleepTimer >= 20)
                                {
                                    var jukeBoxRepo = new RepositoryJukeBox(_uow);
                                    List <JukeBoxViewModel> items = jukeBoxRepo.GetJukeBoxTracks();
                                    JukeBoxViewModel        jbvm  = items.ElementAt(jukeBoxOffset);
                                    repo.Queue(jbvm.TrackId);
                                    jukeBoxOffset += 1;
                                    if (jukeBoxOffset > items.Count())
                                    {
                                        jukeBoxOffset = 0;
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        RepositoryTrack repoTrack = new RepositoryTrack(_uow);
                        var             nextSong  = repoTrack.SearchTrackByName("").Find(i => i.TrackId == _CurrentTrack.TrackId).TrackURL;
                        Uri             songUri   = new Uri(nextSong);

                        Player.URL = nextSong;
                        Player.controls.play();
                        while (Player.playState == WMPPlayState.wmppsPlaying || Player.playState == WMPPlayState.wmppsBuffering || Player.playState == WMPPlayState.wmppsTransitioning)
                        {
                            sleepTimer    = 0;
                            _CurrentTrack = repo.GetCurrentlyPlaying().FirstOrDefault();
                            Thread.Sleep(500);
                            //Console.WriteLine("{0}", _CurrentTrack == null ? "" : _CurrentTrack.TrackName);

                            Console.Write("\r{0} / {1} Volume level: ({3})", Player.controls.currentPositionString, Player.currentMedia.durationString, _CurrentTrack == null ? "" : _CurrentTrack.TrackName, Player.settings.volume.ToString());
                            DJDrop(Player.controls.currentPosition, Player.currentMedia.duration);
                            spin.Turn();
                            try
                            {
                                if ((_CurrentTrack.PlayCompleted == true) || (_CurrentTrack == null))
                                {
                                    Console.Clear();
                                    break;
                                }
                            }
                            catch
                            {
                                Player.controls.stop();
                                Console.Clear();
                                break;
                            }

                            var currentVotes = repoVote.GetUpVotes(_CurrentTrack.PlayHistoryId).Count - repoVote.GetDownVotes(_CurrentTrack.PlayHistoryId).Count;
                            if (currentVotes < 0)
                            {
                                VolumeDown(50, currentVotes);
                            }
                            else if (currentVotes > 0)
                            {
                                VolumeUp(50, currentVotes);
                            }
                            else
                            {
                                Player.settings.volume = 50;
                            }
                        }
                        if (_CurrentTrack != null)
                        {
                            repo.AnonSetTrackToStop(_CurrentTrack.PlayHistoryId);
                            Console.Clear();
                        }
                    }
                }
            }
        }
예제 #10
0
        public MainViewModel(
            DashboardViewModel dashboardViewModel,
            LibraryViewModel libraryViewModel,
            PlaylistsViewModel playlistsViewModel,
            CurrentPlaylistViewModel currentPlaylistViewModel,
            CurrentTrackViewModel currentTrackViewModel,
            ArtistViewModel artistViewModel,
            LastFmViewModel lastFmViewModel,
            NewsViewModel newsViewModel,
            SearchViewModel searchViewModel,
            ArchiveViewModel archiveViewModel,
            PlayHistoryViewModel playHistoryViewModel,
            SystemInfoViewModel systemInfoViewModel,
            EditSettingsViewModel settingsViewModel,
            EditTrackViewModel editTrackViewModel,
            EditCriteriaPlaylistViewModel editCriteriaPlaylistViewModel,
            EditOrderedPlaylistViewModel editOrderedPlaylistViewModel,
            IMessenger messenger,
            IShowTabRequestHandler showTabRequester)
        {
            Tabs = new List <TabViewModelBase>
            {
                dashboardViewModel,
                libraryViewModel,
                playlistsViewModel,
                currentPlaylistViewModel,
                currentTrackViewModel,
                artistViewModel,
                lastFmViewModel,
                newsViewModel,
                searchViewModel,
                archiveViewModel,
                playHistoryViewModel,
                systemInfoViewModel,
                settingsViewModel,
                editTrackViewModel,
                editCriteriaPlaylistViewModel,
                editOrderedPlaylistViewModel,
            };

            _editCriteriaPlaylistViewModel = editCriteriaPlaylistViewModel;
            _editOrderedPlaylistViewModel  = editOrderedPlaylistViewModel;
            _editTrackViewModel            = editTrackViewModel;
            _settingsViewModel             = settingsViewModel;

            _messenger = messenger;

            _returnToTab = dashboardViewModel;

            SetSelectedTab(dashboardViewModel);

            ChangeTabCommand = new RelayCommand <TabViewModelBase>(OnChangingTab, CanChangeTab);

            showTabRequester.ShowEditTrackTab            += ShowEditTrackTab;
            showTabRequester.ShowSettingsTab             += ShowSettingsTab;
            showTabRequester.ShowEditCriteriaPlaylistTab += ShowEditCriteriaPlaylistTab;
            showTabRequester.ShowEditOrderedPlaylistTab  += ShowEditOrderedPlaylistTab;

            _editTrackViewModel.FinishedEditing            += OnFinishedEditing;
            _settingsViewModel.FinishedEditing             += OnFinishedEditing;
            _editCriteriaPlaylistViewModel.FinishedEditing += OnFinishedEditing;
            _editOrderedPlaylistViewModel.FinishedEditing  += OnFinishedEditing;

            playlistsViewModel.FavouritePlaylistsUpdated += OnFavouritePlaylistsUpdated;
        }