Esempio n. 1
0
        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));
                });
            }
        }
Esempio n. 2
0
        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();
            }
        }
Esempio n. 3
0
        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;
                });
            }
        }