async void OnSaveAsync(object sender, EventArgs e) { string pathStr = PathEntry.Text; // edit exist one if (pathEntity != null) { if (string.IsNullOrEmpty(pathStr)) { //empty warning messageLabel.Text = "Please fill the name with path"; } else { if (TopLevelSelector.SelectedItem != null) { pathEntity.Parent = TopLevelSelector.SelectedItem.ToString(); } pathEntity.Path = PathEntry.Text; _database.UpdatePath(pathEntity); App.PathList = _database.GetPaths(App.UserEntity.ID); await Navigation.PopAsync(); } } // save new one else { PathEntity pe = new PathEntity(); pe.UserID = App.UserEntity.ID; if (TopLevelSelector.SelectedItem != null) { pe.Parent = TopLevelSelector.SelectedItem.ToString(); } pe.Path = PathEntry.Text; _database.AddPath(pe); App.PathList = _database.GetPaths(App.UserEntity.ID); await Navigation.PopAsync(); } }
// click LOGIN event async void Login_CheckAsync(string pin) { var users = _database.GetUsers(); // todo how go check usr foreach (var user in users) { if (user.Pin.Equals(pin)) { App.IsUserLoggedIn = true; // set username to application App.UserEntity = user; // grab the paths if (!App.UserEntity.Url.EndsWith("/", StringComparison.Ordinal)) { App.UserEntity.Url += "/"; } App.PathList = _database.GetPaths(user.ID); await Task.Run(async() => { await Task.Delay(0); Device.BeginInvokeOnMainThread(() => { Application.Current.MainPage = new MainPageCS(); }); }); return; } else { Debug.WriteLine("Pin not match"); } } if (!App.IsUserLoggedIn) { await Task.Run(async() => { await Task.Delay(0); Device.BeginInvokeOnMainThread(() => { Application.Current.MainPage.DisplayAlert("Failed", "Pin not match", "Ok"); }); }); } inputString = Pin1 = Pin2 = Pin3 = Pin4 = Pin5 = ""; }
// register click event async void OnSaveButtonClicked(object sender, EventArgs e) { App.UserEntity.Name = usernameEntry.Text; App.UserEntity.Password = passwordEntry.Text; App.UserEntity.Pin = pinEntry.Text; App.UserEntity.Url = urlEntry.Text; // Sign up logic goes here var signUpSucceeded = AreDetailsValid(App.UserEntity); if (signUpSucceeded) { //var rootPage = Navigation.NavigationStack.FirstOrDefault(); _database.UpdateUser(App.UserEntity); // delete all the path exist // foreach (var pt in App.PathList) // { // _database.DeletePath(pt); // } // // add all the paths // for (int i = 0; i < pathUIlist.Count; i++) // { // PathEntity path = new PathEntity(); // PathItemUI item = pathUIlist.ElementAt(i); // path.Number = i; //path.Path = item.path.Text; // if(item.lblTop.Text!=null && !item.lblTop.Text.Equals(PathItemUI.NO_PARENT)){ // path.Parent = item.lblTop.Text; // }else{ // path.Parent = PathItemUI.NO_PARENT; // } // path.UserID = App.UserEntity.ID; // _database.AddPath(path); //} App.PathList = _database.GetPaths(App.UserEntity.ID); Application.Current.MainPage = new MainPageCS(); await DisplayAlert("Success", "Update success", "Ok"); } else { messageLabel.Text = "Update User failed"; } }
public AddPathCS(PathEntity pathEntity) { this.pathEntity = pathEntity; this.BackgroundColor = Color.FromHex("BBDEFB"); _database = new YangDb(); App.PathList = _database.GetPaths(App.UserEntity.ID); Title = "Custom Paths"; PathEntry = new Entry { Margin = new Thickness(20, 5), Keyboard = Keyboard.Create(KeyboardFlags.None) }; TopLevelSelector = new Picker { Margin = new Thickness(20, 5), Title = "Top Level", }; // fill parents picker // firstly add a No Parent option TopLevelSelector.Items.Add(NO_PARENT); foreach (var item in App.PathList) { TopLevelSelector.Items.Add(item.Path); // itself can not be its parent if (pathEntity != null && pathEntity.Path.Equals(item.Path)) { TopLevelSelector.Items.Remove(item.Path); } } if (pathEntity != null && pathEntity.Parent != null) { TopLevelSelector.SelectedItem = pathEntity.Parent; } // Grid container for buttons Grid btnCtn = new Grid { HorizontalOptions = LayoutOptions.FillAndExpand, Margin = new Thickness(20, 5), }; // warnging label messageLabel = new Label() { TextColor = Color.Red, Margin = new Thickness(20, 5) }; Button btnSave = new Button() { Text = "Save", BackgroundColor = Color.White }; btnSave.Clicked += OnSaveAsync; btnCtn.Children.Add(btnSave, 0, 0); // only when editing the path, there is delete option if (pathEntity != null) { PathEntry.Text = pathEntity.Path; Button btnDelete = new Button() { Text = "Delete", BackgroundColor = Color.White }; btnDelete.Clicked += OnDelete; btnCtn.Children.Add(btnDelete, 0, 1); } Content = new StackLayout() { BackgroundColor = Color.FromHex("BBDEFB"), VerticalOptions = LayoutOptions.StartAndExpand, Children = { new Label { Text = "Path", Margin = new Thickness(20, 15, 0, 5) }, PathEntry, new Label { Text = "Choose a Top Level", Margin = new Thickness(20, 5) }, TopLevelSelector, btnCtn, } }; }
//Grid gridCtn; //ListView lvPaths; //string url = "https://cirro.nimbus.co.nz/zd1"; //string username = "******"; //string password = "******"; public PersonalInfoPageCS() { Debug.WriteLine("on construction"); _database = new YangDb(); this.BackgroundColor = Color.FromHex("BBDEFB"); App.PathList = _database.GetPaths(App.UserEntity.ID); messageLabel = new Label() { TextColor = Color.Red, Margin = new Thickness(20, 5) }; usernameEntry = new Entry { Margin = new Thickness(20, 5), Keyboard = Keyboard.Create(KeyboardFlags.None) }; passwordEntry = new Entry { IsPassword = true, Margin = new Thickness(20, 5) }; pinEntry = new Entry() { Keyboard = Keyboard.Numeric, Margin = new Thickness(20, 5) }; pinEntry.TextChanged += Pin_Control; urlEntry = new Entry() { Margin = new Thickness(20, 5), Keyboard = Keyboard.Create(KeyboardFlags.None) }; // Path container RelativeLayout pathTitleContainer = new RelativeLayout() { Margin = new Thickness(20, 5) }; // path title Label pathTitle = new Label { Text = "Path" }; pathTitleContainer.Children.Add(pathTitle, Constraint.Constant(0), Constraint.Constant(0) ); // add ADD button Button btnAdd = new Button() { Text = "Add More Path", BackgroundColor = Color.White }; btnAdd.Clicked += OnAddMoreClickedAsync; pathTitleContainer.Children.Add(btnAdd, Constraint.RelativeToView(pathTitle, (parent, sibling) => { return(sibling.X + sibling.Width + 20); }), Constraint.RelativeToParent((parent) => { return(-10); }) ); var saveButton = new Button { Text = "Save", MinimumHeightRequest = 40, BackgroundColor = Color.White, Margin = new Thickness(20, 5) }; saveButton.Clicked += OnSaveButtonClicked; Title = "Personal Info"; mContent = new StackLayout() { VerticalOptions = LayoutOptions.CenterAndExpand, Children = { new Label { Text = "Username", Margin = new Thickness(20, 5) }, usernameEntry, new Label { Text = "Password", Margin = new Thickness(20, 5) }, passwordEntry, new Label { Text = "5 Digital Ping", Margin = new Thickness(20, 5) }, pinEntry, new Label { Text = "URL", Margin = new Thickness(20, 5) }, urlEntry, pathTitleContainer, } }; //int index = 0; //foreach (var item in App.PathList) //{ // //if() // // add path // mContent.Children.Add(MakeNewPath(item)); // index++; //} //isInit = false; mContent.Children.Add(saveButton); mContent.Children.Add(messageLabel); Content = new ScrollView { Content = mContent, Margin = new Thickness(0, 20) }; }
// click LOGIN event async void Login_CheckAsync(object sender, EventArgs e) { if (!(string.IsNullOrEmpty(pin1.Text) || string.IsNullOrEmpty(pin2.Text) || string.IsNullOrEmpty(pin3.Text) || string.IsNullOrEmpty(pin4.Text))) { if (Utils.IsNumeric(pin1.Text) && Utils.IsNumeric(pin2.Text) && Utils.IsNumeric(pin3.Text) && Utils.IsNumeric(pin4.Text)) { String pin = pin1.Text + pin2.Text + pin3.Text + pin4.Text; var users = _database.GetUsers(); // todo how go check usr foreach (var user in users) { if (user.Pin.Equals(pin)) { App.IsUserLoggedIn = true; //isSuccess = true; // set username to application App.UserEntity = user; // grab the paths //if (!App.UserEntity.Url.EndsWith("/", StringComparison.Ordinal)) //{ // App.UserEntity.Url += "/"; //} //App.UserEntity.Url = App.UserEntity.Url; App.PathList = _database.GetPaths(user.ID); // test log foreach (var item in App.PathList) { string ret = "User ID:" + item.UserID + ",Path: " + item.Path + ", Parent: " + item.Parent; Debug.WriteLine(ret); } await Task.Run(async() => { await Task.Delay(0); Device.BeginInvokeOnMainThread(() => { Application.Current.MainPage = new MainPageCS(); }); }); return; } else { //warning.Text = "Pin not match"; Debug.WriteLine("Pin not match"); } } } else { Debug.WriteLine("Pin only support number"); } Debug.WriteLine("contain empty"); } if (!alertLock) { alertLock = true; pin1.TextChanged -= Entry_TextChanged; pin2.TextChanged -= Entry_TextChanged; pin3.TextChanged -= Entry_TextChanged; pin4.TextChanged -= Last_LastEntry; pin1.Text = ""; pin2.Text = ""; pin3.Text = ""; pin4.Text = ""; pin1.TextChanged += Entry_TextChanged; pin2.TextChanged += Entry_TextChanged; pin3.TextChanged += Entry_TextChanged; pin4.TextChanged += Last_LastEntry; Debug.WriteLine("fail to login"); //Entry_Disanable(pin1); await DisplayAlert("Failed", "Please try again", "Ok"); } pin1.Focus(); }