diff --git a/src/artemis.py b/src/artemis.py index ebe0964..50375bb 100644 --- a/src/artemis.py +++ b/src/artemis.py @@ -19,8 +19,7 @@ from PyQt5.QtGui import QPixmap from PyQt5 import uic from PyQt5.QtCore import (QFileInfo, Qt, - pyqtSlot, - QRect,) + pyqtSlot,) from audio_player import AudioPlayer from weatherdata import SpaceWeatherData, ForecastData @@ -495,6 +494,7 @@ class Artemis(QMainWindow, Ui_MainWindow): self.pause, self.stop, self.volume, + self.loop, self.audio_progress, self.active_color, self.inactive_color diff --git a/src/artemis.ui b/src/artemis.ui index 4173c19..bdcf1c7 100644 --- a/src/artemis.ui +++ b/src/artemis.ui @@ -9177,8 +9177,8 @@ STORM - - + + @@ -9199,7 +9199,101 @@ QPushButton { } - + + + + false + + + + 0 + 0 + + + + + 45 + 45 + + + + + + + false + + + + + + + false + + + + 0 + 0 + + + + + 45 + 45 + + + + + + + false + + + + + + + false + + + + 0 + 0 + + + + + 45 + 45 + + + + + + + + + + + + 0 + 0 + + + + + 45 + 45 + + + + + + + true + + + + false @@ -9227,79 +9321,7 @@ QPushButton { - - - - false - - - - 0 - 0 - - - - - 70 - 70 - - - - - - - false - - - - - - - false - - - - 0 - 0 - - - - - 70 - 70 - - - - - - - false - - - - - - - false - - - - 0 - 0 - - - - - 70 - 70 - - - - - - - - + @@ -9368,7 +9390,7 @@ QSlider::handle:horizontal { - + diff --git a/src/audio_player.py b/src/audio_player.py index 7e3410b..a9305f4 100644 --- a/src/audio_player.py +++ b/src/audio_player.py @@ -19,17 +19,21 @@ class AudioPlayer(QObject): pause, stop, volume, + loop, audio_progress, active_color, inactive_color): """Initialize the player.""" super().__init__() + self._active_color = active_color + self._inactive_color = inactive_color self._paused = False self._first_call = True self._play = play self._pause = pause self._stop = stop self._volume = volume + self._loop = loop self._audio_progress = audio_progress self._audio_file = None self._timer = QTimer() @@ -38,22 +42,45 @@ class AudioPlayer(QObject): self._pause.clicked.connect(self._pause_audio) self._stop.clicked.connect(self._stop_audio) self._volume.valueChanged.connect(self._set_volume) + self._loop.clicked.connect(self._set_loop_icon) self._play.setIconSize(self._play.size()) self._pause.setIconSize(self._pause.size()) self._stop.setIconSize(self._stop.size()) + self._loop.setIconSize(self._loop.size()) self.refresh_btns_colors(active_color, inactive_color) + @pyqtSlot() + def _set_loop_icon(self): + """Set the icon for the loop audio button.""" + if self._loop.isChecked(): + loop_icon = qta.icon( + 'fa5s.redo-alt', + color=self._active_color, + color_disabled=self._inactive_color, + animation=qta.Spin(self._loop) + ) + else: + loop_icon = qta.icon( + 'fa5s.redo-alt', + color=self._active_color, + color_disabled=self._inactive_color + ) + self._loop.setIcon(loop_icon) + def refresh_btns_colors(self, active_color, inactive_color): """Repaint the buttons of the widgetd after the theme has changed.""" - self._play.setIcon(qta.icon('fa5.play-circle', + self._active_color = active_color + self._inactive_color = inactive_color + self._play.setIcon(qta.icon('fa5s.play', color=active_color, color_disabled=inactive_color)) - self._pause.setIcon(qta.icon('fa5.pause-circle', + self._pause.setIcon(qta.icon('fa5s.pause', color=active_color, color_disabled=inactive_color)) - self._stop.setIcon(qta.icon('fa5.stop-circle', + self._stop.setIcon(qta.icon('fa5s.stop', color=active_color, color_disabled=inactive_color)) + self._set_loop_icon() @pyqtSlot() def _set_volume(self): @@ -71,8 +98,7 @@ class AudioPlayer(QObject): self._timer.stop() mixer.quit() self._audio_progress.reset() - self._enable_buttons(False, False, False) - self._paused = False + self._enable_buttons(False, False, False, False) @pyqtSlot() def _update_bar(self): @@ -81,7 +107,11 @@ class AudioPlayer(QObject): if pos == -1: self._timer.stop() self._audio_progress.reset() - self._enable_buttons(True, False, False) + if self._loop.isChecked(): + self._play_audio() + self._enable_buttons(False, True, True) + else: + self._enable_buttons(True, False, False) else: self._audio_progress.setValue(pos) @@ -102,6 +132,7 @@ class AudioPlayer(QObject): ) if os.path.exists(full_name): self._play.setEnabled(True) + self._loop.setEnabled(True) self._audio_file = full_name @pyqtSlot() @@ -137,8 +168,9 @@ class AudioPlayer(QObject): self._paused = True self._enable_buttons(True, False, False) - def _enable_buttons(self, play_en, pause_en, stop_en): + def _enable_buttons(self, play_en, pause_en, stop_en, loop_en=True): """Set the three buttons status.""" self._play.setEnabled(play_en) self._pause.setEnabled(pause_en) self._stop.setEnabled(stop_en) + self._loop.setEnabled(loop_en)