示例#1
0
        private async Task LoadData(bool lores = false)
        {
            Result = "";

            if (Connectivity.NetworkAccess != NetworkAccess.Internet)
            {
                await Application.Current.MainPage.DisplayAlert("Benötige Internetverbindung", "Zum Laden der Dateien wird eine Internetverbindung benötigt.", "Okay");
            }
            else if (await Application.Current.MainPage.DisplayAlert("Große Dateimengen herunterladen?", "Beim Fortfahren werden mehrere Megabyte (bis zu 500MB) Bilddaten heruntergeladen. Am besten sollte dies mit WLAN heruntergeladen werden.", "Fortfahren", "Abbrechen"))
            {
                IsBusy = true;
                await LoadJson();

                try
                {
                    Dictionary <string, string> filesList = new Dictionary <string, string>();
                    //var count = ((App)App.Current).TaxonImages.Count;
                    //count += tFilterItems.Count;
                    var tFilterItems = Load.FromFile <FilterItem>("TaxonFilterItems.json");
                    var i            = 0;

                    foreach (var image in ((App)App.Current).TaxonImages)
                    {
                        string[] fileNames;
                        if (!lores)
                        {
                            fileNames = new string[] { $"{image.Title}-300x300.jpg", $"{image.Title}.jpg" };
                        }
                        else
                        {
                            fileNames = new string[] { $"{image.Title}-113x150.jpg", $"{image.Title}.jpg" };
                        }
                        if (!filesList.ContainsKey(fileNames[0]))
                        {
                            filesList.Add(fileNames[0], fileNames[1]);
                        }
                    }

                    foreach (FilterItem tFilter in tFilterItems)
                    {
                        string[] fileNames;
                        if (tFilter.ListSourceJson != null)
                        {
                            foreach (string img in tFilter.ListSourceJson)
                            {
                                if (img != null)
                                {
                                    if (!lores)
                                    {
                                        fileNames = new string[] { $"{img.Trim()}-300x300.jpg", $"{img.Trim()}.jpg" };
                                    }
                                    else
                                    {
                                        fileNames = new string[] { $"{img.Trim()}-113x150.jpg", $"{img.Trim()}.jpg" };
                                    }
                                    if (!filesList.ContainsKey(fileNames[0]))
                                    {
                                        filesList.Add(fileNames[0], fileNames[1]);
                                    }
                                }
                            }
                        }
                    }
                    //filesList = (List<string[]>)filesList.DistinctBy(x => x.).ToList();
                    var count = filesList.Count;

                    foreach (var fileName in filesList)
                    {
                        i++;
                        if (!_fileHelper.FileExists(fileName.Key))
                        {
                            try
                            {
                                var downloadFile = _fileHelper.DownloadFileAsync($"https://www.bodentierhochvier.de/wp-content/uploads/{fileName.Key}");
                                if (downloadFile != null)
                                {
                                    await _fileHelper.CopyFileToLocalAsync(downloadFile, fileName.Value);
                                }
                                else
                                {
                                    downloadFile = _fileHelper.DownloadFileAsync($"https://www.bodentierhochvier.de/wp-content/uploads/{fileName.Value}");
                                    if (downloadFile != null)
                                    {
                                        await _fileHelper.CopyFileToLocalAsync(downloadFile, fileName.Value);
                                    }
                                }
                                string percent = ((double)(i * 1000 / count) / 10).ToString("0.0");
                                DataStatus = $"Lade Bilder {i} von {count} ({percent} %)";
                            }
                            catch (Exception e)
                            {
                                throw e;
                            }
                        }
                    }

                    var versions     = _fileHelper.GetAllText(VersionsFile);
                    var versionsJson = JObject.Parse(versions);
                    var versionDate  = versionsJson["TaxonImages.json"].Value <string>();
                    var imageDate    = versionsJson["Versions.json"].Value <string>();
                    Preferences.Set("imageDate", imageDate);
                    DataStatus = $"Daten vom Stand {DateTime.Parse(versionDate).ToString("dd.MM.yyyy")}.";
                    Result     = "Daten erfolgreich aktualisiert.";
                }
                catch (Exception e)
                {
                    var msg = e.Message;
                    Result = "Beim Laden der Bilder ist ein Problem aufgetreten.";
                }
                finally
                {
                    IsBusy = false;
                }
            }
        }