This commit is contained in:
Broque Thomas 2025-07-27 00:59:55 -07:00
parent 77f11f29bc
commit 7081d6bd54
9 changed files with 4274 additions and 1 deletions

View file

@ -11,7 +11,7 @@
"slskd_url": "http://localhost:5030",
"api_key": "1234567891234567",
"download_path": "E:/Broque Projects/newMusic/downloads",
"transfer_path": "E:/Broque Projects/newMusic/Transfer/Transfer"
"transfer_path": "E:/Broque Projects/newMusic/Transfer"
},
"database": {
"path": "database/artists.db"

File diff suppressed because it is too large Load diff

18
main.py
View file

@ -117,6 +117,9 @@ class MainWindow(QMainWindow):
# Connect media player signals between sidebar and downloads page
self.setup_media_player_connections()
# Connect settings change signals for live updates
self.setup_settings_connections()
def setup_status_monitoring(self):
# Start status monitoring thread
@ -149,6 +152,21 @@ class MainWindow(QMainWindow):
logger.info("Media player connections established between sidebar and downloads page")
def setup_settings_connections(self):
"""Connect settings change signals for live updates across pages"""
self.settings_page.settings_changed.connect(self.on_settings_changed)
logger.info("Settings change connections established")
def on_settings_changed(self, key: str, value: str):
"""Handle settings changes and broadcast to relevant pages"""
logger.info(f"Settings changed: {key} = {value}")
# Broadcast to all pages that need to know about path changes
if hasattr(self.downloads_page, 'on_paths_updated'):
self.downloads_page.on_paths_updated(key, value)
if hasattr(self.artists_page, 'on_paths_updated'):
self.artists_page.on_paths_updated(key, value)
def change_page(self, page_id: str):
page_map = {
"dashboard": 0,

View file

@ -3799,6 +3799,12 @@ class ArtistsPage(QWidget):
item.widget().deleteLater()
# Don't clear self.current_albums here - it's needed for Plex updates
def on_paths_updated(self, key: str, value: str):
"""Handle settings path updates for immediate effect"""
# No action needed - paths are fetched dynamically via config_manager.get()
# This method exists for future extensibility if caching is added later
pass
def closeEvent(self, event):
"""Handle page close/cleanup"""
self.stop_all_workers()

View file

@ -9807,6 +9807,12 @@ class DownloadsPage(QWidget):
except:
pass # Ignore errors during destruction
def on_paths_updated(self, key: str, value: str):
"""Handle settings path updates for immediate effect"""
# No action needed - paths are fetched dynamically via config_manager.get()
# This method exists for future extensibility if caching is added later
pass
def create_controls_section(self):
section = QWidget()
layout = QVBoxLayout(section)

View file

@ -162,6 +162,8 @@ class SettingsGroup(QGroupBox):
""")
class SettingsPage(QWidget):
settings_changed = pyqtSignal(str, str) # Signal for when settings paths change
def __init__(self, parent=None):
super().__init__(parent)
self.config_manager = None
@ -300,6 +302,10 @@ class SettingsPage(QWidget):
config_manager.set('soulseek.download_path', self.download_path_input.text())
config_manager.set('soulseek.transfer_path', self.transfer_path_input.text())
# Emit signals for path changes to update other pages immediately
self.settings_changed.emit('soulseek.download_path', self.download_path_input.text())
self.settings_changed.emit('soulseek.transfer_path', self.transfer_path_input.text())
# Show success message
QMessageBox.information(self, "Success", "Settings saved successfully!")