1
0
Fork 0
mirror of synced 2024-06-26 10:11:19 +12:00

DownloadsTab: Use elided text from version numbers

This commit is contained in:
loathingKernel 2023-01-24 15:24:50 +02:00
parent 91ef4ca944
commit 6ccbeb12dc
5 changed files with 138 additions and 118 deletions

View file

@ -193,7 +193,7 @@ class DownloadsTab(QWidget):
self.update_title.emit(self.queues_count())
# lk: if we finished a repair and we have a disabled update, re-enable it
# lk: if we finished a repair, and we have a disabled update, re-enable it
if self.updates_group.contains(result.item.options.app_name):
self.updates_group.set_widget_enabled(result.item.options.app_name, True)

View file

@ -10,7 +10,7 @@ from rare.models.install import InstallQueueItemModel, InstallOptionsModel
from rare.shared import ImageManagerSingleton
from rare.ui.components.tabs.downloads.download_widget import Ui_DownloadWidget
from rare.ui.components.tabs.downloads.info_widget import Ui_InfoWidget
from rare.utils.misc import get_size, widget_object_name
from rare.utils.misc import get_size, widget_object_name, elide_text
from rare.widgets.image_widget import ImageWidget, ImageSize
@ -30,8 +30,10 @@ class InfoWidget(QWidget):
self.image_manager = ImageManagerSingleton()
self.ui.title.setText(game.app_title)
self.ui.remote_version.setText(old_igame.version if old_igame else game.app_version(igame.platform))
self.ui.local_version.setText(igame.version)
self.ui.remote_version.setText(
elide_text(self.ui.remote_version, old_igame.version if old_igame else game.app_version(igame.platform))
)
self.ui.local_version.setText(elide_text(self.ui.local_version, igame.version))
self.ui.dl_size.setText(get_size(analysis.dl_size) if analysis else "")
self.ui.install_size.setText(get_size(analysis.install_size) if analysis else "")

View file

@ -24,21 +24,22 @@ class Ui_InfoWidget(object):
self.info_widget_layout = QtWidgets.QGridLayout(InfoWidget)
self.info_widget_layout.setContentsMargins(0, 0, 0, 0)
self.info_widget_layout.setObjectName("info_widget_layout")
self.install_size = QtWidgets.QLabel(InfoWidget)
self.install_size.setMinimumSize(QtCore.QSize(160, 0))
self.install_size.setText("install_size")
self.install_size.setObjectName("install_size")
self.info_widget_layout.addWidget(self.install_size, 2, 4, 1, 1)
self.remote_version = QtWidgets.QLabel(InfoWidget)
self.remote_version.setMinimumSize(QtCore.QSize(160, 0))
self.remote_version.setText("remote_version")
self.remote_version.setObjectName("remote_version")
self.info_widget_layout.addWidget(self.remote_version, 1, 2, 1, 1)
self.local_version = QtWidgets.QLabel(InfoWidget)
self.local_version.setMinimumSize(QtCore.QSize(160, 0))
self.local_version.setText("local_version")
self.local_version.setObjectName("local_version")
self.info_widget_layout.addWidget(self.local_version, 2, 2, 1, 1)
self.dl_size_label = QtWidgets.QLabel(InfoWidget)
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.dl_size_label.setFont(font)
self.dl_size_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.dl_size_label.setObjectName("dl_size_label")
self.info_widget_layout.addWidget(self.dl_size_label, 1, 3, 1, 1)
self.title = QtWidgets.QLabel(InfoWidget)
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.title.setFont(font)
self.title.setText("title")
self.title.setObjectName("title")
self.info_widget_layout.addWidget(self.title, 0, 1, 1, 4)
self.local_version_label = QtWidgets.QLabel(InfoWidget)
font = QtGui.QFont()
font.setBold(True)
@ -47,14 +48,6 @@ class Ui_InfoWidget(object):
self.local_version_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.local_version_label.setObjectName("local_version_label")
self.info_widget_layout.addWidget(self.local_version_label, 2, 1, 1, 1)
self.remote_version_label = QtWidgets.QLabel(InfoWidget)
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.remote_version_label.setFont(font)
self.remote_version_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.remote_version_label.setObjectName("remote_version_label")
self.info_widget_layout.addWidget(self.remote_version_label, 1, 1, 1, 1)
self.image_layout = QtWidgets.QVBoxLayout()
self.image_layout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize)
self.image_layout.setObjectName("image_layout")
@ -67,39 +60,47 @@ class Ui_InfoWidget(object):
self.install_size_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.install_size_label.setObjectName("install_size_label")
self.info_widget_layout.addWidget(self.install_size_label, 2, 3, 1, 1)
self.dl_size_label = QtWidgets.QLabel(InfoWidget)
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.dl_size_label.setFont(font)
self.dl_size_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.dl_size_label.setObjectName("dl_size_label")
self.info_widget_layout.addWidget(self.dl_size_label, 1, 3, 1, 1)
self.install_size = QtWidgets.QLabel(InfoWidget)
self.install_size.setMinimumSize(QtCore.QSize(160, 0))
self.install_size.setText("install_size")
self.install_size.setObjectName("install_size")
self.info_widget_layout.addWidget(self.install_size, 2, 4, 1, 1)
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.info_widget_layout.addItem(spacerItem, 0, 5, 3, 1)
self.dl_size = QtWidgets.QLabel(InfoWidget)
self.dl_size.setMinimumSize(QtCore.QSize(160, 0))
self.dl_size.setText("dl_size")
self.dl_size.setObjectName("dl_size")
self.info_widget_layout.addWidget(self.dl_size, 1, 4, 1, 1)
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.info_widget_layout.addItem(spacerItem, 0, 5, 3, 1)
self.title = QtWidgets.QLabel(InfoWidget)
self.remote_version_label = QtWidgets.QLabel(InfoWidget)
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.title.setFont(font)
self.title.setText("title")
self.title.setObjectName("title")
self.info_widget_layout.addWidget(self.title, 0, 1, 1, 4)
self.info_widget_layout.setColumnStretch(5, 1)
self.remote_version_label.setFont(font)
self.remote_version_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.remote_version_label.setObjectName("remote_version_label")
self.info_widget_layout.addWidget(self.remote_version_label, 1, 1, 1, 1)
self.local_version = QtWidgets.QLabel(InfoWidget)
self.local_version.setMinimumSize(QtCore.QSize(160, 0))
self.local_version.setMaximumSize(QtCore.QSize(160, 16777215))
self.local_version.setText("local_version")
self.local_version.setObjectName("local_version")
self.info_widget_layout.addWidget(self.local_version, 2, 2, 1, 1)
self.remote_version = QtWidgets.QLabel(InfoWidget)
self.remote_version.setMinimumSize(QtCore.QSize(160, 0))
self.remote_version.setMaximumSize(QtCore.QSize(160, 16777215))
self.remote_version.setText("remote_version")
self.remote_version.setObjectName("remote_version")
self.info_widget_layout.addWidget(self.remote_version, 1, 2, 1, 1)
self.retranslateUi(InfoWidget)
def retranslateUi(self, InfoWidget):
_translate = QtCore.QCoreApplication.translate
self.local_version_label.setText(_translate("InfoWidget", "Local version"))
self.remote_version_label.setText(_translate("InfoWidget", "Remote version"))
self.install_size_label.setText(_translate("InfoWidget", "Installed size"))
self.dl_size_label.setText(_translate("InfoWidget", "Download size"))
self.local_version_label.setText(_translate("InfoWidget", "Local version"))
self.install_size_label.setText(_translate("InfoWidget", "Installed size"))
self.remote_version_label.setText(_translate("InfoWidget", "Remote version"))
if __name__ == "__main__":

