protected override void OnAppearing()
        {
            DataTemplate template = (DataTemplate)this.Resources["withingsDeviceDataTemplate"];

            connectedDevicesWrapLayout.Children.Clear();
            foreach (var connectedItem in ConnectedDevices)
            {
                Controls.ContentPresenter contentPresenter = BuildContentPresenter(template, connectedItem, true);
                connectedDevicesWrapLayout.Children.Add(contentPresenter);
            }

            disconnectedDevicesWrapLayout.Children.Clear();
            foreach (var disconnectedItem in DisconnectedDevices)
            {
                Controls.ContentPresenter contentPresenter = BuildContentPresenter(template, disconnectedItem, false, true);
                disconnectedDevicesWrapLayout.Children.Add(contentPresenter);
            }

            if (firstConnect || Device.RuntimePlatform == Device.iOS)
            {
                backtoDashboradButton.IsVisible = true;
            }

            base.OnAppearing();
        }
예제 #2
0
        protected override void OnAppearing()
        {
            DataTemplate template = (DataTemplate)this.Resources["withingsDeviceDataTemplate"];

            SupportedDevices = new ObservableCollection <object>();
            GenerateSupportedDevicesCollection(SupportedDevices);

            supportedDevicesWrapLayout.Children.Clear();
            foreach (var supportedDevice in SupportedDevices)
            {
                Controls.ContentPresenter contentPresenter = BuildContentPresenter(template, (Models.Device)supportedDevice);
                supportedDevicesWrapLayout.Children.Add(contentPresenter);
            }

            FutureDevices = new ObservableCollection <object>();
            GenerateFutureDevicesCollection(FutureDevices);

            futureDevicesWrapLayout.Children.Clear();
            foreach (var futureDevice in FutureDevices)
            {
                Controls.ContentPresenter contentPresenter = BuildContentPresenter(template, (Models.Device)futureDevice);
                futureDevicesWrapLayout.Children.Add(contentPresenter);
            }

            base.OnAppearing();
        }
예제 #3
0
        private void TapGestureRecognizer_Tapped(object sender, EventArgs e)
        {
            Controls.ContentPresenter contentPresenter = (Controls.ContentPresenter)sender;
            Models.Device             device           = (Models.Device)contentPresenter.BindingContext;

            if (selectedDevice != null)
            {
                string selectedModelId = (from c in selectedDevice.Identifier.Type.Coding
                                          where c.System.AbsoluteUri == $"{selectedDevice.Identifier.System}/device/model_id"
                                          select c.Code).FirstOrDefault();
                string currentModelId = (from c in device.Identifier.Type.Coding
                                         where c.System.AbsoluteUri == $"{device.Identifier.System}/device/model_id"
                                         select c.Code).FirstOrDefault();

                if (selectedModelId != currentModelId)
                {
                    selectedDevice.IsSelected = false;
                }
            }

            device.IsSelected = !device.IsSelected;

            selectedDevice = device.IsSelected ? device : null;

            authenticateWithManufacturer.IsEnabled = (selectedDevice != null) ? true : false;

            if (selectedDevice != null && Device.Idiom == TargetIdiom.Tablet)
            {
                DeviceInfo = new Models.Device()
                {
                    Display       = selectedDevice.Display,
                    Identifier    = selectedDevice.Identifier,
                    ShowExtraInfo = true,
                    IsConnected   = false,
                    IsSelected    = false,
                };

                authenticateWithManufacturer.IsVisible = true;
            }
            else
            {
                DeviceInfo = null;

                if (Device.Idiom == TargetIdiom.Tablet)
                {
                    authenticateWithManufacturer.IsVisible = false;
                }
            }

            deviceDetails.BindingContext = DeviceInfo;
            deviceContentView.IsVisible  = (selectedDevice == null) ? false : true;
        }
예제 #4
0
        private Controls.ContentPresenter BuildObservationPresenter(DataTemplate template, Models.SummaryObservation observation)
        {
            Controls.ContentPresenter presenter = new Controls.ContentPresenter()
            {
                BindingContext = observation,
            };
            presenter.ItemTemplate = template;
            TapGestureRecognizer tapGestureRecognizer = new TapGestureRecognizer();

            // TODO: Change device tapped to go somewhere else?
            tapGestureRecognizer.Tapped += Observation_Tapped;
            presenter.GestureRecognizers.Add(tapGestureRecognizer);
            return(presenter);
        }
