protected override void OnElementChanged(ElementChangedEventArgs<View> e)
        {
            base.OnElementChanged(e);

            var oldMapView = (MapView)Control;

            var mapView = new MapView(Context);
            mapView.OnCreate(s_bundle);
            mapView.OnResume();
            SetNativeControl(mapView);

            var activity = Context as Activity;
            if (activity != null)
            {
                var metrics = new DisplayMetrics();
                activity.WindowManager.DefaultDisplay.GetMetrics(metrics);
                foreach (var logic in _logics)
                    logic.ScaledDensity = metrics.ScaledDensity;
            }

            if (e.OldElement != null)
            {
                var oldMapModel = (Map)e.OldElement;
                MessagingCenter.Unsubscribe<Map, MoveToRegionMessage>(this, MoveMessageName);

#pragma warning disable 618
                if (oldMapView.Map != null)
                {
#pragma warning restore 618

#pragma warning disable 618
                    oldMapView.Map.SetOnCameraChangeListener(null);
#pragma warning restore 618
                }

                oldMapView.Dispose();
            }

            var map = NativeMap;
            if (map != null)
            {
                map.SetOnCameraChangeListener(this);
                map.UiSettings.ZoomControlsEnabled = Map.HasZoomEnabled;
                map.UiSettings.ZoomGesturesEnabled = Map.HasZoomEnabled;
                map.UiSettings.ScrollGesturesEnabled = Map.HasScrollEnabled;
                map.MyLocationEnabled = map.UiSettings.MyLocationButtonEnabled = Map.IsShowingUser;
                SetMapType();
            }

#pragma warning disable 618
            foreach (var logic in _logics)
                logic.Register(oldMapView?.Map, (Map)e.OldElement, NativeMap, Map);
#pragma warning restore 618

            MessagingCenter.Subscribe<Map, MoveToRegionMessage>(this, MoveMessageName, OnMoveToRegionMessage, Map);

        }
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            var ignore = base.OnCreateView(inflater, container, savedInstanceState);

            var view = inflater.Inflate(Resource.Layout.location, container, false);
            _mapView = view.FindViewById<MapView>(Resource.Id.mapView);
            _mapView.OnCreate(savedInstanceState);

            return view;
        }
示例#3
0
		protected override void OnCreate (Bundle bundle)
		{
			base.OnCreate (bundle);

			#if DEBUG
			Xamarin.Insights.Initialize("ef02f98fd6fb47ce8624862ab7625b933b6fb21d", this);
			#else
			Xamarin.Insights.Initialize ("8da86f8b3300aa58f3dc9bbef455d0427bb29086", this);
			#endif

			mapView = FindViewById<MapView> (Resource.Id.map);
			mapView.OnCreate (bundle);

			mapView.Visibility = ViewStates.Invisible;
			viewModel = new CoffeeFilterViewModel ();
			ServiceContainer.Register<CoffeeFilterViewModel> (viewModel);
			adapter = new PlacesPagerAdapter (SupportFragmentManager, viewModel);
			pager = FindViewById<ViewPager> (Resource.Id.pager);
			pager.Adapter = adapter;
			progressBar = FindViewById<ImageView> (Resource.Id.progressBar);
			errorImage = FindViewById<ImageView> (Resource.Id.error);
			coffeeProgress = (AnimationDrawable)progressBar.Background;
			progressBar.Visibility = ViewStates.Gone;

			pager.PageSelected += (sender, e) => UpdateMap (e.Position);
			pager.PageScrollStateChanged += (sender, e) => {
				if (e.State == (int)ScrollState.TouchScroll)
					refresher.Enabled = false;
				else
					refresher.Enabled = true;
			};

			refresher = FindViewById<SwipeRefreshLayout> (Resource.Id.refresher);
			refresher.SetColorSchemeColors (Resource.Color.accent);
			refresher.Refresh += (sender, args) => {
				RefreshData (true);
				refresher.PostDelayed (() => {
					refresher.Refreshing = false;
				}, 250);
			};

			SupportActionBar.SetDisplayHomeAsUpEnabled (false);
			SupportActionBar.SetHomeButtonEnabled (false);
			mapView.GetMapAsync (this);
			CheckGooglePlayServices ();

			// No savedInstanceState, so it is the first launch of this activity
			if (bundle == null && AppInviteReferral.HasReferral(Intent)) {
				// In this case the referral data is in the intent launching the MainActivity,
				// which means this user already had the app installed. We do not have to
				// register the Broadcast Receiver to listen for Play Store Install information
				LaunchDeepLinkActivity(Intent);

			}
		}
        protected override void OnCreate(Bundle savedInstanceState) 
        {
            base.OnCreate(savedInstanceState);

            SetContentView (Resource.Layout.raw_mapview_demo);

            mapView = FindViewById<MapView> (Resource.Id.map);
            mapView.OnCreate (savedInstanceState);

            mapView.GetMapAsync(this);
        }
		public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
		{
			var view = inflater.Inflate(Resource.Layout.SearchFragmentLayout, null);
			MapView = view.FindViewById<MapView>(Resource.Id.mapView);
			ShowPois = view.FindViewById<Button>(Resource.Id.getAllPois);
			FragmentContainer= view.FindViewById<FrameLayout>(Resource.Id.poisContainer);
			ProgressBar = view.FindViewById<ProgressBar>(Resource.Id.progressBar1);
			MapView.OnCreate(savedInstanceState);

			ShowPois.Click += OnClickEventHandler;

			return view;
		} 
