コード例 #1
0
        public override void LoadState(object navParameter, Dictionary <string, object> viewModelState)
        {
            if (viewModelState != null)
            {
                this.allCameraPictures = viewModelState["allCameraPictures"] as ObservableCollection <CameraPicturesModel>;
                this.cameraTimeModels  = viewModelState["cameraTimeModels"] as ObservableCollection <CameraTimeSynchroniserModel>;
                this.fileNameTemplate  = viewModelState["fileNameTemplate"] as FileNameTemplateModel;
            }
            else if (navParameter != null)
            {
                var allCameraPicturesAsNav = navParameter as ObservableCollection <CameraPicturesModel>;

                for (int i = 0; i < allCameraPicturesAsNav.Count; i++)
                {
                    var sortedByDatePictures = allCameraPicturesAsNav[i].CameraPictures.OrderBy(p => p.StorageFile.DateCreated).ToList();
                    allCameraPicturesAsNav[i].Clear();
                    allCameraPicturesAsNav[i].AddRange(sortedByDatePictures);
                }

                this.allCameraPictures.Clear();
                var sortedAllCameraPictures = allCameraPicturesAsNav.OrderBy(c => c.CameraManufacturer).ThenBy(c => c.CameraModel);
                foreach (var cameraPictures in sortedAllCameraPictures)
                {
                    this.allCameraPictures.Add(cameraPictures);
                }

                this.SetPicturesForTimeMerging();
            }

            this.AddShareContract();
            this.IsReadyToProceed = true;
            this.IsAllLoaded      = true;
        }
コード例 #2
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;
        }
コード例 #3
0
        internal static void SetPicturesNewFileName(List <PictureModel> pictures, FileNameTemplateModel fileNameTemplate)
        {
            int day              = 1;
            int enumeration      = 1;
            int picturesCount    = pictures.Count();
            int namingErrorCount = 0;

            for (int i = 0; i < picturesCount; i++)
            {
                StringBuilder newFileName = new StringBuilder();
                newFileName.Append(fileNameTemplate.Keyword);

                AddDayToName(pictures, i, newFileName, ref day, fileNameTemplate);
                AddDateToName(pictures, i, newFileName, fileNameTemplate);
                AddTimeToName(pictures, i, newFileName, fileNameTemplate);
                AddEnumerationToName(newFileName, picturesCount, ref enumeration, fileNameTemplate);
                AddFileType(pictures, i, newFileName);

                pictures[i].NewFileName = newFileName.ToString();
                bool isNewNameUnique = CheckIfNameIsUnique(pictures, pictures[i]);
                while (!isNewNameUnique)
                {
                    namingErrorCount++;
                    ChangeNewNameAgain(pictures[i], namingErrorCount);
                    isNewNameUnique = CheckIfNameIsUnique(pictures, pictures[i]);
                }
            }
        }
コード例 #4
0
        private static void AddEnumerationToName(StringBuilder newFileName, int picturesCount,
                                                 ref int enumeration, FileNameTemplateModel fileNameTemplate)
        {
            if (fileNameTemplate.EnumerationIncluded == "Yes")
            {
                newFileName.Append(" ");
                if (picturesCount < 1000)
                {
                    newFileName.Append(enumeration.ToString("D3"));
                }
                else if (picturesCount < 10000)
                {
                    newFileName.Append(enumeration.ToString("D4"));
                }
                else if (picturesCount < 100000)
                {
                    newFileName.Append(enumeration.ToString("D5"));
                }
                else if (picturesCount < 1000000)
                {
                    newFileName.Append(enumeration.ToString("D6"));
                }

                enumeration++;
            }
        }
コード例 #5
0
 private static void AddTimeToName(List <PictureModel> pictures, int index,
                                   StringBuilder newFileName, FileNameTemplateModel fileNameTemplate)
 {
     if (fileNameTemplate.TimeIncluded == FileNameTemplateStrings.TimeHourMinuteSecondMillisecond)
     {
         newFileName.Append(" ");
         newFileName.Append(pictures[index].Hour.ToString("D2"));
         newFileName.Append(".");
         newFileName.Append(pictures[index].Minute.ToString("D2"));
         newFileName.Append(".");
         newFileName.Append(pictures[index].Second.ToString("D2"));
         newFileName.Append(" ");
         newFileName.Append(pictures[index].Millisecond.ToString("D2"));
     }
     else if (fileNameTemplate.TimeIncluded == FileNameTemplateStrings.TimeHourMinuteSecond)
     {
         newFileName.Append(" ");
         newFileName.Append(pictures[index].Hour.ToString("D2"));
         newFileName.Append(".");
         newFileName.Append(pictures[index].Minute.ToString("D2"));
         newFileName.Append(".");
         newFileName.Append(pictures[index].Second.ToString("D2"));
     }
     else if (fileNameTemplate.TimeIncluded == FileNameTemplateStrings.TimeHourMinute)
     {
         newFileName.Append(" ");
         newFileName.Append(pictures[index].Hour.ToString("D2"));
         newFileName.Append(".");
         newFileName.Append(pictures[index].Minute.ToString("D2"));
     }
 }
