HoDA_Radio/app/ui/widgets/loading_bar.py
2025-09-26 17:51:43 +02:00

35 lines
1.3 KiB
Python

from PyQt6.QtWidgets import QProgressBar, QWidget, QVBoxLayout, QLabel
from PyQt6.QtCore import Qt
class LoadingBar(QWidget):
def __init__(self, label_text: str = "", parent=None) -> None:
super().__init__(parent)
layout = QVBoxLayout(self)
layout.setAlignment(Qt.AlignmentFlag.AlignBaseline)
self.label = QLabel(label_text, self)
self.progress = QProgressBar(self)
self.progress.setMinimum(0)
self.progress.setMaximum(100)
layout.addWidget(self.label)
layout.addWidget(self.progress)
def set_label(self, text: str) -> None:
self.label.setText(text)
def set_progress(self, value: int) -> None:
self.progress.setValue(value)
def set_progress_range(self, value: int, min_range: int, max_range: int) -> None:
"""Set progress within a specific range"""
if min_range >= max_range:
return
# Clamp value to range
clamped_value = max(min_range, min(max_range, value))
# Convert to 0-100 scale
progress = int(((clamped_value - min_range) / (max_range - min_range)) * 100)
self.progress.setValue(progress)
def get_progress(self) -> int:
"""Get current progress value"""
return self.progress.value()