1
0
Fork 0
mirror of synced 2024-06-23 08:40:45 +12:00

Move the installed and available games count to the head bar.

Moving them to the head bar makes the library containers
simpler structurally as there the library's frame can be removed.

Remove games_tab UI files as they were getting very thin,
what they contained is being setup manually instead

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
This commit is contained in:
loathingKernel 2022-06-24 13:37:48 +03:00
parent 61a2a6781d
commit b8668854db
4 changed files with 52 additions and 166 deletions

View file

@ -12,7 +12,6 @@ from rare.shared import (
ApiResultsSingleton,
)
from rare.shared.image_manager import ImageManagerSingleton
from rare.ui.components.tabs.games.games_tab import Ui_GamesTab
from rare.widgets.library_layout import LibraryLayout
from rare.widgets.sliding_stack import SlidingStackedWidget
from .cloud_save_utils import CloudSaveUtils
@ -42,9 +41,6 @@ class GamesTab(QStackedWidget):
def __init__(self, parent=None):
super(GamesTab, self).__init__(parent=parent)
self.ui = Ui_GamesTab()
self.ui.setupUi(self)
self.core = LegendaryCoreSingleton()
self.signals = GlobalSignalsSingleton()
self.args = ArgumentsSingleton()
@ -60,22 +56,26 @@ class GamesTab(QStackedWidget):
self.game_utils = GameUtils(parent=self)
self.head_bar = GameListHeadBar(self)
self.games = QWidget(parent=self)
self.games.setLayout(QVBoxLayout())
self.addWidget(self.games)
self.head_bar = GameListHeadBar(parent=self.games)
self.head_bar.import_clicked.connect(self.show_import)
self.head_bar.egl_sync_clicked.connect(self.show_egl_sync)
self.ui.games.layout().insertWidget(0, self.head_bar)
self.games.layout().addWidget(self.head_bar)
self.game_info_tabs = GameInfoTabs(self.dlcs, self.game_utils, self)
self.game_info_tabs.back_clicked.connect(lambda: self.setCurrentIndex(0))
self.game_info_tabs.back_clicked.connect(lambda: self.setCurrentWidget(self.games))
self.addWidget(self.game_info_tabs)
self.game_info_tabs.info.verification_finished.connect(
self.verification_finished
)
self.game_info_tabs.info.uninstalled.connect(lambda x: self.setCurrentIndex(0))
self.game_info_tabs.info.uninstalled.connect(lambda x: self.setCurrentWidget(self.games))
self.import_sync_tabs = ImportSyncTabs(self)
self.import_sync_tabs.back_clicked.connect(lambda: self.setCurrentIndex(0))
self.import_sync_tabs.back_clicked.connect(lambda: self.setCurrentWidget(self.games))
self.addWidget(self.import_sync_tabs)
for i in self.game_list:
@ -91,12 +91,9 @@ class GamesTab(QStackedWidget):
self.ue_name = ""
self.uninstalled_info_tabs = UninstalledInfoTabs(self)
self.uninstalled_info_tabs.back_clicked.connect(lambda: self.setCurrentIndex(0))
self.uninstalled_info_tabs.back_clicked.connect(lambda: self.setCurrentWidget(self.games))
self.addWidget(self.uninstalled_info_tabs)
# navigation
self.head_bar.import_game.clicked.connect(lambda: self.setCurrentIndex(2))
self.no_asset_names = []
if not self.args.offline:
for game in self.no_assets:
@ -106,19 +103,19 @@ class GamesTab(QStackedWidget):
self.installed = self.core.get_installed_list()
self.view_stack = SlidingStackedWidget(self.ui.library_frame)
self.view_stack = SlidingStackedWidget(self.games)
self.view_stack.setFrameStyle(QFrame.NoFrame)
self.icon_view_scroll = QScrollArea(self.view_stack)
self.icon_view_scroll.setWidgetResizable(True)
self.icon_view_scroll.setFrameShape(QFrame.NoFrame)
self.icon_view_scroll.setFrameShape(QFrame.StyledPanel)
self.icon_view_scroll.horizontalScrollBar().setDisabled(True)
self.list_view_scroll = QScrollArea(self.view_stack)
self.list_view_scroll.setWidgetResizable(True)
self.list_view_scroll.setFrameShape(QFrame.NoFrame)
self.list_view_scroll.setFrameShape(QFrame.StyledPanel)
self.list_view_scroll.horizontalScrollBar().setDisabled(True)
self.icon_view = QWidget(self.icon_view_scroll)
self.icon_view.setLayout(LibraryLayout(self.icon_view))
self.icon_view.layout().setContentsMargins(0, 0, 0, 0)
self.icon_view.layout().setContentsMargins(0, 13, 0, 0)
self.icon_view.layout().setAlignment(Qt.AlignTop)
self.list_view = QWidget(self.list_view_scroll)
self.list_view.setLayout(QVBoxLayout(self.list_view))
@ -128,7 +125,7 @@ class GamesTab(QStackedWidget):
self.list_view_scroll.setWidget(self.list_view)
self.view_stack.addWidget(self.icon_view_scroll)
self.view_stack.addWidget(self.list_view_scroll)
self.ui.library_frame_layout.addWidget(self.view_stack)
self.games.layout().addWidget(self.view_stack)
# add installing game widget for icon view: List view not supported
self.installing_widget = InstallingGameWidget()
@ -188,28 +185,24 @@ class GamesTab(QStackedWidget):
l_widget.update_text()
def show_import(self):
self.setCurrentIndex(2)
self.setCurrentWidget(self.import_sync_tabs)
self.import_sync_tabs.show_import()
def show_egl_sync(self, idx):
self.setCurrentIndex(2)
self.setCurrentWidget(self.import_sync_tabs)
self.import_sync_tabs.show_egl_sync()
def show_game_info(self, app_name):
self.game_info_tabs.update_game(app_name)
self.setCurrentIndex(1)
self.setCurrentWidget(self.game_info_tabs)
def show_uninstalled_info(self, game):
self.uninstalled_info_tabs.update_game(game)
self.setCurrentIndex(3)
self.setCurrentWidget(self.uninstalled_info_tabs)
@pyqtSlot()
def update_count_games_label(self):
self.ui.count_games_label.setText(
self.tr("Installed Games: {}\tAvailable Games: {}").format(
len(self.core.get_installed_list()), len(self.game_list)
)
)
self.head_bar.set_games_count(len(self.core.get_installed_list()), len(self.game_list))
def setup_game_list(self):
self.update_count_games_label()

