feat: added validation for timer constructor, added function to calculate hours, minutes and seconds from entered minutes
This commit is contained in:
@@ -3,6 +3,8 @@ from kivy.uix.screenmanager import Screen
|
||||
from kawai_focus.custom_widgets.timer_wigets import TimeTomatoInput
|
||||
from kawai_focus.schemas import TimerModel
|
||||
from kawai_focus.database.cruds import new_timer
|
||||
from kawai_focus.utils.utils import calculate_time, custom_timer
|
||||
from kawai_focus.screens.validators_fields import validate_title
|
||||
|
||||
|
||||
class TimerConstructorScreen(Screen):
|
||||
@@ -14,6 +16,12 @@ class TimerConstructorScreen(Screen):
|
||||
def create_timer(self, instance):
|
||||
"""Метод для создания таймера"""
|
||||
|
||||
validate_title(self, self.ids.title.text)
|
||||
|
||||
# прекратить создание таймера если поле пустое
|
||||
if not self.ids.title.text:
|
||||
return
|
||||
|
||||
timer = new_timer(
|
||||
data=TimerModel(
|
||||
title=self.ids.title.text,
|
||||
@@ -27,12 +35,10 @@ class TimerConstructorScreen(Screen):
|
||||
if timer:
|
||||
screen_timer = self.manager.get_screen('timers_screen')
|
||||
screen_timer.timer = timer
|
||||
# Todo: временное решение: нужно сделать механизм для
|
||||
# автоматического рассчёта часов, минут и секунд из
|
||||
# колличества минут, введённого пользователем
|
||||
screen_timer.ids.time_label.text = f'00:{
|
||||
"0" + str(timer.pomodoro_time) if timer.pomodoro_time <= 9 else timer.pomodoro_time
|
||||
}:00'
|
||||
time_culc = calculate_time(mm_user=timer.pomodoro_time)
|
||||
screen_timer.timer_start_time = time_culc
|
||||
screen_timer.ids.time_label.text = time_culc
|
||||
screen_timer.timer_generator = custom_timer(mm_user=timer.pomodoro_time)
|
||||
self.manager.current = 'timers_screen'
|
||||
|
||||
|
||||
|
||||
@@ -2,8 +2,7 @@ from kivy.uix.screenmanager import Screen
|
||||
from kivy.clock import Clock
|
||||
from kivy.core.audio import SoundLoader
|
||||
|
||||
from kawai_focus.utils.utils import custom_timer, data_json
|
||||
from kawai_focus.schemas import TimerTimeModel
|
||||
from kawai_focus.utils.utils import data_json
|
||||
|
||||
|
||||
class TimerScreen(Screen):
|
||||
@@ -22,6 +21,7 @@ class TimerScreen(Screen):
|
||||
self.remaining_time = None
|
||||
self.sound_stop_event = None
|
||||
self.timer = None
|
||||
self.timer_start_time = None
|
||||
|
||||
def start_timer(self, instance) -> None:
|
||||
"""Метод для запуска таймера"""
|
||||
@@ -30,8 +30,6 @@ class TimerScreen(Screen):
|
||||
self.paused = False
|
||||
else:
|
||||
# Инициализация генератора таймера
|
||||
self.valid_timer_data = TimerTimeModel(mm=self.timer.pomodoro_time)
|
||||
self.timer_generator = custom_timer(valid_data=self.valid_timer_data)
|
||||
self.remaining_time = next(self.timer_generator, self.zero_time)
|
||||
|
||||
# Запуск обновления времени каждую секунду
|
||||
@@ -51,14 +49,8 @@ class TimerScreen(Screen):
|
||||
# Остановка обновления времени
|
||||
Clock.unschedule(self.update_time)
|
||||
self.paused = False
|
||||
self.remaining_time = TimerTimeModel(mm=self.timer.pomodoro_time).mm
|
||||
# Todo: временное решение: нужно сделать механизм для
|
||||
# автоматического рассчёта часов, минут и секунд из
|
||||
# колличества минут, введённого пользователем
|
||||
self.ids.time_label.text = f'00:{
|
||||
"0" + str(self.remaining_time) if self.remaining_time <= 9 else self.remaining_time
|
||||
}:00'
|
||||
|
||||
self.remaining_time = next(self.timer_generator, self.zero_time)
|
||||
self.ids.time_label.text = self.timer_start_time
|
||||
self.sound.stop()
|
||||
|
||||
if self.sound_stop_event:
|
||||
|
||||
5
kawai_focus/screens/validators_fields.py
Normal file
5
kawai_focus/screens/validators_fields.py
Normal file
@@ -0,0 +1,5 @@
|
||||
def validate_title(obj, text):
|
||||
"""Валидатор поля title"""
|
||||
|
||||
if not text:
|
||||
obj.ids.title_error.text = 'Введите название!'
|
||||
Reference in New Issue
Block a user