Esempio n. 1
0
        public override async void LoadState(object navParameter, Dictionary <string, object> viewModelState)
        {
            if (viewModelState != null)
            {
                this.validCameraPictures      = viewModelState["validCameraPictures"] as ObservableCollection <CameraPicturesModel>;
                this.invalidCameraPictures    = viewModelState["invalidCameraPictures"] as CameraPicturesModel;
                this.CameraPicturesGridHeight = (double)viewModelState["cameraPicturesGridHeight"];
                this.IsReadyToProceed         = (bool)viewModelState["isReadyToProceed"];
            }
            else if (navParameter != null)
            {
                var selectedFiles = navParameter as IReadOnlyList <StorageFile>;
                if (selectedFiles.Count != 0)
                {
                    await this.ExecuteLoad(selectedFiles);
                }
                else
                {
                    this.NavigationService.GoBack();
                }
            }

            this.AddShareContract();
            this.IsAllLoaded = true;
        }
Esempio n. 2
0
        private async Task ExecuteLoad(IReadOnlyList <StorageFile> selectedFiles)
        {
            this.validCameraPictures.Clear();
            this.invalidCameraPictures = new CameraPicturesModel();
            int cameraCollectionsCount = 0;

            foreach (var file in selectedFiles)
            {
                if (!file.ContentType.Contains("image"))
                {
                    break;
                }

                var cameraInfo = await CameraMetaReader.GetCameraMeta(file);

                var cameraPictures = CameraMetaReader.GetCameraPicturesModelExtended(
                    this.validCameraPictures, this.invalidCameraPictures, cameraInfo);

                if (this.validCameraPictures.Count != cameraCollectionsCount)
                {
                    this.RecalculateCameraPicturesGridHeight();
                    cameraPictures.CameraSelectionStateChanged += CameraSelectionStateChangedEvent;
                    cameraCollectionsCount++;
                }

                var picture = await PictureMetaReader.CreateNewPictureModel(file);

                cameraPictures.Add(picture);
            }

            this.SetReadResultMessage();
        }
        internal static CameraPicturesModel GetCameraPicturesModelMixed(
            ObservableCollection <CameraPicturesModel> cameraPicturesCollection, List <string> cameraInfo)
        {
            if (cameraInfo[0] == UnknownMeta.CameraManufacturer && cameraInfo[1] == UnknownMeta.CameraModel)
            {
                var invalidCameraPictures = cameraPicturesCollection.FirstOrDefault(c => c.IsCameraWithValidMeta == false);
                if (invalidCameraPictures == null)
                {
                    invalidCameraPictures = new CameraPicturesModel();
                    SetCameraMeta(invalidCameraPictures, cameraInfo);
                }

                return(invalidCameraPictures);
            }
            else
            {
                var cameraPictures = cameraPicturesCollection.FirstOrDefault(c => c.IsCameraWithValidMeta == true);
                if (cameraPictures == null)
                {
                    cameraPictures = new CameraPicturesModel();
                    SetCameraMeta(cameraPictures, cameraInfo);
                }

                return(cameraPictures);
            }
        }
