diff --git a/bin/__pycache__/autocomplete.cpython-310.pyc b/bin/__pycache__/autocomplete.cpython-310.pyc new file mode 100644 index 0000000..3fd72d3 Binary files /dev/null and b/bin/__pycache__/autocomplete.cpython-310.pyc differ diff --git a/bin/__pycache__/csv_parsers.cpython-310.pyc b/bin/__pycache__/csv_parsers.cpython-310.pyc new file mode 100644 index 0000000..244d921 Binary files /dev/null and b/bin/__pycache__/csv_parsers.cpython-310.pyc differ diff --git a/bin/__pycache__/filepathanalysis.cpython-310.pyc b/bin/__pycache__/filepathanalysis.cpython-310.pyc new file mode 100644 index 0000000..b492f4a Binary files /dev/null and b/bin/__pycache__/filepathanalysis.cpython-310.pyc differ diff --git a/bin/__pycache__/info_handler.cpython-310.pyc b/bin/__pycache__/info_handler.cpython-310.pyc new file mode 100644 index 0000000..83ab4fd Binary files /dev/null and b/bin/__pycache__/info_handler.cpython-310.pyc differ diff --git a/bin/__pycache__/player.cpython-310.pyc b/bin/__pycache__/player.cpython-310.pyc new file mode 100644 index 0000000..6c4b8b8 Binary files /dev/null and b/bin/__pycache__/player.cpython-310.pyc differ diff --git a/bin/gui/gui.kv b/bin/gui/gui.kv index 640aa97..d4ce3f2 100755 --- a/bin/gui/gui.kv +++ b/bin/gui/gui.kv @@ -99,7 +99,7 @@ RootScreen: TextInput: id: passw multiline: False - input_filter: "string" + on_text_validate: root.returnToFullscreen() Label: id: output text: "" @@ -232,7 +232,7 @@ RootScreen: root.manager.transition.direction = "left" : - on_leave: root.disablefullscreen() + on_pre_enter: root.reset() name: "Showcase" md_bg_color: (0, 0, 0, 1) FloatLayout: @@ -285,8 +285,7 @@ RootScreen: size_hint: 0.05, 0.05 background_color: app.theme_cls.accent_light on_release: - app.root.current = "Main" - root.manager.transition.direction = "right" + root.leave_screen() Label: text: "Designed and developed by Janis Hutz" font_size: 7 diff --git a/data/config.csv b/data/config.csv index cbdad86..4e16fcf 100755 --- a/data/config.csv +++ b/data/config.csv @@ -1 +1 @@ -1,songlist.csv +1,songlist.csv diff --git a/data/settings.ini b/data/settings.ini index 21fa03b..c55cb05 100755 --- a/data/settings.ini +++ b/data/settings.ini @@ -16,9 +16,9 @@ loopPlayback = 1 [Security] # Specifies if a password should be used for exiting the fullscreen mode on the showcase screen -pwdFSExit = False +pwdFSExit = True # Set password here, will not be respected if above is "False" -pwd = +pwd = 1234 [Info] # Software version @@ -26,4 +26,4 @@ version = V1.1 subVersion = [Dev Settings] -verbose = True \ No newline at end of file +verbose = True diff --git a/data/songtemp.csv b/data/songtemp.csv index 147a51a..20a7e01 100755 --- a/data/songtemp.csv +++ b/data/songtemp.csv @@ -1,3 +1,3 @@ -0 -The Day You Went Away.mp3,sha la la.mp3 -221.12362670898438 +0 +The Day You Went Away.mp3,sha la la.mp3 +221.12362670898438 diff --git a/data/temp.csv b/data/temp.csv index 6b71cc6..dd5c1f5 100755 --- a/data/temp.csv +++ b/data/temp.csv @@ -1 +1 @@ -/mnt/DATA/Music/ +/mnt/data/Music/ diff --git a/musicplayer.py b/musicplayer.py index 6e96e8c..14fbe7a 100755 --- a/musicplayer.py +++ b/musicplayer.py @@ -27,6 +27,7 @@ import math import bin.autocomplete +returnOk = False pl = bin.player.Player() pa = bin.filepathanalysis.PathAnalysis() cvr = bin.csv_parsers.CsvRead() @@ -59,13 +60,15 @@ class invalidpathPU(Popup): class LeavePU(Popup): def check_pwd(self): if self.ids.passw.text == config["Security"]["pwd"]: - self.manager.current = "Main" - self.manager.transition.direction = "right" + returnOk = true self.dismiss() else: time.sleep(2) self.ids.output.text = "Password wrong, please try again!" + def returnToFullscreen(self): + Window.fullscreen = True + ########### # SCREENS @@ -278,6 +281,8 @@ class Main(MDScreen): if self.manager.current == "Showcase": if config["Security"]["pwdFSExit"] == "True": self.open_leave_popup() + if returnOk: + Window.fullscreen = False else: self.manager.current = "Main" self.manager.transition.direction = "right" @@ -291,9 +296,22 @@ class Main(MDScreen): class ShowcaseS(MDScreen): + def leave_screen(self): + if config["Security"]["pwdFSExit"] == "True": + self.disablefullscreen() + LeavePU().open() + if returnOk: + self.disablefullscreen() + else: + self.manager.current = "Main" + self.manager.transition.direction = "right" + def disablefullscreen(self): Window.fullscreen = False + def reset(self): + returnOk = False + class RootScreen(ScreenManager): pass diff --git a/showcaseScreen/handlers/__pycache__/server.cpython-310.pyc b/showcaseScreen/handlers/__pycache__/server.cpython-310.pyc new file mode 100644 index 0000000..e5f5b66 Binary files /dev/null and b/showcaseScreen/handlers/__pycache__/server.cpython-310.pyc differ diff --git a/showcaseScreen/handlers/__pycache__/server_handler.cpython-310.pyc b/showcaseScreen/handlers/__pycache__/server_handler.cpython-310.pyc new file mode 100644 index 0000000..aec552c Binary files /dev/null and b/showcaseScreen/handlers/__pycache__/server_handler.cpython-310.pyc differ diff --git a/showcaseScreen/handlers/server.py b/showcaseScreen/handlers/server.py new file mode 100644 index 0000000..8692300 --- /dev/null +++ b/showcaseScreen/handlers/server.py @@ -0,0 +1,33 @@ +from http.server import HTTPServer, BaseHTTPRequestHandler +import cgi +import os + + +class MusicPlayerServer(BaseHTTPRequestHandler): + def _set_headers(self): + self.send_response(200) + self.send_header('Content-type', 'text/html') + self.end_headers() + + def do_GET(self): + self._set_headers() + if self.path == '/reloadstyling': + pass + else: + self.opened_file = open(f".{self.path}").read() + self.wfile.write(bytes(self.opened_file, 'utf-8')) + + def do_POST(self): + self._set_headers() + self.returnsPOST = cgi.FieldStorage( + fp=self.rfile, + headers=self.headers, + environ={ 'REQUEST_METHOD' : 'POST'} + ) + print(self.returnsPOST) + +def run(server_class=HTTPServer, handler_class=MusicPlayerServer, port=8080): + server_address = ('', port) + httpd = server_class(server_address, handler_class) + print(f"Server started on {port}") + httpd.serve_forever() diff --git a/showcaseScreen/handlers/server_handler.py b/showcaseScreen/handlers/server_handler.py new file mode 100644 index 0000000..c6b23c6 --- /dev/null +++ b/showcaseScreen/handlers/server_handler.py @@ -0,0 +1,29 @@ +import handlers.server +import multiprocessing as mp + + +class ServerHandler: + def __init__(self): + pass + + def start_server(self): + print("starting server") + try: + if self.mpserver.is_alive(): + pass + else: + self.mpserver = mp.Process(name="runserver", target=handlers.server.run,) + self.mpserver.start() + except AttributeError as e: + print(e) + self.mpserver = mp.Process(name="runserver", target=handlers.server.run,) + self.mpserver.start() + + def stop_server(self): + self.mpserver.kill() + + def get_server_status(self): + try: + return self.mpserver.is_alive() + except AttributeError: + return False \ No newline at end of file diff --git a/showcaseScreen/index.html b/showcaseScreen/index.html new file mode 100644 index 0000000..7bd142a --- /dev/null +++ b/showcaseScreen/index.html @@ -0,0 +1,6 @@ + + + +