View file

@ -1,12 +1,12 @@
from PyQt5.QtCore import QSize, QSettings, pyqtSignal
from PyQt5.QtCore import QSettings, pyqtSignal
from PyQt5.QtWidgets import (
QLineEdit,
QLabel,
QPushButton,
QWidget,
QHBoxLayout,
QComboBox,
)
from qtawesome import IconWidget
from rare.shared import ApiResultsSingleton
from rare.utils.extra_widgets import SelectViewWidget, ButtonLineEdit
@ -19,10 +19,7 @@ class GameListHeadBar(QWidget):
def __init__(self, parent=None):
super(GameListHeadBar, self).__init__(parent=parent)
self.api_results = ApiResultsSingleton()
# self.installed_only = QCheckBox(self.tr("Installed only"))
self.settings = QSettings()
# self.installed_only.setChecked(self.settings.value("installed_only", False, bool))
# self.layout.addWidget(self.installed_only)
self.filter = QComboBox()
self.filter.addItems(
@ -30,7 +27,8 @@ class GameListHeadBar(QWidget):
self.tr("All games"),
self.tr("Installed only"),
self.tr("Offline Games"),
])
]
)
self.available_filters = [
"all",
@ -75,6 +73,22 @@ class GameListHeadBar(QWidget):
checked = QSettings().value("icon_view", True, bool)
installed_tooltip = self.tr("Installed games")
self.installed_icon = IconWidget(parent=self)
self.installed_icon.setIcon(icon("ph.floppy-disk-back-fill"))
self.installed_icon.setToolTip(installed_tooltip)
self.installed_label = QLabel(parent=self)
font = self.installed_label.font()
font.setBold(True)
self.installed_label.setFont(font)
self.installed_label.setToolTip(installed_tooltip)
available_tooltip = self.tr("Available games")
self.available_icon = IconWidget(parent=self)
self.available_icon.setIcon(icon("ph.floppy-disk-back-light"))
self.available_icon.setToolTip(available_tooltip)
self.available_label = QLabel(parent=self)
self.available_label.setToolTip(available_tooltip)
self.view = SelectViewWidget(checked)
self.refresh_list = QPushButton()
@ -86,14 +100,23 @@ class GameListHeadBar(QWidget):
layout.addStretch(1)
layout.addWidget(self.import_game)
layout.addWidget(self.egl_sync)
layout.addStretch(1)
layout.addStretch(2)
layout.addWidget(self.search_bar)
layout.addStretch(3)
layout.addStretch(2)
layout.addWidget(self.installed_icon)
layout.addWidget(self.installed_label)
layout.addWidget(self.available_icon)
layout.addWidget(self.available_label)
layout.addStretch(2)
layout.addWidget(self.view)
layout.addStretch(1)
layout.addStretch(2)
layout.addWidget(self.refresh_list)
self.setLayout(layout)
def set_games_count(self, inst: int, avail: int) -> None:
self.installed_label.setText(str(inst))
self.available_label.setText(str(avail))
def filter_changed(self, i):
self.filterChanged.emit(self.available_filters[i])
self.settings.setValue("filter", i)

View file

@ -1,57 +0,0 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'rare/ui/components/tabs/games/games_tab.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_GamesTab(object):
def setupUi(self, GamesTab):
GamesTab.setObjectName("GamesTab")
GamesTab.resize(104, 42)
GamesTab.setWindowTitle("StackedWidget")
self.games = QtWidgets.QWidget()
self.games.setObjectName("games")
self.games_layout = QtWidgets.QVBoxLayout(self.games)
self.games_layout.setObjectName("games_layout")
self.library_frame = QtWidgets.QFrame(self.games)
self.library_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.library_frame.setObjectName("library_frame")
self.library_frame_layout = QtWidgets.QVBoxLayout(self.library_frame)
self.library_frame_layout.setContentsMargins(0, 0, 0, 0)
self.library_frame_layout.setObjectName("library_frame_layout")
self.count_games_layout = QtWidgets.QHBoxLayout()
self.count_games_layout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize)
self.count_games_layout.setContentsMargins(6, 6, 6, 6)
self.count_games_layout.setObjectName("count_games_layout")
self.count_games_label = QtWidgets.QLabel(self.library_frame)
self.count_games_label.setText("error")
self.count_games_label.setObjectName("count_games_label")
self.count_games_layout.addWidget(self.count_games_label, 0, QtCore.Qt.AlignTop)
self.library_frame_layout.addLayout(self.count_games_layout)
self.games_layout.addWidget(self.library_frame)
self.games_layout.setStretch(0, 1)
GamesTab.addWidget(self.games)
self.retranslateUi(GamesTab)
GamesTab.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(GamesTab)
def retranslateUi(self, GamesTab):
pass
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
GamesTab = QtWidgets.QStackedWidget()
ui = Ui_GamesTab()
ui.setupUi(GamesTab)
GamesTab.show()
sys.exit(app.exec_())

View file

@ -1,73 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>GamesTab</class>
<widget class="QStackedWidget" name="GamesTab">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>104</width>
<height>42</height>
</rect>
</property>
<property name="windowTitle">
<string notr="true">StackedWidget</string>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="games">
<layout class="QVBoxLayout" name="games_layout" stretch="1">
<item>
<widget class="QFrame" name="library_frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<layout class="QVBoxLayout" name="library_frame_layout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<layout class="QHBoxLayout" name="count_games_layout">
<property name="sizeConstraint">
<enum>QLayout::SetFixedSize</enum>
</property>
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<item alignment="Qt::AlignTop">
<widget class="QLabel" name="count_games_label">
<property name="text">
<string notr="true">error</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>