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