1
0
Fork 0
mirror of synced 2024-06-26 10:11:19 +12:00

Fix login from merge

This commit is contained in:
Dummerle 2021-08-16 23:20:21 +02:00
parent 258fdabfec
commit 48768fd905
5 changed files with 91 additions and 84 deletions

View file

@ -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

View file

@ -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)

View file

@ -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)

View file

@ -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()

View file

@ -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>&lt;h2&gt;Login Succeful!&lt;/h2&gt;</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;h2 style=&quot;
margin-top:16px; margin-bottom:12px; margin-left:0px; margin-right:0px;
-qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot;
font-size:x-large; font-weight:600;&quot;&gt;Login Successful!&lt;/span&gt;&lt;/h2&gt;&lt;/body&gt;&lt;/html&gt;
</string>
</property>
</widget>
</item>