View CreateScavengerHuntImage ()
		{
			var huntImage = new RoundedImageView 
			{
				WidthRequest = 75,
				HeightRequest = 75
			};
			huntImage.SetBinding (RoundedImageView.SourceProperty, "CapturedImage", converter: new ByteArrayToImageSourceConverter());

			var huntImageView = new StackLayout {
				Orientation = StackOrientation.Horizontal,
				Children = {
					huntImage
				}
			};

			return huntImageView;
		}
        View CreateImage ()
        {

			var image = new RoundedImageView {
                HeightRequest = 100,
				WidthRequest = 100
            };
            image.SetBinding (Image.SourceProperty, "ImageUri");

			var view = new StackLayout {
				Orientation = StackOrientation.Horizontal,
				HorizontalOptions = LayoutOptions.Center,
				Children = {
					image
				}
			};

            return view;
        }
		public ContactCell ()
		{
			var contactImage = new RoundedImageView {
				HeightRequest = 60,
				WidthRequest = 60,
			};

			contactImage.SetBinding (Image.SourceProperty, "ImageUri");
			contactImage.SetBinding (Image.OpacityProperty, "IsProxy", converter: new BooleanToAlphaConverter (0.5, 1.0));

			var contactImageView = new StackLayout {
				Orientation = StackOrientation.Horizontal,
				HorizontalOptions = LayoutOptions.Center,
				VerticalOptions = LayoutOptions.Center,
				Children = {
					contactImage
				}
			};

			var firstNameLabel = new FontLabel {
				Font = Font.OfSize(Fonts.OpenSansLight, 18)
			};

			firstNameLabel.SetBinding (Label.TextProperty, "First");

			var lastNameLabel = new FontLabel {
				Font = Font.OfSize(Fonts.OpenSans, 18)
			};

			lastNameLabel.SetBinding (Label.TextProperty, "Last");

			var companyLabel = new FontLabel {
				Font = Font.OfSize(Fonts.OpenSansBold, 9)
			};

			companyLabel.SetBinding (Label.TextProperty, "Company", converter: new ToUpperValueConverter());
			companyLabel.SetBinding (FontLabel.IsVisibleProperty, "IsProxy", converter: new NegateValueConverter ());

			/* * * * Contact Proxy Label * * * */
			var syncing = CreateSyncingLabel ();
			/* * * * * * * * * * * * * * * * * */

			var nameStack = new StackLayout {
				Orientation = StackOrientation.Horizontal,
				Spacing = 3,
				Children = {
					firstNameLabel,
					lastNameLabel
				}
			};

			var labelGrid = new Grid 
			{
				Children = 
				{
					companyLabel,
					syncing
				}
			};

			var contactInfo = new StackLayout 
			{
				Padding = new Thickness(0, 5, 0, 5),
				Spacing = 2,
				Children = {
					nameStack,
					labelGrid
				}
			};
					
			View = new StackLayout {
				Orientation = StackOrientation.Horizontal,
				BackgroundColor = Color.Default,
				Padding = new Thickness(5, 5, 0, 5),
				Spacing = 10,
				Children = {
					contactImageView,
					contactInfo
				}
			};
		}
        public ContactCell()
        {
            var contactImage = new RoundedImageView {
                HeightRequest = 60,
                WidthRequest  = 60,
            };

            contactImage.SetBinding(Image.SourceProperty, "ImageUri");
            contactImage.SetBinding(Image.OpacityProperty, "IsProxy", converter: new BooleanToAlphaConverter(0.5, 1.0));

            var contactImageView = new StackLayout {
                Orientation       = StackOrientation.Horizontal,
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions   = LayoutOptions.Center,
                Children          =
                {
                    contactImage
                }
            };

            var firstNameLabel = new FontLabel {
                Font = Font.OfSize(Fonts.OpenSansLight, 18)
            };

            firstNameLabel.SetBinding(Label.TextProperty, "First");

            var lastNameLabel = new FontLabel {
                Font = Font.OfSize(Fonts.OpenSans, 18)
            };

            lastNameLabel.SetBinding(Label.TextProperty, "Last");

            var companyLabel = new FontLabel {
                Font = Font.OfSize(Fonts.OpenSansBold, 9)
            };

            companyLabel.SetBinding(Label.TextProperty, "Company", converter: new ToUpperValueConverter());
            companyLabel.SetBinding(FontLabel.IsVisibleProperty, "IsProxy", converter: new NegateValueConverter());

            /* * * * Contact Proxy Label * * * */
            var syncing = CreateSyncingLabel();
            /* * * * * * * * * * * * * * * * * */

            var nameStack = new StackLayout {
                Orientation = StackOrientation.Horizontal,
                Spacing     = 3,
                Children    =
                {
                    firstNameLabel,
                    lastNameLabel
                }
            };

            var labelGrid = new Grid
            {
                Children =
                {
                    companyLabel,
                    syncing
                }
            };

            var contactInfo = new StackLayout
            {
                Padding  = new Thickness(0, 5, 0, 5),
                Spacing  = 2,
                Children =
                {
                    nameStack,
                    labelGrid
                }
            };

            View = new StackLayout {
                Orientation     = StackOrientation.Horizontal,
                BackgroundColor = Color.Default,
                Padding         = new Thickness(5, 5, 0, 5),
                Spacing         = 10,
                Children        =
                {
                    contactImageView,
                    contactInfo
                }
            };
        }
		View CreateSmallImage() {

			var image = new RoundedImageView {
				Source = "camera_small.png",
				WidthRequest = 40,
				HeightRequest = 40,
			};

			var view = new StackLayout 
			{
				Orientation = StackOrientation.Horizontal,
				HorizontalOptions = LayoutOptions.EndAndExpand,
				VerticalOptions = LayoutOptions.EndAndExpand,
				TranslationX = 15,
				Children = 
				{
					image
				}
			};
			view.GestureRecognizers.Add (CreateTapGestureRecognizer ());
			view.SetBinding (StackLayout.IsVisibleProperty, "IsCaptured");

			return view;
		}
		View CreateHaveImage ()
		{
			var haveImage = new RoundedImageView 
			{
				Source = "camera_large.png",
				WidthRequest = 120,
				HeightRequest = 120,
			};
			haveImage.GestureRecognizers.Add (CreateTapGestureRecognizer ());
			haveImage.SetBinding (Image.SourceProperty, "CapturedImage");

			var haveImageView = new StackLayout 
			{
				Orientation = StackOrientation.Horizontal,
				HorizontalOptions = LayoutOptions.CenterAndExpand,
				Children = 
				{
					haveImage
				}
			};

			return haveImageView;
		}
		View CreateNeedImage ()
		{
			var needImage = new RoundedImageView 
			{
				//Source = "temp_selfie.jpg",
				WidthRequest = 120,
				HeightRequest = 120
			};
			//needImage.SetBinding (Image.SourceProperty, "WhatYouNeedImage", converter: new ByteArrayToImageSourceConverter());
			needImage.SetBinding (Image.SourceProperty, "WhatYouNeedImage");

			var needImageView = new StackLayout 
			{
				Orientation = StackOrientation.Horizontal,
				HorizontalOptions = LayoutOptions.CenterAndExpand,
				Children = 
				{
					needImage
				}
			};

			return needImageView;
		}