1
0
Fork 0
mirror of synced 2024-06-02 10:44:40 +12:00

CloudSaves: Better handling of changing between games and some UI cleanup

This commit is contained in:
loathingKernel 2023-03-11 02:05:41 +02:00
parent fc015a4d30
commit 993b9fca17
No known key found for this signature in database
GPG key ID: CE0C72D0B53821FD
4 changed files with 63 additions and 50 deletions

View file

@ -5,7 +5,7 @@ from logging import getLogger
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QDialog, QSizePolicy, QLayout, QApplication, QWidget
from legendary.core import LegendaryCore
from legendary.models.game import InstalledGame
from legendary.models.game import InstalledGame, SaveGameStatus
from rare.ui.components.dialogs.sync_save_dialog import Ui_SyncSaveDialog
from rare.ui.components.tabs.games.game_info.sync_widget import Ui_SyncWidget
@ -39,24 +39,23 @@ class CloudSaveDialog(QDialog, Ui_SyncSaveDialog):
self.status = self.CANCEL
self.title_label.setText(self.title_label.text() + igame.title)
self.title_label.setText(f"{self.title_label.text()} <b>{igame.title}</b>")
self.sync_ui.date_info_local.setText(dt_local.strftime("%A, %d. %B %Y %X"))
self.sync_ui.date_info_remote.setText(dt_remote.strftime("%A, %d. %B %Y %X"))
new_text = self.tr(" (newer)")
newer = ""
newer = self.tr("Newer")
if dt_remote and dt_local:
newer = "remote" if dt_remote > dt_local else "local"
self.sync_ui.age_label_local.setText(
f"<b>{newer}</b>" if dt_remote > dt_local else " "
)
self.sync_ui.age_label_remote.setText(
f"<b>{newer}</b>" if dt_remote < dt_local else " "
)
elif dt_remote and not dt_local:
self.status = self.DOWNLOAD
else:
self.status = self.UPLOAD
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)
self.sync_ui.date_info_local.setText(dt_local.strftime("%A, %d. %B %Y %X"))
self.sync_ui.date_info_remote.setText(dt_remote.strftime("%A, %d. %B %Y %X"))
self.sync_ui.icon_local.setPixmap(icon("mdi.harddisk", "fa.desktop").pixmap(128, 128))
self.sync_ui.icon_remote.setPixmap(icon("mdi.cloud-outline", "ei.cloud").pixmap(128, 128))
@ -71,7 +70,7 @@ class CloudSaveDialog(QDialog, Ui_SyncSaveDialog):
def get_action(self):
if self.status:
return self.status
self.show()
self.exec_()
return self.status
def btn_clicked(self, status):
@ -83,7 +82,7 @@ def test_dialog():
app = QApplication(sys.argv)
core = LegendaryCore()
dlg = CloudSaveDialog(core.get_installed_list()[0], datetime.datetime.now(),
datetime.datetime.strptime("2021,1", "%Y,%M"), "local")
datetime.datetime.strptime("2021,1", "%Y,%M"))
print(dlg.get_action())

View file

@ -54,7 +54,7 @@ class CloudSaves(QWidget, SideTabContents):
self.cloud_save_path_edit = PathEdit(
"",
file_type=QFileDialog.DirectoryOnly,
placeholder=self.tr("Cloud save path"),
placeholder=self.tr('Use "Calculate path" or "Browse" ...'),
edit_func=lambda text: (True, text, None)
if os.path.exists(text)
else (False, text, IndicatorReasonsCommon.DIR_NOT_EXISTS),
@ -62,7 +62,7 @@ class CloudSaves(QWidget, SideTabContents):
)
self.cloud_ui.cloud_layout.addRow(QLabel(self.tr("Save path")), self.cloud_save_path_edit)
self.compute_save_path_button = QPushButton(icon("fa.magic"), self.tr("Auto compute save path"))
self.compute_save_path_button = QPushButton(icon("fa.magic"), self.tr("Calculate path"))
self.compute_save_path_button.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Fixed)
self.compute_save_path_button.clicked.connect(self.compute_save_path)
self.cloud_ui.cloud_layout.addRow(None, self.compute_save_path_button)
@ -151,6 +151,10 @@ class CloudSaves(QWidget, SideTabContents):
self.cloud_widget.setEnabled(supports_saves)
self.info_label.setVisible(not supports_saves)
if not supports_saves:
self.sync_ui.date_info_local.setText("None")
self.sync_ui.date_info_remote.setText("None")
self.cloud_ui.cloud_sync.setChecked(False)
self.cloud_save_path_edit.setText("")
return
button_disabled = self.rgame.state in [RareGame.State.RUNNING, RareGame.State.SYNCING]
@ -159,18 +163,17 @@ class CloudSaves(QWidget, SideTabContents):
status, (dt_local, dt_remote) = self.rgame.save_game_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)
newer = self.tr("Newer")
self.sync_ui.age_label_local.setText(
f"<b>{newer}</b>" if status == SaveGameStatus.LOCAL_NEWER else " "
)
self.sync_ui.age_label_remote.setText(
f"<b>{newer}</b>" if status == SaveGameStatus.REMOTE_NEWER else " "
)
sync_cloud = self.settings.value(f"{self.rgame.app_name}/auto_sync_cloud", True, bool)
self.cloud_ui.cloud_sync.setChecked(sync_cloud)
self.cloud_ui.cloud_sync.setChecked(
self.settings.value(f"{self.rgame.app_name}/auto_sync_cloud", False, bool)
)
if self.rgame.save_path:
self.cloud_save_path_edit.setText(self.rgame.save_path)
self.sync_ui.date_info_local.setText(dt_local.strftime("%A, %d. %B %Y %X") if dt_local else "None")

