mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-11 08:47:50 -06:00
Moved qml pages of toolbox to a loader
This dramatically improves the loading of the toolbox dialog CURA-6006
This commit is contained in:
parent
00e95e68eb
commit
838949dac7
2 changed files with 52 additions and 61 deletions
|
@ -44,36 +44,31 @@ Window
|
||||||
top: header.bottom
|
top: header.bottom
|
||||||
bottom: footer.top
|
bottom: footer.top
|
||||||
}
|
}
|
||||||
// TODO: This could be improved using viewFilter instead of viewCategory
|
|
||||||
ToolboxLoadingPage
|
Loader
|
||||||
{
|
{
|
||||||
id: viewLoading
|
anchors.fill:parent
|
||||||
visible: toolbox.viewCategory != "installed" && toolbox.viewPage == "loading"
|
source:
|
||||||
|
{
|
||||||
|
if(toolbox.viewCategory == "installed")
|
||||||
|
{
|
||||||
|
return "ToolboxInstalledPage.qml"
|
||||||
}
|
}
|
||||||
ToolboxErrorPage
|
|
||||||
|
switch (toolbox.viewPage)
|
||||||
{
|
{
|
||||||
id: viewErrored
|
case "loading":
|
||||||
visible: toolbox.viewCategory != "installed" && toolbox.viewPage == "errored"
|
return "ToolboxLoadingPage.qml"
|
||||||
|
case "errored":
|
||||||
|
return "ToolboxErrorPage.qml"
|
||||||
|
case "overview":
|
||||||
|
return "ToolboxDownloadsPage.qml"
|
||||||
|
case "detail":
|
||||||
|
return "ToolboxDetailPage.qml"
|
||||||
|
case "author":
|
||||||
|
return "ToolboxAuthorPage.qml"
|
||||||
}
|
}
|
||||||
ToolboxDownloadsPage
|
|
||||||
{
|
|
||||||
id: viewDownloads
|
|
||||||
visible: toolbox.viewCategory != "installed" && toolbox.viewPage == "overview"
|
|
||||||
}
|
}
|
||||||
ToolboxDetailPage
|
|
||||||
{
|
|
||||||
id: viewDetail
|
|
||||||
visible: toolbox.viewCategory != "installed" && toolbox.viewPage == "detail"
|
|
||||||
}
|
|
||||||
ToolboxAuthorPage
|
|
||||||
{
|
|
||||||
id: viewAuthor
|
|
||||||
visible: toolbox.viewCategory != "installed" && toolbox.viewPage == "author"
|
|
||||||
}
|
|
||||||
ToolboxInstalledPage
|
|
||||||
{
|
|
||||||
id: installedPluginList
|
|
||||||
visible: toolbox.viewCategory == "installed"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,6 +90,7 @@ Window
|
||||||
licenseDialog.show();
|
licenseDialog.show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ToolboxLicenseDialog
|
ToolboxLicenseDialog
|
||||||
{
|
{
|
||||||
id: licenseDialog
|
id: licenseDialog
|
||||||
|
|
|
@ -622,10 +622,15 @@ class Toolbox(QObject, Extension):
|
||||||
|
|
||||||
if reply.operation() == QNetworkAccessManager.GetOperation:
|
if reply.operation() == QNetworkAccessManager.GetOperation:
|
||||||
for response_type, url in self._request_urls.items():
|
for response_type, url in self._request_urls.items():
|
||||||
if reply.url() == url:
|
if reply.url() != url:
|
||||||
|
continue
|
||||||
|
|
||||||
if reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) == 200:
|
if reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) == 200:
|
||||||
try:
|
try:
|
||||||
json_data = json.loads(bytes(reply.readAll()).decode("utf-8"))
|
json_data = json.loads(bytes(reply.readAll()).decode("utf-8"))
|
||||||
|
except json.decoder.JSONDecodeError:
|
||||||
|
Logger.log("w", "Received invalid JSON for %s.", response_type)
|
||||||
|
break
|
||||||
|
|
||||||
# Check for errors:
|
# Check for errors:
|
||||||
if "errors" in json_data:
|
if "errors" in json_data:
|
||||||
|
@ -633,30 +638,20 @@ class Toolbox(QObject, Extension):
|
||||||
Logger.log("e", "%s", error["title"])
|
Logger.log("e", "%s", error["title"])
|
||||||
return
|
return
|
||||||
|
|
||||||
# Create model and apply metadata:
|
|
||||||
if not self._models[response_type]:
|
|
||||||
Logger.log("e", "Could not find the %s model.", response_type)
|
|
||||||
break
|
|
||||||
|
|
||||||
self._server_response_data[response_type] = json_data["data"]
|
self._server_response_data[response_type] = json_data["data"]
|
||||||
self._models[response_type].setMetadata(self._server_response_data[response_type])
|
self._models[response_type].setMetadata(json_data["data"])
|
||||||
|
|
||||||
if response_type is "packages":
|
if response_type is "packages":
|
||||||
self._models[response_type].setFilter({"type": "plugin"})
|
self._models["packages"].setFilter({"type": "plugin"})
|
||||||
self.reBuildMaterialsModels()
|
self.reBuildMaterialsModels()
|
||||||
self.reBuildPluginsModels()
|
self.reBuildPluginsModels()
|
||||||
elif response_type is "authors":
|
elif response_type is "authors":
|
||||||
self._models[response_type].setFilter({"package_types": "material"})
|
self._models["authors"].setFilter({"tags": "generic"})
|
||||||
self._models[response_type].setFilter({"tags": "generic"})
|
|
||||||
|
|
||||||
self.metadataChanged.emit()
|
self.metadataChanged.emit()
|
||||||
|
|
||||||
if self.isLoadingComplete():
|
if self.isLoadingComplete():
|
||||||
self.setViewPage("overview")
|
self.setViewPage("overview")
|
||||||
|
|
||||||
except json.decoder.JSONDecodeError:
|
|
||||||
Logger.log("w", "Received invalid JSON for %s.", response_type)
|
|
||||||
break
|
|
||||||
else:
|
else:
|
||||||
self.setViewPage("errored")
|
self.setViewPage("errored")
|
||||||
self.resetDownload()
|
self.resetDownload()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue