Пример #1
0
        private async void OnButtonInstallRemoveClick(object sender, string pluginUUID)
        {
            if (_pluginInfoDetailControls.ContainsKey(pluginUUID) == false)
            {
                return;
            }
            var pluginInfoControlsPair = _pluginInfoDetailControls[pluginUUID];

            var pluginPackageInfo = MinerPluginsManager.GetPluginPackageInfoCR(pluginUUID);

            try
            {
                // remove if installed
                if (pluginPackageInfo.Installed)
                {
                    MinerPluginsManager.RemovePlugin(pluginUUID);
                    //flowLayoutPanelPluginsLV.Controls.Remove(pluginInfoItem);
                    var pluginInfoItem = pluginInfoControlsPair.Item;
                    pluginInfoItem.StatusText = "Removed";
                    var pluginInfoDetails = pluginInfoControlsPair.Details;
                    pluginInfoDetails.StatusText = "";
                }
                else if (pluginPackageInfo.Installed == false)
                {
                    await InstallOrUpdateAsync(pluginInfoControlsPair, pluginUUID);
                }
            }
            catch (Exception e)
            {
            }
            finally
            {
                setPluginInfoItem(pluginInfoControlsPair.Item, pluginPackageInfo);
                setPluginInfoDetails(pluginInfoControlsPair.Details, pluginPackageInfo);
            }
        }
Пример #2
0
        private IProgress <Tuple <PluginInstallProgressState, int> > CreateProgressForPluginControlPair(PluginControlPair pluginInfoControlsPair)
        {
            var pluginInfoItem    = pluginInfoControlsPair.Item;
            var pluginInfoDetails = pluginInfoControlsPair.Details;

            var downloadAndInstallUpdate = new Progress <Tuple <PluginInstallProgressState, int> >(statePerc =>
            {
                var state      = statePerc.Item1;
                var progress   = statePerc.Item2;
                var statusText = "";
                switch (state)
                {
                case PluginInstallProgressState.Pending:
                    statusText = Tr("Pending Install");
                    break;

                case PluginInstallProgressState.DownloadingMiner:
                    statusText = Tr("Downloading Miner: {0} %", $"{progress:F2}");
                    break;

                case PluginInstallProgressState.DownloadingPlugin:
                    statusText = Tr("Downloading Plugin: {0} %", $"{progress:F2}");
                    break;

                case PluginInstallProgressState.ExtractingMiner:
                    statusText = Tr("Extracting Miner: {0} %", $"{progress:F2}");
                    break;

                case PluginInstallProgressState.ExtractingPlugin:
                    statusText = Tr("Extracting Plugin: {0} %", $"{progress:F2}");
                    break;

                default:
                    statusText = Tr("Pending Install");
                    break;
                }

                pluginInfoItem.StatusText       = statusText;
                pluginInfoItem.ProgressBarValue = progress;

                pluginInfoDetails.StatusText       = statusText;
                pluginInfoDetails.ProgressBarValue = progress;

                var installing = state < PluginInstallProgressState.FailedDownloadingPlugin;
                pluginInfoItem.SwapInstallRemoveButtonWithCancelButton(installing);
                pluginInfoItem.ProgressBarVisible = installing;
                pluginInfoItem.StatusVisible      = installing;

                pluginInfoDetails.SwapInstallRemoveButtonWithCancelButton(installing);
                pluginInfoDetails.ProgressBarVisible = installing;
                pluginInfoDetails.StatusVisible      = installing;

                if (state == PluginInstallProgressState.Success)
                {
                    var pluginPackageInfo = MinerPluginsManager.GetPluginPackageInfoCR(pluginInfoItem.PluginUUID);
                    setPluginInfoItem(pluginInfoItem, pluginPackageInfo);
                    setPluginInfoDetails(pluginInfoDetails, pluginPackageInfo);
                }
            });

            return(downloadAndInstallUpdate);
        }