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

Add many rpc settings

This commit is contained in:
Dummerle 2021-04-12 20:31:12 +02:00
parent 8cf1eb4cba
commit 6787a6c282
3 changed files with 86 additions and 17 deletions

View file

@ -14,11 +14,11 @@ class MainWindow(QMainWindow):
def __init__(self, core: LegendaryCore):
super(MainWindow, self).__init__()
settings = QSettings()
self.settings = QSettings()
self.core = core
width, height = 1200, 800
if settings.value("save_size", False):
width, height = settings.value("window_size", (1200, 800), tuple)
if self.settings.value("save_size", False):
width, height = self.settings.value("window_size", (1200, 800), tuple)
self.setGeometry(0, 0, width, height)
self.setWindowTitle("Rare - GUI for legendary")
@ -30,25 +30,55 @@ class MainWindow(QMainWindow):
game = self.tab_widget.games_tab.default_widget.game_list.active_game
if game != ("", 0):
self.set_discord_rpc(game[0]) # Appname
self.RPC = None
if self.settings.value("rpc_enable", 0, int) == 1: # show always
self.RPC = Presence("830732538225360908")
self.RPC.connect()
self.update_rpc()
self.show()
def remove_rpc(self):
self.RPC.clear()
self.RPC.close()
del self.RPC
if self.settings.value("rpc_enable", 0, int) != 1:
if not self.RPC:
return
self.RPC.close()
del self.RPC
self.RPC = None
else:
self.update_rpc()
def set_discord_rpc(self, app_name):
self.RPC = Presence("830732538225360908") # Rare app: https://discord.com/developers/applications
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)
if not self.RPC:
self.RPC = Presence("830732538225360908") # Rare app: https://discord.com/developers/applications
self.RPC.connect()
self.update_rpc(app_name)
def update_rpc(self, app_name=None):
if self.settings.value("rpc_enable", 0, int) == 2:
self.remove_rpc()
return
title = None
if not app_name:
self.RPC.update(large_image="logo",
details="https://github.com/Dummerle/Rare")
return
if self.settings.value("rpc_name", True, bool):
title = self.core.get_installed_game(app_name).title
start = None
if self.settings.value("rpc_time", True, bool):
start = str(time.time()).split(".")[0]
os = None
if self.settings.value("rpc_os", True, bool):
os = "via Rare on " + platform.system()
self.RPC.update(large_image="logo",
details=title,
large_text=title,
state=os,
start=start)
def closeEvent(self, e: QCloseEvent):
settings = QSettings()
if settings.value("sys_tray", True, bool):
if self.settings.value("sys_tray", True, bool):
self.hide()
e.ignore()
return
@ -56,8 +86,8 @@ class MainWindow(QMainWindow):
if not QMessageBox.question(self, "Close", self.tr("There is a download active. Do you really want to exit app?"), QMessageBox.Yes, QMessageBox.No) == QMessageBox.Yes:
e.ignore()
return
if settings.value("save_size", False, bool):
if self.settings.value("save_size", False, bool):
size = self.size().width(), self.size().height()
settings.setValue("window_size", size)
self.settings.setValue("window_size", size)
e.accept()

View file

@ -5,6 +5,7 @@ from logging import getLogger
from PyQt5.QtCore import QSettings, Qt
from PyQt5.QtWidgets import QVBoxLayout, QFileDialog, QComboBox, QPushButton, QCheckBox, QGroupBox, QScrollArea
from rare.components.tabs.settings.rpc_settings import RPCSettings
from rare.components.tabs.settings.settings_widget import SettingsWidget
from rare.utils.extra_widgets import PathEdit
from rare.utils.utils import get_lang, get_possible_langs
@ -55,6 +56,9 @@ class RareSettings(QScrollArea):
self.sys_tray_widget = SettingsWidget(self.tr("Exit to System Tray Icon"), self.exit_to_sys_tray)
self.layout.addWidget(self.sys_tray_widget)
self.rpc = RPCSettings()
self.layout.addWidget(self.rpc)
self.game_start_accept = QCheckBox(self.tr("Confirm launch of game"))
self.game_start_accept.stateChanged.connect(lambda x: self.settings.setValue("confirm_start", self.game_start_accept.isChecked()))
self.game_start_accept_widget = SettingsWidget(self.tr("Confirm launch of game"), self.game_start_accept)

View file

@ -0,0 +1,35 @@
from PyQt5.QtCore import QSettings
from PyQt5.QtWidgets import QGroupBox, QCheckBox, QVBoxLayout, QComboBox
class RPCSettings(QGroupBox):
def __init__(self):
super(RPCSettings, self).__init__()
self.setTitle(self.tr("Discord RPC"))
self.setObjectName("settings_widget")
self.settings = QSettings()
self.layout = QVBoxLayout()
self.enable = QComboBox()
self.enable_states = [self.tr("Show when playing"), self.tr("Show always"), self.tr("Show never")]
self.enable.addItems(self.enable_states)
self.enable.setCurrentIndex(self.settings.value("rpc_enable", 0, int))
self.layout.addWidget(self.enable)
self.enable.currentIndexChanged.connect(lambda i: self.settings.setValue("rpc_enable", i))
self.show_game = QCheckBox(self.tr("Show Game"))
self.show_game.setChecked((self.settings.value("rpc_name", True, bool)))
self.layout.addWidget(self.show_game)
self.show_game.stateChanged.connect(lambda: self.settings.setValue("rpc_game", self.show_game.isChecked()))
self.show_os = QCheckBox(self.tr("Show OS"))
self.layout.addWidget(self.show_os)
self.show_os.setChecked((self.settings.value("rpc_os", True, bool)))
self.show_os.stateChanged.connect(lambda: self.settings.setValue("rpc_os", self.show_os.isChecked()))
self.show_time = QCheckBox(self.tr("Show Time playing"))
self.layout.addWidget(self.show_time)
self.show_time.setChecked((self.settings.value("rpc_time", True, bool)))
self.show_time.stateChanged.connect(lambda: self.settings.setValue("rpc_time", self.show_time.isChecked()))
self.setLayout(self.layout)