public PlaylistBuilder(MediaInfoKeeper p_keeper, IMonitorThreadInterface p_monitor) { try { wmp = p_monitor.PlayerObject as WindowsMediaPlayer; keeper = p_keeper; monitor = p_monitor; } catch (Exception e) { Log.Write(e); throw e; } }
/// <summary> /// Set all controls to correct state according to selected plugin /// </summary> /// <param name="newPlugin">Plugin was changed in settings</param> /// <param name="newKeeper">Keeper settings changed</param> private void StartOperations(bool newPlugin, bool newKeeper) { try { if ((Parameters.CurrentPlayerPlugin == PlayerPlugin.iTunes) || (Parameters.CurrentPlayerPlugin == PlayerPlugin.WMP)) { cmbSourcePlaylist.Items.Clear(); notifyIconMain.BalloonTipTitle = String.Format(iPlaylist.Resources.Labels.NotifyBaloonTitleFormat, Consts.Version, Parameters.CurrentPlayerPlugin.ToString()); notifyIconMain.BalloonTipText = String.Format(iPlaylist.Resources.Labels.NotifyBaloonText); notifyIconMain.Text = String.Format(iPlaylist.Resources.Labels.NotifyBaloonTitleFormat, Consts.Version, Parameters.CurrentPlayerPlugin.ToString()); tlsStatusText.Text = iPlaylist.Resources.Labels.DefaultStatus; // force to load version info lblMediaPlayerInfo.Text = Consts.Labels.EmptyLabel; if ((newPlugin) || (newKeeper)) { // this means that plugin was changed or usage of profile folder, so we need take care of it... // we need to stop existing monitor and keeper (if needed) if (monitor != null) { if (monitor.State == MonitorState.Started) { monitor.Stop(); } monitor = null; if (newKeeper) { if (keeper != null) { keeper.Save(); keeper.SaveSummary(); keeper = null; } } } } if (keeper == null) { keeper = new MediaInfoKeeper(Consts.Version, Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + Path.DirectorySeparatorChar + Consts.Parameters.FolderName); keeper.Load(); } if (monitor == null) { if (Parameters.CurrentPlayerPlugin == PlayerPlugin.iTunes) { monitor = new iTunesInterfaceLib.MonitorThread(keeper); } else { // this is WMP monitor = new WMPInterfaceLib.MonitorThread(keeper); } if (Parameters.MinimizeOnStart) { notifyIconMain.ShowBalloonTip(Consts.Labels.BaloonTimeout); } } // monitor is set, but not started yet, it will be started by screen update process // starting ticker process, giving it ability to start monitor timerScreenUpdate.Start(); if (Parameters.ShowPlayerControls) { showPlayerControlsToolStripMenuItem.Checked = true; } lblVersion.Text = Consts.Version; lblAssembly.Text = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); if (Parameters.PauseOnLock) { SystemEvents.SessionSwitch += SystemEvents_SessionSwitch; } keyPlayPause.Unregister(); keyNextTrack.Unregister(); keyPrevTrack.Unregister(); keyMediaNextTrack.Unregister(); keyMediaPrevTrack.Unregister(); keyMediaPlayPause.Unregister(); keyMediaStop.Unregister(); if (Parameters.AllowGlobalHotKeys) { keyPlayPause.Register(Parameters.HotKeyPlayPause, Parameters.HotKeyModifiers); keyNextTrack.Register(Parameters.HotKeyNextTrack, Parameters.HotKeyModifiers); keyPrevTrack.Register(Parameters.HotKeyPrevTrack, Parameters.HotKeyModifiers); keyMediaNextTrack.Register(Keys.MediaNextTrack, 0); keyMediaPrevTrack.Register(Keys.MediaPreviousTrack, 0); keyMediaPlayPause.Register(Keys.MediaPlayPause, 0); keyMediaStop.Register(Keys.MediaStop, 0); } } else { // TODO: show some error, cannot start operations until plugin is selected } } catch (Exception e) { Log.Write(e); } }
public MonitorThread(MediaInfoKeeper p_keeper) { checkPosThread = new Thread(checkPos); keeper = p_keeper; }