View file

@ -14,7 +14,13 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_SyncWidget(object):
def setupUi(self, SyncWidget):
SyncWidget.setObjectName("SyncWidget")
SyncWidget.resize(510, 183)
SyncWidget.resize(422, 127)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(SyncWidget.sizePolicy().hasHeightForWidth())
SyncWidget.setSizePolicy(sizePolicy)
SyncWidget.setWindowTitle("SyncWidget")
self.sync_layout = QtWidgets.QHBoxLayout(SyncWidget)
self.sync_layout.setContentsMargins(0, 0, 0, 0)
self.sync_layout.setObjectName("sync_layout")
@ -37,12 +43,12 @@ 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.setAlignment(QtCore.Qt.AlignCenter)
self.local_new_label.setObjectName("local_new_label")
self.local_layout.addWidget(self.local_new_label)
self.age_label_local = QtWidgets.QLabel(self.local_gb)
self.age_label_local.setAlignment(QtCore.Qt.AlignCenter)
self.age_label_local.setObjectName("age_label_local")
self.local_layout.addWidget(self.age_label_local)
self.upload_button = QtWidgets.QPushButton(self.local_gb)
self.upload_button.setMinimumSize(QtCore.QSize(128, 0))
self.upload_button.setMinimumSize(QtCore.QSize(192, 0))
self.upload_button.setObjectName("upload_button")
self.local_layout.addWidget(self.upload_button)
self.sync_layout.addWidget(self.local_gb)
@ -65,12 +71,13 @@ 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.setAlignment(QtCore.Qt.AlignCenter)
self.cloud_new_label.setObjectName("cloud_new_label")
self.cloud_layout.addWidget(self.cloud_new_label)
self.age_label_remote = QtWidgets.QLabel(self.cloud_gb)
self.age_label_remote.setText("remote_age_error")
self.age_label_remote.setAlignment(QtCore.Qt.AlignCenter)
self.age_label_remote.setObjectName("age_label_remote")
self.cloud_layout.addWidget(self.age_label_remote)
self.download_button = QtWidgets.QPushButton(self.cloud_gb)
self.download_button.setMinimumSize(QtCore.QSize(128, 0))
self.download_button.setMinimumSize(QtCore.QSize(192, 0))
self.download_button.setObjectName("download_button")
self.cloud_layout.addWidget(self.download_button)
self.sync_layout.addWidget(self.cloud_gb)
@ -79,12 +86,10 @@ class Ui_SyncWidget(object):
def retranslateUi(self, SyncWidget):
_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.age_label_local.setText(_translate("SyncWidget", "local_age_error"))
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

@ -6,12 +6,18 @@
<rect>
<x>0</x>
<y>0</y>
<width>510</width>
<height>183</height>
<width>422</width>
<height>127</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Form</string>
<string notr="true">SyncWidget</string>
</property>
<layout class="QHBoxLayout" name="sync_layout">
<property name="leftMargin">
@ -59,9 +65,9 @@
</widget>
</item>
<item>
<widget class="QLabel" name="local_new_label">
<widget class="QLabel" name="age_label_local">
<property name="text">
<string>Newer</string>
<string>local_age_error</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
@ -72,7 +78,7 @@
<widget class="QPushButton" name="upload_button">
<property name="minimumSize">
<size>
<width>128</width>
<width>192</width>
<height>0</height>
</size>
</property>
@ -117,9 +123,9 @@
</widget>
</item>
<item>
<widget class="QLabel" name="cloud_new_label">
<widget class="QLabel" name="age_label_remote">
<property name="text">
<string>Newer</string>
<string notr="true">remote_age_error</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
@ -130,7 +136,7 @@
<widget class="QPushButton" name="download_button">
<property name="minimumSize">
<size>
<width>128</width>
<width>192</width>
<height>0</height>
</size>
</property>