Add collapsible dialog for errors

Move the error message from a text browser to a collapsible widget.
This commit is contained in:
Alex Pyrgiotis 2023-07-31 15:16:46 +03:00
parent 53ec1cad63
commit 81811e0aac
No known key found for this signature in database
GPG key ID: B6C15EBA0357C9AA
2 changed files with 17 additions and 11 deletions

View file

@ -40,11 +40,7 @@ update.</p>
UPDATE_ERROR_MSG_INTRO = """\
<p>Something went wrong while checking for Dangerzone updates:</p>
"""
UPDATE_ERROR_MSG_OUTRO = """\
<p><b>Something went wrong while checking for Dangerzone updates.<b></p>
<p>You are strongly advised to visit our
<a href="https://dangerzone.rocks#downloads">downloads page</a> and check for new
updates manually, or consult
@ -54,6 +50,7 @@ in our menu, if you are in an air-gapped environment and have another way of lea
about updates.</p>
"""
HAMBURGER_MENU_SIZE = 30
@ -209,15 +206,18 @@ class MainWindow(QtWidgets.QMainWindow):
"""Inform the user about an error during update checks"""
assert self.updater_error is not None
error_widget = QtWidgets.QTextBrowser()
error_widget.setHtml(self.updater_error)
error_widget = CollapsibleBox("Error Details")
error_layout = QtWidgets.QVBoxLayout()
error_text_box = QtWidgets.QTextBrowser()
error_text_box.setHtml(self.updater_error)
error_layout.addWidget(error_text_box)
error_widget.setContentLayout(error_layout)
update_widget = UpdateDialog(
self.dangerzone,
title="Update check error",
intro_msg=UPDATE_ERROR_MSG_INTRO,
middle_widget=error_widget,
epilogue_msg=UPDATE_ERROR_MSG_OUTRO,
ok_text="Close",
has_cancel=False,
)

View file

@ -308,9 +308,15 @@ def test_update_error(
kwargs = update_dialog_spy.call_args.kwargs
assert kwargs["title"] == "Update check error"
assert "Something went wrong" in kwargs["intro_msg"]
assert "Encountered an exception" in kwargs["middle_widget"].toPlainText()
assert "failed" in kwargs["middle_widget"].toPlainText()
assert "dangerzone.rocks" in kwargs["epilogue_msg"]
assert "dangerzone.rocks" in kwargs["intro_msg"]
assert not kwargs["middle_widget"].toggle_button.isChecked()
collapsible_box = kwargs["middle_widget"]
text_browser = (
collapsible_box.layout().itemAt(1).widget().layout().itemAt(0).widget()
)
assert collapsible_box.toggle_button.text() == "Error Details"
assert "Encountered an exception" in text_browser.toPlainText()
assert "failed" in text_browser.toPlainText()
dialog.close()