Ejemplo n.º 1
0
        public MapPageRenderer(Context context) : base(context)
        {
            MainActivity = Context as MainActivity;
            //MessagingCenter.Subscribe<MainActivity>(this, "Close Scanner",
            //    (sender) => { Application.Current.MainPage = MapPage; });
            FusedLocationProviderClient = LocationServices.GetFusedLocationProviderClient(MainActivity);
            AlertBuilder = new AlertDialog.Builder(Context);
            MessagingCenter
            .Subscribe <GraphicBarcodeTracker, string>(this, "Barcode Scanned", (main, s) =>
            {
                Device.BeginInvokeOnMainThread(() =>
                {
                    AlertBuilder.SetTitle("Start Ride");
                    AlertBuilder.SetMessage("To start ride click Unlock. You are on PAYG");
                    AlertBuilder.SetPositiveButton("Unlock", (senderAlert, args) =>
                    {
                        Toast.MakeText(Context, "Bike Unlocking", ToastLength.Short).Show();
                        //NativeController.getReadDataUUID();
                        StartRideHandlerService();
                    });

                    AlertBuilder.SetNegativeButton("Cancel",
                                                   (senderAlert, args) =>
                    {
                        Toast.MakeText(Context, "Ride Cancelled!", ToastLength.Short).Show();
                    });

                    Dialog dialog = AlertBuilder.Create();
                    dialog.Show();
                });
            });

            if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
            {
                if (MainActivity?.Window != null)
                {
                    AView decorView = MainActivity.Window.DecorView;
                    decorView.SetFitsSystemWindows(false);

                    MainActivity.Window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds);
                }
            }

            //BuildGoogleApiClient();

            _startServiceIntent = new Intent(Context, typeof(RideHandlerService));
            _startServiceIntent.SetAction(Constants.ACTION_START_SERVICE);
            _stopServiceIntent = new Intent(Context, typeof(RideHandlerService));
            _stopServiceIntent.SetAction(Constants.ACTION_STOP_SERVICE);

            #region Initialize _androidCoordinatorLayout with LayoutParams

            AndroidCoordinatorLayout = (CoordinatorLayout)LayoutInflater.FromContext(Context)
                                       .Inflate(Resource.Layout.MapWithCoordinator, null);
            AndroidCoordinatorLayout.SetBackgroundColor(Color.Transparent.ToAndroid());
            InfoTextView = AndroidCoordinatorLayout.FindViewById <TextView>(Resource.Id.info_textview);

            CommunityEditText = AndroidCoordinatorLayout.FindViewById <EditText>(Resource.Id.current_community);

            ClosestBikeFab =
                AndroidCoordinatorLayout.FindViewById <FloatingActionButton>(Resource.Id.fab_closest_bicycle);

            RefreshMapFab =
                AndroidCoordinatorLayout.FindViewById <FloatingActionButton>(Resource.Id.fab_refresh_map);

            LocateMeFab = AndroidCoordinatorLayout.FindViewById <FloatingActionButton>(Resource.Id.fab_locate_me);

            ScanButton        = AndroidCoordinatorLayout.FindViewById <MaterialButton>(Resource.Id.scan_button);
            ScanButton.Click += (sender, args) =>
            {
                //                MessagingCenter.Send(this, "Scanner Opened");
                var bottomSheet = AndroidCoordinatorLayout.FindViewById <LinearLayout>(Resource.Id.bottom_sheet);
                bottomSheet.LayoutParameters.Height = AndroidCoordinatorLayout.Height;
                BottomSheetBehavior.From(bottomSheet).PeekHeight = AndroidCoordinatorLayout.Height;

                IVisualElementRenderer renderer = Platform.CreateRendererWithContext(new CustomBarcodeScanner(), context);
                BottomSheetBehavior.From(bottomSheet).State = BottomSheetBehavior.StateExpanded;
                TransitionManager.BeginDelayedTransition(bottomSheet, new Fade());
                bottomSheet.RemoveView(ScanButton);

                bottomSheet.AddView(renderer.View);
            };

            if (!MainActivity.IsLocationAccessGranted || !MainActivity.IsLocationEnabled)
            {
                DisableLocationButtons(ClosestBikeFab, RefreshMapFab, LocateMeFab);
            }

            ClosestBikeFab?.SetVisibility(ViewStates.Gone);
            if (ClosestBikeFab != null)
            {
                ClosestBikeFab.Click += FindClosestBike_ClickHandler;
            }

            if (LocateMeFab != null)
            {
                LocateMeFab.Click += LocateMe_ClickHandler;
            }

            if (RefreshMapFab != null)
            {
                RefreshMapFab.Click += RefreshMap_ClickHandler;
            }

            #endregion

            MainActivity.LocationAccessChanged   += MainActivity_LocationAccessChanged;
            MainActivity.LocationSettingsChanged += MainActivityLocationSettingsChanged;

            #region Initialize _androidAppBarLayout with LayoutParams

            //AndroidAppBarLayout = AndroidCoordinatorLayout.FindViewById<AppBarLayout>(Resource.Id.mappage_appbar);
            var toolbar =
                AndroidCoordinatorLayout.FindViewById <Toolbar>(Resource.Id.mappage_toolbar);

            var giftButton = toolbar.FindViewById <ImageButton>(Resource.Id.gift_button);
            giftButton.Click += GiftButton_ClickHandler;

            if (toolbar.LayoutParameters != null)
            {
                ((AppBarLayout.LayoutParams)toolbar.LayoutParameters).ScrollFlags = ScrollFlagEnterAlways;
            }

            MainActivity?.SetSupportActionBar(toolbar);
            ActionBar actionBar = MainActivity?.SupportActionBar;

            if (actionBar != null)
            {
                actionBar.SetDisplayHomeAsUpEnabled(true);
                actionBar.SetDisplayShowTitleEnabled(false);
                actionBar.SetHomeAsUpIndicator(Resource.Drawable.baseline_menu_white_24);
            }

            #endregion

            AddView(AndroidCoordinatorLayout);
        }