public void RefreshPluginsList(bool reload = true)
        {
            selectedPackagesId.Clear();

            tstSearch.TextChanged -= tstSearch_TextChanged;
            tstSearch.Text         = @"Search by Title or Authors";
            tstSearch.ForeColor    = SystemColors.InactiveCaption;
            tstSearch.TextChanged += tstSearch_TextChanged;
            tstSearch.Enabled      = false;

            lvPlugins.Items.Clear();
            tssLabel.Text                   = @"Retrieving tools from XrmToolBox portal...";
            tssProgress.Style               = ProgressBarStyle.Marquee;
            tssProgress.Visible             = true;
            tssPluginsCount.Visible         = false;
            splitContainer1.Panel2Collapsed = true;

            var bw = new BackgroundWorker();

            bw.DoWork += (sender, e) =>
            {
                allPlugins   = 0;
                newPlugin    = 0;
                updatePlugin = 0;

                var options = Options.Instance;

                if (reload)
                {
                    store.LoadNugetPackages();
                }
                var xtbPackages = store.XrmToolBoxPlugins.Plugins.OrderBy(p => p.Name);

                var lvic = new List <ListViewItem>();
                foreach (var xtbPackage in xtbPackages)
                {
                    allPlugins++;

                    if (xtbPackage.Action == PackageInstallAction.Unavailable &&
                        options.PluginsStoreShowIncompatible.HasValue &&
                        options.PluginsStoreShowIncompatible.Value == false)
                    {
                        continue;
                    }

                    if (xtbPackage.Action == PackageInstallAction.Install)
                    {
                        newPlugin++;

                        if (options.PluginsStoreShowNew.HasValue &&
                            options.PluginsStoreShowNew.Value == false)
                        {
                            continue;
                        }
                    }

                    if (xtbPackage.Action == PackageInstallAction.Update)
                    {
                        updatePlugin++;

                        if (options.PluginsStoreShowUpdates.HasValue &&
                            options.PluginsStoreShowUpdates.Value == false)
                        {
                            continue;
                        }
                    }

                    if (xtbPackage.Action == PackageInstallAction.None &&
                        options.PluginsStoreShowInstalled.HasValue &&
                        options.PluginsStoreShowInstalled.Value == false)
                    {
                        continue;
                    }

                    lvic.Add(xtbPackage.GetPluginsStoreItem());
                }
                e.Result = lvic;
            };
            bw.RunWorkerCompleted += (sender, e) =>
            {
                tssProgress.Visible = false;
                tssLabel.Text       = string.Empty;
                tstSearch.Enabled   = true;

                if (e.Error != null)
                {
                    MessageBox.Show(this, $@"An error occured when refreshing list: {e.Error.Message}", @"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                var items = (List <ListViewItem>)e.Result;

                tssPluginsCount.Text    = $@"Tools: {allPlugins} / New: {newPlugin} / Updates: {updatePlugin}";
                tssPluginsCount.Visible = true;

                lvPlugins.Items.AddRange(items.ToArray());
            };
            bw.RunWorkerAsync();
        }
Beispiel #2
0
        public void RefreshPluginsList(bool reload = true)
        {
            selectedPackagesId.Clear();

            tstSearch.Enabled = false;

            lvPlugins.Items.Clear();
            tssLabel.Text                   = @"Retrieving tools from XrmToolBox portal...";
            tssProgress.Style               = ProgressBarStyle.Marquee;
            tssProgress.Visible             = true;
            tssPluginsCount.Visible         = false;
            splitContainer1.Panel2Collapsed = true;

            var bw = new BackgroundWorker();

            bw.DoWork += (sender, e) =>
            {
                allPlugins   = 0;
                newPlugin    = 0;
                updatePlugin = 0;

                var options = Options.Instance;

                if (reload)
                {
                    store.LoadNugetPackages();
                }
                var xtbPackages = store.XrmToolBoxPlugins.Plugins.OrderBy(p => p.Name);

                lvic = new List <ListViewItem>();
                foreach (var xtbPackage in xtbPackages)
                {
                    allPlugins++;
                    lvic.Add(xtbPackage.GetPluginsStoreItem());

                    if (xtbPackage.Action == PackageInstallAction.Install)
                    {
                        newPlugin++;
                    }
                    else if (xtbPackage.Action == PackageInstallAction.Update)
                    {
                        updatePlugin++;
                    }
                }
            };
            bw.RunWorkerCompleted += (sender, e) =>
            {
                tssProgress.Visible = false;
                tssLabel.Text       = string.Empty;
                tstSearch.Enabled   = true;

                if (e.Error != null)
                {
                    MessageBox.Show(this, $@"An error occured when refreshing list: {e.Error.Message}", @"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                tssPluginsCount.Text    = $@"Tools: {allPlugins} / New: {newPlugin} / Updates: {updatePlugin}";
                tssPluginsCount.Visible = true;

                LoadCategories();
                FilterPlugins(tstSearch.Text == tstSearch.Tag?.ToString() ? string.Empty : tstSearch.Text);
            };
            bw.RunWorkerAsync();
        }