2021-03-25 23:49:05 +13:00
|
|
|
from logging import getLogger
|
|
|
|
|
2022-06-19 06:45:36 +12:00
|
|
|
from PyQt5.QtCore import Qt
|
|
|
|
from PyQt5.QtWidgets import QVBoxLayout, QWidget, QHBoxLayout
|
2021-09-07 07:10:18 +12:00
|
|
|
from legendary.core import LegendaryCore
|
|
|
|
from legendary.models.game import Game
|
2022-06-19 06:45:36 +12:00
|
|
|
|
2021-12-24 22:09:50 +13:00
|
|
|
from rare.components.tabs.games.game_widgets.base_uninstalled_widget import (
|
|
|
|
BaseUninstalledWidget,
|
|
|
|
)
|
2022-06-19 06:45:36 +12:00
|
|
|
from rare.shared.image_manager import ImageSize
|
|
|
|
from rare.widgets.elide_label import ElideLabel
|
2021-03-25 23:49:05 +13:00
|
|
|
|
|
|
|
logger = getLogger("Uninstalled")
|
|
|
|
|
|
|
|
|
2022-06-22 11:38:04 +12:00
|
|
|
class UninstalledIconWidget(BaseUninstalledWidget):
|
2021-03-25 23:49:05 +13:00
|
|
|
def __init__(self, game: Game, core: LegendaryCore, pixmap):
|
2022-06-22 11:38:04 +12:00
|
|
|
super(UninstalledIconWidget, self).__init__(game, core, pixmap)
|
2022-06-19 06:45:36 +12:00
|
|
|
layout = QVBoxLayout()
|
2022-06-20 21:44:57 +12:00
|
|
|
layout.setContentsMargins(0, 0, 0, 0)
|
2022-06-22 11:38:04 +12:00
|
|
|
self.setObjectName(type(self).__name__)
|
2022-06-19 06:45:36 +12:00
|
|
|
layout.addWidget(self.image)
|
|
|
|
|
|
|
|
miniwidget = QWidget(self)
|
|
|
|
miniwidget.setFixedWidth(ImageSize.Display.size.width())
|
|
|
|
minilayout = QHBoxLayout()
|
|
|
|
minilayout.setContentsMargins(0, 0, 0, 0)
|
|
|
|
minilayout.setSpacing(0)
|
|
|
|
miniwidget.setLayout(minilayout)
|
|
|
|
|
2022-08-01 08:00:50 +12:00
|
|
|
self.title_label = ElideLabel(f"<b>{game.app_title}</b>", parent=miniwidget)
|
2022-06-20 21:44:57 +12:00
|
|
|
self.title_label.setAlignment(Qt.AlignTop)
|
2022-06-19 06:45:36 +12:00
|
|
|
self.title_label.setObjectName("game_widget")
|
|
|
|
minilayout.addWidget(self.title_label, stretch=2)
|
2021-03-25 23:49:05 +13:00
|
|
|
|
2022-06-19 06:45:36 +12:00
|
|
|
minilayout.setAlignment(Qt.AlignTop)
|
|
|
|
layout.addWidget(miniwidget)
|
2021-03-25 23:49:05 +13:00
|
|
|
|
2022-06-19 06:45:36 +12:00
|
|
|
self.info_label = ElideLabel(" ", parent=self)
|
|
|
|
self.info_label.setFixedWidth(ImageSize.Display.size.width())
|
|
|
|
self.leaveEvent(None)
|
|
|
|
self.info_label.setObjectName("info_label")
|
|
|
|
layout.addWidget(self.info_label)
|
2021-03-25 23:49:05 +13:00
|
|
|
|
2022-06-19 06:45:36 +12:00
|
|
|
self.setLayout(layout)
|
2021-03-25 23:49:05 +13:00
|
|
|
|
2021-04-05 20:57:11 +12:00
|
|
|
def mousePressEvent(self, e) -> None:
|
2021-09-09 05:43:49 +12:00
|
|
|
# left button
|
|
|
|
if e.button() == 1 and not self.installing:
|
2021-04-08 04:18:50 +12:00
|
|
|
self.install()
|
2021-03-25 23:49:05 +13:00
|
|
|
|
2021-09-09 05:43:49 +12:00
|
|
|
# right
|
|
|
|
elif e.button() == 2:
|
|
|
|
pass # self.showMenu(e)
|
|
|
|
|
2021-04-05 20:57:11 +12:00
|
|
|
def enterEvent(self, e):
|
2021-04-08 04:18:50 +12:00
|
|
|
if not self.installing:
|
2021-05-12 03:29:35 +12:00
|
|
|
self.info_label.setText(self.tr("Game Info"))
|
2021-04-08 04:18:50 +12:00
|
|
|
else:
|
|
|
|
self.info_label.setText(self.tr("Installation running"))
|
2021-03-25 23:49:05 +13:00
|
|
|
|
2021-04-05 20:57:11 +12:00
|
|
|
def leaveEvent(self, e):
|
2021-04-08 04:18:50 +12:00
|
|
|
if self.installing:
|
|
|
|
self.info_label.setText("Installation...")
|
|
|
|
else:
|
2022-06-19 06:45:36 +12:00
|
|
|
self.info_label.setText(" ") # invisible text, cheap way to always have vertical size in label
|