コード例 #1
0
        public void OpenConfiguration(bool showFullOptions)
        {
            Application.UIDeferredInvokeIfRequired(() =>
            {
                var properties = new Dictionary<string, object>();
                properties["Application"] = this;
                properties["ShowFull"] = showFullOptions;

                if (session != null)
                {
                    OpenMCMLPage("resx://MediaBrowser/MediaBrowser.Resources/ConfigPage", properties);
                    if (AvailablePluginsCollection == null || !AvailablePluginsCollection.Items.Any())
                        if (PackagesRetrieved)
                        {
                            RefreshPluginCollections();
                        }
                        else
                        {
                            InstalledPluginsCollection = new PluginItemCollection(new List<PluginItem>());
                            AvailablePluginsCollection = new PluginItemCollection(new List<PluginItem>());
                        }
                }
                else
                {
                    Logger.ReportError("Session is null in OpenPage");
                }
            }
            );
        }
コード例 #2
0
        public void RefreshPluginCollections()
        {
            Application.UIDeferredInvokeIfRequired(() =>
            {
                AvailablePluginsCollection = new PluginItemCollection(Packages);

                var installedPluginItems = new List<PluginItem>();

                foreach (var plugin in Kernel.Instance.Plugins)
                {
                    var current = plugin;
                    var catalogPlugin = AvailablePluginsCollection.Items.FirstOrDefault(i => i.TargetFilename.Equals(current.Filename, StringComparison.OrdinalIgnoreCase));
                    var installedPlugin = new PluginItem(catalogPlugin != null ? catalogPlugin.Info : new PackageInfo
                                                                                                          {
                                                                                                              name = current.Name,
                                                                                                              overview = current.Description,
                                                                                                              targetFilename = current.Filename
                                                                                                          });
                    installedPlugin.InstalledVersion = current.Version.ToString();
                    var catalogVersion = catalogPlugin != null ? catalogPlugin.Versions.FirstOrDefault(v => v.version == current.Version) : null;
                    installedPlugin.InstalledVersionClass = catalogVersion != null ? " (" + catalogVersion.classification.ToString() + ")" : "";
                    if (catalogPlugin != null)
                    {
                        catalogPlugin.InstalledVersion = installedPlugin.InstalledVersion;
                        catalogPlugin.InstalledVersionClass = installedPlugin.InstalledVersionClass;
                        installedPlugin.UpdateAvailable = catalogPlugin.UpdateAvailable = catalogPlugin.ValidVersions.Any(v => v.version > current.Version);
                    }
                    else
                    {
                        installedPlugin.NotInCatalog = true;
                    }

                    installedPluginItems.Add(installedPlugin);

                }

                InstalledPluginsCollection = new PluginItemCollection(installedPluginItems);
            }
            );
        }
コード例 #3
0
        public void OpenConfiguration(bool showFullOptions)
        {
            if (Microsoft.MediaCenter.UI.Application.ApplicationThread != Thread.CurrentThread)
            {
                Microsoft.MediaCenter.UI.Application.DeferredInvoke(_ => OpenConfiguration(showFullOptions));
            }
            else
            {
                var properties = new Dictionary<string, object>();
                properties["Application"] = this;
                properties["ShowFull"] = showFullOptions;

                if (session != null)
                {
                    session.GoToPage("resx://MediaBrowser/MediaBrowser.Resources/ConfigPage", properties);
                    if (AvailablePluginsCollection == null || !AvailablePluginsCollection.Items.Any())
                    if (PackagesRetrieved)
                    {
                        RefreshPluginCollections();
                    }
                    else
                    {
                        InstalledPluginsCollection = new PluginItemCollection(new List<PluginItem>());
                        AvailablePluginsCollection = new PluginItemCollection(new List<PluginItem>());
                    }
                }
                else
                {
                    Logger.ReportError("Session is null in OpenPage");
                }
            }
        }
コード例 #4
0
        public bool UpdateAllPlugins(PluginItemCollection installedPlugins, bool silent = false)
        {
            var success = false;
            foreach (var plugin in installedPlugins.Items.Where(p => p.UpdateAvailable))
            {
                if (!silent) _appRef.ProgressBox("Updating " + plugin.Name + "...");
                if (InstallPlugin(new RemotePlugin
                                      {
                                          SourceFilename = plugin.ValidVersions.OrderBy(v => v.version).Last().sourceUrl,
                                          Filename = plugin.TargetFilename
                                      }))
                {
                    plugin.UpdateAvailable = false;
                    plugin.UpdatePending = true;
                    success = true;
                    WriteToUpdateLog(String.Format("Plug-in {0} Updated to version {1} by user {2}", plugin.Name, plugin.ValidVersions.OrderBy(v => v.version).Last().versionStr, Kernel.CurrentUser.Name));
                }
                if (!silent) _appRef.ShowMessage = false;
            }

            installedPlugins.ResetUpdatesAvailable();
            return success;
        }
コード例 #5
0
        public bool UpdateAllPlugins(PluginItemCollection installedPlugins)
        {
            var success = false;
            foreach (var plugin in installedPlugins.Items.Where(p => p.UpdateAvailable))
            {
                _appRef.ProgressBox("Updating " + plugin.Name + "...");
                if (InstallPlugin(new RemotePlugin
                                      {
                                          SourceFilename = plugin.Versions.OrderBy(v => v.version).Last().sourceUrl,
                                          Filename = plugin.TargetFilename
                                      }))
                {
                    plugin.UpdateAvailable = false;
                    plugin.UpdatePending = true;
                    success = true;
                }
                _appRef.ShowMessage = false;
            }

            installedPlugins.ResetUpdatesAvailable();
            return success;
        }