View file

@ -19,7 +19,7 @@
<property name="windowTitle">
<string notr="true">InfoWidget</string>
</property>
<layout class="QGridLayout" name="info_widget_layout" columnstretch="0,0,0,0,0,1">
<layout class="QGridLayout" name="info_widget_layout" columnstretch="0,0,0,0,0,0">
<property name="leftMargin">
<number>0</number>
</property>
@ -32,42 +32,32 @@
<property name="bottomMargin">
<number>0</number>
</property>
<item row="2" column="4">
<widget class="QLabel" name="install_size">
<property name="minimumSize">
<size>
<width>160</width>
<height>0</height>
</size>
<item row="1" column="3">
<widget class="QLabel" name="dl_size_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string notr="true">install_size</string>
<string>Download size</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QLabel" name="remote_version">
<property name="minimumSize">
<size>
<width>160</width>
<height>0</height>
</size>
<item row="0" column="1" colspan="4">
<widget class="QLabel" name="title">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string notr="true">remote_version</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QLabel" name="local_version">
<property name="minimumSize">
<size>
<width>160</width>
<height>0</height>
</size>
</property>
<property name="text">
<string notr="true">local_version</string>
<string notr="true">title</string>
</property>
</widget>
</item>
@ -87,22 +77,6 @@
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="remote_version_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Remote version</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="0" rowspan="3">
<layout class="QVBoxLayout" name="image_layout">
<property name="sizeConstraint">
@ -126,24 +100,8 @@
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QLabel" name="dl_size_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Download size</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="4">
<widget class="QLabel" name="dl_size">
<item row="2" column="4">
<widget class="QLabel" name="install_size">
<property name="minimumSize">
<size>
<width>160</width>
@ -151,7 +109,7 @@
</size>
</property>
<property name="text">
<string notr="true">dl_size</string>
<string notr="true">install_size</string>
</property>
</widget>
</item>
@ -168,8 +126,21 @@
</property>
</spacer>
</item>
<item row="0" column="1" colspan="4">
<widget class="QLabel" name="title">
<item row="1" column="4">
<widget class="QLabel" name="dl_size">
<property name="minimumSize">
<size>
<width>160</width>
<height>0</height>
</size>
</property>
<property name="text">
<string notr="true">dl_size</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="remote_version_label">
<property name="font">
<font>
<weight>75</weight>
@ -177,7 +148,48 @@
</font>
</property>
<property name="text">
<string notr="true">title</string>
<string>Remote version</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QLabel" name="local_version">
<property name="minimumSize">
<size>
<width>160</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>160</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string notr="true">local_version</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QLabel" name="remote_version">
<property name="minimumSize">
<size>
<width>160</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>160</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string notr="true">remote_version</string>
</property>
</widget>
</item>

View file

@ -14,10 +14,10 @@ from PyQt5.QtCore import (
QSettings,
QStandardPaths,
QFile,
QDir,
QDir, Qt,
)
from PyQt5.QtGui import QPalette, QColor, QImage
from PyQt5.QtWidgets import qApp, QStyleFactory, QWidget
from PyQt5.QtGui import QPalette, QColor, QImage, QFontMetrics
from PyQt5.QtWidgets import qApp, QStyleFactory, QWidget, QLabel
from legendary.core import LegendaryCore
from legendary.models.game import Game
from requests.exceptions import HTTPError
@ -353,4 +353,9 @@ def icon(icn_str: str, fallback: str = None, **kwargs):
def widget_object_name(widget: QWidget, app_name: str) -> str:
return f"{type(widget).__name__}_{app_name}"
return f"{type(widget).__name__}_{app_name}"
def elide_text(label: QLabel, text: str) -> str:
metrics = QFontMetrics(label.font())
return metrics.elidedText(text, Qt.ElideRight, label.width())