Merge branch 'CURA-7155_confusing_license_dialog_page_count' of github.com:Ultimaker/Cura

This commit is contained in:
Jaime van Kessel 2020-02-03 13:16:23 +01:00
commit 42f7cead4d
No known key found for this signature in database
GPG key ID: 3710727397403C91
2 changed files with 28 additions and 20 deletions

View file

@ -71,6 +71,7 @@ class LicenseModel(QObject):
self._updateDialogTitle() self._updateDialogTitle()
def _updateDialogTitle(self): def _updateDialogTitle(self):
self._dialogTitle = catalog.i18nc("@title:window", "Plugin License Agreement ({}/{})" self._dialogTitle = catalog.i18nc("@title:window", "Plugin License Agreement")
.format(self._current_page_idx + 1, self._page_count)) if self._page_count > 1:
self._dialogTitle = self._dialogTitle + " ({}/{})".format(self._current_page_idx + 1, self._page_count)
self.dialogTitleChanged.emit() self.dialogTitleChanged.emit()

View file

@ -1,5 +1,6 @@
import os import os
from typing import Dict, Optional, List from collections import OrderedDict
from typing import Dict, Optional, List, Any
from PyQt5.QtCore import QObject, pyqtSlot from PyQt5.QtCore import QObject, pyqtSlot
@ -28,6 +29,7 @@ class LicensePresenter(QObject):
self._package_models = [] # type: List[Dict] self._package_models = [] # type: List[Dict]
decline_button_text = self._catalog.i18nc("@button", "Decline and remove from account") decline_button_text = self._catalog.i18nc("@button", "Decline and remove from account")
self._license_model = LicenseModel(decline_button_text=decline_button_text) # type: LicenseModel self._license_model = LicenseModel(decline_button_text=decline_button_text) # type: LicenseModel
self._page_count = 0
self._app = app self._app = app
@ -49,7 +51,6 @@ class LicensePresenter(QObject):
"handler": self "handler": self
} }
self._dialog = self._app.createQmlComponent(path, context_properties) self._dialog = self._app.createQmlComponent(path, context_properties)
self._license_model.setPageCount(len(self._package_models))
self._presentCurrentPackage() self._presentCurrentPackage()
@pyqtSlot() @pyqtSlot()
@ -63,34 +64,40 @@ class LicensePresenter(QObject):
self._checkNextPage() self._checkNextPage()
def _initState(self, packages: Dict[str, Dict[str, str]]) -> None: def _initState(self, packages: Dict[str, Dict[str, str]]) -> None:
self._package_models = [
{ implicitly_accepted_count = 0
"package_id" : package_id,
"package_path" : item["package_path"], for package_id, item in packages.items():
"icon_url" : item["icon_url"], item["package_id"] = package_id
"accepted" : None #: None: no answer yet item["licence_content"] = self._package_manager.getPackageLicense(item["package_path"])
} if item["licence_content"] is None:
for package_id, item in packages.items() # Implicitly accept when there is no license
] item["accepted"] = True
implicitly_accepted_count = implicitly_accepted_count + 1
self._package_models.append(item)
else:
item["accepted"] = None #: None: no answer yet
# When presenting the packages, we want to show packages which have a license first.
# In fact, we don't want to show the others at all because they are implicitly accepted
self._package_models.insert(0, item)
CuraApplication.getInstance().processEvents()
self._page_count = len(self._package_models) - implicitly_accepted_count
self._license_model.setPageCount(self._page_count)
def _presentCurrentPackage(self) -> None: def _presentCurrentPackage(self) -> None:
package_model = self._package_models[self._current_package_idx] package_model = self._package_models[self._current_package_idx]
package_info = self._package_manager.getPackageInfo(package_model["package_path"]) package_info = self._package_manager.getPackageInfo(package_model["package_path"])
license_content = self._package_manager.getPackageLicense(package_model["package_path"])
if license_content is None:
# Implicitly accept when there is no license
self.onLicenseAccepted()
return
self._license_model.setCurrentPageIdx(self._current_package_idx) self._license_model.setCurrentPageIdx(self._current_package_idx)
self._license_model.setPackageName(package_info["display_name"]) self._license_model.setPackageName(package_info["display_name"])
self._license_model.setIconUrl(package_model["icon_url"]) self._license_model.setIconUrl(package_model["icon_url"])
self._license_model.setLicenseText(license_content) self._license_model.setLicenseText(package_model["licence_content"])
if self._dialog: if self._dialog:
self._dialog.open() # Does nothing if already open self._dialog.open() # Does nothing if already open
def _checkNextPage(self) -> None: def _checkNextPage(self) -> None:
if self._current_package_idx + 1 < len(self._package_models): if self._current_package_idx + 1 < self._page_count:
self._current_package_idx += 1 self._current_package_idx += 1
self._presentCurrentPackage() self._presentCurrentPackage()
else: else: