public override ConfigData.ExternalPlayer GetDefaultConfiguration()
        {
            ConfigData.ExternalPlayer config = base.GetDefaultConfiguration();

            config.SupportsMultiFileCommandArguments = true;

            return(config);
        }
        /// <summary>
        /// Gets the default configuration that will be pre-populated into the UI of the configurator.
        /// </summary>
        public override ConfigData.ExternalPlayer GetDefaultConfiguration()
        {
            ConfigData.ExternalPlayer config = base.GetDefaultConfiguration();

            config.LaunchType = ConfigData.ExternalPlayerLaunchType.WMCNavigate;

            return(config);
        }
        void lstPlayerType_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            PlayableExternalConfigurator uiConfigurator = PlayableItemFactory.Instance.GetPlayableExternalConfiguratorByName(ExternalPlayerName);

            ConfigData.ExternalPlayer externalPlayer = uiConfigurator.GetDefaultConfiguration();

            FillControlsFromObject(externalPlayer, uiConfigurator, false, false);
        }
        /// <summary>
        /// Gets the default configuration that will be pre-populated into the UI of the configurator.
        /// </summary>
        public override ConfigData.ExternalPlayer GetDefaultConfiguration()
        {
            ConfigData.ExternalPlayer config = base.GetDefaultConfiguration();

            // http://wiki.videolan.org/VLC_command-line_help

            config.SupportsMultiFileCommandArguments = true;

            // If you enable the full screen interface in VLC, you really don't need the splash screen.
            config.ShowSplashScreen = false;

            return(config);
        }
        public override void ConfigureUserSettings(ConfigData.ExternalPlayer currentConfiguration)
        {
            string iniPath = GetIniFilePath(currentConfiguration);

            if (string.IsNullOrEmpty(iniPath))
            {
                ConfigureUserSettingsIntoRegistry();
            }
            else
            {
                ConfigureUserSettingsIntoINIFile(iniPath);
            }
        }
示例#6
0
        /// <summary>
        /// Gets the default configuration that will be pre-populated into the UI of the configurator.
        /// </summary>
        public virtual ConfigData.ExternalPlayer GetDefaultConfiguration()
        {
            ConfigData.ExternalPlayer config = new ConfigData.ExternalPlayer();

            config.ExternalPlayerName = ExternalPlayerName;
            config.LaunchType         = ConfigData.ExternalPlayerLaunchType.CommandLine;
            config.SupportsPlaylists  = true;
            config.SupportsMultiFileCommandArguments = false;
            config.ShowSplashScreen = true;
            config.MinimizeMCE      = true;
            config.Args             = "{0}";

            return(config);
        }
示例#7
0
        //private DateTime startTime;
        protected override void PlayInternal(bool resume)
        {
            if (PlaybackController.IsPlaying)
            {
                PlaybackController.Stop(); //stop whatever is playing
            }
            //startTime = DateTime.Now; //grab this so we can attempt to determine how long we are playing the item
            //MediaBrowser.Library.Logging.Logger.ReportInfo("Playing external.  Duration: " + duration);
            MediaType type = MediaTypeResolver.DetermineType(path);

            ConfigData.ExternalPlayer p = configuredPlayers[type];
            string  args   = string.Format(p.Args, path);
            Process player = Process.Start(p.Command, args);

            Async.Queue("Ext Player Mgmt", () => ManageExtPlayer(player, p.MinimizeMCE, p.ShowSplashScreen));
        }
示例#8
0
        protected override void PlayInternal(bool resume)
        {
            if (PlaybackController.IsPlaying)
            {
                PlaybackController.Pause();
            }


            MediaType type = MediaTypeResolver.DetermineType(path);

            ConfigData.ExternalPlayer p = configuredPlayers[type];
            string args = string.Format(p.Args, path);

            Process.Start(p.Command, args);
            MarkWatched();
        }