예제 #5
0
        private Controls.ContentPresenter BuildContentPresenter(DataTemplate template, Models.Device supportedDevice)
        {
            Controls.ContentPresenter contentPresenter = new Controls.ContentPresenter()
            {
                BindingContext = supportedDevice,
            };
            contentPresenter.ItemTemplate = template;
            contentPresenter.WidthRequest = 160;
            TapGestureRecognizer tapGestureRecognizer = new TapGestureRecognizer();

            tapGestureRecognizer.Tapped += TapGestureRecognizer_Tapped;
            contentPresenter.GestureRecognizers.Add(tapGestureRecognizer);
            return(contentPresenter);
        }
        private void TapGestureRecognizer_Tapped(object sender, EventArgs e)
        {
            Controls.ContentPresenter contentPresenter = (Controls.ContentPresenter)sender;
            Models.Device             device           = (Models.Device)contentPresenter.BindingContext;
            isConnectedDeviceSelected = device.IsConnected;

            if (selectedDevice != null && selectedDevice.Identifier.Value != device.Identifier.Value)
            {
                selectedDevice.IsSelected = false;
            }

            device.IsSelected = !device.IsSelected;

            selectedDevice = device.IsSelected ? device : null;

            actionButton.Text      = isConnectedDeviceSelected ? "Disconnect Device" : "Connect Device";
            actionButton.IsEnabled = (selectedDevice != null) ? true : false;

            if (!actionButton.IsEnabled)
            {
                actionButton.Text = "Select Device";
            }

            if (selectedDevice != null && Device.Idiom == TargetIdiom.Tablet)
            {
                DeviceInfo = new Models.Device()
                {
                    Display       = selectedDevice.Display,
                    Identifier    = selectedDevice.Identifier,
                    ShowExtraInfo = true,
                    IsConnected   = false,
                    IsSelected    = false,
                };

                actionButton.IsVisible = true;
            }
            else
            {
                DeviceInfo = null;

                if (Device.Idiom == TargetIdiom.Tablet)
                {
                    actionButton.IsVisible = false;
                }
            }

            deviceDetails.BindingContext = DeviceInfo;
            deviceContentView.IsVisible  = (selectedDevice == null) ? false : true;
        }
        private Controls.ContentPresenter BuildContentPresenter(DataTemplate template, object connectedItem, bool isConnected, bool showExtraInfo = false)
        {
            Models.Device device = JsonConvert.DeserializeObject <Models.Device>(connectedItem.ToString());
            device.IsConnected   = isConnected;
            device.ShowExtraInfo = showExtraInfo;

            Controls.ContentPresenter contentPresenter = new Controls.ContentPresenter()
            {
                BindingContext = device,
            };
            contentPresenter.ItemTemplate = template;
            TapGestureRecognizer tapGestureRecognizer = new TapGestureRecognizer();

            tapGestureRecognizer.Tapped += TapGestureRecognizer_Tapped;
            contentPresenter.GestureRecognizers.Add(tapGestureRecognizer);
            return(contentPresenter);
        }
예제 #8
0
        protected override async void OnAppearing()
        {
            await FetchDevices();

            if (ConnectedDevices.Count > 0)
            {
                await FetchObservations();
            }

            BindingContext = this;

            DataTemplate template = (DataTemplate)this.Resources["withingsDeviceDataTemplate"];

            connectedDevicesWrapLayout.Children.Clear();
            foreach (var connectedItem in ConnectedDevices)
            {
                Controls.ContentPresenter contentPresenter = BuildContentPresenter(template, connectedItem, false, true);
                connectedDevicesWrapLayout.Children.Add(contentPresenter);
            }

            template = (DataTemplate)this.Resources["withingsObservationDataTemplate"];
            observationListWrapLayout.Children.Clear();
            foreach (var observation in observationCategories)
            {
                Controls.ContentPresenter observationPresenter = BuildObservationPresenter(template, observation.Value);
                observationListWrapLayout.Children.Add(observationPresenter);
            }

            ManageDevicesButton  devicesButton        = new ManageDevicesButton();
            TapGestureRecognizer tapGestureRecognizer = new TapGestureRecognizer();

            tapGestureRecognizer.Tapped += async(s, e) =>
            {
                await Navigation.PushAsync(new DeviceManagementPage(ConnectedDevices.ToList(), DisconnectedDevices.ToList()));
            };
            devicesButton.GestureRecognizers.Add(tapGestureRecognizer);
            connectedDevicesWrapLayout.Children.Add(devicesButton);

            base.OnAppearing();
        }
예제 #9
0
        // TODO: Combine this with code from DeviceManagementPage.cs
        private Controls.ContentPresenter BuildContentPresenter(DataTemplate template, object connectedItem, bool isConnected, bool showExtraInfo = false)
        {
            Models.Device device = JsonConvert.DeserializeObject <Models.Device>(connectedItem.ToString());

            device.IsConnected   = isConnected;
            device.ShowExtraInfo = showExtraInfo;

            Controls.ContentPresenter contentPresenter = new Controls.ContentPresenter()
            {
                BindingContext = device,
            };
            contentPresenter.ItemTemplate = template;
            TapGestureRecognizer tapGestureRecognizer = new TapGestureRecognizer();

            // TODO: Change device tapped to go somewhere else?
            tapGestureRecognizer.Tapped += async(s, e) =>
            {
                await Navigation.PushAsync(new DeviceManagementPage(ConnectedDevices.ToList(), DisconnectedDevices.ToList()));
            };

            contentPresenter.GestureRecognizers.Add(tapGestureRecognizer);
            return(contentPresenter);
        }