Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
b1047ba18e
|
|||
987199d8e6
|
|||
|
ef1acd4581 |
@@ -94,7 +94,7 @@ jobs:
|
|||||||
name: Build Arch Package
|
name: Build Arch Package
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
image: archlinux:base-devel@sha256:b3809917ab5a7840d42237f5f92d92660cd036bd75ae343e7825e6a24401f166
|
image: archlinux:base-devel@sha256:06ab929f935145dd65994a89dd06651669ea28d43c812f3e24de990978511821
|
||||||
volumes:
|
volumes:
|
||||||
- /usr:/usr-host
|
- /usr:/usr-host
|
||||||
- /opt:/opt-host
|
- /opt:/opt-host
|
||||||
|
@@ -180,6 +180,8 @@ jobs:
|
|||||||
|
|
||||||
- name: Release
|
- name: Release
|
||||||
uses: https://gitea.com/actions/gitea-release-action@v1
|
uses: https://gitea.com/actions/gitea-release-action@v1
|
||||||
|
env:
|
||||||
|
NODE_OPTIONS: '--experimental-fetch' # if nodejs < 18
|
||||||
with:
|
with:
|
||||||
body_path: changelog.txt
|
body_path: changelog.txt
|
||||||
token: ${{ env.GITEA_TOKEN }}
|
token: ${{ env.GITEA_TOKEN }}
|
||||||
|
@@ -138,7 +138,7 @@ jobs:
|
|||||||
needs: changes
|
needs: changes
|
||||||
if: needs.changes.outputs.arch == 'true' || github.event_name == 'workflow_dispatch'
|
if: needs.changes.outputs.arch == 'true' || github.event_name == 'workflow_dispatch'
|
||||||
container:
|
container:
|
||||||
image: archlinux:base-devel@sha256:b3809917ab5a7840d42237f5f92d92660cd036bd75ae343e7825e6a24401f166
|
image: archlinux:base-devel@sha256:06ab929f935145dd65994a89dd06651669ea28d43c812f3e24de990978511821
|
||||||
volumes:
|
volumes:
|
||||||
- /usr:/usr-host
|
- /usr:/usr-host
|
||||||
- /opt:/opt-host
|
- /opt:/opt-host
|
||||||
|
@@ -56,6 +56,16 @@ class GameLibraryManager:
|
|||||||
self.is_filtering = False
|
self.is_filtering = False
|
||||||
self.dirty = False
|
self.dirty = False
|
||||||
|
|
||||||
|
def force_update_cards_library(self):
|
||||||
|
if self.gamesListWidget and self.gamesListLayout:
|
||||||
|
self.gamesListLayout.invalidate()
|
||||||
|
self.gamesListWidget.updateGeometry()
|
||||||
|
widget = self.gamesListWidget
|
||||||
|
QTimer.singleShot(0, lambda: (
|
||||||
|
widget.adjustSize(),
|
||||||
|
widget.updateGeometry()
|
||||||
|
))
|
||||||
|
|
||||||
def create_games_library_widget(self):
|
def create_games_library_widget(self):
|
||||||
"""Creates the games library widget with search, grid, and slider."""
|
"""Creates the games library widget with search, grid, and slider."""
|
||||||
self.gamesLibraryWidget = QWidget()
|
self.gamesLibraryWidget = QWidget()
|
||||||
@@ -346,6 +356,8 @@ class GameLibraryManager:
|
|||||||
self.gamesListWidget.updateGeometry()
|
self.gamesListWidget.updateGeometry()
|
||||||
self.main_window._last_card_width = self.card_width
|
self.main_window._last_card_width = self.card_width
|
||||||
|
|
||||||
|
self.force_update_cards_library()
|
||||||
|
|
||||||
self.is_filtering = False # Reset flag in any case
|
self.is_filtering = False # Reset flag in any case
|
||||||
|
|
||||||
def _apply_filter_visibility(self, search_text: str):
|
def _apply_filter_visibility(self, search_text: str):
|
||||||
@@ -453,11 +465,3 @@ class GameLibraryManager:
|
|||||||
def filter_games_delayed(self):
|
def filter_games_delayed(self):
|
||||||
"""Filters games based on search text and updates the grid."""
|
"""Filters games based on search text and updates the grid."""
|
||||||
self.update_game_grid(is_filter=True)
|
self.update_game_grid(is_filter=True)
|
||||||
|
|
||||||
def calculate_columns(self, card_width: int) -> int:
|
|
||||||
"""Calculate the number of columns based on card width and assumed container width."""
|
|
||||||
# Assuming a typical container width; adjust as needed
|
|
||||||
available_width = 1200 # Example width, can be dynamic if widget access is added
|
|
||||||
spacing = 15 # Assumed spacing between cards
|
|
||||||
columns = max(1, (available_width - spacing) // (card_width + spacing))
|
|
||||||
return min(columns, 8) # Cap at reasonable max
|
|
||||||
|
@@ -100,6 +100,7 @@ class MainWindow(QMainWindow):
|
|||||||
self.games_load_timer.timeout.connect(self.finalize_game_loading)
|
self.games_load_timer.timeout.connect(self.finalize_game_loading)
|
||||||
self.games_loaded.connect(self.on_games_loaded)
|
self.games_loaded.connect(self.on_games_loaded)
|
||||||
self.current_add_game_dialog = None
|
self.current_add_game_dialog = None
|
||||||
|
self.current_display_filter = read_display_filter()
|
||||||
|
|
||||||
self.settingsDebounceTimer = QTimer(self)
|
self.settingsDebounceTimer = QTimer(self)
|
||||||
self.settingsDebounceTimer.setSingleShot(True)
|
self.settingsDebounceTimer.setSingleShot(True)
|
||||||
@@ -820,6 +821,24 @@ class MainWindow(QMainWindow):
|
|||||||
for i, btn in self.tabButtons.items():
|
for i, btn in self.tabButtons.items():
|
||||||
btn.setChecked(i == index)
|
btn.setChecked(i == index)
|
||||||
self.stackedWidget.setCurrentIndex(index)
|
self.stackedWidget.setCurrentIndex(index)
|
||||||
|
if hasattr(self, "game_library_manager"):
|
||||||
|
mgr = self.game_library_manager
|
||||||
|
if mgr.gamesListWidget and mgr.gamesListLayout:
|
||||||
|
layout = mgr.gamesListLayout
|
||||||
|
widget = mgr.gamesListWidget
|
||||||
|
QTimer.singleShot(0, lambda: (
|
||||||
|
layout.invalidate(),
|
||||||
|
widget.adjustSize(),
|
||||||
|
widget.updateGeometry()
|
||||||
|
))
|
||||||
|
if hasattr(self, "autoInstallContainer") and hasattr(self, "autoInstallContainerLayout"):
|
||||||
|
layout = self.autoInstallContainerLayout
|
||||||
|
widget = self.autoInstallContainer
|
||||||
|
QTimer.singleShot(0, lambda: (
|
||||||
|
layout.invalidate(),
|
||||||
|
widget.adjustSize(),
|
||||||
|
widget.updateGeometry()
|
||||||
|
))
|
||||||
|
|
||||||
def openSystemOverlay(self):
|
def openSystemOverlay(self):
|
||||||
"""Opens the system overlay dialog."""
|
"""Opens the system overlay dialog."""
|
||||||
@@ -1978,9 +1997,12 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
def applySettingsDelayed(self):
|
def applySettingsDelayed(self):
|
||||||
read_time_config()
|
read_time_config()
|
||||||
|
display_filter = read_display_filter()
|
||||||
|
reload_needed = display_filter != self.current_display_filter
|
||||||
|
if reload_needed:
|
||||||
self.games = []
|
self.games = []
|
||||||
self.loadGames()
|
self.loadGames()
|
||||||
display_filter = read_display_filter()
|
self.current_display_filter = display_filter
|
||||||
for card in self.game_library_manager.game_card_cache.values():
|
for card in self.game_library_manager.game_card_cache.values():
|
||||||
card.update_badge_visibility(display_filter)
|
card.update_badge_visibility(display_filter)
|
||||||
|
|
||||||
@@ -1995,6 +2017,10 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
filter_idx = self.gamesDisplayCombo.currentIndex()
|
filter_idx = self.gamesDisplayCombo.currentIndex()
|
||||||
filter_key = self.filter_keys[filter_idx]
|
filter_key = self.filter_keys[filter_idx]
|
||||||
|
|
||||||
|
old_filter = self.current_display_filter
|
||||||
|
save_display_filter(filter_key)
|
||||||
|
|
||||||
save_display_filter(filter_key)
|
save_display_filter(filter_key)
|
||||||
|
|
||||||
proxy_url = self.proxyUrlEdit.text().strip()
|
proxy_url = self.proxyUrlEdit.text().strip()
|
||||||
@@ -2011,6 +2037,7 @@ class MainWindow(QMainWindow):
|
|||||||
rumble_enabled = self.gamepadRumbleCheckBox.isChecked()
|
rumble_enabled = self.gamepadRumbleCheckBox.isChecked()
|
||||||
save_rumble_config(rumble_enabled)
|
save_rumble_config(rumble_enabled)
|
||||||
|
|
||||||
|
if filter_key != old_filter:
|
||||||
for card in self.game_library_manager.game_card_cache.values():
|
for card in self.game_library_manager.game_card_cache.values():
|
||||||
card.update_badge_visibility(filter_key)
|
card.update_badge_visibility(filter_key)
|
||||||
|
|
||||||
@@ -2022,6 +2049,7 @@ class MainWindow(QMainWindow):
|
|||||||
self.currentDetailPage = None
|
self.currentDetailPage = None
|
||||||
self.openGameDetailPage(*current_game)
|
self.openGameDetailPage(*current_game)
|
||||||
|
|
||||||
|
self.current_display_filter = filter_key
|
||||||
self.settingsDebounceTimer.start()
|
self.settingsDebounceTimer.start()
|
||||||
|
|
||||||
gamepad_connected = self.input_manager.find_gamepad() is not None
|
gamepad_connected = self.input_manager.find_gamepad() is not None
|
||||||
|
Reference in New Issue
Block a user