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

Add loading widget to cloud saves

This commit is contained in:
lennard 2023-04-02 20:00:09 +02:00 committed by Dummerle
parent 0943d06820
commit 37a8a052c8
3 changed files with 23 additions and 9 deletions

View file

@ -24,6 +24,7 @@ from rare.ui.components.tabs.games.game_info.cloud_widget import Ui_CloudWidget
from rare.ui.components.tabs.games.game_info.sync_widget import Ui_SyncWidget
from rare.utils.misc import icon
from rare.widgets.indicator_edit import PathEdit, IndicatorReasonsCommon
from rare.widgets.loading_widget import LoadingWidget
from rare.widgets.side_tab import SideTabContents
logger = getLogger("CloudWidget")
@ -48,6 +49,11 @@ class CloudSaves(QWidget, SideTabContents):
self.sync_ui.upload_button.clicked.connect(self.upload)
self.sync_ui.download_button.clicked.connect(self.download)
self.loading_widget = LoadingWidget(self.sync_widget)
self.loading_widget.setGeometry(self.sync_widget.width() + 64, self.sync_widget.height() // 2, 128, 128)
self.loading_widget.setVisible(False)
self.rgame: RareGame = None
self.cloud_widget = QGroupBox(self)
@ -93,13 +99,13 @@ class CloudSaves(QWidget, SideTabContents):
self.rgame.save_path = text
def upload(self):
self.sync_ui.upload_button.setDisabled(True)
self.sync_ui.download_button.setDisabled(True)
self.sync_widget.setEnabled(False)
self.loading_widget.setVisible(True)
self.rgame.upload_saves()
def download(self):
self.sync_ui.upload_button.setDisabled(True)
self.sync_ui.download_button.setDisabled(True)
self.sync_widget.setEnabled(False)
self.loading_widget.setVisible(True)
self.rgame.download_saves()
def compute_save_path(self):
@ -155,7 +161,10 @@ class CloudSaves(QWidget, SideTabContents):
supports_saves = self.rgame.igame is not None and (
self.rgame.game.supports_cloud_saves or self.rgame.game.supports_mac_cloud_saves
)
self.sync_widget.setEnabled(bool(supports_saves and self.rgame.save_path)) # and not self.rgame.is_save_up_to_date))
self.sync_widget.setEnabled(
bool(supports_saves and self.rgame.save_path)) # and not self.rgame.is_save_up_to_date))
self.cloud_widget.setEnabled(supports_saves)
self.info_label.setVisible(not supports_saves)
if not supports_saves:
@ -185,8 +194,11 @@ class CloudSaves(QWidget, SideTabContents):
)
button_disabled = self.rgame.state in [RareGame.State.RUNNING, RareGame.State.SYNCING]
self.sync_ui.download_button.setDisabled(button_disabled)
self.sync_ui.upload_button.setDisabled(button_disabled)
self.sync_widget.setDisabled(button_disabled)
self.loading_widget.setVisible(button_disabled)
self.sync_ui.upload_button.setDisabled(not dt_local)
self.sync_ui.download_button.setDisabled(not dt_remote)
self.cloud_ui.cloud_sync.blockSignals(True)
self.cloud_ui.cloud_sync.setChecked(self.rgame.auto_sync_saves)

View file

@ -198,6 +198,7 @@ class RareGameSlim(RareGameBase):
def _upload():
logger.info(f"Uploading save for {self.title}")
self.state = RareGameSlim.State.SYNCING
self.signals.widget.update.emit()
self.core.upload_save(self.app_name, self.igame.save_path, dt_local)
self.state = RareGameSlim.State.IDLE
self.update_saves()
@ -223,6 +224,7 @@ class RareGameSlim(RareGameBase):
def _download():
logger.info(f"Downloading save for {self.title}")
self.state = RareGameSlim.State.SYNCING
self.signals.widget.update.emit()
self.core.download_saves(self.app_name, self.latest_save.file.manifest_name, self.save_path)
self.state = RareGameSlim.State.IDLE
self.update_saves()

View file

@ -6,8 +6,8 @@ from rare.utils.misc import icon
class LoadingWidget(qtawesome.IconWidget):
def __init__(self):
super().__init__()
def __init__(self, parent=None):
super().__init__(parent=parent)
self.setIconSize(QSize(128, 128))
spin_icon = icon('mdi.loading',
animation=qtawesome.Spin(self, interval=5))