1
0
Fork 0
mirror of synced 2024-06-02 18:54:41 +12:00

Some ui improvements for cloud saves

- Show text on widget if save is not up-to-date
- Fix text in game info -> cloud saves

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
This commit is contained in:
lennard 2023-02-06 00:28:42 +02:00 committed by loathingKernel
parent 189167f4f7
commit 70960c73c4
No known key found for this signature in database
GPG key ID: CE0C72D0B53821FD
5 changed files with 43 additions and 11 deletions

View file

@ -13,6 +13,7 @@ from PyQt5.QtWidgets import (
QVBoxLayout,
QSpacerItem,
)
from legendary.models.game import SaveGameStatus
from rare.models.game import RareGame
from rare.shared import LegendaryCoreSingleton
@ -162,18 +163,22 @@ class CloudSaves(QWidget, SideTabContents):
self.sync_ui.download_button.setDisabled(button_disabled)
self.sync_ui.upload_button.setDisabled(button_disabled)
newer = "remote"
new_text = self.tr(" (newer)")
if newer == "remote":
self.sync_ui.cloud_gb.setTitle(self.sync_ui.cloud_gb.title() + new_text)
elif newer == "local":
self.sync_ui.local_gb.setTitle(self.sync_ui.local_gb.title() + new_text)
status, (dt_local, dt_remote) = rgame.save_state
if status == SaveGameStatus.LOCAL_NEWER:
self.sync_ui.local_new_label.setVisible(True)
self.sync_ui.cloud_new_label.setVisible(False)
elif status == SaveGameStatus.REMOTE_NEWER:
self.sync_ui.local_new_label.setVisible(False)
self.sync_ui.cloud_new_label.setVisible(True)
else:
self.sync_ui.local_new_label.setVisible(False)
self.sync_ui.cloud_new_label.setVisible(False)
sync_cloud = self.settings.value(f"{self.rgame.app_name}/auto_sync_cloud", True, bool)
self.cloud_ui.cloud_sync.setChecked(sync_cloud)
if hasattr(self.rgame.igame, "save_path") and self.rgame.igame.save_path:
self.cloud_save_path_edit.setText(self.rgame.igame.save_path)
status, (dt_local, dt_remote) = rgame.save_state
self.sync_ui.date_info_local.setText(dt_local.strftime("%A, %d. %B %Y %X") if dt_local else "None")
self.sync_ui.date_info_remote.setText(dt_remote.strftime("%A, %d. %B %Y %X") if dt_remote else "None")
else:

View file

@ -292,6 +292,11 @@ class RareGame(RareGameSlim):
worker = QRunnable.create(lambda: _download())
QThreadPool.globalInstance().start(worker)
@property
def is_save_up_to_date(self):
status, (_, _) = self.save_state
return status == SaveGameStatus.SAME_AGE
@pyqtSlot(int)
def __game_launched(self, code: int):
if code == GameProcess.Code.ON_STARTUP:
@ -599,13 +604,13 @@ class RareGame(RareGameSlim):
@property
def raw_save_path(self) -> str:
if self.game.supports_cloud_saves:
return self.game.metadata['customAttributes'].get("CloudSaveFolder", {}).get("value")
return self.game.metadata.get("customAttributes", {}).get("CloudSaveFolder", {}).get("value")
return ""
@property
def raw_save_path_mac(self) -> str:
if self.game.supports_mac_cloud_saves:
return self.game.metadata['customAttributes'].get('CloudSaveFolder_MAC', {}).get('value')
return self.game.metadata.get("customAttributes", {}).get('CloudSaveFolder_MAC', {}).get('value')
return ""
@property

View file

@ -432,12 +432,12 @@ class RareCore(QObject):
"""!
SaveGameFiles across games
"""
return chain.from_iterable([game.save.latest_save for game in self.has_saves])
return chain.from_iterable([game.saves for game in self.has_saves])
@property
def has_saves(self) -> Iterator[RareGame]:
"""!
RareGames that have SaveGameFiles associated with them
"""
return self.__filter_games(lambda game: bool(game.save))
return self.__filter_games(lambda game: bool(game.saves))

View file

@ -39,6 +39,9 @@ class Ui_SyncWidget(object):
self.icon_local.setAlignment(QtCore.Qt.AlignCenter)
self.icon_local.setObjectName("icon_local")
self.local_layout.addWidget(self.icon_local)
self.local_new_label = QtWidgets.QLabel(self.local_gb)
self.local_new_label.setObjectName("local_new_label")
self.local_layout.addWidget(self.local_new_label)
self.upload_button = QtWidgets.QPushButton(self.local_gb)
self.upload_button.setObjectName("upload_button")
self.local_layout.addWidget(self.upload_button)
@ -62,6 +65,9 @@ class Ui_SyncWidget(object):
self.icon_remote.setAlignment(QtCore.Qt.AlignCenter)
self.icon_remote.setObjectName("icon_remote")
self.cloud_layout.addWidget(self.icon_remote)
self.cloud_new_label = QtWidgets.QLabel(self.cloud_gb)
self.cloud_new_label.setObjectName("cloud_new_label")
self.cloud_layout.addWidget(self.cloud_new_label)
self.download_button = QtWidgets.QPushButton(self.cloud_gb)
self.download_button.setObjectName("download_button")
self.cloud_layout.addWidget(self.download_button)
@ -74,8 +80,10 @@ class Ui_SyncWidget(object):
_translate = QtCore.QCoreApplication.translate
SyncWidget.setWindowTitle(_translate("SyncWidget", "Form"))
self.local_gb.setTitle(_translate("SyncWidget", "Local"))
self.local_new_label.setText(_translate("SyncWidget", "Newer"))
self.upload_button.setText(_translate("SyncWidget", "Upload"))
self.cloud_gb.setTitle(_translate("SyncWidget", "Cloud"))
self.cloud_new_label.setText(_translate("SyncWidget", "Newer"))
self.download_button.setText(_translate("SyncWidget", "Download"))

View file

@ -60,6 +60,13 @@
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="local_new_label">
<property name="text">
<string>Newer</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="upload_button">
<property name="text">
@ -102,6 +109,13 @@
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="cloud_new_label">
<property name="text">
<string>Newer</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="download_button">
<property name="text">