示例#9
0
        private void btnAddPlayer_Click(object sender, RoutedEventArgs e)
        {
            List <MediaType> list = new List <MediaType>();
            // Provide a list of media types that haven't been used. This is to filter out the selection available to the end user.
            // Don't display media types for players that we already have.
            //
            // This also makes this scalable, we shouldn't have to adjust this code for new media types.
            Boolean found;

            foreach (MediaType item in Enum.GetValues(typeof(MediaType)))
            {
                // See if an external player has been configured for this media type.
                found = false;
                foreach (ConfigData.ExternalPlayer player in lstExternalPlayers.Items)
                {
                    if (player.MediaType == item)
                    {
                        found = true;
                        break;
                    }
                }
                // If a player hasn't been configured then make it an available option to be added
                if (!found)
                {
                    list.Add(item);
                }
            }

            var form = new SelectMediaTypeForm(list);

            form.Owner = this;
            form.WindowStartupLocation = WindowStartupLocation.CenterOwner;
            if (form.ShowDialog() == true)
            {
                ConfigData.ExternalPlayer player = new ConfigData.ExternalPlayer();
                player.MediaType = (MediaType)form.cbMediaType.SelectedItem;
                player.Args      = "\"{0}\""; // Assign a default parameter
                config.ExternalPlayers.Add(player);
                lstExternalPlayers.Items.Add(player);
                lstExternalPlayers.SelectedItem = player;
                SaveConfig();
            }
        }
        private static string GetIniFilePath(ConfigData.ExternalPlayer currentConfiguration)
        {
            string directory = Path.GetDirectoryName(currentConfiguration.Command);

            string path = Path.Combine(directory, "mpc-hc.ini");

            if (File.Exists(path))
            {
                return(path);
            }

            path = Path.Combine(directory, "mpc-hc64.ini");

            if (File.Exists(path))
            {
                return(path);
            }

            return(string.Empty);
        }
        public void UpdateObjectFromControls(ConfigData.ExternalPlayer externalPlayer)
        {
            PlayableExternalConfigurator uiConfigurator = PlayableItemFactory.Instance.GetPlayableExternalConfiguratorByName(ExternalPlayerName);

            ConfigData.ExternalPlayer externalPlayerDefault = uiConfigurator.GetDefaultConfiguration();

            externalPlayer.LaunchType         = externalPlayerDefault.LaunchType;
            externalPlayer.ExternalPlayerName = lstPlayerType.SelectedItem.ToString();

            externalPlayer.Args    = txtArguments.Text;
            externalPlayer.Command = txtCommand.Text;

            externalPlayer.MinimizeMCE      = chkMinimizeMce.IsChecked.Value;
            externalPlayer.ShowSplashScreen = chkShowSplashScreen.IsChecked.Value;
            //externalPlayer.HideTaskbar = chkHideTaskbar.IsChecked.Value;
            externalPlayer.SupportsMultiFileCommandArguments = chkSupportsMultiFileCommand.IsChecked.Value;
            externalPlayer.SupportsPlaylists = chkSupportsPLS.IsChecked.Value;

            externalPlayer.MediaTypes   = (lstMediaTypes.ItemsSource as EnumWrapperList <MediaType>).GetCheckedValues();
            externalPlayer.VideoFormats = (lstVideoFormats.ItemsSource as EnumWrapperList <VideoFormat>).GetCheckedValues();
        }
        public void FillControlsFromObject(ConfigData.ExternalPlayer externalPlayer, PlayableExternalConfigurator uiConfigurator, bool refreshMediaTypes, bool refreshVideoFormats)
        {
            lstPlayerType.SelectedItem = externalPlayer.ExternalPlayerName;

            txtArguments.Text = externalPlayer.Args;

            chkMinimizeMce.IsChecked      = externalPlayer.MinimizeMCE;
            chkShowSplashScreen.IsChecked = externalPlayer.ShowSplashScreen;
            //chkHideTaskbar.IsChecked = externalPlayer.HideTaskbar;
            chkSupportsMultiFileCommand.IsChecked = externalPlayer.SupportsMultiFileCommandArguments;
            chkSupportsPLS.IsChecked = externalPlayer.SupportsPlaylists;

            if (refreshMediaTypes)
            {
                EnumWrapperList <MediaType> mediaTypes = lstMediaTypes.ItemsSource as EnumWrapperList <MediaType>;
                mediaTypes.SetValues(externalPlayer.MediaTypes);
                SetListDataSource(lstMediaTypes, mediaTypes);
            }

            if (refreshVideoFormats)
            {
                EnumWrapperList <VideoFormat> videoFormats = lstVideoFormats.ItemsSource as EnumWrapperList <VideoFormat>;
                videoFormats.SetValues(externalPlayer.VideoFormats);
                SetListDataSource(lstVideoFormats, videoFormats);
            }

            SetControlVisibility(uiConfigurator);
            SetTips(uiConfigurator);

            if (string.IsNullOrEmpty(externalPlayer.Command))
            {
                AutoFillPaths(uiConfigurator);
            }
            else
            {
                txtCommand.Text = externalPlayer.Command;
            }
        }
        void lnkConfigureMyPlayer_Click(object sender, RoutedEventArgs e)
        {
            if (!ValidateUserInput())
            {
                return;
            }

            PlayableExternalConfigurator uiConfigurator = PlayableItemFactory.Instance.GetPlayableExternalConfiguratorByName(ExternalPlayerName);

            if (MessageBox.Show(uiConfigurator.ConfigureUserSettingsConfirmationMessage, "Configure Player", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
            {
                ConfigData.ExternalPlayer currentConfiguration = uiConfigurator.GetDefaultConfiguration();
                currentConfiguration.Command = txtCommand.Text;

                try
                {
                    uiConfigurator.ConfigureUserSettings(currentConfiguration);
                }
                catch
                {
                    MessageBox.Show("There was an error configuring some settings. Please open your player and verify them.");
                }
            }
        }
示例#14
0
 public virtual void ConfigureUserSettings(ConfigData.ExternalPlayer currentConfiguration)
 {
 }
 public void FillControlsFromObject(ConfigData.ExternalPlayer externalPlayer)
 {
     FillControlsFromObject(externalPlayer, PlayableItemFactory.Instance.GetPlayableExternalConfiguratorByName(externalPlayer.ExternalPlayerName), true, true);
 }
        /// <summary>
        /// Gets the default configuration that will be pre-populated into the UI of the configurator.
        /// </summary>
        public virtual ConfigData.ExternalPlayer GetDefaultConfiguration()
        {
            ConfigData.ExternalPlayer config = new ConfigData.ExternalPlayer();

            config.ExternalPlayerName = ExternalPlayerName;
            config.LaunchType = ConfigData.ExternalPlayerLaunchType.CommandLine;
            config.SupportsPlaylists = true;
            config.SupportsMultiFileCommandArguments = false;
            config.ShowSplashScreen = true;
            config.MinimizeMCE = true;
            config.Args = "{0}";

            return config;
        }