mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-12 17:27:51 -06:00
Add a way to cancel a download
and cancel download when closing the window
This commit is contained in:
parent
6b05bd21fb
commit
6503b87a3a
2 changed files with 49 additions and 4 deletions
|
@ -141,6 +141,17 @@ class PluginBrowser(QObject, Extension):
|
||||||
self.setIsDownloading(True)
|
self.setIsDownloading(True)
|
||||||
self._download_plugin_reply.downloadProgress.connect(self._onDownloadPluginProgress)
|
self._download_plugin_reply.downloadProgress.connect(self._onDownloadPluginProgress)
|
||||||
|
|
||||||
|
@pyqtSlot()
|
||||||
|
def cancelDownload(self):
|
||||||
|
Logger.log("i", "user cancelled the download of a plugin")
|
||||||
|
self._download_plugin_reply.abort()
|
||||||
|
self._download_plugin_reply.downloadProgress.disconnect(self._onDownloadPluginProgress)
|
||||||
|
self._download_plugin_reply = None
|
||||||
|
self._download_plugin_request = None
|
||||||
|
|
||||||
|
self.setDownloadProgress(0)
|
||||||
|
self.setIsDownloading(False)
|
||||||
|
|
||||||
@pyqtProperty(QObject, notify=pluginsMetadataChanged)
|
@pyqtProperty(QObject, notify=pluginsMetadataChanged)
|
||||||
def pluginsModel(self):
|
def pluginsModel(self):
|
||||||
if self._plugins_model is None:
|
if self._plugins_model is None:
|
||||||
|
|
|
@ -33,6 +33,7 @@ UM.Dialog
|
||||||
text: catalog.i18nc("@action:button", "Refresh")
|
text: catalog.i18nc("@action:button", "Refresh")
|
||||||
onClicked: manager.requestPluginList()
|
onClicked: manager.requestPluginList()
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
|
enabled: !manager.isDownloading
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ScrollView
|
ScrollView
|
||||||
|
@ -48,6 +49,7 @@ UM.Dialog
|
||||||
model: manager.pluginsModel
|
model: manager.pluginsModel
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
||||||
|
property var activePlugin
|
||||||
delegate: pluginDelegate
|
delegate: pluginDelegate
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -75,7 +77,14 @@ UM.Dialog
|
||||||
id: closeButton
|
id: closeButton
|
||||||
text: catalog.i18nc("@action:button", "Close")
|
text: catalog.i18nc("@action:button", "Close")
|
||||||
iconName: "dialog-close"
|
iconName: "dialog-close"
|
||||||
onClicked: base.close()
|
onClicked:
|
||||||
|
{
|
||||||
|
if (manager.isDownloading)
|
||||||
|
{
|
||||||
|
manager.cancelDownload()
|
||||||
|
}
|
||||||
|
base.close();
|
||||||
|
}
|
||||||
anchors.bottom: parent.bottom
|
anchors.bottom: parent.bottom
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
}
|
}
|
||||||
|
@ -123,7 +132,11 @@ UM.Dialog
|
||||||
id: downloadButton
|
id: downloadButton
|
||||||
text:
|
text:
|
||||||
{
|
{
|
||||||
if (model.already_installed)
|
if (manager.isDownloading && pluginList.activePlugin == model)
|
||||||
|
{
|
||||||
|
return catalog.i18nc("@action:button", "Cancel");
|
||||||
|
}
|
||||||
|
else if (model.already_installed)
|
||||||
{
|
{
|
||||||
if (model.can_upgrade)
|
if (model.can_upgrade)
|
||||||
{
|
{
|
||||||
|
@ -133,11 +146,32 @@ UM.Dialog
|
||||||
}
|
}
|
||||||
return catalog.i18nc("@action:button", "Download");
|
return catalog.i18nc("@action:button", "Download");
|
||||||
}
|
}
|
||||||
onClicked: manager.downloadAndInstallPlugin(model.file_location)
|
onClicked:
|
||||||
|
{
|
||||||
|
if(!manager.isDownloading)
|
||||||
|
{
|
||||||
|
pluginList.activePlugin = model;
|
||||||
|
manager.downloadAndInstallPlugin(model.file_location);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
manager.cancelDownload();
|
||||||
|
}
|
||||||
|
}
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
anchors.rightMargin: UM.Theme.getSize("default_margin").width
|
anchors.rightMargin: UM.Theme.getSize("default_margin").width
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
enabled: (!model.already_installed || model.can_upgrade) && !manager.isDownloading
|
enabled:
|
||||||
|
{
|
||||||
|
if (manager.isDownloading)
|
||||||
|
{
|
||||||
|
return (pluginList.activePlugin == model);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return (!model.already_installed || model.can_upgrade);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue