Beispiel #1
0
        public static void OnOperation(long musicId, Operation op, string param, bool ignoreCommand, bool track)
        {
            if (Program.LicenseExpired == true)
            {
                return;
            }

            if (MuteFm.UiPackage.WinSoundServerSysTray.Instance == null)
            {
                return;
            }

            MuteFm.UiPackage.WinSoundServerSysTray.Instance.Invoke((System.Windows.Forms.MethodInvoker) delegate
            {
                if ((musicId == SmartVolManagerPackage.BgMusicManager.ActiveBgMusic.Id) && ((op == Operation.Play) || (op == Operation.Unmute)))
                {
                    MuteFm.SmartVolManagerPackage.BgMusicManager.PerformOperation(musicId, Operation.ClearHistory, "", ignoreCommand);
                }

                if (op == Operation.Show)
                {
                    System.Threading.Thread.Sleep(250); // Ensure that window is shown after click sets focus to browser (if run in extension); was 750
                }
                // Queue up background music if a foreground sound is active
                // If user clicked play or unmute for bgmusic and music is automuted and countdown hasn't started, then note that user wants bgmusic and smartmute it but don't show fade messages or let it make sound [i.e. queue it up]
                if ((musicId == SmartVolManagerPackage.BgMusicManager.ActiveBgMusic.Id) &&
                    (((op == Operation.Play) || (op == Operation.Unmute)) &&
                     (SmartVolManagerPackage.BgMusicManager.EffectiveSilenceDateTime == DateTime.MaxValue) &&
                     (!SmartVolManagerPackage.BgMusicManager.BgMusicHeard) &&
                     (SmartVolManagerPackage.BgMusicManager.MuteFmConfig.GeneralSettings.AutoMuteEnabled)))
                {
                    MuteFm.SmartVolManagerPackage.BgMusicManager.UserWantsBgMusic = true;
                    MuteFm.SmartVolManagerPackage.BgMusicManager.PerformOperation(musicId, Operation.AutoMutedPlay, param, ignoreCommand);
                    return;
                }
                else
                {
                    int x = 0;
                    x++;
                }

                MuteFm.SmartVolManagerPackage.BgMusicManager.PerformOperation(musicId, op, param, ignoreCommand);

                if ((musicId == SmartVolManagerPackage.BgMusicManager.ActiveBgMusic.Id) || (op == Operation.ChangeMusic))
                {
                    // Extra logic because we know user chose to perform the operation
                    switch (op)
                    {
                    case Operation.Play:
                        SmartVolManagerPackage.BgMusicManager.AutoMuted = false;     // TODO
                        MuteFm.SmartVolManagerPackage.BgMusicManager.UserWantsBgMusic = true;
                        if (track)
                        {
                            TrackEvent("Play");
                        }
                        break;

                    case Operation.ChangeMusic:
                        SoundPlayerInfo playerInfo = SmartVolManagerPackage.BgMusicManager.FindPlayerInfo(musicId);
                        if (playerInfo != null)
                        {
                            SmartVolManagerPackage.BgMusicManager.UserMustClickPlay = false;     // reset it
                            if (playerInfo.Id <= 0)
                            {
                                MuteFmConfigUtil.AddSoundPlayerInfo(playerInfo, SmartVolManagerPackage.BgMusicManager.MuteFmConfig);
                                //MixerWebSocketServerHelper.SendCommand("BGMUSICSITES", new GetBgMusicSiteSendData());
                            }

                            SmartVolManagerPackage.BgMusicManager.AlbumArtFileName = "";
                            SmartVolManagerPackage.BgMusicManager.TrackName        = "";

                            if (SmartVolManagerPackage.BgMusicManager.ActiveBgMusic.IsWeb)     // Changed 8/16/13 to only do this if web-based
                            {
                                OnOperation(Operation.Stop);
                            }
                            else
                            {
                                OnOperation(Operation.Pause);
                            }

                            SmartVolManagerPackage.BgMusicManager.ActiveBgMusic  = playerInfo;
                            SmartVolManagerPackage.BgMusicManager.BgMusicPids    = new int[0];
                            SmartVolManagerPackage.BgMusicManager.BgMusicVolInit = false;
                            OnOperation(Operation.Play);
                            UiPackage.UiCommands.UpdateUiForState();

                            // If shows up as a fgmusic but not as a bgmusic, add to bgmusics and remove from fgmusic
                            if (MuteFmConfigUtil.FindBgMusic(playerInfo.UrlOrCommandLine, SmartVolManagerPackage.BgMusicManager.MuteFmConfig) == null)
                            {
                                long tempId = playerInfo.Id;
                                MuteFmConfigUtil.AddSoundPlayerInfo(playerInfo, SmartVolManagerPackage.BgMusicManager.MuteFmConfig);
                                playerInfo.Id = tempId;

                                var fgMusicList = new List <MuteFm.SoundPlayerInfo>(SmartVolManagerPackage.BgMusicManager.FgMusics);
                                fgMusicList.Remove(playerInfo);
                                SmartVolManagerPackage.BgMusicManager.FgMusics = fgMusicList.ToArray();
                            }

                            // Save current music as new default
                            MuteFm.SmartVolManagerPackage.BgMusicManager.MuteFmConfig.ActiveBgMusicId = musicId;
                            MuteFmConfigUtil.Save(MuteFm.SmartVolManagerPackage.BgMusicManager.MuteFmConfig);
                        }
                        break;

                    case Operation.Stop:
                        MuteFm.SmartVolManagerPackage.BgMusicManager.UserWantsBgMusic = false;
                        if (_autoShowAfterPlayWorker != null)
                        {
                            _autoShowAfterPlayWorker.CancelAsync();
                            _autoShowAfterPlayWorker = null;
                        }
                        break;

                    case Operation.Pause:

                    case Operation.Mute:
                        MuteFm.SmartVolManagerPackage.BgMusicManager.UserWantsBgMusic = false;

                        _autoShowAfterPlayWorker = new System.ComponentModel.BackgroundWorker();
                        _autoShowAfterPlayWorker.WorkerSupportsCancellation = true;
                        _autoShowAfterPlayWorker.DoWork += new DoWorkEventHandler(_isPausing_DoWork);
                        _autoShowAfterPlayWorker.RunWorkerAsync();

                        //MuteApp.SmartVolManagerPackage.BgMusicManager.PerformOperation(Operation.ClearHistory);
                        break;

                    case Operation.Unmute:
                        MuteFm.SmartVolManagerPackage.BgMusicManager.UserWantsBgMusic = true;
                        break;

                    case Operation.Exit:
                        Exit();
                        break;
                    }
                }
            });
            if (op == Operation.Exit)
            {
                Exit();

                /*//UiPackage.UiCommands.SetTopText("Exiting mute.fm...", false);
                 * //System.Threading.Thread.Sleep(3000);
                 * WebBgMusicForm.Visible = false;
                 * WebBgMusicForm.Close();
                 * UiPackage.WinSoundServerSysTray.Instance.Close();
                 * Environment.Exit(0);
                 * //Application.Exit();*/
            }
        }