From 6e7751db01963c45b96deb6f104e5667bcac7e5b Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 26 Apr 2025 03:57:59 +0100 Subject: [PATCH] Added Connection type popup --- gui/__main__.py | 83 +++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 74 insertions(+), 9 deletions(-) diff --git a/gui/__main__.py b/gui/__main__.py index 1fca2fa..e564fc8 100644 --- a/gui/__main__.py +++ b/gui/__main__.py @@ -1,4 +1,4 @@ -from PyQt6.QtWidgets import QComboBox,QButtonGroup, QLineEdit,QMainWindow, QLabel, QWidget, QVBoxLayout, QStackedWidget, QApplication, QPushButton, QTextEdit, QFrame, QHBoxLayout, QVBoxLayout, QScrollArea, QSystemTrayIcon, QMessageBox, QGridLayout, QCheckBox, QStackedLayout, QGroupBox +from PyQt6.QtWidgets import QComboBox,QButtonGroup, QLineEdit,QMainWindow, QLabel, QWidget, QVBoxLayout, QStackedWidget, QApplication, QPushButton, QTextEdit, QFrame, QHBoxLayout, QVBoxLayout, QScrollArea, QSystemTrayIcon, QMessageBox, QGridLayout, QCheckBox, QStackedLayout, QGroupBox, QDialog from PyQt6.QtGui import QIcon, QPixmap,QIcon, QPixmap, QTransform, QPainter, QColor, QFont, QPen from PyQt6 import QtGui from PyQt6 import QtCore @@ -326,10 +326,7 @@ class CustomWindow(QMainWindow): self.current_profile_id = None self.connection_manager = ConnectionManager() - current_connection = self.get_current_connection() - if current_connection is None: - ConfigurationController.set_connection('system') - current_connection = 'system' + current_connection = 'system' #For Default toggle behavior self.is_tor_mode = current_connection == 'tor' self.is_animating = False self.animation_step = 0 @@ -408,12 +405,80 @@ class CustomWindow(QMainWindow): self.check_logging() self.init_ui() + current_connection = self.get_current_connection() + self.is_tor_mode = current_connection == 'tor' + self.set_toggle_state(self.is_tor_mode) + def get_current_connection(self): try: return ConfigurationController.get_connection() except UnknownConnectionTypeError: - return None + self.setup_popup() + return ConfigurationController.get_connection() + + def setup_popup(self): + connection_dialog = QDialog(self) + connection_dialog.setWindowTitle("Connection Type") + connection_dialog.setWindowFlags(Qt.WindowType.Dialog | Qt.WindowType.WindowStaysOnTopHint | Qt.WindowType.CustomizeWindowHint | Qt.WindowType.WindowTitleHint) + connection_dialog.setModal(True) + connection_dialog.setFixedSize(400, 200) + + layout = QVBoxLayout(connection_dialog) + + label = QLabel("Please set your preference for connecting to Simplified Privacy's billing server.") + label.setWordWrap(True) + label.setAlignment(Qt.AlignmentFlag.AlignCenter) + label.setStyleSheet("font-size: 12px; margin-bottom: 20px; color: black;") + + button_layout = QHBoxLayout() + + regular_btn = QPushButton("Regular") + tor_btn = QPushButton("Tor") + + button_style = """ + QPushButton { + background-color: #2b2b2b; + color: white; + border: none; + padding: 10px 20px; + border-radius: 5px; + font-size: 12px; + } + QPushButton:hover { + background-color: #3b3b3b; + } + QPushButton:pressed { + background-color: #1b1b1b; + } + """ + regular_btn.setStyleSheet(button_style) + tor_btn.setStyleSheet(button_style) + + button_layout.addWidget(regular_btn) + button_layout.addWidget(tor_btn) + + layout.addWidget(label) + layout.addLayout(button_layout) + + def set_regular_connection(): + ConfigurationController.set_connection('system') + self.is_tor_mode = False + self.set_toggle_state(False) + connection_dialog.accept() + + def set_tor_connection(): + ConfigurationController.set_connection('tor') + self.is_tor_mode = True + self.set_toggle_state(True) + connection_dialog.accept() + + regular_btn.clicked.connect(set_regular_connection) + tor_btn.clicked.connect(set_tor_connection) + + connection_dialog.exec() + + return ConfigurationController.get_connection() def _setup_gui_directory(self): os.makedirs(self.gui_dir, exist_ok=True) @@ -1528,7 +1593,7 @@ class MenuPage(Page): self.update_status.update_status('Profile is already being enabled...') return profile = ProfileController.get(int(self.reverse_id)) - is_tor = ConfigurationController.get_connection() == 'tor' + is_tor = self.update_status.get_current_connection() == 'tor' if profile.connection.code == 'tor' and not profile.application_version.installed and not is_tor: message = f'You are using a Tor profile, but the associated browser is not installed. If you want the browser to be downloaded with Tor, you must switch to a Tor connection. Otherwise, proceed with a clearweb connection.' @@ -1710,7 +1775,7 @@ class MenuPage(Page): def change_app_page(self, text, Is_changed): self.update_status.update_status(str(text)) if Is_changed: - current_connection = ConfigurationController.get_connection() + current_connection = self.update_status.get_current_connection() profile = ProfileController.get(int(self.reverse_id)) if current_connection != 'tor' and profile.connection.code == 'tor': message = f'You are using a Tor profile, but the profile subscription is missing or expired. If you want the billing to be done thourgh Tor, you must switch to a Tor connection. Otherwise, proceed with a clearweb connection.' @@ -4592,7 +4657,7 @@ class Settings(Page): stats = [ ("Config Path", config_path), ("Client Version", Constants.HV_CLIENT_VERSION_NUMBER), - ("Connection", ConfigurationController.get_connection()), + ("Connection", self.update_status.get_current_connection()), ] for i, (label, value) in enumerate(stats):