THIS IS A TEST

+ + \ No newline at end of file diff --git a/showcaseScreen/musicplayer_showcase_screen.py b/showcaseScreen/musicplayer_showcase_screen.py new file mode 100644 index 0000000..3d22118 --- /dev/null +++ b/showcaseScreen/musicplayer_showcase_screen.py @@ -0,0 +1,39 @@ +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.server_handler as shand + +server_manager = shand.ServerHandler() + + +class LoginWindow(MDScreen): + def startserver(self): + self.ids.statusbar.text = "Starting server..." + server_manager.start_server() + Clock.schedule_once(self.getStatus, 4) + + def getStatus(self, dump): + print("status update") + if server_manager.get_server_status(): + self.ids.statusbar.text = "Server running on Port 8080" + else: + self.ids.statusbar.text = "There was an error starting the server or it might take longer than expected to start it." + Clock.schedule_once(self.getStatus, 4) + + +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")) + return screen_manager + +MusicPlayerShowcaseScreen().run() \ No newline at end of file diff --git a/showcaseScreen/ui/mainui.kv b/showcaseScreen/ui/mainui.kv new file mode 100644 index 0000000..66f2cf8 --- /dev/null +++ b/showcaseScreen/ui/mainui.kv @@ -0,0 +1,17 @@ +LoginWindow: + name: "Login" + md_bg_color: app.theme_cls.accent_color + GridLayout: + cols: 1 + Label: + text: "Welcome to the MusicPlayer Showcase Screen!" + font_size: 27 + color: (0, 0, 0, 1) + Label: + text: "Server is currently not running! Please start it by clicking start server!" + id: statusbar + color: (0, 0, 0, 1) + Button: + text: "Start Server" + on_release: + root.startserver() \ No newline at end of file