CloudSaves: Better handling of changing between games and some UI cleanup
This commit is contained in:
parent
fc015a4d30
commit
993b9fca17
|
@ -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())
|
||||
|
||||
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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"))
|
||||
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue