Files
MusicPlayerV1/showcaseScreen/musicplayer_showcase_screen.py

121 lines
4.8 KiB
Python

from audioop import add
from calendar import isleap
from kivy.core.window import Window
from kivy.uix.screenmanager import ScreenManager
from kivymd.uix.screen import MDScreen
from kivymd.app import MDApp
from kivy.base import Builder
from kivy.uix.popup import Popup
from kivy.clock import Clock
import handlers.comHandler
import math
import handlers.csv_parsers
import time
Builder.load_file('./ui/connectionPU.kv')
comHandler = handlers.comHandler.Com()
cvr = handlers.csv_parsers.CsvRead()
class ConnectionPU(Popup):
pass
class LoginWindow(MDScreen):
def connect(self):
global address
self.url = self.ids.url.text
self.containsPort = False
for self.letter in self.url:
if self.letter == ":":
self.containsPort = True
else:
pass
self.connectionurl = ""
if self.url[:8] != "https://" and self.url[:7] != "http://" and self.url[len(self.url) - 1:] == "/" and not self.containsPort and len(self.url) > 2:
self.connectionurl = f"http://{self.url[:len(self.url) - 1]}:8000"
if comHandler.connect(self.connectionurl):
address = self.connectionurl
screen_manager.current = "ShowcaseScreen"
else:
ConnectionPU().open()
elif self.url[:8] != "https://" and self.url[:7] != "http://" and self.url[len(self.url) - 1:] != "/" and not self.containsPort and len(self.url) > 2:
self.connectionurl = f"http://{self.url}:8000"
if comHandler.connect(self.connectionurl):
address = self.connectionurl
screen_manager.current = "ShowcaseScreen"
else:
ConnectionPU().open()
else:
ConnectionPU().open()
class ShowcaseScreen(MDScreen):
def beginUpdating(self):
global address
Clock.schedule_interval(self.updateScreen, 1)
self.lastsongpos = 200
self.__current = comHandler.getcurrentsong(address)
self.__upcoming = comHandler.getupcomingsongs(address)
self.songlength = comHandler.getsonglength(address)
self.songpos = comHandler.getsongpos(address)
self.ids.current_song.text = self.__current
self.ids.upcoming_songs.text = self.__upcoming
self.ids.progressbars.value = float(self.songpos / float(self.songlength) * 100)
self.isplaying = False
self.averagedelatation = 0
self.passcount = 0
Clock.schedule_interval(self.updateProgressbar, 0.1)
def updateScreen(self, dmp):
Window.fullscreen = comHandler.checkiffullscreen(address)
self.status = comHandler.checkgo(address)
if self.status == "playing":
self.isplaying = True
elif self.status == "paused":
self.isplaying = False
elif self.status == "stopped":
Window.fullscreen = False
screen_manager.current = "Login"
else:
print("ERROR in Status. Please check connection!")
Window.maximize()
self.__windowsize = Window._get_size()
self.__windowsize_x = self.__windowsize[0]
self.__windowsize_y = self.__windowsize[1]
self.__text_size = round(math.sqrt(((self.__windowsize_x + self.__windowsize_y) / 2)), 0)
self.ids.current_song.font_size = self.__text_size + 5
self.ids.upcoming_songs.font_size = self.__text_size - 5
self.ids.titleinfo.font_size = self.__text_size * 2.2
self.ids.upcoming_ind.font_size = self.__text_size + 10
self.__doupdateUI = comHandler.getuiupdate(address)
if self.__doupdateUI:
self.songpos = comHandler.getsongpos(address)
self.__current = comHandler.getcurrentsong(address)
self.__upcoming = comHandler.getupcomingsongs(address)
self.songlength = comHandler.getsonglength(address)
print(self.songlength)
self.ids.progressbars.value = float(self.songpos / float(self.songlength) * 100)
self.ids.current_song.text = self.__current
self.ids.upcoming_songs.text = self.__upcoming
def updateProgressbar(self, dmp):
if self.isplaying:
self.__songdisplay = float(self.songpos / float(self.songlength) * 100)
self.songpos += 0.1
self.ids.progressbars.value = self.__songdisplay
class MusicPlayerShowcaseScreen(MDApp):
global screen_manager
screen_manager = ScreenManager()
def build(self):
self.title = "MusicPlayer Showcase Screen"
self.theme_cls.primary_palette = "Blue"
self.theme_cls.accent_palette = "Gray"
screen_manager.add_widget(Builder.load_file("./ui/mainui.kv"))
screen_manager.add_widget(Builder.load_file('./ui/showcase.kv'))
return screen_manager
MusicPlayerShowcaseScreen().run()