|
1 | 1 | import re |
2 | 2 | import os |
| 3 | +import datetime |
3 | 4 | from typing import List |
4 | 5 | import qtawesome as qta |
5 | 6 | from PyQt6.QtCore import Qt |
@@ -137,9 +138,11 @@ def create_progress_group(self): |
137 | 138 |
|
138 | 139 | self.elapsed_time_label = QLabel("0:00") |
139 | 140 | self.remaining_time_label = QLabel("0:00") |
| 141 | + self.total_time = QLabel("0:00") |
140 | 142 | time_layout = QHBoxLayout() |
141 | 143 | time_layout.addWidget(self.elapsed_time_label) |
142 | 144 | time_layout.addWidget(self.remaining_time_label) |
| 145 | + time_layout.addWidget(self.total_time) |
143 | 146 |
|
144 | 147 | progress_layout.addWidget(self.time_slider) |
145 | 148 | progress_layout.addWidget(QLabel("الصوت:")) |
@@ -206,9 +209,19 @@ def setup_shortcuts(self, disable=False, first_time=True): |
206 | 209 | for widget, key_sequence in shortcuts.items(): |
207 | 210 | widget.setShortcut(QKeySequence(key_sequence)) |
208 | 211 |
|
| 212 | + shortcuts = { |
| 213 | + "Ctrl+Down": self.next_reciter, |
| 214 | + "Ctrl+Up": self.previous_reciter, |
| 215 | + "E": lambda: UniversalSpeech.say(self.elapsed_time_label.text()), |
| 216 | + "R": lambda: UniversalSpeech.say(self.remaining_time_label.text()), |
| 217 | + "T": lambda: UniversalSpeech.say(self.total_time.text()), |
| 218 | + "C": lambda: UniversalSpeech.say(self.reciter_combo.currentText()), |
| 219 | + "V": lambda: UniversalSpeech.say(self.surah_combo.currentText()), |
| 220 | +} |
| 221 | + |
209 | 222 | if first_time: |
210 | | - QShortcut(QKeySequence("Ctrl+Down"), self).activated.connect(self.next_reciter) |
211 | | - QShortcut(QKeySequence("Ctrl+Up"), self).activated.connect(self.previous_reciter) |
| 223 | + for key_sequence, function in shortcuts.items(): |
| 224 | + QShortcut(QKeySequence(key_sequence), self).activated.connect(function) |
212 | 225 |
|
213 | 226 | def update_current_reciter(self): |
214 | 227 | reciter_id = self.reciter_combo.currentData() |
@@ -246,7 +259,7 @@ def play_current_surah(self): |
246 | 259 | self.audio_player_thread.start() |
247 | 260 | self.preferences_manager.set_preference("reciter_id", self.reciter_combo.currentData()) |
248 | 261 | self.preferences_manager.set_preference("sura_number", self.surah_combo.currentData()) |
249 | | - |
| 262 | + |
250 | 263 | def stop(self): |
251 | 264 | self.player.stop() |
252 | 265 |
|
@@ -303,12 +316,12 @@ def on_update_time(self, position, length): |
303 | 316 | self.time_slider.setValue(new_position_percentage) |
304 | 317 | self.elapsed_time_label.setText(self.format_time(position)) |
305 | 318 | self.remaining_time_label.setText(self.format_time(length - position)) |
| 319 | + self.total_time.setText(self.format_time(self.player.get_length())) |
306 | 320 | self.time_slider.blockSignals(False) |
307 | 321 |
|
308 | 322 | def format_time(self, seconds): |
309 | | - minutes = int(seconds // 60) |
310 | | - seconds = int(seconds % 60) |
311 | | - return f"{minutes}:{seconds:02}" |
| 323 | + time_delta = datetime.timedelta(seconds=seconds) |
| 324 | + return str(time_delta).split(".")[0] |
312 | 325 |
|
313 | 326 | def update_buttons_status(self, status): |
314 | 327 | controls = self.buttons + self.menubar.get_player_actions() + [self.time_slider] |
|
0 commit comments