Пример #1
0
        protected override void RenderPackages()
        {
            PluginsListBox.Clear();

            PluginsListBox.Loading.ShowLoading(PluginsListBox.PackageListPane);
            AppHost.DoEvents();

            var searchText = PluginsListBox.Search.Text;
            var packages   = InstalledPlugins.OfType <PackagePluginDescriptor>().Select(p => p.Package).ToList();

            var updatePackages = new List <Tuple <IPackageRepository, IPackage> >();

            foreach (var gallery in AppHost.Plugins.GetPluginGalleries())
            {
                var repository = PackageRepositoryFactory.Default.CreateRepository(gallery.Location);

                List <IPackage> updates;
                try
                {
                    updates = repository.GetUpdates(packages, PluginsListBox.IncludePrereleases, false).ToList();
                }
                catch (ArgumentException ex)
                {
                    AppHost.Output.LogException(ex);
                    continue;
                }

                updatePackages.AddRange(updates.Select(package => new Tuple <IPackageRepository, IPackage>(repository, package)));
            }

            var listBoxItems = new List <PluginsListBoxItem>();

            foreach (var tuple in updatePackages)
            {
                if (!tuple.Item2.Title.IsFilterMatch(searchText))
                {
                    continue;
                }

                var plugin = new PackagePluginDescriptor(tuple.Item1, tuple.Item2);
                listBoxItems.Add(new PluginsListBoxItem(this, plugin, false, false, true, false));
            }

            PluginsListBox.RenderPlugins(listBoxItems);
        }
Пример #2
0
        protected override void RenderPackages()
        {
            PluginsListBox.Clear();

            PluginsListBox.Loading.ShowLoading(PluginsListBox.PackageListPane);
            AppHost.DoEvents();

            var searchText   = PluginsListBox.Search.Text;
            var listBoxItems = new List <PluginsListBoxItem>();

            foreach (var plugin in InstalledPlugins)
            {
                if (!plugin.Title.IsFilterMatch(searchText))
                {
                    continue;
                }

                listBoxItems.Add(new PluginsListBoxItem(this, plugin, false, true, false, false));
            }

            PluginsListBox.RenderPlugins(listBoxItems);
        }
Пример #3
0
        private void AddPlugin_OnClick(object sender, RoutedEventArgs e)
        {
            var plugin = ((ComboBoxItemViewModel)PluginsComboBox.SelectedItem)?.Value;

            if (plugin == null)
            {
                return;
            }

            var comboBoxItem = StatesComboBox.SelectedItem as ComboBoxItemViewModel;
            var state        = comboBoxItem?.Value as State;

            ProfileViewModel.SelectedMapping.AddPlugin(Profile.Context.PluginManager.GetNewPlugin(plugin), state?.Guid);

            if (ProfileViewModel.SelectedMapping.Plugins.Count == 1)
            {
                PopulatePluginsComboBox();
            }

            PluginsListBox.Items.Refresh();
            PluginsListBox.SelectedIndex = PluginsListBox.Items.Count - 1;
            PluginsListBox.ScrollIntoView(PluginsListBox.SelectedItem);
        }
Пример #4
0
        protected override void RenderPackages()
        {
            PluginsListBox.Clear();
            PluginsListBox.SupportPrereleases = true;

            PluginsListBox.Loading.ShowLoading(PluginsListBox.PackageListPane);
            AppHost.DoEvents();

            var plugins = new List <BasePluginDescriptor>();

            IPackageRepository repository;

            try
            {
                repository = PackageRepositoryFactory.Default.CreateRepository(Url);
            }
            catch (Exception ex)
            {
                AppHost.Output.LogException(ex);
                AppHost.MessageBox(string.Format("The URL of the repository \"{0}\" is invalid:\n\n{1}\n\n{2}", FeedName, Url, ex.Message), "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            var packages = new List <IPackage>();

            try
            {
                var query = repository.Search(PluginsListBox.Search.Text, PluginsListBox.IncludePrereleases);

                query = query.OrderByDescending(p => p.DownloadCount).ThenBy(p => p.Title).Skip(PageIndex * 10);

                packages = query.ToList().GroupBy(p => p.Id).Select(y => y.OrderByDescending(p => p.Version).First()).ToList();
            }
            catch (WebException ex)
            {
                AppHost.MessageBox("Failed to communicated with the server: " + Url + "\n\nThe server responded with: " + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
            catch (UriFormatException)
            {
                AppHost.MessageBox("The URL is invalid: " + Url, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }

            var listBoxItems = new List <PluginsListBoxItem>();

            var count = 0;

            foreach (var package in packages)
            {
                var plugin = new PackagePluginDescriptor(repository, package);
                plugins.Add(plugin);

                count++;
                if (count == 10)
                {
                    break;
                }

                var isInstalled = InstalledPlugins.OfType <PackagePluginDescriptor>().Any(p => p.Package.Id == package.Id && p.Package.Version == package.Version);

                listBoxItems.Add(new PluginsListBoxItem(this, plugin, true, false, false, isInstalled));
            }

            var total = PageIndex * 10 + packages.Count;

            var currentPage = PageIndex;
            var firstPage   = currentPage - 2;

            if (firstPage < 0)
            {
                firstPage = 0;
            }

            var lastPage = total % 10 == 0 ? total / 10 - 1 : total / 10;

            if (lastPage > firstPage + 4)
            {
                lastPage = firstPage + 4;
            }

            PluginsListBox.RenderPlugins(listBoxItems);

            PluginsListBox.RenderPager(currentPage, firstPage, lastPage);
        }
Пример #5
0
 public override void ClearControl()
 {
     pluginsListBox = null;
 }