コード例 #1
0
        async Task FetchTeamData()
        {
            Console.WriteLine("Start");


            for (int i = 0; i < 1; i++)
            {
                var db      = new FirebaseClient(GlobalVariables.firebaseURL);
                var fbTeams = await db
                              .Child("2017calb")
                              .Child("teamData")
                              .Child("4201")
                              //.Child(matchData.Red[i].ToString())
                              .OnceSingleAsync <TeamData>();

                teams[i] = new TeamData();
                teams[i] = fbTeams;

                Console.WriteLine("Team: " + teams[i].teamNumber);
            }
        }
コード例 #2
0
        public static async Task ImagePicker(TeamData data, int imageInt)
        {
            await CrossMedia.Current.Initialize();

            if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
            {
                Console.WriteLine("No Camera");
            }
            else
            {
                try {
                    var file = await CrossMedia.Current.PickPhotoAsync(new Plugin.Media.Abstractions.PickMediaOptions {
                    });

                    var fileName = data.teamNumber + "_IMG" + imageInt + ".jpg";
                    var filePath = file.Path;

                    var stream = new MemoryStream(ImageToBinary(filePath));

                    var storage = new FirebaseStorage(GlobalVariables.firebaseStorageURL);

                    var send = storage.Child(GlobalVariables.regionalPointer)
                               .Child(data.teamNumber.ToString())
                               .Child(fileName)
                               .PutAsync(stream);

                    var downloadURL = await send;

                    Console.WriteLine("URL: " + downloadURL);

                    var db = new FirebaseClient(GlobalVariables.firebaseURL);

                    FirebaseAccess.saveData(db, "teamData/" + data.teamNumber + "/imageURL", downloadURL);
                }
                catch (Exception ex) {
                    Console.WriteLine("Image Upload Image: " + ex);
                }
            }
        }
コード例 #3
0
        public async Task addRobotImage(TeamData data)
        {
            if (data.imageURL != null)
            {
                try {
                    busyIcon.IsRunning = true;
                    busyIcon.IsVisible = true;

                    imageURL = data.imageURL;

                    robotImage.Source = new Uri(imageURL);

                    robotImage.Success += (sender, ea) => {
                        Console.WriteLine("Image source: " + robotImage.Source);
                        busyIcon.IsRunning = false;
                        busyIcon.IsVisible = false;

                        Console.WriteLine(robotImage.Source);
                        robotImage.GestureRecognizers.Add(tap);
                    };
                    Content = robotImage;
                } catch (Exception ex) {
                    Console.WriteLine("Error: " + ex.Message);
                    busyIcon.IsRunning = false;
                    busyIcon.IsVisible = false;

                    errorMessageLbl.Text = ex.Message;

                    Content = errorStack;
                }
            }
            else
            {
                robotImage.Source = "placeholder_image_placeholder.png";
                Content           = robotImage;
            }
        }
