This commit is contained in:
Broque Thomas 2025-07-28 12:19:42 -07:00
parent d408727002
commit b05a403343
7 changed files with 1260 additions and 3 deletions

View file

@ -1 +1 @@
{"access_token": "BQDE-nRqhnnvzOYRj8mWSWJ8E1V7QYsSBRnVIS-Q5M0hGvuT0y9-VHhIxY2I8jbZeDitk3H9o3pzb39fc6v7K3oGMXatasuDIKYeeAntzAJxHjTQDg0fXh7HU1pbj3VdpBWa3gO7v5YMYKES9yMpJZ1tihruRhWEGRRoDZWLqyY3o7AyHjOYKOeMSrB1Cg-WPWKndRsnhyILJsVRVNIT8VST-dUHXCOLOB725sfw--lL2DmTCL3mG0rQHmHqPShP", "token_type": "Bearer", "expires_in": 3600, "scope": "user-library-read user-read-private playlist-read-private playlist-read-collaborative user-read-email", "expires_at": 1753726722, "refresh_token": "AQDmfQkPCGObfJeTUIbW1hAAwhSqkuHRA3Qh2dqVYMRh0eCkFMQgPNJDDzF8y-BiaVbj80zePkK_XSfYH1aJutMtNbnsqRKWuxP31BTrMc7pdUdbE7Fma4oH8wpDUKdG3MM"}
{"access_token": "BQC40M9fig71EJWU6RTYqUk_84boT_i6nhGUxiGKoyWZRazN-FOX3yBF7LzPm212VtplWBlBPuF7LlkEBlT-p97pHefbHFF3dPAcye9jaP6HfGKBuwN2jPbEg15zNApse5-8nxKczAWce82uIeDodDUdMX7yWb3z-WzudBcSVTPXGprTcl1dEAOMb3TvOSBbY_9rlAPbMYWIImpWZdurccTf_ElrwNtjwjo3FqGPCy3AoQd0zJTU2rArgvpeYak4", "token_type": "Bearer", "expires_in": 3600, "scope": "user-library-read user-read-private playlist-read-private playlist-read-collaborative user-read-email", "expires_at": 1753733790, "refresh_token": "AQDmfQkPCGObfJeTUIbW1hAAwhSqkuHRA3Qh2dqVYMRh0eCkFMQgPNJDDzF8y-BiaVbj80zePkK_XSfYH1aJutMtNbnsqRKWuxP31BTrMc7pdUdbE7Fma4oH8wpDUKdG3MM"}

File diff suppressed because it is too large Load diff

View file

@ -166,6 +166,11 @@ class MainWindow(QMainWindow):
self.dashboard_page.set_page_references(self.downloads_page, self.sync_page)
self.dashboard_page.set_app_start_time(self.app_start_time)
# Connect download completion signal for session tracking
self.downloads_page.download_session_completed.connect(
self.dashboard_page.data_provider.increment_completed_downloads
)
self.stacked_widget.addWidget(self.dashboard_page)
self.stacked_widget.addWidget(self.sync_page)
self.stacked_widget.addWidget(self.downloads_page)

View file

@ -63,6 +63,9 @@ class DashboardDataProvider(QObject):
self.download_stats = DownloadStats()
self.metadata_progress = MetadataProgress()
# Session-based counters (reset on app restart)
self.session_completed_downloads = 0
# Update timers with different frequencies
self.download_stats_timer = QTimer()
self.download_stats_timer.timeout.connect(self.update_download_stats)
@ -86,6 +89,10 @@ class DashboardDataProvider(QObject):
def set_app_start_time(self, start_time):
self.app_start_time = start_time
def increment_completed_downloads(self):
"""Increment the session completed downloads counter"""
self.session_completed_downloads += 1
def update_service_status(self, service: str, connected: bool, response_time: float = 0.0, error: str = ""):
if service in self.service_status:
self.service_status[service].connected = connected
@ -108,10 +115,10 @@ class DashboardDataProvider(QObject):
total_speed += float(item.download_speed)
self.download_stats.active_count = active_count
self.download_stats.finished_count = finished_count
self.download_stats.finished_count = self.session_completed_downloads # Use session counter
self.download_stats.total_speed = total_speed
self.download_stats_updated.emit(active_count, finished_count, total_speed)
self.download_stats_updated.emit(active_count, self.session_completed_downloads, total_speed)
except Exception as e:
pass # Silent failure for stats updates

View file

@ -4682,6 +4682,13 @@ class TabbedDownloadManager(QTabWidget):
self.update_tab_counts()
# Emit signal for session download tracking
parent_page = self.parent()
while parent_page and not hasattr(parent_page, 'download_session_completed'):
parent_page = parent_page.parent()
if parent_page and hasattr(parent_page, 'download_session_completed'):
parent_page.download_session_completed.emit()
# Performance monitoring
end_time = time.time()
duration_ms = (end_time - start_time) * 1000
@ -4795,6 +4802,9 @@ class DownloadsPage(QWidget):
track_loading_finished = pyqtSignal(object) # Track result object when streaming completes
track_loading_progress = pyqtSignal(float, object) # Progress percentage (0-100), track result object
# Signal for dashboard stats tracking
download_session_completed = pyqtSignal() # Emitted when a download completes (for session tracking)
# Signal for clear completed downloads completion (thread-safe communication)
clear_completed_finished = pyqtSignal(bool, object) # backend_success, ui_callback