From ca45c62414c55d84fe5694a188ebb0cfd8cbce45 Mon Sep 17 00:00:00 2001
From: lennard <44114474+Dummerle@users.noreply.github.com>
Date: Sat, 29 Oct 2022 12:23:50 +0200
Subject: [PATCH] Fix offline mode
---
rare/components/dialogs/launch_dialog.py | 2 +-
rare/components/tabs/__init__.py | 27 +++++++++++++++++++--
rare/components/tabs/account/__init__.py | 30 +++---------------------
3 files changed, 29 insertions(+), 30 deletions(-)
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