示例#6
0
		protected override void OnElementChanged (ElementChangedEventArgs<View> e)
		{
			base.OnElementChanged (e);

			var oldMapView = (MapView)Control;

			var mapView = new MapView (Context);
			mapView.OnCreate (s_bundle);
			mapView.OnResume ();
			SetNativeControl (mapView);

			if (e.OldElement != null) {
				var oldMapModel = (Map) e.OldElement;
				((ObservableCollection<Pin>)oldMapModel.Pins).CollectionChanged -= OnCollectionChanged;

				MessagingCenter.Unsubscribe<Map, MapSpan> (this, MoveMessageName);

#pragma warning disable 618
				if (oldMapView.Map != null) {
#pragma warning restore 618

#pragma warning disable 618
					oldMapView.Map.SetOnCameraChangeListener (null);
#pragma warning restore 618
					NativeMap.InfoWindowClick -= MapOnMarkerClick;
				}

				oldMapView.Dispose();
			}

			var map = NativeMap;
			if (map != null) {
				map.SetOnCameraChangeListener (this);
				NativeMap.InfoWindowClick += MapOnMarkerClick;

				map.UiSettings.ZoomControlsEnabled = Map.HasZoomEnabled;
				map.UiSettings.ZoomGesturesEnabled = Map.HasZoomEnabled;
				map.UiSettings.ScrollGesturesEnabled = Map.HasScrollEnabled;
				map.MyLocationEnabled = map.UiSettings.MyLocationButtonEnabled = Map.IsShowingUser;
				SetMapType ();
			}
			
			MessagingCenter.Subscribe<Map, MapSpan> (this, MoveMessageName, OnMoveToRegionMessage, Map);

			var incc = Map.Pins as INotifyCollectionChanged;
			if (incc != null)
				incc.CollectionChanged += OnCollectionChanged;
		}
示例#7
0
        public override void OnViewCreated(View view, Bundle savedInstanceState)
        {
            base.OnViewCreated(view, savedInstanceState);
            _pickupAddressEditText     = view.FindViewById <EditText>(Resource.Id.pickupLocationAddressEditText);
            _whereToGoButton           = view.FindViewById <Button>(Resource.Id.whereToGoButton);
            _pickupAddressLoading      = view.FindViewById <ProgressBar>(Resource.Id.pickupAddressLoading);
            _estimatedTimeTimeTextView = view.FindViewById <TextView>(Resource.Id.estimatedTimeTextView);
            _centeredAnimatableDot     = view.FindViewById <ImageView>(Resource.Id.centeredAnimatableDot);
            _requestView = view.FindViewById <RelativeLayout>(Resource.Id.requestView);

            _mapView = view.FindViewById <MapView>(Resource.Id.mapView);
            _mapView.OnCreate(savedInstanceState);
            _mapView.OnResume();
            _mapView.GetMapAsync(this);

            _pickupAddressEditText.SetCommand(nameof(EditText.Click), ViewModel.TripLocationViewModel.NavigateToPickupSearch);
            _whereToGoButton.SetCommand(nameof(Button.Click), ViewModel.TripLocationViewModel.NavigateToWhereTo);
        }
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            base.OnCreateView(inflater, container, savedInstanceState);
            HasOptionsMenu = true;
            var view = inflater.Inflate(Resource.Layout.fragment_current_trip, null);

            mapView = view.FindViewById<MapView>(Resource.Id.map);
            mapView.OnCreate(savedInstanceState);

            fab = view.FindViewById<FloatingActionButton>(Resource.Id.fab);
            time = view.FindViewById<TextView>(Resource.Id.text_time);
            distance = view.FindViewById<TextView>(Resource.Id.text_distance);
            distanceUnits = view.FindViewById<TextView>(Resource.Id.text_distance_units);
            consumption = view.FindViewById<TextView>(Resource.Id.text_consumption);
            consumptionUnits = view.FindViewById<TextView>(Resource.Id.text_consumption_units);
            load = view.FindViewById<TextView>(Resource.Id.text_load);
            stats = view.FindViewById<LinearLayout>(Resource.Id.stats);
            stats.Visibility = ViewStates.Invisible;
            return view;
        }
示例#9
0
		public override View OnCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
		{
			var view = inflater.Inflate (Resource.Layout.MapLayout, container, false);
			mapFragment = view.FindViewById<MapView> (Resource.Id.map);
			mapFragment.OnCreate (savedInstanceState);
			lastUpdateText = view.FindViewById<TextView> (Resource.Id.UpdateTimeText);
			SetupInfoPane (view);
			flashBar = new FlashBarController (view);
			streetViewFragment = pane.FindViewById<StreetViewPanoramaView> (Resource.Id.streetViewPanorama);
			streetViewFragment.OnCreate (savedInstanceState);

			return view;
		}
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate (bundle);

            SetContentView (Resource.Layout.MapFragmentLayout);

            mapView = FindViewById<MapView> (Resource.Id.fragmentMapView);
            mapView.OnCreate (bundle);
            mapView.GetMapAsync (this);
        }
