feat: added queue timers in the timer_constructor_screen and timer_screen

This commit is contained in:
Arduinum628
2025-07-30 14:39:37 +03:00
parent 3afd85d942
commit 4439c9e17b
3 changed files with 32 additions and 6 deletions

View File

@@ -3,7 +3,7 @@ from kivy.uix.screenmanager import Screen
from kawai_focus.custom_widgets.timer_wigets import TimeTomatoInput from kawai_focus.custom_widgets.timer_wigets import TimeTomatoInput
from kawai_focus.schemas import TimerModel from kawai_focus.schemas import TimerModel
from kawai_focus.database.cruds import new_timer from kawai_focus.database.cruds import new_timer
from kawai_focus.utils.utils import calculate_time, custom_timer from kawai_focus.utils.utils import calculate_time, gen_types_timers
from kawai_focus.screens.validators_fields import validate_title from kawai_focus.screens.validators_fields import validate_title
@@ -38,7 +38,9 @@ class TimerConstructorScreen(Screen):
time_culc = calculate_time(mm_user=timer.pomodoro_time) time_culc = calculate_time(mm_user=timer.pomodoro_time)
screen_timer.timer_start_time = time_culc screen_timer.timer_start_time = time_culc
screen_timer.ids.time_label.text = time_culc screen_timer.ids.time_label.text = time_culc
screen_timer.timer_generator = custom_timer(mm_user=timer.pomodoro_time) screen_timer.source_timer_names = gen_types_timers(count_pomodoro=timer.count_pomodoro)
self.manager.state_machine = screen_timer.source_timer_names.copy()
self.manager.current = 'timers_screen' self.manager.current = 'timers_screen'

View File

@@ -2,7 +2,7 @@ from kivy.uix.screenmanager import Screen
from kivy.clock import Clock from kivy.clock import Clock
from kivy.core.audio import SoundLoader from kivy.core.audio import SoundLoader
from kawai_focus.utils.utils import data_json from kawai_focus.utils.utils import data_json, custom_timer, calculate_time
class TimerScreen(Screen): class TimerScreen(Screen):
@@ -22,6 +22,22 @@ class TimerScreen(Screen):
self.sound_stop_event = None self.sound_stop_event = None
self.timer = None self.timer = None
self.timer_start_time = None self.timer_start_time = None
self.source_timer_names = None
def check_timer(self) -> None:
"""Метод для выбора таймера"""
current_timer_name = self.manager.state_machine.pop(0)
if current_timer_name == 'pomodoro':
self.timer_generator = custom_timer(mm_user=self.timer.pomodoro_time)
self.ids.time_label.text = calculate_time(mm_user=self.timer.pomodoro_time)
elif current_timer_name == 'break':
self.timer_generator = custom_timer(mm_user=self.timer.break_time)
self.ids.time_label.text = calculate_time(mm_user=self.timer.break_time)
else:
self.timer_generator = custom_timer(mm_user=self.timer.break_long_time)
self.ids.time_label.text = calculate_time(mm_user=self.timer.break_long_time)
def start_timer(self, instance) -> None: def start_timer(self, instance) -> None:
"""Метод для запуска таймера""" """Метод для запуска таймера"""
@@ -30,8 +46,11 @@ class TimerScreen(Screen):
self.paused = False self.paused = False
else: else:
# Инициализация генератора таймера # Инициализация генератора таймера
if len(self.manager.state_machine) and self.timer_generator is None:
self.check_timer()
self.remaining_time = next(self.timer_generator, self.zero_time) self.remaining_time = next(self.timer_generator, self.zero_time)
# Запуск обновления времени каждую секунду # Запуск обновления времени каждую секунду
Clock.schedule_interval(self.update_time, 1) Clock.schedule_interval(self.update_time, 1)
@@ -57,6 +76,12 @@ class TimerScreen(Screen):
Clock.unschedule(self.sound_stop_event) Clock.unschedule(self.sound_stop_event)
self.sound_stop_event = None self.sound_stop_event = None
if len(self.manager.state_machine):
self.check_timer()
else:
self.manager.state_machine = self.source_timer_names.copy()
self.check_timer()
def play_sound(self, dt) -> None: def play_sound(self, dt) -> None:
"""Метод для воспроизведения звука""" """Метод для воспроизведения звука"""

View File

@@ -1,5 +1,4 @@
{ {
"sound_timer": "alarm-beep.mp3", "sound_timer": "alarm-beep.mp3",
"zero_time": "00:00:00", "zero_time": "00:00:00"
"custom_time": "00:00:12"
} }