Fix login from merge
This commit is contained in:
parent
258fdabfec
commit
48768fd905
5 changed files with 91 additions and 84 deletions
|
@ -1,96 +1,102 @@
|
|||
from PyQt5.QtWidgets import QDialog, QVBoxLayout, QLabel, QStackedLayout, QWidget, QPushButton
|
||||
from dataclasses import dataclass
|
||||
from logging import getLogger
|
||||
|
||||
from PyQt5.QtCore import Qt
|
||||
from PyQt5.QtWidgets import QDialog
|
||||
|
||||
from custom_legendary.core import LegendaryCore
|
||||
# Login Opportunities: Browser, Import
|
||||
from rare.components.dialogs.login.browser_login import BrowserLogin
|
||||
from rare.components.dialogs.login.import_login import ImportLogin
|
||||
from rare.ui.components.dialogs.login.login_dialog import Ui_LoginDialog
|
||||
|
||||
logger = getLogger("Login")
|
||||
|
||||
|
||||
class LoginDialog(QDialog):
|
||||
@dataclass
|
||||
class LoginPages:
|
||||
landing: int
|
||||
browser: int
|
||||
import_egl: int
|
||||
success: int
|
||||
|
||||
|
||||
class LoginDialog(QDialog, Ui_LoginDialog):
|
||||
logged_in: bool = False
|
||||
pages = LoginPages(landing=0, browser=1, import_egl=2, success=3)
|
||||
|
||||
def __init__(self, core: LegendaryCore):
|
||||
super(LoginDialog, self).__init__()
|
||||
def __init__(self, core: LegendaryCore, parent=None):
|
||||
super(LoginDialog, self).__init__(parent=parent)
|
||||
self.setupUi(self)
|
||||
self.setAttribute(Qt.WA_DeleteOnClose, True)
|
||||
self.setWindowFlags(Qt.Dialog | Qt.CustomizeWindowHint | Qt.WindowTitleHint)
|
||||
|
||||
self.core = core
|
||||
self.setWindowTitle("Rare - Login")
|
||||
self.setFixedWidth(350)
|
||||
self.setFixedHeight(450)
|
||||
|
||||
self.init_ui()
|
||||
self.browser_page = BrowserLogin(self.core, self.login_stack)
|
||||
self.login_stack.insertWidget(self.pages.browser, self.browser_page)
|
||||
self.browser_page.success.connect(self.login_successful)
|
||||
self.browser_page.changed.connect(
|
||||
lambda: self.next_button.setEnabled(self.browser_page.is_valid())
|
||||
)
|
||||
self.import_page = ImportLogin(self.core, self.login_stack)
|
||||
self.login_stack.insertWidget(self.pages.import_egl, self.import_page)
|
||||
self.import_page.success.connect(self.login_successful)
|
||||
self.import_page.changed.connect(
|
||||
lambda: self.next_button.setEnabled(self.import_page.is_valid())
|
||||
)
|
||||
|
||||
def init_ui(self):
|
||||
self.layout = QStackedLayout()
|
||||
self.next_button.setEnabled(False)
|
||||
self.back_button.setEnabled(False)
|
||||
|
||||
self.landing_widget = QWidget()
|
||||
self.landing_layout = QVBoxLayout()
|
||||
self.login_browser_radio.clicked.connect(lambda: self.next_button.setEnabled(True))
|
||||
self.login_import_radio.clicked.connect(lambda: self.next_button.setEnabled(True))
|
||||
self.exit_button.clicked.connect(self.close)
|
||||
self.back_button.clicked.connect(self.back_clicked)
|
||||
self.next_button.clicked.connect(self.next_clicked)
|
||||
|
||||
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)
|
||||
self.login_stack.setCurrentIndex(self.pages.landing)
|
||||
|
||||
self.browser_login = OptionWidget(self.tr("Use Browser"),
|
||||
self.tr("This opens your default browser. Login and copy the text"))
|
||||
self.resize(self.minimumSizeHint())
|
||||
self.setFixedSize(self.size())
|
||||
|
||||
self.landing_layout.addWidget(self.browser_login)
|
||||
self.browser_login.button.clicked.connect(lambda: self.layout.setCurrentIndex(1))
|
||||
def back_clicked(self):
|
||||
self.back_button.setEnabled(False)
|
||||
self.next_button.setEnabled(True)
|
||||
self.login_stack.setCurrentIndex(self.pages.landing)
|
||||
|
||||
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))
|
||||
self.landing_layout.addWidget(self.import_login)
|
||||
|
||||
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)
|
||||
self.browser_widget.back.clicked.connect(lambda: self.layout.setCurrentIndex(0))
|
||||
self.layout.addWidget(self.browser_widget)
|
||||
|
||||
self.import_widget = ImportLogin(self.core)
|
||||
self.import_widget.back.clicked.connect(lambda: self.layout.setCurrentIndex(0))
|
||||
self.import_widget.success.connect(self.success)
|
||||
self.layout.addWidget(self.import_widget)
|
||||
|
||||
self.layout.addWidget(LoginSuccessfulWidget())
|
||||
|
||||
self.setLayout(self.layout)
|
||||
def next_clicked(self):
|
||||
if self.login_stack.currentIndex() == self.pages.landing:
|
||||
if self.login_browser_radio.isChecked():
|
||||
self.login_stack.setCurrentIndex(self.pages.browser)
|
||||
self.next_button.setEnabled(False)
|
||||
if self.login_import_radio.isChecked():
|
||||
self.login_stack.setCurrentIndex(self.pages.import_egl)
|
||||
self.next_button.setEnabled(self.import_page.is_valid())
|
||||
self.back_button.setEnabled(True)
|
||||
elif self.login_stack.currentIndex() == self.pages.browser:
|
||||
self.browser_page.do_login()
|
||||
elif self.login_stack.currentIndex() == self.pages.import_egl:
|
||||
self.import_page.do_login()
|
||||
else:
|
||||
self.close()
|
||||
|
||||
def login(self):
|
||||
self.exec_()
|
||||
return self.logged_in
|
||||
|
||||
def success(self):
|
||||
if self.core.login():
|
||||
self.logged_in = True
|
||||
self.layout.setCurrentIndex(3)
|
||||
# time.sleep(1)
|
||||
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)
|
||||
|
||||
|
||||
class LoginSuccessfulWidget(QWidget):
|
||||
def __init__(self):
|
||||
super(LoginSuccessfulWidget, self).__init__()
|
||||
self.layout = QVBoxLayout()
|
||||
self.layout.addWidget(QLabel("Login Successful"))
|
||||
self.setLayout(self.layout)
|
||||
def login_successful(self):
|
||||
try:
|
||||
if self.core.login():
|
||||
self.logged_in = True
|
||||
self.welcome_label.setText(
|
||||
self.welcome_label.text().replace("</h1>", f", {self.core.lgd.userdata['displayName']}</h1>")
|
||||
)
|
||||
self.exit_button.setVisible(False)
|
||||
self.back_button.setVisible(False)
|
||||
self.login_stack.setCurrentIndex(self.pages.success)
|
||||
else:
|
||||
raise ValueError("Login failed.")
|
||||
except ValueError as e:
|
||||
logger.error(str(e))
|
||||
self.next_button.setEnabled(False)
|
||||
self.logged_in = False
|
||||
|
|
|
@ -130,11 +130,9 @@ class GameInfo(QWidget, Ui_GameInfo):
|
|||
def update_game(self, app_name):
|
||||
self.game = self.core.get_game(app_name)
|
||||
self.igame = self.core.get_installed_game(app_name)
|
||||
|
||||
self.game_title.setText(f"<h2>{self.game.app_title}</h2>")
|
||||
|
||||
pixmap = get_pixmap(app_name)
|
||||
|
||||
w = 200
|
||||
pixmap = pixmap.scaled(w, int(w * 4 / 3))
|
||||
self.image.setPixmap(pixmap)
|
||||
|
|
|
@ -81,7 +81,6 @@ class UninstalledInfo(QWidget, Ui_GameInfo):
|
|||
|
||||
def update_game(self, app_name):
|
||||
self.game = self.core.get_game(app_name)
|
||||
|
||||
self.game_title.setText(f"<h2>{self.game.app_title}</h2>")
|
||||
|
||||
pixmap = get_pixmap(app_name)
|
||||
|
|
|
@ -14,7 +14,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
|
|||
class Ui_LoginDialog(object):
|
||||
def setupUi(self, LoginDialog):
|
||||
LoginDialog.setObjectName("LoginDialog")
|
||||
LoginDialog.resize(492, 311)
|
||||
LoginDialog.resize(498, 311)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
|
@ -103,7 +103,7 @@ class Ui_LoginDialog(object):
|
|||
self.dialog_layout.addLayout(self.button_layout)
|
||||
|
||||
self.retranslateUi(LoginDialog)
|
||||
self.login_stack.setCurrentIndex(0)
|
||||
self.login_stack.setCurrentIndex(1)
|
||||
QtCore.QMetaObject.connectSlotsByName(LoginDialog)
|
||||
|
||||
def retranslateUi(self, LoginDialog):
|
||||
|
@ -115,7 +115,8 @@ class Ui_LoginDialog(object):
|
|||
self.login_import_label.setText(_translate("LoginDialog", "Import from Epic Games Launcher"))
|
||||
self.login_import_radio.setText(_translate("LoginDialog", "Import"))
|
||||
self.login_browser_radio.setText(_translate("LoginDialog", "Browser"))
|
||||
self.success_label.setText(_translate("LoginDialog", "<h2>Login Succeful!</h2>"))
|
||||
self.success_label.setText(_translate("LoginDialog",
|
||||
"<html><head/><body><h2 style=\" margin-top:16px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:x-large; font-weight:600;\">Login Successful!</span></h2></body></html>"))
|
||||
self.exit_button.setText(_translate("LoginDialog", "Exit"))
|
||||
self.back_button.setText(_translate("LoginDialog", "Back"))
|
||||
self.next_button.setText(_translate("LoginDialog", "Next"))
|
||||
|
@ -123,7 +124,6 @@ class Ui_LoginDialog(object):
|
|||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
|
||||
app = QtWidgets.QApplication(sys.argv)
|
||||
LoginDialog = QtWidgets.QDialog()
|
||||
ui = Ui_LoginDialog()
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>492</width>
|
||||
<width>498</width>
|
||||
<height>311</height>
|
||||
</rect>
|
||||
</property>
|
||||
|
@ -77,7 +77,7 @@
|
|||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="login_page">
|
||||
<property name="enabled">
|
||||
|
@ -167,7 +167,11 @@
|
|||
<item>
|
||||
<widget class="QLabel" name="success_label">
|
||||
<property name="text">
|
||||
<string><h2>Login Succeful!</h2></string>
|
||||
<string><html><head/><body><h2 style="
|
||||
margin-top:16px; margin-bottom:12px; margin-left:0px; margin-right:0px;
|
||||
-qt-block-indent:0; text-indent:0px;"><span style="
|
||||
font-size:x-large; font-weight:600;">Login Successful!</span></h2></body></html>
|
||||
</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
|
Loading…
Reference in a new issue