コード例 #4
0
        public RobotImageView(TeamData data)
        {
            HorizontalOptions = LayoutOptions.FillAndExpand;
            VerticalOptions   = LayoutOptions.FillAndExpand;

            busyIcon = new ActivityIndicator()
            {
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions   = LayoutOptions.Center
            };

            tap         = new TapGestureRecognizer();
            tap.Tapped += (s, e) => {
                // Create a gesture recognizer to display the popup image
                Navigation.PushPopupAsync(new ImagePopupPage(data));
            };

            robotImage = new CachedImage()
            {
                HorizontalOptions = LayoutOptions.FillAndExpand,
                VerticalOptions   = LayoutOptions.FillAndExpand,
                HeightRequest     = 120,
                //WidthRequest = 120,
                DownsampleToViewSize = true,
                Aspect        = Aspect.AspectFit,
                CacheDuration = new TimeSpan(7, 0, 0, 0),
            };
            robotImage.GestureRecognizers.Add(tap);

            loadingStack = new StackLayout()
            {
                HorizontalOptions = LayoutOptions.CenterAndExpand,
                VerticalOptions   = LayoutOptions.CenterAndExpand,
                HeightRequest     = 120, WidthRequest = 120,
                BackgroundColor   = Color.Green,

                Children =
                {
                    busyIcon,
                    new Label()
                    {
                        Text = "Loading Image...",
                        HorizontalTextAlignment = TextAlignment.Center
                    }
                }
            };

            /*
             * placeholderStack = new StackLayout() {
             *      HorizontalOptions = LayoutOptions.CenterAndExpand,
             *      VerticalOptions = LayoutOptions.CenterAndExpand,
             *      HeightRequest = 120, WidthRequest = 120,
             *      BackgroundColor = Color.Green,
             *
             *      Children = {
             *              busyIcon,
             *              new Label(){
             *                      Text = "[Placeholder Image]",
             *                      HorizontalTextAlignment = TextAlignment.Center
             *              }
             *      }
             * };
             * placeholderStack.GestureRecognizers.Add(tap);
             */
            errorMessageLbl = new Label()
            {
                HorizontalTextAlignment = TextAlignment.Center,
                FontSize = GlobalVariables.sizeTiny
            };

            retryBtn = new Button()
            {
                Text = "Retry",
            };
            retryBtn.Clicked += (sender, e) => {
                addRobotImage(data);
            };

            errorStack = new StackLayout()
            {
                HorizontalOptions = LayoutOptions.CenterAndExpand,
                VerticalOptions   = LayoutOptions.CenterAndExpand,
                HeightRequest     = 120, WidthRequest = 120,
                BackgroundColor   = Color.Yellow,

                Children =
                {
                    new Label()
                    {
                        Text = "Error:",
                        HorizontalTextAlignment = TextAlignment.Center
                    },
                    errorMessageLbl,
                    retryBtn
                }
            };

            addRobotImage(data);
        }
コード例 #5
0
        public TeamCardPopupPage(TeamData team)
        {
            data = team;

            var teamNo = new Label()
            {
                Text           = data.teamNumber.ToString(),
                FontSize       = GlobalVariables.sizeMedium,
                FontAttributes = FontAttributes.Bold
            };

            var teamNa = new Label()
            {
                Text     = data.teamName,
                FontSize = GlobalVariables.sizeMedium
            };

            var teamOPR = new Label()
            {
                Text     = data.tbaOPR.ToString(),
                FontSize = 14
            };

            setPitData();
            //setMatchData();

            Button editTeamBtn = new Button()
            {
                VerticalOptions   = LayoutOptions.Fill,
                HorizontalOptions = LayoutOptions.FillAndExpand,
                Text            = "Edit Info",
                TextColor       = Color.Green,
                BackgroundColor = Color.Black,
                FontSize        = GlobalVariables.sizeMedium
            };

            editTeamBtn.Clicked += (object sender, EventArgs e) =>
            {
                Navigation.PushPopupAsync(new TeamCardPopupEditPage(data));
            };

            Button[] btnArray       = { editTeamBtn };
            var      navigationBtns = new PopupNavigationButtons(true, btnArray);

            navigationBtns.refreshBtn.Clicked += (sender, e) => {
                getFirebaseData();
                setPitData();
            };

            var robotImage = new RobotImageView(data);

            topGrid.Children.Add(robotImage, 0, 1, 0, 2);
            topGrid.Children.Add(teamNo, 1, 0);
            topGrid.Children.Add(teamNa, 1, 1);

            //teamGrid.Children.Add(teamOPR, 0, 2, gridYIndex, gridYIndex++ + 1);
            //teamGrid.Children.Add(teamOPR, 0, 2, gridYIndex, gridYIndex++ + 1);

            //topGrid.Children.Add(navigationBtns, 0, 2, gridYIndex, gridYIndex++ + 1);

            Content = new Frame()
            {
                HorizontalOptions = LayoutOptions.FillAndExpand,
                VerticalOptions   = LayoutOptions.FillAndExpand,
                Margin            = GlobalVariables.popupMargin,
                Padding           = new Thickness(5),

                BackgroundColor = Color.Gray,
                HasShadow       = true,

                Content = new StackLayout()
                {
                    Children =
                    {
                        topGrid,
                        new ScrollView()
                        {
                            HorizontalOptions = LayoutOptions.StartAndExpand,
                            VerticalOptions   = LayoutOptions.FillAndExpand,

                            Content = pitDataLayout
                        },
                        navigationBtns
                    }
                }
            };
        }
