Add login fequired link to packages that have the login-required tag

CURA-6006
This commit is contained in:
Jaime van Kessel 2018-12-06 16:24:12 +01:00
parent 62c5398933
commit 4e2ab163ed
2 changed files with 23 additions and 1 deletions

View file

@ -5,11 +5,14 @@ import QtQuick 2.7
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
import UM 1.1 as UM
import Cura 1.1 as Cura
Column
{
property bool installed: toolbox.isInstalled(model.id)
property bool canUpdate: toolbox.canUpdate(model.id)
property bool loginRequired: model.login_required && !Cura.API.account.isLoggedIn
width: UM.Theme.getSize("toolbox_action_button").width
spacing: UM.Theme.getSize("narrow_margin").height
@ -28,11 +31,28 @@ Column
onCompleteAction: toolbox.viewCategory = "installed"
// Don't allow installing while another download is running
enabled: installed || !(toolbox.isDownloading && toolbox.activePackage != model)
enabled: installed || (!(toolbox.isDownloading && toolbox.activePackage != model) && !loginRequired)
opacity: enabled ? 1.0 : 0.5
visible: !updateButton.visible // Don't show when the update button is visible
}
Label
{
wrapMode: Text.WordWrap
text:"<a href='%1'>Log in</a> is required to install"
font: UM.Theme.getFont("default")
color: UM.Theme.getColor("text")
linkColor: UM.Theme.getColor("text_link")
visible: loginRequired
width: installButton.width
MouseArea
{
anchors.fill: parent
onClicked:Cura.API.account.login()
}
}
ToolboxProgressButton
{
id: updateButton

View file

@ -40,6 +40,7 @@ class PackagesModel(ListModel):
self.addRoleName(Qt.UserRole + 19, "tags")
self.addRoleName(Qt.UserRole + 20, "links")
self.addRoleName(Qt.UserRole + 21, "website")
self.addRoleName(Qt.UserRole + 22, "login_required")
# List of filters for queries. The result is the union of the each list of results.
self._filter = {} # type: Dict[str, str]
@ -100,6 +101,7 @@ class PackagesModel(ListModel):
"tags": package["tags"] if "tags" in package else [],
"links": links_dict,
"website": package["website"] if "website" in package else None,
"login_required": "login-required" in package.get("tags", [])
})
# Filter on all the key-word arguments.