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"); } } ); }
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); } ); }
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"); } } }
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; }
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; }