public EventDetailViewEdit(EventDetailEditVM vm) { VM = vm ?? new EventDetailEditVM(); VM.UIPage = this; BindingContext = VM; var stackIntero = new StackLayout { Orientation = StackOrientation.Vertical }; var image = new Image { }; image.Bind(nameof(EventDetailEditVM.Img)); var grigliaData = new Grid { RowDefinitions = new RowDefinitionCollection { new RowDefinition { Height = GridLength.Auto }, new RowDefinition { Height = GridLength.Auto }, }, ColumnDefinitions = new ColumnDefinitionCollection { new ColumnDefinition { Width = GridLength.Star }, } }; var inizio = new DateTimePickerWithLabel { LabelText = "Inizio", LabelTextColor = Color.Navy }; inizio.Bind(nameof(EventDetailEditVM.StartDate), nameof(EventDetailEditVM.StartTime)); var fine = new DateTimePickerWithLabel { LabelText = "Fine", LabelTextColor = Color.Navy, }; fine.Bind(nameof(EventDetailEditVM.EndDate), nameof(EventDetailEditVM.EndTime)); grigliaData.AddChild(inizio, 0, 0); grigliaData.AddChild(fine, 1, 0); var labelStato = new LabelWithLabelV2 { LabelText = "Stato" }; labelStato.Bind(nameof(EventDetailEditVM.Stato)); var labelAutore = new LabelWithLabelV2 { LabelText = "Richiedente" }; labelAutore.Bind(nameof(EventDetailEditVM.Autore)); var labelTitolo = new EntryWithLabelV2 { LabelText = "Titolo" }; var le = labelTitolo.Element; le.TextColor = Color.Black; le.FontSize = 30; le.Placeholder = "Titolo"; labelTitolo.Bind(nameof(EventDetailEditVM.Title)); var labelDescrizione = new EditorWithLabelV2 { LabelText = "Descrizione", }; labelDescrizione.Bind(nameof(EventDetailEditVM.Description)); var buttSalva = new Button { Text = "Salva" }; buttSalva.Clicked += async delegate { if (VM.UpdateModel()) { var luoghiDisponibili = VM.GetLuoghiDisponibili(VM.ObjAllEvents, VM.ObjEvent); if (luoghiDisponibili.Count == 0) { await DisplayAlert("Attento", "Non sono disponibili luoghi per questi orari", "Riprova"); return; } var LuogoNessuno = "Nessuno"; var resLuogo = await DisplayActionSheet("Scegli il luogo in base a quelli disponibili secondo l'orario impostato", LuogoNessuno, null, luoghiDisponibili.ToArray()); if (string.IsNullOrWhiteSpace(resLuogo) || resLuogo == LuogoNessuno) { return; } VM.ObjEvent.Luogo = resLuogo; var res = await VM.UploadData(); if (res.state != Visual1993.Data.WebServiceV2.WebRequestState.Ok && res.state != Visual1993.Data.WebServiceV2.WebRequestState.DuplicateExistsOnServer) { await DisplayAlert("Errore nel salvataggio", res.errorMessage, "Ok"); } else { if (VM.CalendarioVM != null) { VM.CalendarioVM.DownloadData().ContinueWith(delegate { VM.CalendarioVM.UpdateVM(); }); } await DisplayAlert("Evento salvato", "L'evento è in attesa di conferma da parte dello staff del Loft", "Ok"); try { await Navigation.PopAsync(); } catch { } } } }; stackIntero.Children.Add(image); stackIntero.Children.Add(labelTitolo); stackIntero.Children.Add(grigliaData); stackIntero.Children.Add(labelStato); stackIntero.Children.Add(labelDescrizione); stackIntero.Children.Add(buttSalva); var scroller = new ScrollView { Content = stackIntero }; Content = scroller; }
public LoginPageView(LoginPageVM vm) { VM = vm ?? new LoginPageVM(); BindingContext = VM; var user = new EntryWithLabelV2 { LabelText = "Email" }; user.Element.Keyboard = Keyboard.Email; user.Bind(nameof(LoginPageVM.Username)); var pass = new EntryWithLabelV2 { LabelText = "Password" }; pass.Element.IsPassword = true; pass.Bind(nameof(LoginPageVM.Password)); var loadingText = new Label { Text = "Caricamento in corso", HorizontalTextAlignment = TextAlignment.Center }; loadingText.SetBinding(View.IsVisibleProperty, nameof(ViewModelBase.IsLoadingData)); //var loadingIndicator = new ActivityIndicator { Color=Color.Black }; //loadingIndicator.Bind(nameof(LoginPageVM.IsLoadingData)); var buttLogin = new Button { Text = "Login" }; buttLogin.Clicked += async delegate { VM.IsLoadingData = true; try { var data = await VM.GetDataFromMoodle(VM.Username, VM.Password); if (data == null) { await App.Current.MainPage.DisplayAlert("Error", "Wrong login", "Retry"); return; } var loginResult = await VM.DoLogin(data); if (loginResult.state != WebServiceV2.WebRequestState.Ok) { await App.Current.MainPage.DisplayAlert("Error", loginResult.errorMessage, "back"); } else { //già ci pensa DoLogin a salvare VM.OnCompleted(App.VM.user); } } finally { VM.IsLoadingData = false; } }; Content = new StackLayout { Spacing = 35, Children = { loadingText, new BoxView { HeightRequest = 50 }, user, pass, buttLogin } }; }