2021-02-18 06:19:37 +13:00
|
|
|
from logging import getLogger
|
|
|
|
|
|
|
|
from PyQt5.QtCore import QThread, pyqtSignal
|
|
|
|
from PyQt5.QtWidgets import QDialog, QLabel, QProgressBar, QVBoxLayout
|
|
|
|
|
2021-04-08 08:39:23 +12:00
|
|
|
from rare.components.dialogs.login import LoginDialog
|
|
|
|
from rare.utils.utils import download_images
|
2021-03-19 00:45:59 +13:00
|
|
|
from custom_legendary.core import LegendaryCore
|
2021-02-23 07:02:49 +13:00
|
|
|
|
2021-02-18 06:19:37 +13:00
|
|
|
logger = getLogger("Login")
|
|
|
|
|
2021-02-23 07:02:49 +13:00
|
|
|
|
2021-02-18 06:19:37 +13:00
|
|
|
class LaunchThread(QThread):
|
|
|
|
download_progess = pyqtSignal(int)
|
|
|
|
action = pyqtSignal(str)
|
|
|
|
|
|
|
|
def __init__(self, core: LegendaryCore, parent=None):
|
|
|
|
super(LaunchThread, self).__init__(parent)
|
|
|
|
self.core = core
|
|
|
|
|
|
|
|
def run(self):
|
|
|
|
self.action.emit("Login")
|
2021-04-06 03:34:47 +12:00
|
|
|
self.action.emit(self.tr("Downloading Images"))
|
2021-02-18 06:19:37 +13:00
|
|
|
download_images(self.download_progess, self.core)
|
|
|
|
self.action.emit("finish")
|
|
|
|
|
2021-02-23 07:02:49 +13:00
|
|
|
|
2021-02-18 06:19:37 +13:00
|
|
|
class LoginThread(QThread):
|
2021-02-18 21:46:30 +13:00
|
|
|
login = pyqtSignal()
|
2021-03-17 03:12:37 +13:00
|
|
|
start_app = pyqtSignal()
|
2021-02-23 07:02:49 +13:00
|
|
|
|
2021-02-18 06:19:37 +13:00
|
|
|
def __init__(self, core: LegendaryCore):
|
|
|
|
super(LoginThread, self).__init__()
|
|
|
|
self.core = core
|
|
|
|
|
|
|
|
def run(self):
|
|
|
|
logger.info("Try if you are logged in")
|
|
|
|
try:
|
|
|
|
if self.core.login():
|
|
|
|
logger.info("You are logged in")
|
2021-03-17 03:12:37 +13:00
|
|
|
self.start_app.emit()
|
2021-02-18 06:19:37 +13:00
|
|
|
else:
|
|
|
|
self.run()
|
|
|
|
except ValueError:
|
|
|
|
logger.info("You are not logged in. Open Login Window")
|
2021-02-18 21:46:30 +13:00
|
|
|
self.login.emit()
|
2021-02-18 06:19:37 +13:00
|
|
|
|
|
|
|
|
|
|
|
class LaunchDialog(QDialog):
|
2021-03-25 05:01:12 +13:00
|
|
|
start_app = pyqtSignal()
|
2021-03-25 23:49:05 +13:00
|
|
|
|
2021-02-18 06:19:37 +13:00
|
|
|
def __init__(self, core: LegendaryCore):
|
|
|
|
super(LaunchDialog, self).__init__()
|
|
|
|
self.core = core
|
|
|
|
self.login_thread = LoginThread(core)
|
2021-02-18 21:46:30 +13:00
|
|
|
self.login_thread.login.connect(self.login)
|
2021-02-23 07:02:49 +13:00
|
|
|
self.login_thread.start_app.connect(self.launch)
|
2021-02-18 06:19:37 +13:00
|
|
|
self.login_thread.start()
|
|
|
|
|
2021-02-23 07:02:49 +13:00
|
|
|
self.title = QLabel("<h3>" + self.tr("Launching Rare") + "</h3>")
|
2021-02-18 06:19:37 +13:00
|
|
|
self.info_pb = QProgressBar()
|
|
|
|
self.info_text = QLabel(self.tr("Logging in"))
|
|
|
|
self.layout = QVBoxLayout()
|
|
|
|
|
|
|
|
self.layout.addWidget(self.title)
|
|
|
|
self.layout.addWidget(self.info_pb)
|
|
|
|
self.layout.addWidget(self.info_text)
|
|
|
|
|
|
|
|
self.setLayout(self.layout)
|
|
|
|
|
2021-02-18 21:46:30 +13:00
|
|
|
def login(self):
|
2021-04-09 23:00:40 +12:00
|
|
|
self.hide()
|
2021-03-09 08:36:42 +13:00
|
|
|
if LoginDialog(core=self.core).login():
|
2021-04-09 23:00:40 +12:00
|
|
|
self.show()
|
2021-03-09 08:36:42 +13:00
|
|
|
self.login_thread.start()
|
|
|
|
else:
|
2021-02-18 22:22:15 +13:00
|
|
|
exit(0)
|
2021-02-18 21:46:30 +13:00
|
|
|
|
2021-03-17 03:12:37 +13:00
|
|
|
def launch(self):
|
2021-03-19 00:45:59 +13:00
|
|
|
# self.core = core
|
2021-03-25 05:01:12 +13:00
|
|
|
self.pb_size = len(self.core.get_game_list())
|
2021-03-12 00:56:38 +13:00
|
|
|
self.info_text.setText(self.tr("Downloading Images"))
|
2021-02-18 06:19:37 +13:00
|
|
|
self.thread = LaunchThread(self.core, self)
|
|
|
|
self.thread.download_progess.connect(self.update_pb)
|
|
|
|
self.thread.action.connect(self.info)
|
|
|
|
self.thread.start()
|
|
|
|
|
|
|
|
def update_pb(self, i: int):
|
2021-03-25 23:49:05 +13:00
|
|
|
self.info_pb.setValue(i / self.pb_size * 100)
|
2021-02-18 06:19:37 +13:00
|
|
|
|
|
|
|
def info(self, text: str):
|
|
|
|
if text == "finish":
|
2021-03-25 05:01:12 +13:00
|
|
|
self.info_text.setText(self.tr("Starting..."))
|
|
|
|
self.info_pb.setValue(100)
|
|
|
|
self.start_app.emit()
|
|
|
|
else:
|
|
|
|
self.info_text.setText(text)
|