1
0
Fork 0
mirror of synced 2024-06-18 18:44:45 +12:00

add Discord RPC

This commit is contained in:
Dummerle 2021-04-11 22:44:18 +02:00
parent 10839623c6
commit f58154f3f1
5 changed files with 41 additions and 7 deletions

View file

@ -1,14 +1,21 @@
import platform
import time
from PyQt5.QtCore import QSettings
from PyQt5.QtGui import QCloseEvent
from PyQt5.QtWidgets import QMainWindow, QMessageBox
from pypresence import Presence
from custom_legendary.core import LegendaryCore
from rare.components.tab_widget import TabWidget
class MainWindow(QMainWindow):
def __init__(self, core):
def __init__(self, core: LegendaryCore):
super(MainWindow, self).__init__()
settings = QSettings()
self.core = core
width, height = 1200, 800
if settings.value("save_size", False):
width, height = settings.value("window_size", (1200, 800), tuple)
@ -17,8 +24,25 @@ class MainWindow(QMainWindow):
self.setWindowTitle("Rare - GUI for legendary")
self.tab_widget = TabWidget(core)
self.setCentralWidget(self.tab_widget)
self.tab_widget.game_list.default_widget.game_list.game_started.connect(self.set_discord_rpc)
self.tab_widget.update_presence.connect(self.remove_rpc)
self.show()
def remove_rpc(self):
self.RPC.clear()
self.RPC.close()
del self.RPC
def set_discord_rpc(self, app_name):
self.RPC = Presence("830732538225360908")
self.RPC.connect()
title = self.core.get_installed_game(app_name).title
start = str(time.time()).split(".")[0]
self.RPC.update(large_image="logo", details=title, large_text=title, state="via Rare on " + platform.system(), start=start)
def closeEvent(self, e: QCloseEvent):
settings = QSettings()
if settings.value("sys_tray", True, bool):

View file

@ -1,6 +1,6 @@
import webbrowser
from PyQt5.QtCore import QSize
from PyQt5.QtCore import QSize, pyqtSignal
from PyQt5.QtWidgets import QMenu, QTabWidget, QWidget, QWidgetAction
from qtawesome import icon
@ -15,6 +15,9 @@ from custom_legendary.core import LegendaryCore
class TabWidget(QTabWidget):
update_presence = pyqtSignal()
def __init__(self, core: LegendaryCore):
super(TabWidget, self).__init__()
disabled_tab = 3
@ -39,8 +42,7 @@ class TabWidget(QTabWidget):
self.cloud_saves.finished.connect(self.finished_sync)
self.game_list.default_widget.game_list.sync_cloud.connect(
lambda app_name: self.cloud_saves.sync_game(app_name, True))
self.game_list.default_widget.game_list.game_exited.connect(self.game_finished)
# Space Tab
self.addTab(QWidget(), "")
@ -65,6 +67,10 @@ class TabWidget(QTabWidget):
account_button.menu().addAction(account_action)
self.tabBar().setTabButton(4, self.tabBar().RightSide, account_button)
def game_finished(self, app_name):
self.update_presence.emit()
self.cloud_saves.sync_game(app_name, True)
def dl_finished(self):
self.game_list.default_widget.game_list.update_list()
self.setTabText(1, "Downloads")

View file

@ -21,7 +21,8 @@ class GameList(QStackedWidget):
install_game = pyqtSignal(InstallOptions)
show_game_info = pyqtSignal(str)
update_game = pyqtSignal()
sync_cloud = pyqtSignal(str)
game_exited = pyqtSignal(str)
game_started = pyqtSignal(str)
def __init__(self, core: LegendaryCore):
super(GameList, self).__init__()
@ -165,12 +166,13 @@ class GameList(QStackedWidget):
logger.info("Auto saves disabled")
return
self.sync_cloud.emit(app_name)
self.game_exited.emit(app_name)
self.widgets[app_name][0].info_text = self.tr("Sync CLoud saves")
self.widgets[app_name][0].info_label.setText(self.tr("Sync CLoud saves"))
self.widgets[app_name][1].info_label.setText(self.tr("Sync CLoud saves"))
def launch(self, app_name):
self.game_started.emit(app_name)
self.widgets[app_name][0].info_text = self.tr("Game running")
self.widgets[app_name][1].launch_button.setDisabled(True)
self.widgets[app_name][1].launch_button.setText(self.tr("Game running"))

View file

@ -4,3 +4,4 @@ PyQt5
QtAwesome
notify-py
psutil
pypresence

View file

@ -33,6 +33,7 @@ setuptools.setup(
"PyQt5",
"QtAwesome",
"notify-py",
"psutil"
"psutil",
"pypresence"
],
)