2021-06-04 09:33:36 +12:00
|
|
|
from PyQt5.QtCore import Qt
|
2021-02-18 01:58:29 +13:00
|
|
|
from PyQt5.QtWidgets import QDialog, QVBoxLayout, QLabel, QStackedLayout, QWidget, QPushButton
|
|
|
|
|
2021-04-23 00:34:06 +12:00
|
|
|
from custom_legendary.core import LegendaryCore
|
2021-02-18 01:58:29 +13:00
|
|
|
# Login Opportunities: Browser, Import
|
2021-04-08 08:39:23 +12:00
|
|
|
from rare.components.dialogs.login.browser_login import BrowserLogin
|
|
|
|
from rare.components.dialogs.login.import_widget import ImportWidget
|
2021-02-18 01:58:29 +13:00
|
|
|
|
|
|
|
|
|
|
|
class LoginDialog(QDialog):
|
|
|
|
logged_in: bool = False
|
|
|
|
|
|
|
|
def __init__(self, core: LegendaryCore):
|
|
|
|
super(LoginDialog, self).__init__()
|
|
|
|
|
|
|
|
self.core = core
|
|
|
|
self.setWindowTitle("Rare - Login")
|
2021-03-15 06:11:55 +13:00
|
|
|
self.setFixedWidth(350)
|
|
|
|
self.setFixedHeight(450)
|
2021-06-04 09:33:36 +12:00
|
|
|
self.setAttribute(Qt.WA_DeleteOnClose, True)
|
2021-02-18 01:58:29 +13:00
|
|
|
self.init_ui()
|
|
|
|
|
|
|
|
def init_ui(self):
|
|
|
|
self.layout = QStackedLayout()
|
|
|
|
|
|
|
|
self.landing_widget = QWidget()
|
|
|
|
self.landing_layout = QVBoxLayout()
|
|
|
|
|
|
|
|
self.title = QLabel(f"<h1>{self.tr('Welcome to Rare')}</h1>")
|
|
|
|
self.landing_layout.addWidget(self.title)
|
|
|
|
self.info_text = QLabel(self.tr("Select one option to Login"))
|
|
|
|
self.landing_layout.addWidget(self.info_text)
|
|
|
|
|
2021-03-12 00:56:38 +13:00
|
|
|
self.browser_login = OptionWidget(self.tr("Use Browser"),
|
|
|
|
self.tr("This opens your default browser. Login and copy the text"))
|
2021-02-18 22:22:15 +13:00
|
|
|
|
2021-02-18 01:58:29 +13:00
|
|
|
self.landing_layout.addWidget(self.browser_login)
|
|
|
|
self.browser_login.button.clicked.connect(lambda: self.layout.setCurrentIndex(1))
|
|
|
|
|
|
|
|
self.import_login = OptionWidget("Import from existing installation",
|
|
|
|
"Import an existing login session from an Epic Games Launcher installation. You will get logged out there")
|
|
|
|
self.import_login.button.clicked.connect(lambda: self.layout.setCurrentIndex(2))
|
2021-03-15 06:11:55 +13:00
|
|
|
self.landing_layout.addWidget(self.import_login)
|
2021-02-18 01:58:29 +13:00
|
|
|
|
|
|
|
self.close_button = QPushButton("Exit App")
|
|
|
|
self.close_button.clicked.connect(self.close)
|
|
|
|
self.landing_layout.addWidget(self.close_button)
|
|
|
|
|
|
|
|
self.landing_widget.setLayout(self.landing_layout)
|
|
|
|
self.layout.addWidget(self.landing_widget)
|
|
|
|
|
|
|
|
self.browser_widget = BrowserLogin(self.core)
|
|
|
|
self.browser_widget.success.connect(self.success)
|
2021-02-18 22:22:15 +13:00
|
|
|
self.browser_widget.back.clicked.connect(lambda: self.layout.setCurrentIndex(0))
|
2021-02-18 01:58:29 +13:00
|
|
|
self.layout.addWidget(self.browser_widget)
|
|
|
|
|
2021-02-18 22:22:15 +13:00
|
|
|
self.import_widget = ImportWidget(self.core)
|
2021-02-20 00:57:55 +13:00
|
|
|
self.import_widget.back.clicked.connect(lambda: self.layout.setCurrentIndex(0))
|
2021-03-15 06:37:26 +13:00
|
|
|
self.import_widget.success.connect(self.success)
|
2021-02-18 01:58:29 +13:00
|
|
|
self.layout.addWidget(self.import_widget)
|
|
|
|
|
|
|
|
self.layout.addWidget(LoginSuccessfulWidget())
|
|
|
|
|
|
|
|
self.setLayout(self.layout)
|
|
|
|
|
|
|
|
def login(self):
|
|
|
|
self.exec_()
|
|
|
|
return self.logged_in
|
|
|
|
|
|
|
|
def success(self):
|
|
|
|
if self.core.login():
|
|
|
|
self.logged_in = True
|
|
|
|
self.layout.setCurrentIndex(3)
|
2021-02-18 22:22:15 +13:00
|
|
|
# time.sleep(1)
|
2021-02-18 01:58:29 +13:00
|
|
|
self.close()
|
|
|
|
|
|
|
|
|
|
|
|
class OptionWidget(QWidget):
|
|
|
|
def __init__(self, btn_text: str, info_text: str):
|
|
|
|
super(OptionWidget, self).__init__()
|
|
|
|
self.layout = QVBoxLayout()
|
|
|
|
self.text = QLabel(info_text)
|
|
|
|
self.text.setWordWrap(True)
|
|
|
|
self.button = QPushButton(btn_text)
|
|
|
|
|
|
|
|
self.layout.addWidget(self.button)
|
|
|
|
self.layout.addWidget(self.text)
|
|
|
|
|
|
|
|
self.setLayout(self.layout)
|
|
|
|
|
2021-02-27 07:28:54 +13:00
|
|
|
|
2021-02-18 01:58:29 +13:00
|
|
|
class LoginSuccessfulWidget(QWidget):
|
|
|
|
def __init__(self):
|
|
|
|
super(LoginSuccessfulWidget, self).__init__()
|
|
|
|
self.layout = QVBoxLayout()
|
|
|
|
self.layout.addWidget(QLabel("Login Successful"))
|
2021-02-27 07:28:54 +13:00
|
|
|
self.setLayout(self.layout)
|