diff --git a/rare/components/dialogs/launch_dialog.py b/rare/components/dialogs/launch_dialog.py index 74b3f513..89eaf972 100644 --- a/rare/components/dialogs/launch_dialog.py +++ b/rare/components/dialogs/launch_dialog.py @@ -279,7 +279,7 @@ class LaunchDialog(QDialog): def finish(self): self.completed += 1 - if self.completed == 2: + if self.completed >= 2: logger.info("App starting") ApiResultsSingleton(self.api_results) self.completed += 1 diff --git a/rare/components/tabs/__init__.py b/rare/components/tabs/__init__.py index 2474dbb6..b6710a9e 100644 --- a/rare/components/tabs/__init__.py +++ b/rare/components/tabs/__init__.py @@ -1,5 +1,5 @@ from PyQt5.QtCore import QSize, pyqtSignal -from PyQt5.QtWidgets import QMenu, QTabWidget, QWidget, QWidgetAction, QShortcut +from PyQt5.QtWidgets import QMenu, QTabWidget, QWidget, QWidgetAction, QShortcut, QMessageBox from rare.shared import LegendaryCoreSingleton, GlobalSignalsSingleton, ArgumentsSingleton from rare.components.tabs.account import AccountWidget @@ -57,8 +57,9 @@ class TabWidget(QTabWidget): self.addTab(self.account, "") self.setTabEnabled(disabled_tab + 1, False) - self.account_widget = AccountWidget(self, self.downloads_tab) + self.account_widget = AccountWidget(self) self.account_widget.exit_app.connect(self.exit_app) + self.account_widget.logout.connect(self.logout) account_action = QWidgetAction(self) account_action.setDefaultWidget(self.account_widget) account_button = TabButtonWidget("mdi.account-circle", "Account", fallback_icon="fa.user") @@ -113,3 +114,25 @@ class TabWidget(QTabWidget): def resizeEvent(self, event): self.tabBar().setMinimumWidth(self.width()) super(TabWidget, self).resizeEvent(event) + + def logout(self): + # FIXME: Don't allow logging out if there are active downloads + if self.downloads_tab.is_download_active: + QMessageBox.warning( + self, + self.tr("Logout"), + self.tr("There are active downloads. Stop them before logging out."), + ) + return + # FIXME: End of FIXME + reply = QMessageBox.question( + self, + self.tr("Logout"), + self.tr("Do you really want to logout {}?").format(self.core.lgd.userdata.get("display_name")), + buttons=(QMessageBox.Yes | QMessageBox.No), + defaultButton=QMessageBox.No, + ) + + if reply == QMessageBox.Yes: + self.core.lgd.invalidate_userdata() + self.exit_app(-133742) # restart exit code diff --git a/rare/components/tabs/account/__init__.py b/rare/components/tabs/account/__init__.py index e8729fb6..a5b6e1e5 100644 --- a/rare/components/tabs/account/__init__.py +++ b/rare/components/tabs/account/__init__.py @@ -10,14 +10,14 @@ from rare.utils.misc import icon class AccountWidget(QWidget): # int: exit code exit_app: pyqtSignal = pyqtSignal(int) + logout = pyqtSignal() - def __init__(self, parent, downloads_tab): + def __init__(self, parent): super(AccountWidget, self).__init__(parent=parent) self.core = LegendaryCoreSingleton() self.signals = GlobalSignalsSingleton() # FIXME: This is why widgets should be decoupled from procedures. # FIXME: pass downloads tab as argument to check if there are active downloads - self.downloads_tab = downloads_tab username = self.core.lgd.userdata.get("display_name") if not username: @@ -30,34 +30,10 @@ class AccountWidget(QWidget): ) ) self.logout_button = QPushButton(self.tr("Logout")) - self.logout_button.clicked.connect(self.logout) + self.logout_button.clicked.connect(lambda: self.logout.emit()) layout = QVBoxLayout(self) layout.addWidget(QLabel(self.tr("Account"))) layout.addWidget(QLabel(self.tr("Logged in as {}").format(username))) layout.addWidget(self.open_browser) layout.addWidget(self.logout_button) - - def logout(self): - # FIXME: Don't allow logging out if there are active downloads - if self.downloads_tab.is_download_active: - warning = QMessageBox.warning( - self, - self.tr("Logout"), - self.tr("There are active downloads. Stop them before logging out."), - buttons=(QMessageBox.Ok), - defaultButton=QMessageBox.Ok - ) - return - # FIXME: End of FIXME - reply = QMessageBox.question( - self, - self.tr("Logout"), - self.tr("Do you really want to logout {}?").format(self.core.lgd.userdata.get("display_name")), - buttons=(QMessageBox.Yes | QMessageBox.No), - defaultButton=QMessageBox.No, - ) - - if reply == QMessageBox.Yes: - self.core.lgd.invalidate_userdata() - self.exit_app.emit(-133742) # restart exit code