Add 'Try Again' button in AutoConnect bridge options. Update wording. Reset back to bridge/try again options if Tor Cancel clicked again

This commit is contained in:
Miguel Jacq 2021-12-20 14:20:32 +11:00
parent 4f3313fd20
commit 5d8300df10
No known key found for this signature in database
GPG key ID: EEA4341C6D97A0B6
3 changed files with 45 additions and 9 deletions

View file

@ -95,6 +95,7 @@ class AutoConnectTab(QtWidgets.QWidget):
# Use bridge widget # Use bridge widget
self.use_bridge_widget = AutoConnectUseBridgeWidget(self.common) self.use_bridge_widget = AutoConnectUseBridgeWidget(self.common)
self.use_bridge_widget.connect_clicked.connect(self.use_bridge_connect_clicked) self.use_bridge_widget.connect_clicked.connect(self.use_bridge_connect_clicked)
self.use_bridge_widget.try_again_clicked.connect(self.first_launch_widget_connect_clicked)
self.use_bridge_widget.open_tor_settings.connect(self.open_tor_settings) self.use_bridge_widget.open_tor_settings.connect(self.open_tor_settings)
self.use_bridge_widget.hide() self.use_bridge_widget.hide()
@ -192,6 +193,8 @@ class AutoConnectTab(QtWidgets.QWidget):
"Trying to automatically obtain bridges", "Trying to automatically obtain bridges",
) )
self.use_bridge_widget.hide_buttons() self.use_bridge_widget.hide_buttons()
self.use_bridge_widget.progress.show()
self.use_bridge_widget.progress_label.show()
if self.use_bridge_widget.detect_automatic_radio.isChecked(): if self.use_bridge_widget.detect_automatic_radio.isChecked():
country = False country = False
@ -259,6 +262,8 @@ class AutoConnectTab(QtWidgets.QWidget):
self.tor_con.hide() self.tor_con.hide()
self.first_launch_widget.show_buttons() self.first_launch_widget.show_buttons()
self.use_bridge_widget.show_buttons() self.use_bridge_widget.show_buttons()
self.use_bridge_widget.progress.hide()
self.use_bridge_widget.progress_label.hide()
if self.common.gui.onion.is_authenticated() and not self.tor_con.wasCanceled(): if self.common.gui.onion.is_authenticated() and not self.tor_con.wasCanceled():
# Tell the tabs that Tor is connected # Tell the tabs that Tor is connected
@ -279,6 +284,8 @@ class AutoConnectTab(QtWidgets.QWidget):
self.first_launch_widget.show_buttons() self.first_launch_widget.show_buttons()
self.first_launch_widget.hide() self.first_launch_widget.hide()
self.use_bridge_widget.show() self.use_bridge_widget.show()
else:
self.use_bridge_widget.show_buttons()
def reload_settings(self): def reload_settings(self):
self.curr_settings.load() self.curr_settings.load()
@ -374,6 +381,7 @@ class AutoConnectUseBridgeWidget(QtWidgets.QWidget):
""" """
connect_clicked = QtCore.Signal() connect_clicked = QtCore.Signal()
try_again_clicked = QtCore.Signal()
open_tor_settings = QtCore.Signal() open_tor_settings = QtCore.Signal()
def __init__(self, common): def __init__(self, common):
@ -381,6 +389,13 @@ class AutoConnectUseBridgeWidget(QtWidgets.QWidget):
self.common = common self.common = common
self.common.log("AutoConnectUseBridgeWidget", "__init__") self.common.log("AutoConnectUseBridgeWidget", "__init__")
# Heading label when we fail to connect to Tor.
failed_to_connect_label = QtWidgets.QLabel(
strings._("gui_autoconnect_failed_to_connect_to_tor")
)
failed_to_connect_label.setTextFormat(QtCore.Qt.RichText)
failed_to_connect_label.setStyleSheet(common.gui.css["autoconnect_failed_to_connect_label"])
# Description # Description
description_label = QtWidgets.QLabel( description_label = QtWidgets.QLabel(
strings._("gui_autoconnect_bridge_description") strings._("gui_autoconnect_bridge_description")
@ -444,6 +459,13 @@ class AutoConnectUseBridgeWidget(QtWidgets.QWidget):
self.connect_button.clicked.connect(self._connect_clicked) self.connect_button.clicked.connect(self._connect_clicked)
self.connect_button.setFixedWidth(150) self.connect_button.setFixedWidth(150)
self.connect_button.setStyleSheet(common.gui.css["autoconnect_start_button"]) self.connect_button.setStyleSheet(common.gui.css["autoconnect_start_button"])
self.try_again_button = QtWidgets.QPushButton(
strings._("gui_autoconnect_try_again_without_a_bridge")
)
self.try_again_button.clicked.connect(self._try_again_clicked)
self.try_again_button.setStyleSheet(common.gui.css["autoconnect_start_button"])
self.configure_button = QtWidgets.QPushButton( self.configure_button = QtWidgets.QPushButton(
strings._("gui_autoconnect_configure") strings._("gui_autoconnect_configure")
) )
@ -464,6 +486,7 @@ class AutoConnectUseBridgeWidget(QtWidgets.QWidget):
cta_layout = QtWidgets.QHBoxLayout() cta_layout = QtWidgets.QHBoxLayout()
cta_layout.addWidget(self.connect_button) cta_layout.addWidget(self.connect_button)
cta_layout.addWidget(self.try_again_button)
cta_layout.addWidget(self.configure_button) cta_layout.addWidget(self.configure_button)
cta_layout.addStretch() cta_layout.addStretch()
cta_widget = QtWidgets.QWidget() cta_widget = QtWidgets.QWidget()
@ -471,6 +494,7 @@ class AutoConnectUseBridgeWidget(QtWidgets.QWidget):
# Layout # Layout
layout = QtWidgets.QVBoxLayout() layout = QtWidgets.QVBoxLayout()
layout.addWidget(failed_to_connect_label)
layout.addWidget(description_label) layout.addWidget(description_label)
layout.addLayout(detect_layout) layout.addLayout(detect_layout)
layout.addWidget(self.country_combobox) layout.addWidget(self.country_combobox)
@ -486,15 +510,13 @@ class AutoConnectUseBridgeWidget(QtWidgets.QWidget):
def hide_buttons(self): def hide_buttons(self):
self.connect_button.hide() self.connect_button.hide()
self.try_again_button.hide()
self.configure_button.hide() self.configure_button.hide()
self.progress.show()
self.progress_label.show()
def show_buttons(self): def show_buttons(self):
self.connect_button.show() self.connect_button.show()
self.try_again_button.show()
self.configure_button.show() self.configure_button.show()
self.progress.hide()
self.progress_label.hide()
def _country_changed(self, index=None): def _country_changed(self, index=None):
self.country_code = str(self.country_combobox.currentData()).lower() self.country_code = str(self.country_combobox.currentData()).lower()
@ -528,5 +550,13 @@ class AutoConnectUseBridgeWidget(QtWidgets.QWidget):
self.country_combobox.setEnabled(False) self.country_combobox.setEnabled(False)
self.connect_clicked.emit() self.connect_clicked.emit()
def _try_again_clicked(self):
self.detect_automatic_radio.setEnabled(False)
self.detect_manual_radio.setEnabled(False)
self.country_combobox.setEnabled(False)
self.hide_buttons()
self.try_again_clicked.emit()
def _open_tor_settings(self): def _open_tor_settings(self):
self.open_tor_settings.emit() self.open_tor_settings.emit()

View file

@ -194,6 +194,11 @@ class GuiCommon:
font-weight: bold; font-weight: bold;
} }
""", """,
"autoconnect_failed_to_connect_label": """
QLabel {
font-size: 18px;
font-weight: bold;
}""",
# Common styles between modes and their child widgets # Common styles between modes and their child widgets
"mode_settings_toggle_advanced": """ "mode_settings_toggle_advanced": """
QPushButton { QPushButton {

View file

@ -44,13 +44,14 @@
"gui_tor_settings_window_title": "Tor Settings", "gui_tor_settings_window_title": "Tor Settings",
"gui_autoconnect_description": "OnionShare relies on the Tor Network, run by thousands of volunteers around the world.", "gui_autoconnect_description": "OnionShare relies on the Tor Network, run by thousands of volunteers around the world.",
"gui_enable_autoconnect_checkbox": "Connect to Tor automatically", "gui_enable_autoconnect_checkbox": "Connect to Tor automatically",
"gui_autoconnect_bridge_description": "<b>Failed connecting to Tor.</b> This could be because your internet is being censored.<br>You might be able to bypass this censorship by using a bridge.<br><br>Or, you might just need to configure the Tor connection in Network Settings.", "gui_autoconnect_failed_to_connect_to_tor": "Failed to connect to Tor.",
"gui_autoconnect_bridge_detect_automatic": "Automatically determine my country from my IP address, to bypass country-specific censorship", "gui_autoconnect_bridge_description": "Are you connected to the internet?<br><br>It's also possible your internet is being censored.<br><br>You might be able to bypass this using a bridge.",
"gui_autoconnect_bridge_detect_manual": "Manually select my country instead", "gui_autoconnect_bridge_detect_automatic": "Automatically determine my country from my IP address",
"gui_autoconnect_bridge_detect_manual": "Manually select my country",
"gui_autoconnect_start": "Connect to Tor", "gui_autoconnect_start": "Connect to Tor",
"gui_autoconnect_configure": "Network Settings", "gui_autoconnect_configure": "Network Settings",
"gui_autoconnect_bridge_start": "Use a Bridge", "gui_autoconnect_bridge_start": "Use a Bridge",
"gui_autoconnect_bridge_back": "Back", "gui_autoconnect_try_again_without_a_bridge": "Try again without a Bridge",
"gui_autoconnect_circumventing_censorship": "Trying to resolve connectivity issues", "gui_autoconnect_circumventing_censorship": "Trying to resolve connectivity issues",
"gui_autoconnect_circumventing_censorship_starting_circumvention": "Starting censorship circumvention process", "gui_autoconnect_circumventing_censorship_starting_circumvention": "Starting censorship circumvention process",
"gui_autoconnect_circumventing_censorship_starting_meek": "Starting Meek for domain-fronting", "gui_autoconnect_circumventing_censorship_starting_meek": "Starting Meek for domain-fronting",