import kivy
from kivy.app import App
from kivy.properties import ObjectProperty
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
Builder.load_file("uhrzeitenapp.kv")


class MainWindow(BoxLayout):
    btn_halb = ObjectProperty(None)
    btn_dreiviertel = ObjectProperty(None)
    btn_viertel = ObjectProperty(None)
    btn_viertelvor = ObjectProperty(None)
    btn_viertelnach = ObjectProperty(None)

    btn_1 = ObjectProperty(None)
    btn_2 = ObjectProperty(None)
    btn_3 = ObjectProperty(None)
    btn_4 = ObjectProperty(None)
    btn_5 = ObjectProperty(None)
    btn_6 = ObjectProperty(None)
    btn_7 = ObjectProperty(None)
    btn_8 = ObjectProperty(None)
    btn_9 = ObjectProperty(None)
    btn_10 = ObjectProperty(None)
    btn_11 = ObjectProperty(None)
    btn_12 = ObjectProperty(None)

    btn_nachmittags = ObjectProperty(None)
    btn_vormittags= ObjectProperty(None)

    result_label = ObjectProperty(None)


    # "statements" und "daytimes" als int codiert (bringt vermutlich eine bessere runtime als Strings)
    global internal_statement_dict
    internal_statement_dict = {"Halb": 0, "Dreiviertel": 1, "Viertel": 2, "Viertel vor": 3, "Viertel nach": 4}
    global internal_daytime_dict
    internal_daytime_dict = {"vormittags": 5, "nachmittags": 6}

    # Das vom user später über die UI gefüllte dict wird iniziiert
    global user_dict
    user_dict = {"statement": None, "input_hour": 1, "daytime": 5}

    # Die später zur Ergebnisausgabe verwendete result_list wird iniziiert
    global result_list
    result_list = [None, ":", None]

    def go(self):
        # Wenn user_dict komplett gefüllt is werden die Regeln der Statements angewendet, ansonsten wird nur die unveränderte Stunde aus user_dict wiedergegeben
        if user_dict["statement"] != None and user_dict["input_hour"] != None and user_dict["daytime"] != None:
            if user_dict["statement"] == internal_statement_dict["Halb"]:
                print("runs statementfunc_halb()")
                hour = user_dict["input_hour"] - 1
                minute = 30

            elif user_dict["statement"] == internal_statement_dict["Dreiviertel"]:
                print("runs statementfunc_dreiviertel()")
                hour = user_dict["input_hour"] - 1
                minute = 45

            elif user_dict["statement"] == internal_statement_dict["Viertel"]:
                print("runs statementfunc_viertel()")
                hour = user_dict["input_hour"] - 1
                minute = 15

            elif user_dict["statement"] == internal_statement_dict["Viertel vor"]:
                print("runs statementfunc_viertelvor()")
                hour = user_dict["input_hour"] - 1
                minute = 45

            elif user_dict["statement"] == internal_statement_dict["Viertel nach"]:
                print("runs statementfunc_viertelnach()")
                hour = user_dict["input_hour"]
                minute = 15

        else:
            hour = user_dict["input_hour"]
            minute = "00"

        # Prüft daytime und passt die Stunde evtl. an 24h-Format an
        # Gibt die Stunde und Minute die übergeben wird in die result_list (als String)
        if user_dict["daytime"] == internal_daytime_dict["vormittags"]:
            result_list[0] = str(hour)
            result_list[2] = str(minute)
            result = "".join(result_list)
            self.result_label.text = result
            print(result)
        else:
            hour = hour + 12
            result_list[0] = str(hour)
            result_list[2] = str(minute)
            result = "".join(result_list)
            self.result_label.text = result
            print(result)


    def rewrite_user_dict_statement(self,x):
        user_dict["statement"] = x
        print("user_dict statement set on: ",user_dict["statement"])

    def rewrite_user_dict_input_hour(self,x):
        user_dict["input_hour"] = x
        print("user_dict input_hour set on: ", user_dict["input_hour"])

    def rewrite_user_dict_input_daytime(self,x):
        user_dict["daytime"] = x
        print("user_dict daytime set on: ", user_dict["daytime"])




class UhrzeitenApp(App):

    def build(self):
        return MainWindow()


if __name__ == '__main__':
    UhrzeitenApp().run()
