feat: added refresh button
All checks were successful
Code check / Check code (push) Successful in 1m20s
All checks were successful
Code check / Check code (push) Successful in 1m20s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
This commit is contained in:
@@ -565,6 +565,16 @@ class MainWindow(QMainWindow):
|
|||||||
self.game_library_manager.set_games(games)
|
self.game_library_manager.set_games(games)
|
||||||
self.progress_bar.setVisible(False)
|
self.progress_bar.setVisible(False)
|
||||||
|
|
||||||
|
# Clear the refresh in progress flag
|
||||||
|
if hasattr(self, '_refresh_in_progress'):
|
||||||
|
self._refresh_in_progress = False
|
||||||
|
|
||||||
|
# Re-enable the refresh button if it exists
|
||||||
|
if hasattr(self, 'refreshButton'):
|
||||||
|
self.refreshButton.setEnabled(True)
|
||||||
|
self.refreshButton.setText(_("Refresh Grid"))
|
||||||
|
self.update_status_message.emit(_("Game library refreshed"), 3000)
|
||||||
|
|
||||||
def open_portproton_forum_topic(self, topic_name: str):
|
def open_portproton_forum_topic(self, topic_name: str):
|
||||||
"""Open the PortProton forum topic or search page for this game."""
|
"""Open the PortProton forum topic or search page for this game."""
|
||||||
result = self.portproton_api.get_forum_topic_slug(topic_name)
|
result = self.portproton_api.get_forum_topic_slug(topic_name)
|
||||||
@@ -881,7 +891,16 @@ class MainWindow(QMainWindow):
|
|||||||
self.addGameButton.setStyleSheet(self.theme.ADDGAME_BACK_BUTTON_STYLE)
|
self.addGameButton.setStyleSheet(self.theme.ADDGAME_BACK_BUTTON_STYLE)
|
||||||
self.addGameButton.setFocusPolicy(Qt.FocusPolicy.NoFocus)
|
self.addGameButton.setFocusPolicy(Qt.FocusPolicy.NoFocus)
|
||||||
self.addGameButton.clicked.connect(self.openAddGameDialog)
|
self.addGameButton.clicked.connect(self.openAddGameDialog)
|
||||||
layout.addWidget(self.addGameButton, alignment=Qt.AlignmentFlag.AlignRight)
|
layout.addWidget(self.addGameButton)
|
||||||
|
|
||||||
|
# Refresh button
|
||||||
|
self.refreshButton = AutoSizeButton(_("Refresh Grid"), icon=self.theme_manager.get_icon("update"))
|
||||||
|
self.refreshButton.setStyleSheet(self.theme.ADDGAME_BACK_BUTTON_STYLE)
|
||||||
|
self.refreshButton.setFocusPolicy(Qt.FocusPolicy.NoFocus)
|
||||||
|
self.refreshButton.clicked.connect(self.refreshGames)
|
||||||
|
layout.addWidget(self.refreshButton)
|
||||||
|
|
||||||
|
layout.addStretch() # Add stretch to push search to the right
|
||||||
|
|
||||||
self.searchEdit = CustomLineEdit(self, theme=self.theme)
|
self.searchEdit = CustomLineEdit(self, theme=self.theme)
|
||||||
icon: QIcon = cast(QIcon, self.theme_manager.get_icon("search"))
|
icon: QIcon = cast(QIcon, self.theme_manager.get_icon("search"))
|
||||||
@@ -901,6 +920,32 @@ class MainWindow(QMainWindow):
|
|||||||
layout.addWidget(self.searchEdit)
|
layout.addWidget(self.searchEdit)
|
||||||
return self.container, self.searchEdit
|
return self.container, self.searchEdit
|
||||||
|
|
||||||
|
def refreshGames(self):
|
||||||
|
"""Refresh the game grid by reloading all games without restarting the application."""
|
||||||
|
# Prevent multiple refreshes at once
|
||||||
|
if hasattr(self, '_refresh_in_progress') and self._refresh_in_progress:
|
||||||
|
# If refresh is already in progress, just update the status
|
||||||
|
self.update_status_message.emit(_("A refresh is already in progress..."), 3000)
|
||||||
|
return
|
||||||
|
|
||||||
|
# Mark that a refresh is in progress
|
||||||
|
self._refresh_in_progress = True
|
||||||
|
|
||||||
|
# Clear the search field to ensure all games are shown after refresh
|
||||||
|
self.searchEdit.clear()
|
||||||
|
|
||||||
|
# Disable the refresh button during refresh to prevent multiple clicks
|
||||||
|
self.refreshButton.setEnabled(False)
|
||||||
|
self.refreshButton.setText(_("Refreshing..."))
|
||||||
|
|
||||||
|
# Show progress bar
|
||||||
|
self.progress_bar.setVisible(True)
|
||||||
|
self.progress_bar.setRange(0, 0) # Indeterminate
|
||||||
|
self.update_status_message.emit(_("Refreshing game library..."), 0)
|
||||||
|
|
||||||
|
# Reload games using the existing loadGames functionality
|
||||||
|
QTimer.singleShot(0, self.loadGames)
|
||||||
|
|
||||||
def on_search_text_changed(self, text: str):
|
def on_search_text_changed(self, text: str):
|
||||||
"""Search text change handler with debounce."""
|
"""Search text change handler with debounce."""
|
||||||
self.searchDebounceTimer.stop()
|
self.searchDebounceTimer.stop()
|
||||||
|
|||||||
Reference in New Issue
Block a user