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; }
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); } }
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); } }