コード例 #6
0
        public CustomNamesGeneratorViewModel()
        {
            this.allCameraPictures = new ObservableCollection <CameraPicturesModel>();
            this.cameraTimeModels  = new ObservableCollection <CameraTimeSynchroniserModel>();
            this.fileNameTemplate  = new FileNameTemplateModel();

            this.GeneratePicturesNames = new RelayCommand(this.GeneratePicturesNamesCommand);
            this.LoadPictures          = new RelayCommand(this.LoadPicturesCommand);
        }
コード例 #7
0
        public WizardNamesGeneratorViewModel()
        {
            this.validCameraPictures = new ObservableCollection <CameraPicturesModel>();
            this.otherCameras        = new ObservableCollection <CameraTimeSynchroniserModel>();
            this.fileNameTemplate    = new FileNameTemplateModel();

            this.GeneratePicturesNames = new RelayCommand(this.GeneratePicturesNamesCommand);
            this.LoadPictures          = new RelayCommand(this.LoadPicturesCommand);
        }
コード例 #8
0
        public override async void LoadState(object navParameter, Dictionary <string, object> viewModelState)
        {
            if (viewModelState != null)
            {
                this.allPictures                  = viewModelState["allPictures"] as ObservableCollection <PictureModel>;
                this.cameraTimeSynchroniser       = viewModelState["cameraTimeSynchroniser"] as CameraTimeSynchroniserModel;
                this.fileNameTemplate             = viewModelState["fileNameTemplate"] as FileNameTemplateModel;
                this.picturesWithInvalidMetaCount = (int)viewModelState["picturesWithInvalidMetaCount"];
            }
            else if (navParameter != null)
            {
                var navParameterAsList = navParameter as List <object>;

                var allPicturesAsNavParameter = navParameterAsList[0] as List <PictureModel>;
                this.picturesWithInvalidMetaCount = (int)navParameterAsList[1];

                var sortedByDatePictures = allPicturesAsNavParameter.OrderBy(p => p.StorageFile.DateCreated).ToList();
                if (picturesWithInvalidMetaCount > 0)
                {
                    var picturesWithInvalidMeta = new List <PictureModel>();
                    foreach (var picture in sortedByDatePictures)
                    {
                        var cameraInfo = await CameraMetaReader.GetCameraMeta(picture.StorageFile);

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

                    foreach (var picture in picturesWithInvalidMeta)
                    {
                        this.allPictures.Add(picture);
                    }
                }

                this.SetPicturesForTimeMerging();
            }

            this.AddShareContract();
            this.IsReadyToProceed = true;
            this.IsAllLoaded      = true;
        }
コード例 #9
0
 private static void AddDateToName(List <PictureModel> pictures, int index,
                                   StringBuilder newFileName, FileNameTemplateModel fileNameTemplate)
 {
     if (fileNameTemplate.DateIncluded == FileNameTemplateStrings.DateYearMonthDay)
     {
         newFileName.Append(" ");
         newFileName.Append(pictures[index].Year.ToString("D4"));
         newFileName.Append(".");
         newFileName.Append(pictures[index].Month.ToString("D2"));
         newFileName.Append(".");
         newFileName.Append(pictures[index].Day.ToString("D2"));
     }
     else if (fileNameTemplate.DateIncluded == FileNameTemplateStrings.DateMonthDay)
     {
         newFileName.Append(" ");
         newFileName.Append(pictures[index].Month.ToString("D2"));
         newFileName.Append(".");
         newFileName.Append(pictures[index].Day.ToString("D2"));
     }
 }
コード例 #10
0
        private static void AddDayToName(List <PictureModel> pictures, int index,
                                         StringBuilder newFileName, ref int day, FileNameTemplateModel fileNameTemplate)
        {
            if (fileNameTemplate.DayIncluded == FileNameTemplateStrings.DayYes)
            {
                newFileName.Append(" Day ");
                if (index > 0)
                {
                    if (pictures[index - 1].NewDateTime.Day != pictures[index].NewDateTime.Day)
                    {
                        day += (int)(pictures[index].NewDateTime - pictures[index - 1].NewDateTime).TotalDays;
                    }

                    newFileName.Append(day);
                }
                else
                {
                    newFileName.Append(day);
                }
            }
        }