public async void StartDialog() { PermissionManager permissions = new PermissionManager(); var taskPermissionRead = await permissions.CheckAndRequestStorageReadPermission(); if (taskPermissionRead.HasFlag(Xamarin.Essentials.PermissionStatus.Granted)) { ImagesCacheDbManager imagesCache = new ImagesCacheDbManager(new ImageManager(), DateTime.Now.AddDays(90), DateTime.Now); ParameterManager parameterManager = new ParameterManager(); _initDCIMDirectory = string.Empty; if (!parameterManager.Get("CameraDirectoryFullPath", out _initDCIMDirectory)) { //параметр заполняется при старте индексации, уже должен быть заполнен _initDCIMDirectory = imagesCache.GetPublicDirectoryDcim(); } PathToDefaultDCIM = imagesCache.GetPublicDirectoryDcim(); PathToCustomDCIM = _initDCIMDirectory; IsUsageMainMemory = _initDCIMDirectory.Equals(PathToDefaultDCIM); await Task.Run(() => { MediaFileManager mediaFileManager = new MediaFileManager(); CountOfPhotoDefaultDCIM = mediaFileManager.GetMediaFilesFromDirectory(new DirectoryInfo(PathToDefaultDCIM)).Count(); _pathToImagesDir = _initDCIMDirectory; CountOfPhotoCustomDCIM = mediaFileManager.GetMediaFilesFromDirectory(new DirectoryInfo(_initDCIMDirectory)).Count(); PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("CountOfPhotoDefaultDCIM")); PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("CountOfPhotoCustomDCIM")); updateDirContent(new DirectoryInfo(_pathToImagesDir)); }); } }
private async void generateNewRouteCommand(object obj) { _autoGeneratedRoute = null; if (obj != null) { int daysDepth = 0; try { daysDepth = Convert.ToInt32(obj); } catch (Exception) { } Analytics.TrackEvent("AutoRoute:Generate new started", new Dictionary <string, string> { { "daysDepth", daysDepth.ToString() } }); setPeriodByDepth(daysDepth); } bool maxCountOk = true; if (_selectedImagesCount > _maxCountForWarning) { maxCountOk = await askToMaxImageCountWarning(); } var startDate = DateTime.Now; if (maxCountOk) { GC.Collect(); IsRouteMaking = true; MaxCountProgressItems = _selectedImagesCount; attachReceiverMessagesForProgress(); await Task.Factory.StartNew(() => { ImagesCacheDbManager imagesCache = new ImagesCacheDbManager(new ImageManager(), PeriodRouteBegin, PeriodRouteEnd); imagesCache.UpdateMetadata(PathToImageDirectory); AutoRoutePreviewMakerManager routeMaker = new AutoRoutePreviewMakerManager(new LocalFileCacheManager()); _autoGeneratedRoute = routeMaker.Make(PeriodRouteBegin, PeriodRouteEnd, PathToImageDirectory); Device.BeginInvokeOnMainThread(() => { IsRouteMaking = false; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("PreviewRoutePoints")); UpdateRouteInfo(); var delay = DateTime.Now - startDate; Analytics.TrackEvent("AutoRoute:Route generate completed", new Dictionary <string, string> { { "delay", delay.ToString() }, { "Name", _autoGeneratedRoute.Name } }); }); }); detachReceiverMessagesForProgress(); } }
private async void startIndexGalleryCommand(object obj) { PermissionManager permissions = new PermissionManager(); var taskPermissionRead = await permissions.CheckAndRequestStorageReadPermission(); if (taskPermissionRead.HasFlag(Xamarin.Essentials.PermissionStatus.Granted)) { Device.BeginInvokeOnMainThread(async() => { var statusReadExtStorage = await Permissions.CheckStatusAsync <Permissions.StorageRead>().ConfigureAwait(false); if (statusReadExtStorage != Xamarin.Essentials.PermissionStatus.Granted) { await Permissions.RequestAsync <Permissions.StorageRead>().ConfigureAwait(false); } }); ImagesCacheDbManager imagesCache = new ImagesCacheDbManager(new ImageManager(), PeriodRouteBegin, PeriodRouteEnd); string pathToDCIMDirectory = string.Empty; ParameterManager parameterManager = new ParameterManager(); if (!parameterManager.Get("CameraDirectoryFullPath", out pathToDCIMDirectory)) { pathToDCIMDirectory = imagesCache.GetPathToCameraDirectory(); parameterManager.Set("CameraDirectoryFullPath", pathToDCIMDirectory); MainThread.BeginInvokeOnMainThread(() => { UserDialogs.Instance.Alert(CommonResource.AutoRoutes_WarningDefaultImagePath, CommonResource.CommonMsg_FirstStartDetected, "Ок"); }); } PathToImageDirectory = pathToDCIMDirectory; await Task.Factory.StartNew(() => { int maxCountFilesForShowModalDialog = 20; //кол-во файлов которое считаем большим и достаточным для отображения диалога обработки var listFilesForIndexing = imagesCache.GetFilenamesForIndexing(PathToImageDirectory); IsShowModalDialog = false; int countFiles = listFilesForIndexing.Count; IsGalleryIndexed = !(countFiles > 0); IsRouteMaking = countFiles > maxCountFilesForShowModalDialog; MaxCountProgressItems = countFiles; attachReceiverMessagesForProgress(); imagesCache.UpdateFilenames(listFilesForIndexing, PathToImageDirectory); detachReceiverMessagesForProgress(); CurrentProgressIndex = 0; }); await Task.Factory.StartNew(() => { _countImagesForToday = imagesCache.GetCountImagesForDaysAgo(0, PathToImageDirectory); _countImagesFor1Day = imagesCache.GetCountImagesForDaysAgo(1, PathToImageDirectory); _countImagesFor7Day = imagesCache.GetCountImagesForDaysAgo(7, PathToImageDirectory); int days = 7300; _countImagesForAllDays = imagesCache.GetCountImagesForDaysAgo(days, PathToImageDirectory); Device.BeginInvokeOnMainThread(() => { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("CountImagesForToday")); PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("CountImagesFor1Day")); PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("CountImagesFor7Day")); PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("CountImagesForAllDays")); IsRouteMaking = false; }); }); Device.BeginInvokeOnMainThread(() => { MinRangeDate = _localFileCacheManager.GetMinDate(PathToImageDirectory); MaxRangeDate = _localFileCacheManager.GetMaxDate(PathToImageDirectory); IsGalleryIndexed = true; CurrentMonthChart = DateTime.Now; IsShowWarningNeedIndexing = false; }); } }