コード例 #6
0
		public ImagePopupPage (TeamData tData)
		{
			data = tData;
			robotImg = new RobotImageView(tData);


			Button setImageDefaultBtn = new Button() {
				VerticalOptions = LayoutOptions.Fill,
				HorizontalOptions = LayoutOptions.FillAndExpand,
				Text = "Set Default",
				TextColor = Color.Green,
				BackgroundColor = Color.Black,
				FontSize = GlobalVariables.sizeMedium
			};
			setImageDefaultBtn.Clicked += (object sender, EventArgs e) => {
				setDefaultImage();
			};


			Button retakeImageBtn = new Button()
			{
				VerticalOptions = LayoutOptions.Fill,
				HorizontalOptions = LayoutOptions.FillAndExpand,
				Text = "Retake",
				TextColor = Color.Green,
				BackgroundColor = Color.Black,
				FontSize = GlobalVariables.sizeMedium
			};
			retakeImageBtn.Clicked += (object sender, EventArgs e) =>
			{
				OpenImagePicker();
			};

			btnArray = new Button[] { setImageDefaultBtn, retakeImageBtn };
			var navigationBtns = new PopupNavigationButtons(true, btnArray);
			navigationBtns.refreshBtn.Clicked += (sender, e) => {
				refreshImages();
				robotImg = new RobotImageView(tData);
			};

			Content = new Frame(){
				HorizontalOptions = LayoutOptions.FillAndExpand,
				VerticalOptions = LayoutOptions.FillAndExpand,
				Margin = GlobalVariables.popupMargin,
				Padding = new Thickness(5),

				BackgroundColor = Color.Gray,
				HasShadow = true,

				Content = new StackLayout() {
					HorizontalOptions = LayoutOptions.FillAndExpand,
					VerticalOptions = LayoutOptions.FillAndExpand,

					Children = {
						robotImg,
						new ScrollView(){
							HorizontalOptions = LayoutOptions.FillAndExpand,
							Orientation = ScrollOrientation.Horizontal,

							Content = imageStack
						},
						navigationBtns
					}
				}
			};
		}
コード例 #7
0
        public TeamCardPopupEditPage(TeamData team)
        {
            data = team;

            var teamNo = new Label()
            {
                Text     = data.teamNumber.ToString(),
                FontSize = GlobalVariables.sizeMedium,
            };

            var teamNa = new Label()
            {
                Text     = data.teamName,
                FontSize = GlobalVariables.sizeMedium
            };

            initalizeData();

            Button saveDataBtn = new Button()
            {
                VerticalOptions   = LayoutOptions.Fill,
                HorizontalOptions = LayoutOptions.FillAndExpand,
                Text            = "Save",
                TextColor       = Color.Green,
                BackgroundColor = Color.Black,
                FontSize        = GlobalVariables.sizeMedium
            };

            saveDataBtn.Clicked += (object sender, EventArgs e) => {
                saveData();
            };

            Button[] btnArray       = { saveDataBtn };
            var      navigationBtns = new PopupNavigationButtons(false, btnArray);

            //teamGrid.Children.Add(new RobotImageLayout(data), 0, 1, gridYIndex, gridYIndex + 2);
            topGrid.Children.Add(teamNo, 1, 0);
            topGrid.Children.Add(teamNa, 1, 1);

            // teamGrid.Children.Add(navigationBtns, 0, 2, gridYIndex, gridYIndex++ + 1);

            CloseWhenBackgroundIsClicked = false;
            Content = new Frame()
            {
                HorizontalOptions = LayoutOptions.FillAndExpand,
                VerticalOptions   = LayoutOptions.FillAndExpand,
                Margin            = GlobalVariables.popupMargin,
                Padding           = new Thickness(5),

                BackgroundColor = Color.Gray,
                HasShadow       = true,

                Content = new StackLayout()
                {
                    Children =
                    {
                        topGrid,
                        new ScrollView()
                        {
                            HorizontalOptions = LayoutOptions.FillAndExpand,
                            VerticalOptions   = LayoutOptions.FillAndExpand,

                            Content = dataLayout
                        },
                        navigationBtns
                    }
                }
            };
        }
コード例 #8
0
 async Task takeImage(TeamData data)
 {
     await ImageCapture.ImagePicker(data);
 }
コード例 #9
0
 public static async Task TakePhoto(TeamData data, int imageInt)
 {
 }