Esempio n. 4
0
        public override void LoadState(object navParameter, Dictionary <string, object> viewModelState)
        {
            if (viewModelState != null)
            {
                this.validCameraPictures   = viewModelState["validCameraPictures"] as ObservableCollection <CameraPicturesModel>;
                this.invalidCameraPictures = viewModelState["invalidCameraPictures"] as CameraPicturesModel;
                this.mainCamera            = viewModelState["mainCamera"] as CameraTimeSynchroniserModel;
                this.otherCameras          = viewModelState["otherCameras"] as ObservableCollection <CameraTimeSynchroniserModel>;
                this.fileNameTemplate      = viewModelState["fileNameTemplate"] as FileNameTemplateModel;
            }
            else if (navParameter != null)
            {
                var navParameterAsList = navParameter as List <object>;

                var validCameraPicturesAsNav   = navParameterAsList[0] as ObservableCollection <CameraPicturesModel>;
                var orderedValidCameraPictures =
                    validCameraPicturesAsNav.OrderBy(c => c.CameraManufacturer).ThenBy(c => c.CameraModel);

                foreach (var cameraPictures in orderedValidCameraPictures)
                {
                    this.validCameraPictures.Add(cameraPictures);
                }

                this.invalidCameraPictures = navParameterAsList[1] as CameraPicturesModel;

                this.SetPicturesForTimeMerging();
            }

            this.AddShareContract();
            this.IsReadyToProceed = true;
            this.IsAllLoaded      = true;
        }
        private async Task SplitValidAndInvalidPictures(
            List <object> picturesDataForRename, List <PictureModel> sortedPicturesByDateTime)
        {
            var validCameraPictures   = new List <PictureModel>();
            var invalidCameraPictures = new CameraPicturesModel();

            invalidCameraPictures.CameraManufacturer = UnknownMeta.CameraManufacturer;
            invalidCameraPictures.CameraModel        = UnknownMeta.CameraModel;

            foreach (var picture in sortedPicturesByDateTime)
            {
                var cameraInfo = await CameraMetaReader.GetCameraMeta(picture.StorageFile);

                if (cameraInfo[0] == UnknownMeta.CameraManufacturer && cameraInfo[1] == UnknownMeta.CameraModel)
                {
                    invalidCameraPictures.Add(picture);
                }
                else
                {
                    validCameraPictures.Add(picture);
                }
            }

            picturesDataForRename.Add(validCameraPictures);
            picturesDataForRename.Add(invalidCameraPictures);
        }
        private void AddInvalidCameraPictures(CameraPicturesModel invalidCameraPictures)
        {
            if (invalidCameraPictures != null)
            {
                foreach (var picture in invalidCameraPictures.CameraPictures)
                {
                    this.AddPicture(picture);
                }

                this.picturesWithInavalidMetaCount = invalidCameraPictures.PicturesCount;
            }
        }
        private CameraTimeSynchroniserModel GetTimeSynchroniser(CameraPicturesModel cameraWithPictures)
        {
            var pictureTimeSynchroniser = this.cameraTimeModels.FirstOrDefault(
                x => x.CameraManufacturer == cameraWithPictures.CameraManufacturer &&
                x.CameraModel == cameraWithPictures.CameraModel);

            if (pictureTimeSynchroniser == null)
            {
                throw new ArgumentException("Camera manufacturer or model missmatch");
            }

            return(pictureTimeSynchroniser);
        }
        private static void SetCameraMeta(CameraPicturesModel cameraPictures, List <string> cameraInfo)
        {
            cameraPictures.CameraManufacturer = cameraInfo[0];
            cameraPictures.CameraModel        = cameraInfo[1];

            if (cameraInfo[0] == UnknownMeta.CameraManufacturer && cameraInfo[1] == UnknownMeta.CameraModel)
            {
                cameraPictures.IsCameraWithValidMeta = false;
            }
            else
            {
                cameraPictures.IsCameraWithValidMeta = true;
            }
        }
        internal static CameraPicturesModel GetCameraPicturesModel(
            ObservableCollection <CameraPicturesModel> cameraPicturesCollection, List <string> cameraInfo)
        {
            var cameraPictures = cameraPicturesCollection.FirstOrDefault(
                c => c.CameraManufacturer == cameraInfo[0] && c.CameraModel == cameraInfo[1]);

            if (cameraPictures == null)
            {
                cameraPictures = new CameraPicturesModel();
                SetCameraMeta(cameraPictures, cameraInfo);
                cameraPicturesCollection.Add(cameraPictures);
            }

            return(cameraPictures);
        }
        private CameraTimeSynchroniserModel ParseCameraTimeSynchroniserModel(CameraPicturesModel cameraPictures)
        {
            var firstPicture = cameraPictures.CameraPictures.First();

            return(new CameraTimeSynchroniserModel
            {
                StorageFile = firstPicture.StorageFile,
                IsCameraSelected = cameraPictures.IsCameraSelected,
                CameraManufacturer = cameraPictures.CameraManufacturer,
                CameraModel = cameraPictures.CameraModel,
                PicturesCount = cameraPictures.PicturesCount,
                Year = firstPicture.Year,
                Month = firstPicture.Month,
                Day = firstPicture.Day,
                Hour = firstPicture.Hour,
                Minute = firstPicture.Minute,
                Second = firstPicture.Second
            });
        }
        internal static CameraPicturesModel GetCameraPicturesModelExtended(
            ObservableCollection <CameraPicturesModel> validCameraPictures,
            CameraPicturesModel invalidCameraPictures, List <string> cameraInfo)
        {
            if (cameraInfo[0] == UnknownMeta.CameraManufacturer && cameraInfo[1] == UnknownMeta.CameraModel)
            {
                if (invalidCameraPictures == null)
                {
                    invalidCameraPictures = new CameraPicturesModel();
                    SetCameraMeta(invalidCameraPictures, cameraInfo);
                }

                return(invalidCameraPictures);
            }
            else
            {
                var cameraPictures = GetCameraPicturesModel(validCameraPictures, cameraInfo);
                return(cameraPictures);
            }
        }