feat: added functional for new disign for timers_screen
This commit is contained in:
@@ -1,42 +1,67 @@
|
||||
import kivy
|
||||
kivy.require('2.3.1')
|
||||
|
||||
from kivy.app import App
|
||||
from kivy.uix.screenmanager import ScreenManager
|
||||
from kivy.lang import Builder
|
||||
from kivy.animation import Animation
|
||||
from kivy.metrics import dp
|
||||
from kivy.uix.behaviors import ButtonBehavior
|
||||
from kivy.logger import Logger
|
||||
|
||||
import logging
|
||||
|
||||
from kawai_focus.screens.timer_screen import TimerScreen
|
||||
from kawai_focus.screens.timer_constructor_screen import TimerConstructorScreen
|
||||
from kivymd.app import MDApp
|
||||
from kivymd.uix.screenmanager import MDScreenManager
|
||||
from kivymd.uix.expansionpanel import MDExpansionPanel
|
||||
from kivymd.uix.behaviors import RotateBehavior
|
||||
from kivymd.uix.list import MDListItemTrailingIcon
|
||||
|
||||
from kawai_focus.menu_app import MenuApp
|
||||
from kawai_focus.screens.timers_screen import TimersScreen
|
||||
from kawai_focus.database.cruds import list_timers
|
||||
|
||||
|
||||
Logger.setLevel(logging.DEBUG)
|
||||
|
||||
|
||||
class KawaiFocusApp(App):
|
||||
"""Класс для создания приложения"""
|
||||
class TrailingPressedIconButton(
|
||||
ButtonBehavior, RotateBehavior, MDListItemTrailingIcon
|
||||
):
|
||||
"""Кнопка-иконка в конце элемента списка с поддержкой анимации"""
|
||||
...
|
||||
|
||||
title = 'Kawai.Focus'
|
||||
|
||||
def build(self):
|
||||
class KawaiFocusApp(MDApp, MenuApp):
|
||||
"""Главный класс приложения"""
|
||||
|
||||
def build(self) -> MDScreenManager:
|
||||
"""Создаёт и возвращает менеджер экранов приложения"""
|
||||
|
||||
self.theme_cls.theme_style = 'Dark'
|
||||
# Загрузка kv файла
|
||||
Builder.load_file('kv/timer_screen.kv')
|
||||
Builder.load_file('kv/timer_constructor_screen.kv')
|
||||
Builder.load_file('kv/timers_screen.kv')
|
||||
|
||||
screen_manager = ScreenManager()
|
||||
timers = list_timers()
|
||||
timers_screen = TimersScreen(name='timers_screen')
|
||||
timers_screen.ids.timers_view.data = timers
|
||||
self.screen_manager = MDScreenManager()
|
||||
self.timers_screen = TimersScreen(name='timers_screen')
|
||||
self.screen_manager.add_widget(self.timers_screen)
|
||||
|
||||
return self.screen_manager
|
||||
|
||||
def tap_expansion_chevron(
|
||||
self, panel: MDExpansionPanel, chevron: TrailingPressedIconButton
|
||||
) -> None:
|
||||
"""Анимация и переключение состояния раскрытия панели"""
|
||||
|
||||
screen_manager.add_widget(timers_screen)
|
||||
screen_manager.add_widget(TimerConstructorScreen(name='timer_constructor_screen'))
|
||||
screen_manager.add_widget(TimerScreen(name='timer_screen'))
|
||||
return screen_manager
|
||||
Animation(
|
||||
padding=(
|
||||
[0, dp(12), 0, dp(12)] if not panel.is_open else [0, 0, 0, 0]
|
||||
),
|
||||
d=0.2,
|
||||
).start(panel)
|
||||
panel.open() if not panel.is_open else panel.close()
|
||||
(
|
||||
panel.set_chevron_down(chevron)
|
||||
if not panel.is_open
|
||||
else panel.set_chevron_up(chevron)
|
||||
)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
|
||||
Reference in New Issue
Block a user