コード例 #1
0
ファイル: SolutionRecover.cs プロジェクト: lanicon/Ginger
        public void SolutionRecoverStart(bool showRecoverPageAnyway = false)
        {
            ObservableList <RecoveredItem> recovredItems = new ObservableList <RecoveredItem>();

            if (Directory.Exists(mRecoverFolderPath))
            {
                NewRepositorySerializer serializer = new NewRepositorySerializer();

                foreach (var directory in new DirectoryInfo(mRecoverFolderPath).GetDirectories())
                {
                    string timestamp = directory.Name.ToString().Replace("AutoSave_", string.Empty);

                    IEnumerable <FileInfo> files = directory.GetFiles("*", SearchOption.AllDirectories);

                    foreach (FileInfo file in files)
                    {
                        try
                        {
                            RecoveredItem recoveredItem = new RecoveredItem();
                            recoveredItem.RecoveredItemObject                  = serializer.DeserializeFromFile(file.FullName);
                            recoveredItem.RecoverDate                          = timestamp;
                            recoveredItem.RecoveredItemObject.FileName         = file.FullName;
                            recoveredItem.RecoveredItemObject.ContainingFolder = file.FullName.Replace(directory.FullName, "~");
                            recoveredItem.Status = eRecoveredItemStatus.PendingRecover;
                            recovredItems.Add(recoveredItem);
                        }
                        catch (Exception ex)
                        {
                            Reporter.ToLog(eLogLevel.ERROR, "Failed to fetch recover item : " + file.FullName, ex);
                        }
                    }
                }

                if (recovredItems.Count == 0)
                {
                    CleanUp(); //have empty folders
                }
            }

            if (recovredItems.Count > 0 || showRecoverPageAnyway)
            {
                RepositoryItemHelper.RepositoryItemFactory.ShowRecoveryItemPage(recovredItems);
            }
        }
コード例 #2
0
        public void SolutionRecoverStart(bool showRecoverPageAnyway = false)
        {
            ObservableList <RecoveredItem> recovredItems = new ObservableList <RecoveredItem>();

            if (Directory.Exists(mRecoverFolderPath))
            {
                NewRepositorySerializer serializer = new NewRepositorySerializer();

                foreach (var directory in new DirectoryInfo(mRecoverFolderPath).GetDirectories())
                {
                    string timestamp = directory.Name.ToString().Replace("AutoSave_", string.Empty);

                    IEnumerable <FileInfo> files = directory.GetFiles("*", SearchOption.AllDirectories);

                    foreach (FileInfo file in files)
                    {
                        RecoveredItem recoveredItem = new RecoveredItem();
                        recoveredItem.RecoveredItemObject                  = serializer.DeserializeFromFile(file.FullName);
                        recoveredItem.RecoverDate                          = timestamp;
                        recoveredItem.RecoveredItemObject.FileName         = file.FullName;
                        recoveredItem.RecoveredItemObject.ContainingFolder = file.FullName.Replace(directory.FullName, "~");
                        recoveredItem.Status = eRecoveredItemStatus.PendingRecover;
                        recovredItems.Add(recoveredItem);
                    }
                }

                if (recovredItems.Count == 0)
                {
                    CleanUp(); //have empty folders
                }
            }

            //show recover page
            if (recovredItems.Count > 0 || showRecoverPageAnyway)
            {
                RecoverPage recoverPage = new SolutionAutoSaveAndRecover.RecoverPage(recovredItems);
                recoverPage.ShowAsWindow(eWindowShowStyle.Dialog);
            }
        }