示例#11
0
		public override View OnCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
		{
			var view = inflater.Inflate (Resource.Layout.MapLayout, container, false);
			mapFragment = view.FindViewById<MapView> (Resource.Id.map);
			mapFragment.OnCreate (savedInstanceState);
			lastUpdateText = view.FindViewById<TextView> (Resource.Id.UpdateTimeText);
			SetupInfoPane (view);
			flashBar = new FlashBarController (view);
			streetViewFragment = view.FindViewById<StreetViewPanoramaView> (Resource.Id.streetViewPanorama);
			streetViewFragment.OnCreate (savedInstanceState);

			// For some reason, a recent version of GPS set their surfaceview to be drawn un-composited.
			FixupStreetViewSurface (streetViewFragment);

			return view;
		}
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            viewModel = ServiceContainer.Resolve<DetailsViewModel> ();

            var root = inflater.Inflate (Resource.Layout.fragment_details, container, false);
            mapFragment = root.FindViewById<MapView> (Resource.Id.map);
            mapFragment.OnCreate (savedInstanceState);

            var name = root.FindViewById<TextView> (Resource.Id.name);
            var reviews = root.FindViewById<TextView> (Resource.Id.rating);
            image = root.FindViewById<ImageView> (Resource.Id.image);
            var address = root.FindViewById<TextView> (Resource.Id.address);
            var priceHours = root.FindViewById<TextView> (Resource.Id.price_hours);
            var phone = root.FindViewById<TextView> (Resource.Id.phone_number);
            var website = root.FindViewById<TextView> (Resource.Id.website);
            var googlePlus = root.FindViewById<TextView> (Resource.Id.google_plus);
            var monday = root.FindViewById<TextView> (Resource.Id.monday);
            var tuesday = root.FindViewById<TextView> (Resource.Id.tuesday);
            var wednesday = root.FindViewById<TextView> (Resource.Id.wednesday);
            var thursday = root.FindViewById<TextView> (Resource.Id.thursday);
            var friday = root.FindViewById<TextView> (Resource.Id.friday);
            var saturday = root.FindViewById<TextView> (Resource.Id.saturday);
            var sunday = root.FindViewById<TextView> (Resource.Id.sunday);
            var allHours = root.FindViewById<LinearLayout> (Resource.Id.all_hours);
            var allWeb = root.FindViewById<LinearLayout> (Resource.Id.all_web);
            var distance = root.FindViewById<TextView> (Resource.Id.distance);
            mainScroll = root.FindViewById<FilterScrollView> (Resource.Id.main_scroll);

            if (Math.Abs (Position.Latitude) < double.Epsilon && Math.Abs (Position.Longitude) < double.Epsilon)
                distance.Text = string.Empty;
            else {
                var dis = Place.GetDistance (Position.Latitude,
                             Position.Longitude, CultureInfo.CurrentCulture.Name != "en-US" ?
                CoffeeFilter.Shared.GeolocationUtils.DistanceUnit.Kilometers :
                    CoffeeFilter.Shared.GeolocationUtils.DistanceUnit.Miles).ToString ("##.###", CultureInfo.CurrentUICulture);

                distance.Text = string.Format (Resources.GetString (Resource.String.distance_away), dis);
            }

            if (string.IsNullOrWhiteSpace (Place.Rating.ToString ()))
                reviews.Visibility = ViewStates.Gone;
            else
                reviews.Text = string.Format (Resources.GetString (Resource.String.based_on_review), Place.Rating, Place.UserRatingsCount);

            name.Text = Place.Name;
            phone.Text = Place.PhoneNumberFormatted;
            if (!string.IsNullOrWhiteSpace (phone.Text)) {
                phone.Clickable = true;
                phone.Click += (sender, e) => {
                    try {
                        #if !DEBUG
                        Xamarin.Insights.Track ("Click", new Dictionary<string,string> {
                            { "item", "phone" },
                            { "name", Place.Name },
                        });
                        #endif

                        var intent = new Intent(Intent.ActionDial);
                        var uri = Android.Net.Uri.Parse ("tel:" + (string.IsNullOrWhiteSpace (Place.InternationalPhoneNumber) ? phone.Text : Place.InternationalPhoneNumber));

                        intent.SetData(uri);
                        intent.AddFlags(ActivityFlags.ClearWhenTaskReset);
                        Activity.StartActivity(intent);
                    } catch (Exception ex) {

                        ex.Data ["call"] = "phone";
                        Xamarin.Insights.Report (ex);

                    }
                };
            }

            address.Text = viewModel.ShortAddress;
            priceHours.Text = viewModel.OpenHours;

            if (Place.HasImage)
                Koush.UrlImageViewHelper.SetUrlDrawable (image, Place.MainImage);

            if (Place.OpeningHours == null || Place.OpeningHours.WeekdayText.Count != 7) {
                allHours.Visibility = ViewStates.Gone;
            } else {
                monday.Text = GetTime (Place.OpeningHours.WeekdayText [0]);
                tuesday.Text = GetTime (Place.OpeningHours.WeekdayText [1]);
                wednesday.Text = GetTime (Place.OpeningHours.WeekdayText [2]);
                thursday.Text = GetTime (Place.OpeningHours.WeekdayText [3]);
                friday.Text = GetTime (Place.OpeningHours.WeekdayText [4]);
                saturday.Text = GetTime (Place.OpeningHours.WeekdayText [5]);
                sunday.Text = GetTime (Place.OpeningHours.WeekdayText [6]);
            }

            if (string.IsNullOrWhiteSpace (Place.Website) && string.IsNullOrWhiteSpace (Place.Url))
                allWeb.Visibility = ViewStates.Gone;

            if (string.IsNullOrWhiteSpace (Place.Website)) {
                website.Visibility = ViewStates.Gone;
                root.FindViewById<TextView> (Resource.Id.website_header).Visibility = ViewStates.Gone;
            } else {
                website.Text = Place.Website;
            }

            if (string.IsNullOrWhiteSpace (Place.Url)) {
                googlePlus.Visibility = ViewStates.Gone;
                root.FindViewById<TextView> (Resource.Id.google_plus_header).Visibility = ViewStates.Gone;
            } else {
                googlePlus.Text = "plus.google.com";
            }

            website.Clickable = true;
            website.Click += (sender, e) => {
                try {
                    #if !DEBUG
                    Xamarin.Insights.Track ("Click", new Dictionary<string,string> {
                        { "item", "website" },
                        { "name", Place.Name },
                    });
                    #endif
                    var intent = new Intent (Intent.ActionView);
                    intent.SetData (Android.Net.Uri.Parse (Place.Website));
                    Activity.StartActivity (intent);
                } catch (Exception ex) {

                    ex.Data ["call"] = "website";
                    Xamarin.Insights.Report (ex);

                }
            };

            googlePlus.Clickable = true;
            googlePlus.Click += (sender, e) => {
                try {

                    Xamarin.Insights.Track ("Click", new Dictionary<string,string> {
                        { "item", "google plus" },
                        { "name", Place.Name },
                    });

                    var intent = new Intent (Intent.ActionView);
                    intent.SetData (Android.Net.Uri.Parse (Place.Url));
                    Activity.StartActivity (intent);
                } catch (Exception ex) {

                    ex.Data ["call"] = "google+";
                    Xamarin.Insights.Report (ex);

                }
            };

            var panorama = root.FindViewById<Button> (Resource.Id.panorama);
            panorama.Click += (sender, e) => {
                var intent = new Intent (Activity, typeof(PanoramaActivity));
                intent.PutExtra ("lat", (double)Place.Geometry.Location.Latitude);
                intent.PutExtra ("lng", (double)Place.Geometry.Location.Longitude);
                Activity.StartActivity (intent);
            };

            if (!Place.HasImage) {
                var paddingLayout = root.FindViewById<LinearLayout> (Resource.Id.padding_layout);
                paddingLayout.SetPadding (0, 0, 0, 0);
            }

            return root;
        }
        protected override void OnElementChanged(ElementChangedEventArgs<View> e)
        {
            base.OnElementChanged (e);
            MapView mapView1 = (MapView)this.Control;

            if (e.OldElement != null) {
                var formsMap = e.OldElement as LiteMap;
                ((ObservableCollection<Pin>)formsMap.Pins).CollectionChanged -= OnCollectionChanged;
                this.Map.MoveToRegionRequested -= this.MoveToRegionRequested;
            }

            if (e.NewElement != null) {
                this.Map.MoveToRegionRequested += this.MoveToRegionRequested;

                var options = new GoogleMapOptions ();
                options.InvokeLiteMode (true);

                MapView mapView2 = new MapView (this.Context, options);
                mapView2.OnCreate (LiteMapRenderer.bundle);
                mapView2.OnResume ();

                this.SetNativeControl (mapView2);

                mapView2.GetMapAsync (this);

                if (e.NewElement != null) {
                    var formsMap = e.NewElement as LiteMap;
                    ((ObservableCollection<Pin>)formsMap.Pins).CollectionChanged += OnCollectionChanged;
                }
            }
        }
        protected override void OnElementChanged(ElementChangedEventArgs<View> e)
        {
            base.OnElementChanged(e);

            var oldMapView = (MapView)Control;

            var mapView = new MapView(Context);
            mapView.OnCreate(s_bundle);
            mapView.OnResume();
            SetNativeControl(mapView);

            var activity = Context as Activity;
            if (activity != null)
            {
                var metrics = new DisplayMetrics();
                activity.WindowManager.DefaultDisplay.GetMetrics(metrics);
                var realSize = new global::Android.Graphics.Point();
                activity.WindowManager.DefaultDisplay.GetRealSize(realSize);
                var size = new global::Android.Graphics.Point();
                activity.WindowManager.DefaultDisplay.GetSize(size);
                _scaledDensity = metrics.ScaledDensity;
            }

            if (e.OldElement != null)
            {
                var oldMapModel = (Map)e.OldElement;
                ((ObservableCollection<Pin>)oldMapModel.Pins).CollectionChanged -= OnPinCollectionChanged;
                ((ObservableCollection<Polyline>)oldMapModel.Polylines).CollectionChanged -= OnPolylineCollectionChanged;
                ((ObservableCollection<Polygon>)oldMapModel.Polygons).CollectionChanged -= OnPolygonCollectionChanged;
                ((ObservableCollection<Circle>)oldMapModel.Circles).CollectionChanged -= OnCircleCollectionChanged;

                MessagingCenter.Unsubscribe<Map, MoveToRegionMessage>(this, MoveMessageName);

#pragma warning disable 618
                if (oldMapView.Map != null)
                {
#pragma warning restore 618

#pragma warning disable 618
                    oldMapView.Map.SetOnCameraChangeListener(null);
#pragma warning restore 618
                    NativeMap.InfoWindowClick -= MapOnMarkerClick;
                    NativeMap.PolylineClick -= MapOnPolylineClick;
                    NativeMap.PolygonClick -= MapOnPolygonClick;
                    //NativeMap.CircleClick -= MapOnCircleClick; // Circle click is not supported.
                }

                oldMapView.Dispose();
            }

            var map = NativeMap;
            if (map != null)
            {
                map.SetOnCameraChangeListener(this);
                NativeMap.InfoWindowClick += MapOnMarkerClick;
                NativeMap.PolylineClick += MapOnPolylineClick;
                NativeMap.PolygonClick += MapOnPolygonClick;
                //NativeMap.CircleClick += MapOnCircleClick; // Circle click is not supported.

                map.UiSettings.ZoomControlsEnabled = Map.HasZoomEnabled;
                map.UiSettings.ZoomGesturesEnabled = Map.HasZoomEnabled;
                map.UiSettings.ScrollGesturesEnabled = Map.HasScrollEnabled;
                map.MyLocationEnabled = map.UiSettings.MyLocationButtonEnabled = Map.IsShowingUser;
                SetMapType();
            }

            MessagingCenter.Subscribe<Map, MoveToRegionMessage>(this, MoveMessageName, OnMoveToRegionMessage, Map);

            var inccPin = Map.Pins as INotifyCollectionChanged;
            if (inccPin != null)
                inccPin.CollectionChanged += OnPinCollectionChanged;


            var inccPolyline = Map.Polylines as INotifyCollectionChanged;
            if (inccPolyline != null)
                inccPolyline.CollectionChanged += OnPolylineCollectionChanged;

            var inccPolygon = Map.Polygons as INotifyCollectionChanged;
            if (inccPolygon != null)
                inccPolygon.CollectionChanged += OnPolygonCollectionChanged;

            var inccCircle = Map.Circles as INotifyCollectionChanged;
            if (inccCircle != null)
                inccCircle.CollectionChanged += OnCircleCollectionChanged;
        }
