예제 #1
0
        public App(string[] data = null)
        {
            InitializeComponent();

            if (data != null)
            {
                EntitiyData entitiyData = new EntitiyData
                {
                    Location = data[0],
                    Country  = data[1],
                    DateTime = long.Parse(data[2]),
                    Temp     = double.Parse(data[3]),
                    Icon     = data[4],
                    Name     = data[5],
                    Desc     = data[6],
                    Humidity = long.Parse(data[7]),
                    Pressure = long.Parse(data[8]),
                    Wind     = double.Parse(data[9])
                };
                MainPage = new NavigationPage(new DetailPage(entitiyData));
            }
            else
            {
                MainPage = new NavigationPage(new MainPage());
            }
        }
예제 #2
0
        public DetailPage(EntitiyData data)
        {
            InitializeComponent();

            Title          = $"Weather in {data.Location}, {data.Country}";
            BindingContext = data;
        }
        async void OnGetWeatherButtonClicked(object sender, EventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(_cityEntry.Text))
            {
                loadingData.IsVisible = true;
                EntitiyData entitiyData = await restService.GetWeatherData(GenerateRequestUri(Constants.Endpoint, "/weather"));

                data = entitiyData;

                BindingContext = data;

                listForecast.ItemsSource = await restService.GetForecastData(GenerateRequestUri(Constants.Endpoint, "/forecast"));

                loadingData.IsVisible = false;
                Console.WriteLine("DEBUG - Button Clicked!");
            }
        }
        public async Task <List <EntitiyData> > GetForecastData(string query)
        {
            List <EntitiyData> list = null;

            try
            {
                var response = await client.GetAsync(query);

                if (response.IsSuccessStatusCode)
                {
                    var content = await response.Content.ReadAsStringAsync();

                    ForecastData forecastData = JsonConvert.DeserializeObject <ForecastData>(content);

                    list = new List <EntitiyData>();

                    for (int i = 0; i < forecastData.List.Count; i++)
                    {
                        if (i % 8 == 7)
                        {
                            EntitiyData entitiyData = new EntitiyData
                            {
                                Location = forecastData.City.Name,
                                Country  = forecastData.City.Country,
                                DateTime = forecastData.List[i].Dt,
                                Temp     = forecastData.List[i].Main.Temp,
                                Icon     = forecastData.List[i].Weather[0].Icon,
                                Name     = forecastData.List[i].Weather[0].Main,
                                Desc     = forecastData.List[i].Weather[0].Description,
                                Humidity = forecastData.List[i].Main.Humidity,
                                Pressure = forecastData.List[i].Main.Pressure,
                                Wind     = forecastData.List[i].Wind.Speed
                            };
                            list.Add(entitiyData);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("\t\tERROR {0}", ex.Message);
            }

            return(list);
        }
        async void OnGetLocationButtonClicked(object sender, EventArgs e)
        {
            try
            {
                var request  = new GeolocationRequest(GeolocationAccuracy.Medium);
                var location = await Geolocation.GetLocationAsync(request);

                if (location != null)
                {
                    lt = location.Latitude.ToString();
                    lg = location.Longitude.ToString();
                    //await DisplayAlert("Keterangan",$"Latitude: {location.Latitude}, Longitude: { location.Longitude}, Altitude: { location.Altitude}","OK");

                    loadingData.IsVisible = true;
                    EntitiyData entitiyData = await restService.GetWeatherData(GenerateRequestLatLon(Constants.Endpoint, "/weather", lt, lg));

                    data = entitiyData;

                    BindingContext = data;

                    listForecast.ItemsSource = await restService.GetForecastData(GenerateRequestLatLon(Constants.Endpoint, "/forecast", lt, lg));

                    loadingData.IsVisible = false;
                }
            }
            catch (FeatureNotSupportedException fnsEx)
            {
                await DisplayAlert("Error", fnsEx.Message, "OK");
            }
            catch (FeatureNotEnabledException fneEx)
            {
                await DisplayAlert("Error", fneEx.Message, "OK");
            }
            catch (PermissionException pEx)
            {
                await DisplayAlert("Error", pEx.Message, "OK");
            }
            catch (Exception ex)
            {
                await DisplayAlert("Error", ex.Message, "OK");
            }
        }
        public async Task <EntitiyData> GetWeatherData(string query)
        {
            EntitiyData entitiyData = null;

            try
            {
                var response = await client.GetAsync(query);

                if (response.IsSuccessStatusCode)
                {
                    var content = await response.Content.ReadAsStringAsync();

                    WeatherData weatherData = JsonConvert.DeserializeObject <WeatherData>(content);

                    entitiyData = new EntitiyData
                    {
                        Location = weatherData.Title,
                        Country  = weatherData.Sys.Country,
                        DateTime = weatherData.Dt,
                        Temp     = weatherData.Main.Temperature,
                        Icon     = weatherData.Weather[0].Icon,
                        Name     = weatherData.Weather[0].Visibility,
                        Desc     = weatherData.Weather[0].Description,
                        Humidity = weatherData.Main.Humidity,
                        Pressure = weatherData.Main.Pressure,
                        Wind     = weatherData.Wind.Speed
                    };
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("\t\tERROR {0}", ex.Message);
            }

            return(entitiyData);
        }
 async void OnItemSelected(object sender, SelectedItemChangedEventArgs e)
 {
     EntitiyData item = (EntitiyData)e.SelectedItem;
     await Navigation.PushAsync(new DetailPage(item));
 }