import { SpinBox, Button, CheckBox, Slider, LineEdit, ScrollView, ListView,
    HorizontalBox, VerticalBox, GridBox, StandardButton , ComboBox} from "std-widgets.slint";

export struct SlintUser{
    first_name: string,
    id: int,
    mail: string,
}
export struct SSchool{
    name: string,
    id: int,
}

export enum State{
    logged,
    notlogged,
}
export global Callbacks{
    callback login();
    callback logout();
    callback get_key();
}
export global Data{
    in-out property <State> state: State.notlogged;
    in-out property <SlintUser> user;
    in-out property <[SSchool]> schools;
    in-out property <string> key: "";
    in-out property <bool> logged: false;
}
export global LForm{
    in-out property<string> email: "";
    in-out property<string> password: "";
}
export component MainPage inherits VerticalBox{
    width: 90%;
    padding-bottom: 5px;
    // padding-top: 5px;
    Text{
        // vertical-alignment: top;
        horizontal-alignment: center;
        text: "Merhaba " + Data.user.first-name;
    }
    // HorizontalBox {
    ListView {
        height: 150px;
        width: 150px;
        for s in Data.schools:Text{
            text: s.name;
        }
    }
    // }
    Text{
        padding-top: 10px;
        padding-bottom: 10px;
        horizontal-alignment: center;
        text: Data.key;
    }
    Button{
        height: 10%;
        text: "Kod iste";
        clicked => {
           Callbacks.get-key();
        }
    }
    Button{
        height: 10%;
        text: "Çıkış Yap";
        clicked =>{
            Data.logged = false;
            Callbacks.logout();
        }
    }
}

component LoginPage inherits VerticalBox{
    width: 80%;
    alignment: center;
    LineEdit{
        padding-top: 20px;
        width: 20%;
        text: "";
        placeholder-text:"e-posta gir";
        input-type: InputType.text;
        edited(email)=>{
            LForm.email = email;
        }
    }
    LineEdit{
        placeholder-text: "Şifreyi gir";
        input-type: InputType.password;
        edited(passwd)=>{
           LForm.password = passwd;
        }
    }
    Button{
        text: "Giriş Yap";
        clicked=>{
            //is_login=true;
            Callbacks.login();
            
        }
    }

}
export component MyApp inherits Window {
    in-out property <State> state: State.notlogged;
    if !Data.logged: login_page := LoginPage{} 
    if Data.logged: main := MainPage{
    }
}