public App() { var layout = new RelativeLayout(); var label = new Label { XAlign = TextAlignment.Center, YAlign = TextAlignment.Center, Text = "Hello Floating Action Button!" }; layout.Children.Add( label, xConstraint: Constraint.Constant(0), yConstraint: Constraint.Constant(0), widthConstraint: Constraint.RelativeToParent(parent => parent.Width), heightConstraint: Constraint.RelativeToParent(parent => parent.Height) ); var normalFab = new FAB.Forms.FloatingActionButton(); normalFab.Source = "plus.png"; normalFab.Size = FabSize.Normal; layout.Children.Add( normalFab, xConstraint: Constraint.RelativeToParent((parent) => { return (parent.Width - normalFab.Width) - 16; }), yConstraint: Constraint.RelativeToParent((parent) => { return (parent.Height - normalFab.Height) - 16; }) ); normalFab.SizeChanged += (sender, args) => { layout.ForceLayout(); }; var miniFab = new FAB.Forms.FloatingActionButton(); miniFab.Source = "plus.png"; miniFab.Size = FabSize.Mini; layout.Children.Add( miniFab, xConstraint: Constraint.RelativeToParent((parent) => { return (parent.Width - miniFab.Width) - 16; }), yConstraint: Constraint.RelativeToView(normalFab, (parent, view) => { return (view.Y - miniFab.Height) - 16; }) ); miniFab.SizeChanged += (sender, args) => { layout.ForceLayout(); }; // The root page of your application MainPage = new ContentPage { BackgroundColor = Color.White, Content = layout }; normalFab.Clicked += (sender, e) => { MainPage.DisplayAlert("Floating Action Button", "You clicked the normal FAB!", "Awesome!"); }; miniFab.Clicked += (sender, e) => { MainPage.DisplayAlert("Floating Action Button", "You clicked the mini FAB!", "Awesome!"); }; }
public App() { var layout = new RelativeLayout(); var label = new Label { XAlign = TextAlignment.Center, YAlign = TextAlignment.Center, Text = "Hello Floating Action Button!" }; layout.Children.Add( label, xConstraint: Constraint.Constant(0), yConstraint: Constraint.Constant(0), widthConstraint: Constraint.RelativeToParent(parent => parent.Width), heightConstraint: Constraint.RelativeToParent(parent => parent.Height) ); var normalFab = new FAB.Forms.FloatingActionButton(); normalFab.Source = "plus.png"; normalFab.Size = FabSize.Normal; layout.Children.Add( normalFab, xConstraint: Constraint.RelativeToParent((parent) => { return((parent.Width - normalFab.Width) - 16); }), yConstraint: Constraint.RelativeToParent((parent) => { return((parent.Height - normalFab.Height) - 16); }) ); normalFab.SizeChanged += (sender, args) => { layout.ForceLayout(); }; var miniFab = new FAB.Forms.FloatingActionButton(); miniFab.Source = "plus.png"; miniFab.Size = FabSize.Mini; layout.Children.Add( miniFab, xConstraint: Constraint.RelativeToParent((parent) => { return((parent.Width - miniFab.Width) - 16); }), yConstraint: Constraint.RelativeToView(normalFab, (parent, view) => { return((view.Y - miniFab.Height) - 16); }) ); miniFab.SizeChanged += (sender, args) => { layout.ForceLayout(); }; // The root page of your application MainPage = new ContentPage { BackgroundColor = Color.White, Content = layout }; normalFab.Clicked += (sender, e) => { MainPage.DisplayAlert("Floating Action Button", "You clicked the normal FAB!", "Awesome!"); }; miniFab.Clicked += (sender, e) => { MainPage.DisplayAlert("Floating Action Button", "You clicked the mini FAB!", "Awesome!"); }; }
//public string localHostUrl = "http://192.168.0.174:8080/PSM2017/"; public ScanPage() { zxings = new ZXingScannerView { HorizontalOptions = LayoutOptions.FillAndExpand, VerticalOptions = LayoutOptions.FillAndExpand, AutomationId = "zxingScannerView", IsScanning = true }; zxings.OnScanResult += (result) => Device.BeginInvokeOnMainThread(async() => { zxings.IsAnalyzing = false; string barcode = result.Text; if (App.Database.GetProducts().Count < 10) { string data = ""; string postData = "barcode=" + barcode; string url = localHostUrl + "dbGetProduct.php"; WebService searchProduct = new WebService(); data = searchProduct.postService(postData, url); if (data.Contains("{")) { Product product = JsonConvert.DeserializeObject <Product>(data); //Product product = products.Find(x => x.barcode == Int32.Parse(barcode)); App.Database.AddProduct(product); await DisplayAlert("Item Added", product.name + " added into list.", "OK"); } else { XFToast.LongMessage(data); } } else { await DisplayAlert("Alert!", "Your cart has 10 items. The cart could only hold up to 10 items. " + "Please pay for the item(s) or delete item!!!", "OK"); } // Stop analysis until we navigate away so we don't keep reading barcodes zxings.IsAnalyzing = true; // Show an alert //await DisplayAlert("Scanned Barcode", result.Text, "OK"); // Navigate away //await Navigation.PopAsync(); }); var scanOverlay = new RelativeLayout { HorizontalOptions = LayoutOptions.FillAndExpand, VerticalOptions = LayoutOptions.FillAndExpand }; Xamarin.Forms.Label text = new Xamarin.Forms.Label { Text = "Hold your phone up to the barcode", VerticalOptions = LayoutOptions.Center, HorizontalOptions = LayoutOptions.Center, TextColor = Color.White }; Xamarin.Forms.Label text2 = new Xamarin.Forms.Label { Text = "Scanning will happen automatically", VerticalOptions = LayoutOptions.Center, HorizontalOptions = LayoutOptions.Center, TextColor = Color.White }; BoxView redLine = new BoxView { BackgroundColor = Color.Red, Opacity = 0.6 }; BoxView boxView = new BoxView { BackgroundColor = Color.Black, Opacity = 0.7 }; BoxView boxView2 = new BoxView { BackgroundColor = Color.Black, Opacity = 0.7 }; BoxView boxView3 = new BoxView { BackgroundColor = Color.Black, Opacity = 0.7 }; BoxView boxView4 = new BoxView { BackgroundColor = Color.Black, Opacity = 0.7 }; scanOverlay.Children.Add(boxView, Constraint.RelativeToParent((parent) => { return(parent.X); }), Constraint.RelativeToParent((parent) => { return(parent.Y); }), Constraint.RelativeToParent((parent) => { return(parent.Width * 0.1); }), Constraint.RelativeToParent((parent) => { return(parent.Height); }) ); scanOverlay.Children.Add(boxView2, Constraint.RelativeToParent((parent) => { return(parent.Width * 0.9); }), Constraint.RelativeToParent((parent) => { return(parent.Y); }), Constraint.RelativeToParent((parent) => { return(parent.Width * 0.1); }), Constraint.RelativeToParent((parent) => { return(parent.Height); }) ); scanOverlay.Children.Add(boxView3, Constraint.RelativeToParent((parent) => { return(parent.Width * 0.1); }), Constraint.RelativeToParent((parent) => { return(parent.Y); }), Constraint.RelativeToParent((parent) => { return(parent.Width * 0.8); }), Constraint.RelativeToParent((parent) => { return(parent.Height * 0.2); }) ); scanOverlay.Children.Add(boxView4, Constraint.RelativeToParent((parent) => { return(parent.Width * 0.1); }), Constraint.RelativeToParent((parent) => { return(parent.Height * 0.6); }), Constraint.RelativeToParent((parent) => { return(parent.Width * 0.8); }), Constraint.RelativeToParent((parent) => { return(parent.Height * 0.4); }) ); scanOverlay.Children.Add(redLine, Constraint.RelativeToParent((parent) => { return(parent.Width * 0.1); }), Constraint.RelativeToParent((parent) => { return(parent.Height * 0.4); }), Constraint.RelativeToParent((parent) => { return(parent.Width * 0.8); }), Constraint.RelativeToParent((parent) => { return(3); }) ); scanOverlay.Children.Add(text, Constraint.RelativeToParent((parent) => { return(parent.Width * 0.2); }), Constraint.RelativeToParent((parent) => { return(parent.Height * 0.1); }) ); scanOverlay.Children.Add(text2, Constraint.RelativeToParent((parent) => { return(parent.Width * 0.2); }), Constraint.RelativeToParent((parent) => { return(parent.Height * 0.8); }) ); defaultOverlay = new ZXingDefaultOverlay { TopText = "Hold your phone up to the barcode", BottomText = "Scanning will happen automatically", //ShowFlashButton = true, AutomationId = "zxingDefaultOverlay", }; defaultOverlay.BindingContext = defaultOverlay; var customOverlay = new RelativeLayout { HorizontalOptions = LayoutOptions.FillAndExpand, VerticalOptions = LayoutOptions.FillAndExpand }; var torchFAB = new FAB.Forms.FloatingActionButton(); torchFAB.Source = "flashlight_icon.png"; torchFAB.NormalColor = Color.FromHex("FFE066"); torchFAB.Size = FAB.Forms.FabSize.Normal; torchFAB.Clicked += (sender, args) => { zxings.ToggleTorch(); }; var listFAB = new FAB.Forms.FloatingActionButton(); listFAB.Source = "shoping_cart.png"; listFAB.NormalColor = Color.FromHex("FFE066"); listFAB.Size = FAB.Forms.FabSize.Normal; listFAB.Clicked += async(sender, args) => { //zxing.IsAnalyzing = false; //XFToast.LongMessage("Hello"); await Navigation.PushAsync(new ListViewProduct()); }; var addFAB = new FAB.Forms.FloatingActionButton(); addFAB.Source = "plus_black_symbol.png"; addFAB.NormalColor = Color.FromHex("FFE066"); addFAB.Size = FAB.Forms.FabSize.Normal; addFAB.Clicked += async(sender, args) => { if (App.Database.GetProducts().Count < 10) { var config = new PromptConfig(); config.Title = "Manual enter product barcode"; config.InputType = InputType.Number; config.OnAction = async(result) => { if (result.Ok) { string barcode = result.Text; string postData = "barcode=" + barcode; string url = localHostUrl + "dbGetProduct.php"; WebService searchProduct = new WebService(); string data = searchProduct.postService(postData, url); if (data.Contains("{")) { Product product = JsonConvert.DeserializeObject <Product>(data); //Product product = products.Find(x => x.barcode == Int32.Parse(barcode)); App.Database.AddProduct(product); await DisplayAlert("Item Added", product.name + " added into list.", "OK"); } else { XFToast.LongMessage(data); } } zxings.IsAnalyzing = true; }; await Task.Run(() => { Device.BeginInvokeOnMainThread(() => { zxings.IsAnalyzing = false; UserDialogs.Instance.Prompt(config); }); }); } else { await DisplayAlert("Alert!", "Your cart has 10 items.The cart could only hold up to 10 items. " + "Please pay for the item(s) or delete item!!!", "OK"); } //App.Database.AddProduct(new Product {Name = "Milo", Price = 20.587, Barcode = 00001 }); }; var checkOutFAB = new FAB.Forms.FloatingActionButton(); checkOutFAB.Source = "cash_register_machine.png"; checkOutFAB.NormalColor = Color.FromHex("FFE066"); checkOutFAB.Size = FAB.Forms.FabSize.Normal; checkOutFAB.Clicked += (sender, args) => { //XFToast.LongMessage("Check out"); var products = App.Database.GetProducts(); if (products.Count > 0) { Task.Run(async() => { PayPalItem[] paypalItems = new PayPalItem[products.Count]; int i = 0; foreach (Product product in products) { PayPalItem paypalItem = new PayPalItem(product.name, 1, Convert.ToDecimal(product.price), "MYR" , product.barcode); paypalItems[i] = paypalItem; i++; } var result = await CrossPayPalManager.Current.Buy(paypalItems, new Decimal(0.0), new Decimal(0.00)); if (result.Status == PayPalStatus.Cancelled) { Debug.WriteLine("Cancelled"); } else if (result.Status == PayPalStatus.Error) { Debug.WriteLine(result.ErrorMessage); } else if (result.Status == PayPalStatus.Successful) { Debug.WriteLine(result.ServerResponse.Response.Id); var jsonArray = JsonConvert.SerializeObject(products); string jsnArray = jsonArray.ToString(); string postData = "receipt=" + jsnArray; string url = localHostUrl + "genReceipt.php"; WebService searchProduct = new WebService(); string data = searchProduct.postService(postData, url); if (data.ToLower().Contains(".pdf")) { Device.BeginInvokeOnMainThread(async() => { await DisplayAlert("Payment Success", "The payment is success!!", "OK"); App.Database.ClearList(); downloadPDF(data); await DisplayAlert("Download Success", "Receipt downloaded", "OK"); }); } } }); } else { DisplayAlert("Alert!", "There are no item in the cart list.", "OK"); } }; var receiptFAB = new FAB.Forms.FloatingActionButton(); receiptFAB.Source = "receiptIcon"; receiptFAB.NormalColor = Color.FromHex("FFE066"); receiptFAB.Size = FAB.Forms.FabSize.Normal; receiptFAB.Clicked += async(sender, args) => { await Navigation.PushAsync(new ListPDF()); }; /* * customOverlay.Children.Add( * torchFAB, * xConstraint: Constraint.RelativeToParent((parent) => { return parent.Width - 48; }), * yConstraint: Constraint.RelativeToParent((parent) => { return 8; }) * ); * * customOverlay.Children.Add( * listFAB, * Constraint.RelativeToView(torchFAB, (Parent, sibling) => { return sibling.X; }), * Constraint.RelativeToView(torchFAB, (Parent, sibling) => { return sibling.Y + 48; }) * ); * customOverlay.Children.Add( * addFAB, * Constraint.RelativeToView(listFAB, (Parent, sibling) => { return sibling.X; }), * Constraint.RelativeToView(listFAB, (Parent, sibling) => { return sibling.Y + 48; }) * ); * customOverlay.Children.Add( * checkOutFAB, * Constraint.RelativeToView(addFAB, (Parent, sibling) => { return sibling.X; }), * Constraint.RelativeToView(addFAB, (Parent, sibling) => { return sibling.Y + 48; }) * ); * customOverlay.Children.Add( * receiptFAB, * Constraint.RelativeToView(checkOutFAB, (Parent, sibling) => { return sibling.X; }), * Constraint.RelativeToView(checkOutFAB, (Parent, sibling) => { return sibling.Y + 48; }) * ); */ customOverlay.Children.Add( torchFAB, xConstraint: Constraint.RelativeToParent((parent) => { return(parent.X + 6); }), yConstraint: Constraint.RelativeToParent((parent) => { return(parent.Height * 0.6 + 24); }) ); customOverlay.Children.Add( listFAB, Constraint.RelativeToView(torchFAB, (Parent, sibling) => { return(sibling.X + 72); }), Constraint.RelativeToView(torchFAB, (Parent, sibling) => { return(sibling.Y); }) ); customOverlay.Children.Add( addFAB, Constraint.RelativeToView(listFAB, (Parent, sibling) => { return(sibling.X + 72); }), Constraint.RelativeToView(listFAB, (Parent, sibling) => { return(sibling.Y); }) ); customOverlay.Children.Add( checkOutFAB, Constraint.RelativeToView(addFAB, (Parent, sibling) => { return(sibling.X + 72); }), Constraint.RelativeToView(addFAB, (Parent, sibling) => { return(sibling.Y); }) ); customOverlay.Children.Add( receiptFAB, Constraint.RelativeToView(checkOutFAB, (Parent, sibling) => { return(sibling.X + 72); }), Constraint.RelativeToView(checkOutFAB, (Parent, sibling) => { return(sibling.Y); }) ); var grid = new Grid { VerticalOptions = LayoutOptions.FillAndExpand, HorizontalOptions = LayoutOptions.FillAndExpand, }; grid.Children.Add(zxings); //grid.Children.Add(defaultOverlay); grid.Children.Add(scanOverlay); grid.Children.Add(customOverlay); Content = grid; }