示例#15
0
		public override View OnCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
		{
			var view = inflater.Inflate (Resource.Layout.MapLayout, container, false);
			mapFragment = view.FindViewById<MapView> (Resource.Id.map);
			mapFragment.OnCreate (savedInstanceState);
			lastUpdateText = view.FindViewById<TextView> (Resource.Id.UpdateTimeText);
			pane = view.FindViewById<InfoPane> (Resource.Id.infoPane);
			pane.StateChanged += HandlePaneStateChanged;
			view.ViewTreeObserver.AddOnGlobalLayoutListener (this);
			flashBar = new FlashBarController (view);
			return view;
		}
示例#16
0
		protected override void OnCreate (Bundle bundle)
		{
			base.OnCreate (bundle);

			// Create your application here
			SetContentView (Resource.Layout.MapViewLayout);

			assignmentMapViewLayout = FindViewById<LinearLayout> (Resource.Id.mapViewAssignmentLayout);
			assignmentMapViewLayout.Click += (sender, e) => {
				var intent = new Intent (this, typeof(SummaryActivity));
				var tabActivity = (AssignmentTabActivity)Parent;
				tabActivity.MapData = null;
				assignmentViewModel.SelectedAssignment = assignmentViewModel.ActiveAssignment;
				menuViewModel.MenuIndex = Constants.Navigation.IndexOf ("Map");
				StartActivity (intent);
			};
	    
			mapView = FindViewById<MapView> (Resource.Id.googleMapsView);
			mapView.OnCreate (bundle);
			mapView.GetMapAsync (this);

			//View containing the active assignment
			var view = new View (this);
			LayoutInflater inflator = (LayoutInflater)GetSystemService (Context.LayoutInflaterService);
			view = inflator.Inflate (Resource.Layout.AssignmentItemLayout, null);
			assignmentMapViewLayout.AddView (view);
			view.LayoutParameters = new LinearLayout.LayoutParams (LinearLayout.LayoutParams.MatchParent, LinearLayout.LayoutParams.WrapContent);
			view.SetBackgroundDrawable (Resources.GetDrawable (Resource.Drawable.active_assignment_selector));
			number = view.FindViewById<TextView> (Resource.Id.assignmentItemNumber);
			job = view.FindViewById<TextView> (Resource.Id.assignmentJob);
			name = view.FindViewById<TextView> (Resource.Id.assignmentName);
			phone = view.FindViewById<TextView> (Resource.Id.assignmentPhone);
			address = view.FindViewById<TextView> (Resource.Id.assignmentAddress);
			buttonLayout = view.FindViewById<LinearLayout> (Resource.Id.assignmentButtonLayout);
			timerLayout = view.FindViewById<LinearLayout> (Resource.Id.assignmentTimerLayout);
			activeSpinner = view.FindViewById<Spinner> (Resource.Id.assignmentStatus);
			spinnerImage = view.FindViewById<ImageView> (Resource.Id.assignmentStatusImage);
			timer = view.FindViewById<ToggleButton> (Resource.Id.assignmentTimer);
			timerText = view.FindViewById<TextView> (Resource.Id.assignmentTimerText);
			phoneButton = view.FindViewById<RelativeLayout> (Resource.Id.assignmentPhoneLayout);
			mapButton = view.FindViewById<RelativeLayout> (Resource.Id.assignmentAddressLayout);

			phoneButton.Click += (sender, e) => {
				Extensions.MakePhoneCall (this, phone.Text);
			};

			mapButton.Click += (sender, e) => {
				var intent = new Intent (this, typeof(SummaryActivity));
				var tabActivity = (AssignmentTabActivity)Parent;
				tabActivity.MapData = null;
				assignmentViewModel.SelectedAssignment = assignmentViewModel.ActiveAssignment;
				menuViewModel.MenuIndex = 0;
				StartActivity (intent);
			};

			assignmentViewModel.LoadTimerEntryAsync ().ContinueWith (_ => {
				RunOnUiThread (() => {
					timer.Checked = assignmentViewModel.Recording;
				});
			});

			timer.CheckedChange += (sender, e) => {
				if (e.IsChecked != assignmentViewModel.Recording) {
					if (assignmentViewModel.Recording)
						assignmentViewModel.PauseAsync ();
					else
						assignmentViewModel.RecordAsync ();
				}
			};

			activeSpinner.ItemSelected += (sender, e) => {

				if (assignment == null)
					return;
				
				var selected = assignmentViewModel.AvailableStatuses.ElementAtOrDefault (e.Position);
				if (selected != assignment.Status) {
					switch (selected) {
					case AssignmentStatus.Hold:
						assignment.Status = selected;
						assignmentViewModel.SaveAssignmentAsync (assignment).ContinueWith (_ => {
							RunOnUiThread (() => {
								SetAssignment (false);
								UpdateLocations ();
							});
						});
						break;
					case AssignmentStatus.Complete:
						var intent = new Intent (this, typeof(SummaryActivity));
						menuViewModel.MenuIndex = Constants.Navigation.IndexOf (Constants.Confirmations);
						StartActivity (intent);
						break;
					default:
						break;
					}
				}
			};
		}
