1
0
Fork 0
mirror of synced 2024-06-29 03:31:06 +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): def __init__(self, core: LegendaryCore):
super(MainWindow, self).__init__() super(MainWindow, self).__init__()
settings = QSettings() self.settings = QSettings()
self.core = core self.core = core
width, height = 1200, 800 width, height = 1200, 800
if settings.value("save_size", False): if self.settings.value("save_size", False):
width, height = settings.value("window_size", (1200, 800), tuple) width, height = self.settings.value("window_size", (1200, 800), tuple)
self.setGeometry(0, 0, width, height) self.setGeometry(0, 0, width, height)
self.setWindowTitle("Rare - GUI for legendary") 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 game = self.tab_widget.games_tab.default_widget.game_list.active_game
if game != ("", 0): if game != ("", 0):
self.set_discord_rpc(game[0]) # Appname 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() self.show()
def remove_rpc(self): def remove_rpc(self):
self.RPC.clear() if self.settings.value("rpc_enable", 0, int) != 1:
self.RPC.close() if not self.RPC:
del self.RPC return
self.RPC.close()
del self.RPC
self.RPC = None
else:
self.update_rpc()
def set_discord_rpc(self, app_name): def set_discord_rpc(self, app_name):
self.RPC = Presence("830732538225360908") # Rare app: https://discord.com/developers/applications if not self.RPC:
self.RPC.connect() self.RPC = Presence("830732538225360908") # Rare app: https://discord.com/developers/applications
title = self.core.get_installed_game(app_name).title self.RPC.connect()
start = str(time.time()).split(".")[0] self.update_rpc(app_name)
self.RPC.update(large_image="logo", details=title, large_text=title,
state="via Rare on " + platform.system(), start=start) 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): def closeEvent(self, e: QCloseEvent):
settings = QSettings() if self.settings.value("sys_tray", True, bool):
if settings.value("sys_tray", True, bool):
self.hide() self.hide()
e.ignore() e.ignore()
return 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: 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() e.ignore()
return return
if settings.value("save_size", False, bool): if self.settings.value("save_size", False, bool):
size = self.size().width(), self.size().height() size = self.size().width(), self.size().height()
settings.setValue("window_size", size) self.settings.setValue("window_size", size)
e.accept() e.accept()

View file

@ -5,6 +5,7 @@ from logging import getLogger
from PyQt5.QtCore import QSettings, Qt from PyQt5.QtCore import QSettings, Qt
from PyQt5.QtWidgets import QVBoxLayout, QFileDialog, QComboBox, QPushButton, QCheckBox, QGroupBox, QScrollArea 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.components.tabs.settings.settings_widget import SettingsWidget
from rare.utils.extra_widgets import PathEdit from rare.utils.extra_widgets import PathEdit
from rare.utils.utils import get_lang, get_possible_langs 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.sys_tray_widget = SettingsWidget(self.tr("Exit to System Tray Icon"), self.exit_to_sys_tray)
self.layout.addWidget(self.sys_tray_widget) 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 = 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.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) 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)