[view] improvement: only displaying a confirmation dialog for custom actions that start immediately

This commit is contained in:
Vinicius Moreira
2021-12-15 15:55:41 -03:00
parent 98e19ea934
commit 9f13b0efd5
3 changed files with 9 additions and 2 deletions

View File

@@ -11,7 +11,8 @@ class CustomSoftwareAction:
requires_root: bool, manager: "SoftwareManager" = None,
backup: bool = False, refresh: bool = True,
i18n_confirm_key: str = None,
requires_internet: bool = False):
requires_internet: bool = False,
requires_confirmation: bool = True):
"""
:param i18n_label_key: the i18n key that will be used to display the action name
:param i18n_status_key: the i18n key that will be used to display the action name being executed
@@ -23,6 +24,7 @@ class CustomSoftwareAction:
:param refresh: if the a full app refresh should be done if the action succeeds
:param i18n_confirm_key: action confirmation message
:param requires_internet: if the action requires internet connection to be executed
:param requires_confirmation: if a confirmation popup should be displayed to the user before calling the action
"""
self.i18n_label_key = i18n_label_key
self.i18n_status_key = i18n_status_key
@@ -34,6 +36,7 @@ class CustomSoftwareAction:
self.refresh = refresh
self.i18n_confirm_key = i18n_confirm_key
self.requires_internet = requires_internet
self.requires_confirmation = requires_confirmation
def __hash__(self):
return self.i18n_label_key.__hash__() + self.i18n_status_key.__hash__() + self.manager_method.__hash__()

View File

@@ -1422,7 +1422,8 @@ class ManageWindow(QWidget):
self.progress_bar.setValue(value)
def begin_execute_custom_action(self, pkg: Optional[PackageView], action: CustomSoftwareAction):
if pkg is None and not ConfirmationDialog(title=self.i18n['confirmation'].capitalize(),
if pkg is None and action.requires_confirmation and \
not ConfirmationDialog(title=self.i18n['confirmation'].capitalize(),
body='<p>{}</p>'.format(self.i18n['custom_action.proceed_with'].capitalize().format(bold(self.i18n[action.i18n_label_key]))),
icon=QIcon(action.icon_path) if action.icon_path else QIcon(resource.get_path('img/logo.svg')),
i18n=self.i18n).ask():