示例#17
0
                public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
                {
                    if (container == null)
                    {
                        // Currently in a layout without a container, so no reason to create our view.
                        return(null);
                    }

                    GroupEntries   = new List <MobileAppApi.GroupSearchResult>();
                    MarkerList     = new List <Android.Gms.Maps.Model.Marker>();
                    SourceLocation = new MobileAppApi.GroupSearchResult();

                    // limit the address to 90% of the screen so it doesn't conflict with the progress bar.
                    Point displaySize = new Point( );

                    Activity.WindowManager.DefaultDisplay.GetSize(displaySize);
                    //float fixedWidth = displaySize.X / 4.0f;

                    // catch any exceptions thrown, as they'll be related to no map API key
                    try
                    {
                        MapView = new Android.Gms.Maps.MapView(Rock.Mobile.PlatformSpecific.Android.Core.Context);
                        MapView.LayoutParameters        = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent);
                        MapView.LayoutParameters.Height = (int)(displaySize.Y * .50f);
                        MapView.GetMapAsync(this);
                        MapView.SetBackgroundColor(Color.Black);

                        MapView.OnCreate(savedInstanceState);
                    }
                    catch
                    {
                        MapView = null;
                        Rock.Mobile.Util.Debug.WriteLine("GOOGLE MAPS: Unable to create. Verify you have a valid API KEY.");
                    }

                    NumRequestedGroups = 10;


                    SearchAddressButton = new Button(Rock.Mobile.PlatformSpecific.Android.Core.Context);
                    SearchAddressButton.LayoutParameters = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.WrapContent);
                    ControlStyling.StyleButton(SearchAddressButton, ConnectStrings.GroupFinder_SearchButtonLabel, ControlStylingConfig.Font_Regular, ControlStylingConfig.Small_FontSize);
                    SearchAddressButton.Click += (object sender, EventArgs e) =>
                    {
                        SearchPage.Show( );
                    };


                    // setup the linear layout containing the "Your Neighborhood is: Horizon" text
                    SearchLayout = new LinearLayout(Rock.Mobile.PlatformSpecific.Android.Core.Context);
                    SearchLayout.LayoutParameters = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.WrapContent);
                    SearchLayout.SetBackgroundColor(Rock.Mobile.UI.Util.GetUIColor(ControlStylingConfig.BG_Layer_Color));
                    SearchLayout.SetGravity(GravityFlags.Center);

                    SearchResultPrefix = new TextView(Rock.Mobile.PlatformSpecific.Android.Core.Context);
                    SearchResultPrefix.LayoutParameters = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent);
                    SearchResultPrefix.SetTypeface(Rock.Mobile.PlatformSpecific.Android.Graphics.FontManager.Instance.GetFont(ControlStylingConfig.Font_Regular), TypefaceStyle.Normal);
                    SearchResultPrefix.SetTextSize(Android.Util.ComplexUnitType.Dip, ControlStylingConfig.Small_FontSize);
                    SearchResultPrefix.SetTextColor(Rock.Mobile.UI.Util.GetUIColor(ControlStylingConfig.TextField_PlaceholderTextColor));
                    SearchResultPrefix.Text = ConnectStrings.GroupFinder_NoGroupsFound;

                    SearchResultNeighborhood = new TextView(Rock.Mobile.PlatformSpecific.Android.Core.Context);
                    SearchResultNeighborhood.LayoutParameters = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent);
                    SearchResultNeighborhood.SetTypeface(Rock.Mobile.PlatformSpecific.Android.Graphics.FontManager.Instance.GetFont(ControlStylingConfig.Font_Regular), TypefaceStyle.Normal);
                    SearchResultNeighborhood.SetTextSize(Android.Util.ComplexUnitType.Dip, ControlStylingConfig.Small_FontSize);
                    SearchResultNeighborhood.SetTextColor(Rock.Mobile.UI.Util.GetUIColor(ControlStylingConfig.TextField_ActiveTextColor));
                    SearchResultNeighborhood.Text = "";


                    Seperator = new View(Rock.Mobile.PlatformSpecific.Android.Core.Context);
                    Seperator.LayoutParameters        = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, 0);
                    Seperator.LayoutParameters.Height = 2;
                    Seperator.SetBackgroundColor(Rock.Mobile.UI.Util.GetUIColor(ControlStylingConfig.BG_Layer_BorderColor));

                    ListView = new ListView(Rock.Mobile.PlatformSpecific.Android.Core.Context);
                    ListView.LayoutParameters = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent);
                    ListView.ItemClick       += (object sender, AdapterView.ItemClickEventArgs e) =>
                    {
                        OnClick(e.Position, 0);
                    };
                    ListView.SetOnTouchListener(this);
                    ListView.Adapter = new GroupArrayAdapter(this);

                    View view = inflater.Inflate(Resource.Layout.Connect_GroupFinder, container, false);

                    view.SetOnTouchListener(this);

                    view.SetBackgroundColor(Rock.Mobile.UI.Util.GetUIColor(ControlStylingConfig.BG_Layer_Color));

                    LinearLayout groupLayout = view.FindViewById <LinearLayout>(Resource.Id.groupFrame) as LinearLayout;

                    // setup the address layout, which has the address text, padding, and finally the progress bar.
                    if (MapView != null)
                    {
                        ((LinearLayout)groupLayout).AddView(MapView);
                    }

                    ((LinearLayout)groupLayout).AddView(SearchAddressButton);

                    ((LinearLayout)groupLayout).AddView(SearchLayout);
                    ((LinearLayout)SearchLayout).AddView(SearchResultPrefix);
                    ((LinearLayout)SearchLayout).AddView(SearchResultNeighborhood);

                    ((LinearLayout)groupLayout).AddView(Seperator);
                    ((LinearLayout)groupLayout).AddView(ListView);

                    BlockerView = new UIBlockerView(view, new System.Drawing.RectangleF(0, 0, NavbarFragment.GetCurrentContainerDisplayWidth( ), this.Resources.DisplayMetrics.HeightPixels));

                    SearchPage = new UIGroupFinderSearch();
                    SearchPage.Create(view, new System.Drawing.RectangleF(0, 0, NavbarFragment.GetCurrentContainerDisplayWidth( ), this.Resources.DisplayMetrics.HeightPixels),
                                      // Search Neighborhood Groups
                                      delegate
                    {
                        SearchPage.Hide(true);
                        GetInitialGroups(PrivateGeneralConfig.GroupType_Neighborhood_GroupId, SearchPage.Street.Text, SearchPage.City.Text, SearchPage.State.Text, SearchPage.ZipCode.Text);
                    },

                                      // Search Next Gen Groups
                                      delegate
                    {
                        SearchPage.Hide(true);
                        GetInitialGroups(PrivateGeneralConfig.GroupType_NextGenGroupId, SearchPage.Street.Text, SearchPage.City.Text, SearchPage.State.Text, SearchPage.ZipCode.Text);
                    },

                                      // Search Young Adult Groups
                                      delegate
                    {
                        SearchPage.Hide(true);
                        GetInitialGroups(PrivateGeneralConfig.GroupType_YoungAdultsGroupId, SearchPage.Street.Text, SearchPage.City.Text, SearchPage.State.Text, SearchPage.ZipCode.Text);
                    });
                    SearchPage.SetTitle(ConnectStrings.GroupFinder_SearchPageHeader, ConnectStrings.GroupFinder_SearchPageDetails);
                    SearchPage.LayoutChanged(new System.Drawing.RectangleF(0, 0, NavbarFragment.GetCurrentContainerDisplayWidth( ), this.Resources.DisplayMetrics.HeightPixels));
                    SearchPage.Hide(false);

                    // if we should automatically show the search page...
                    if (ShowSearchOnAppear == true)
                    {
                        // don't allow them to tap the address button until we reveal the search page.
                        SearchAddressButton.Enabled = false;

                        // wait a couple seconds before revealing the search page.
                        System.Timers.Timer timer = new System.Timers.Timer();
                        timer.AutoReset = false;
                        timer.Interval  = 1000;
                        timer.Elapsed  += (object sender, System.Timers.ElapsedEventArgs e) =>
                        {
                            Rock.Mobile.Threading.Util.PerformOnUIThread(delegate
                            {
                                SearchAddressButton.Enabled = true;
                                SearchPage.Show( );
                            });
                        };
                        timer.Start( );
                    }
                    else
                    {
                        // otherwise, just allow the seach button
                        SearchAddressButton.Enabled = true;
                    }

                    // hook into the search page as its listener
                    ((View)SearchPage.View.PlatformNativeObject).SetOnTouchListener(this);
                    ((EditText)SearchPage.Street.PlatformNativeObject).SetOnEditorActionListener(this);
                    ((EditText)SearchPage.City.PlatformNativeObject).SetOnEditorActionListener(this);
                    ((EditText)SearchPage.State.PlatformNativeObject).SetOnEditorActionListener(this);
                    ((EditText)SearchPage.ZipCode.PlatformNativeObject).SetOnEditorActionListener(this);
                    return(view);
                }
                public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
                {
                    if (container == null)
                    {
                        // Currently in a layout without a container, so no reason to create our view.
                        return null;
                    }

                    GroupEntries = new List<GroupFinder.GroupEntry>();
                    MarkerList = new List<Android.Gms.Maps.Model.Marker>();
                    SourceLocation = new GroupFinder.GroupEntry();

                    // limit the address to 90% of the screen so it doesn't conflict with the progress bar.
                    Point displaySize = new Point( );
                    Activity.WindowManager.DefaultDisplay.GetSize( displaySize );
                    //float fixedWidth = displaySize.X / 4.0f;

                    // catch any exceptions thrown, as they'll be related to no map API key
                    try
                    {
                        MapView = new Android.Gms.Maps.MapView( Rock.Mobile.PlatformSpecific.Android.Core.Context );
                        MapView.LayoutParameters = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent );
                        MapView.LayoutParameters.Height = (int) (displaySize.Y * .50f);
                        MapView.GetMapAsync( this );
                        MapView.SetBackgroundColor( Color.Black );

                        MapView.OnCreate( savedInstanceState );
                    }
                    catch
                    {
                        MapView = null;
                        Rock.Mobile.Util.Debug.WriteLine( "GOOGLE MAPS: Unable to create. Verify you have a valid API KEY." );
                    }


                    SearchAddressButton = new Button( Rock.Mobile.PlatformSpecific.Android.Core.Context );
                    SearchAddressButton.LayoutParameters = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.WrapContent );
                    ControlStyling.StyleButton( SearchAddressButton, ConnectStrings.GroupFinder_SearchButtonLabel, ControlStylingConfig.Font_Regular, ControlStylingConfig.Small_FontSize );
                    SearchAddressButton.Click += (object sender, EventArgs e ) =>
                    {
                            SearchPage.Show( );
                    };


                    // setup the linear layout containing the "Your Neighborhood is: Horizon" text
                    SearchLayout = new LinearLayout( Rock.Mobile.PlatformSpecific.Android.Core.Context );
                    SearchLayout.LayoutParameters = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.WrapContent );
                    SearchLayout.SetBackgroundColor( Rock.Mobile.UI.Util.GetUIColor( ControlStylingConfig.BG_Layer_Color ) );
                    SearchLayout.SetGravity( GravityFlags.Center );

                    SearchResultPrefix = new TextView( Rock.Mobile.PlatformSpecific.Android.Core.Context );
                    SearchResultPrefix.LayoutParameters = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent );
                    SearchResultPrefix.SetTypeface( Rock.Mobile.PlatformSpecific.Android.Graphics.FontManager.Instance.GetFont( ControlStylingConfig.Font_Regular ), TypefaceStyle.Normal );
                    SearchResultPrefix.SetTextSize( Android.Util.ComplexUnitType.Dip, ControlStylingConfig.Small_FontSize );
                    SearchResultPrefix.SetTextColor( Rock.Mobile.UI.Util.GetUIColor( ControlStylingConfig.TextField_PlaceholderTextColor ) );
                    SearchResultPrefix.Text = ConnectStrings.GroupFinder_NoGroupsFound;

                    SearchResultNeighborhood = new TextView( Rock.Mobile.PlatformSpecific.Android.Core.Context );
                    SearchResultNeighborhood.LayoutParameters = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent );
                    SearchResultNeighborhood.SetTypeface( Rock.Mobile.PlatformSpecific.Android.Graphics.FontManager.Instance.GetFont( ControlStylingConfig.Font_Regular ), TypefaceStyle.Normal );
                    SearchResultNeighborhood.SetTextSize( Android.Util.ComplexUnitType.Dip, ControlStylingConfig.Small_FontSize );
                    SearchResultNeighborhood.SetTextColor( Rock.Mobile.UI.Util.GetUIColor( ControlStylingConfig.TextField_ActiveTextColor ) );
                    SearchResultNeighborhood.Text = "";


                    Seperator = new View( Rock.Mobile.PlatformSpecific.Android.Core.Context );
                    Seperator.LayoutParameters = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.MatchParent, 0 );
                    Seperator.LayoutParameters.Height = 2;
                    Seperator.SetBackgroundColor( Rock.Mobile.UI.Util.GetUIColor( ControlStylingConfig.BG_Layer_BorderColor ) );

                    ListView = new ListView( Rock.Mobile.PlatformSpecific.Android.Core.Context );
                    ListView.LayoutParameters = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent );
                    ListView.ItemClick += (object sender, AdapterView.ItemClickEventArgs e ) =>
                        {
                            OnClick( e.Position, 0 );
                        };
                    ListView.SetOnTouchListener( this );
                    ListView.Adapter = new GroupArrayAdapter( this );

                    View view = inflater.Inflate(Resource.Layout.Connect_GroupFinder, container, false);
                    view.SetOnTouchListener( this );

                    view.SetBackgroundColor( Rock.Mobile.UI.Util.GetUIColor( ControlStylingConfig.BG_Layer_Color ) );

                    LinearLayout groupLayout = view.FindViewById<LinearLayout>( Resource.Id.groupFrame ) as LinearLayout;

                    // setup the address layout, which has the address text, padding, and finally the progress bar.
                    if ( MapView != null )
                    {
                        ( (LinearLayout)groupLayout ).AddView( MapView );
                    }

                    ((LinearLayout)groupLayout).AddView( SearchAddressButton );

                    ((LinearLayout)groupLayout).AddView( SearchLayout );
                    ((LinearLayout)SearchLayout).AddView( SearchResultPrefix );
                    ((LinearLayout)SearchLayout).AddView( SearchResultNeighborhood );

                    ((LinearLayout)groupLayout).AddView( Seperator );
                    ((LinearLayout)groupLayout).AddView( ListView );

                    BlockerView = new UIBlockerView( view, new System.Drawing.RectangleF( 0, 0, NavbarFragment.GetCurrentContainerDisplayWidth( ), this.Resources.DisplayMetrics.HeightPixels ) );

                    SearchPage = new UIGroupFinderSearch();
                    SearchPage.Create( view, new System.Drawing.RectangleF( 0, 0, NavbarFragment.GetCurrentContainerDisplayWidth( ), this.Resources.DisplayMetrics.HeightPixels ), 
                        delegate
                        {
                            SearchPage.Hide( true );
                            GetGroups( SearchPage.Street.Text, SearchPage.City.Text, SearchPage.State.Text, SearchPage.ZipCode.Text );
                        } );
                    SearchPage.SetTitle( ConnectStrings.GroupFinder_SearchPageHeader, ConnectStrings.GroupFinder_SearchPageDetails );
                    SearchPage.LayoutChanged( new System.Drawing.RectangleF( 0, 0, NavbarFragment.GetCurrentContainerDisplayWidth( ), this.Resources.DisplayMetrics.HeightPixels ) );
                    SearchPage.Hide( false );

                    // if we should automatically show the search page...
                    if ( ShowSearchOnAppear == true )
                    {
                        // don't allow them to tap the address button until we reveal the search page.
                        SearchAddressButton.Enabled = false;

                        // wait a couple seconds before revealing the search page.
                        System.Timers.Timer timer = new System.Timers.Timer();
                        timer.AutoReset = false;
                        timer.Interval = 1000;
                        timer.Elapsed += (object sender, System.Timers.ElapsedEventArgs e ) =>
                        {
                            Rock.Mobile.Threading.Util.PerformOnUIThread( delegate
                                {
                                    SearchAddressButton.Enabled = true;
                                    SearchPage.Show( );
                                } );
                        };
                        timer.Start( );
                    }
                    else
                    {
                        // otherwise, just allow the seach button
                        SearchAddressButton.Enabled = true;
                    }

                    // hook into the search page as its listener
                    ((View)SearchPage.View.PlatformNativeObject).SetOnTouchListener( this );
                    ((EditText)SearchPage.Street.PlatformNativeObject).SetOnEditorActionListener( this );
                    ((EditText)SearchPage.City.PlatformNativeObject).SetOnEditorActionListener( this );
                    ((EditText)SearchPage.State.PlatformNativeObject).SetOnEditorActionListener( this );
                    ((EditText)SearchPage.ZipCode.PlatformNativeObject).SetOnEditorActionListener( this );
                    return view;
                }