Esempio n. 1
0
        async void Initialize()
        {
            var ip = await ScannerConnection.GetLocalIp() ?? "ERROR";

            Button offlineModeBtn = new Button
            {
                Text            = "Offline mode",
                BackgroundColor = new Color(0.8f, 0.8f, 0.8f)
            };

            offlineModeBtn.Clicked += OnOfflineModeClicked;

            var qrSize  = 320;
            var barcode = new ZXingBarcodeImageView
            {
                WidthRequest      = qrSize,
                HeightRequest     = qrSize,
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions   = LayoutOptions.Center,
                BarcodeFormat     = ZXing.BarcodeFormat.QR_CODE,
                BarcodeOptions    =
                {
                    Width  = qrSize,
                    Height = qrSize,
                },
                BarcodeValue = ip,
            };

            BackgroundColor = Color.White;
            var stack = new StackLayout
            {
                VerticalOptions   = LayoutOptions.Center,
                HorizontalOptions = LayoutOptions.Center,
                Children          =
                {
                    new Label
                    {
                        TextColor = Color.Black,
                        HorizontalTextAlignment = TextAlignment.Center,
                        Text = $"Open SmartHome for HoloLens companion app and\nscan this qr code in order to be connected ({ip}):"
                    },
                    barcode,
                }
            };

            Content = stack;
            if (Application.Current.Properties.ContainsKey(nameof(SpaceDto)))
            {
                stack.Children.Add(offlineModeBtn);
            }

            var connection = new ScannerConnection();
            await connection.WaitForCompanion();

            await Navigation.PushAsync(new MainPage(connection, false));
        }
Esempio n. 2
0
        public MainPage(ScannerConnection connection, bool offlineMode)
        {
            this.connection = connection;
            this.serializer = new ProtobufNetworkSerializer();
            NavigationPage.SetHasNavigationBar(this, false);

            var grid = new Grid();

            grid.ColumnDefinitions.Add(new ColumnDefinition {
                Width = new GridLength(1, GridUnitType.Star)
            });
            grid.ColumnDefinitions.Add(new ColumnDefinition {
                Width = new GridLength(4, GridUnitType.Star)
            });

            bulbsStack = new StackLayout();
            grid.Children.Add(bulbsStack);

            urhoSurface = new UrhoSurface
            {
                BackgroundColor = Color.Black,
                VerticalOptions = LayoutOptions.FillAndExpand
            };

            var stack = new StackLayout
            {
                VerticalOptions = LayoutOptions.FillAndExpand,
                Children        = { urhoSurface }
            };

            grid.Children.Add(stack);
            Grid.SetColumn(stack, 1);
            Content = grid;

            if (!offlineMode)
            {
                space = new SpaceDto();
                connection.RegisterFor <SurfaceDto>(OnSurfaceReceived);
                connection.RegisterFor <BulbAddedDto>(OnBulbAdded);
                connection.RegisterFor <CurrentPositionDto>(OnCurrentPositionUpdated);
                Start();
            }
            else
            {
                space = serializer.Deserialize <SpaceDto>(
                    (byte[])Application.Current.Properties[nameof(SpaceDto)]);
            }
        }
Esempio n. 3
0
        async void Initialize()
        {
            var ip = await ScannerConnection.GetLocalIp() ?? "ERROR";

            var qrSize = 320;

            var barcode = new ZXingBarcodeImageView
            {
                WidthRequest      = qrSize,
                HeightRequest     = qrSize,
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions   = LayoutOptions.Center,
                BarcodeFormat     = ZXing.BarcodeFormat.QR_CODE,
                BarcodeOptions    =
                {
                    Width  = qrSize,
                    Height = qrSize,
                },
                BarcodeValue = ip,
            };

            BackgroundColor = Color.White;
            Content         = new StackLayout
            {
                VerticalOptions   = LayoutOptions.Center,
                HorizontalOptions = LayoutOptions.Center,
                Children          =
                {
                    new Label
                    {
                        TextColor = Color.Black,
                        HorizontalTextAlignment = TextAlignment.Center,
                        Text = $"Open SmartHome for HoloLens companion app and\nscan this qr code in order to be connected ({ip}):"
                    },
                    barcode
                }
            };

            await ScannerConnection.WaitForCompanion();

            await Navigation.PushAsync(new MainPage());
        }
Esempio n. 4
0
        public MainPage()
        {
            NavigationPage.SetHasNavigationBar(this, false);

            Grid grid = new Grid();

            grid.ColumnDefinitions.Add(new ColumnDefinition {
                Width = new GridLength(1, GridUnitType.Star)
            });
            grid.ColumnDefinitions.Add(new ColumnDefinition {
                Width = new GridLength(4, GridUnitType.Star)
            });

            bulbsStack = new StackLayout();
            grid.Children.Add(bulbsStack);

            urhoSurface = new UrhoSurface
            {
                BackgroundColor = Color.Black,
                VerticalOptions = LayoutOptions.FillAndExpand
            };

            var stack = new StackLayout
            {
                VerticalOptions = LayoutOptions.FillAndExpand,
                Children        = { urhoSurface }
            };

            grid.Children.Add(stack);
            Grid.SetColumn(stack, 1);

            Content = grid;

            ScannerConnection.RegisterFor <SurfaceDto>(OnSurfaceReceived);
            ScannerConnection.RegisterFor <BulbAddedDto>(OnBulbAdded);
            ScannerConnection.RegisterFor <CurrentPositionDto>(OnCurrentPositionUpdated);
        }
Esempio n. 5
0
 public void SetConnection(ScannerConnection connection) => this.connection = connection;