public void AddFile(string source, string dest, HistoryTypeEnum historyType) { switch (historyType) { case HistoryTypeEnum.Added: case HistoryTypeEnum.Changed: case HistoryTypeEnum.Deleted: var relativePath = ExtractRelativePath(HistoryData.TargetPath, dest); var hItem = new HistoryItem() { SourcePath = source, TargetPath = relativePath, HistoryType = historyType }; HistoryData.HistoryItemList.Add(hItem); break; case HistoryTypeEnum.NoChange: default: break; } }
protected override void AddFilesToFolderMenuItem(FolderMenuItem item, string itemPath, BackupSessionHistory history) { var profile = ProjectData.CurrentBackupProfile; if ((profile.BackupType != BackupTypeEnum.Differential) || (RestoreActionType == RestoreActionTypeEnum.LatestVersion)) { var fileList = m_IStorage.GetFiles(itemPath); foreach (var file in fileList.Where(f => !IsPathExistsInPathList(f, item.ChildFolderMenuItems))) { //var filePath = m_IStorage.Combine(item.Path, file); var fileName = m_IStorage.GetFileName(file); FileAttributes attr = File.GetAttributes(file); if (!IsHidden(attr)) { bool bSelected = false; var rp = m_IStorage.Combine(item.RelativePath, fileName); item.ChildFolderMenuItems.Add(CreateMenuItem(m_IStorage.IsFolder(file), bSelected, file, rp, fileName, item, attr)); } } } else { ////History Items if (history != null) { foreach (var historyItem in history.HistoryData?.HistoryItemList) { //var filePath = m_IStorage.Combine(item.Path, file); if ((m_IStorage.GetDirectoryName(historyItem.TargetPath) == itemPath) || (historyItem.HistoryType == HistoryTypeEnum.Deleted && (m_IStorage.GetDirectoryName(historyItem.SourcePath) == itemPath))) { var fileName = m_IStorage.GetFileName(historyItem.TargetPath); { bool bSelected = false; var rp = m_IStorage.Combine(item.RelativePath, fileName); var foundItem = item.ChildFolderMenuItems.Where(i => i.Name == fileName).FirstOrDefault(); var timeDate = history?.HistoryData?.TimeStamp; HistoryTypeEnum historyType = historyItem.HistoryType; if (foundItem == null) { var newItem = CreateMenuItem(historyItem.HistoryItemType == HistoryItemTypeEnum.Directory, bSelected, historyItem.TargetPath, rp, fileName, item, 0, historyType); Application.Current.Dispatcher.Invoke(new Action(() => { item.ChildFolderMenuItems.Add(newItem); })); foundItem = newItem; } var newMenuItem = CreateMenuItem(historyItem.HistoryItemType == HistoryItemTypeEnum.Directory, bSelected, historyItem.TargetPath, rp, timeDate.ToString(), foundItem, 0, historyType); Application.Current.Dispatcher.Invoke(new Action(() => { foundItem.ChildFolderMenuItems.Add(newMenuItem); })); } } } } //Latest items if (m_IStorage.DirectoryExists(itemPath)) { var fileList = m_IStorage.GetFiles(itemPath); foreach (var file in fileList) { //var filePath = m_IStorage.Combine(item.Path, file); var fileName = m_IStorage.GetFileName(file); FileAttributes attr = File.GetAttributes(file); if (!IsHidden(attr)) { bool bSelected = false; var rp = m_IStorage.Combine(item.RelativePath, fileName); var foundItem = item.ChildFolderMenuItems.Where(i => i.Name == fileName).FirstOrDefault(); bool bDeletedItem = false; HistoryTypeEnum historyType = HistoryTypeEnum.NoChange; bool bCreatedNew = false; if (foundItem == null) { if (history?.HistoryData?.SessionHistoryIndex > 1) { bDeletedItem = true; historyType = HistoryTypeEnum.Deleted; } var newItem = CreateMenuItem(m_IStorage.IsFolder(file), bSelected, file, rp, fileName, item, attr, historyType); Application.Current.Dispatcher.Invoke(new Action(() => { item.ChildFolderMenuItems.Add(newItem); })); foundItem = newItem; bCreatedNew = true; } if (bCreatedNew || foundItem.ChildFolderMenuItems.Where(i => i.Path == file).FirstOrDefault() == null) { if (bDeletedItem) { historyType = HistoryTypeEnum.Deleted; } else { historyType = HistoryTypeEnum.Changed; } var timeDate = history?.HistoryData?.TimeStamp; var newMenuItem = CreateMenuItem(m_IStorage.IsFolder(file), bSelected, file, rp, timeDate.ToString(), foundItem, attr, historyType); Application.Current.Dispatcher.Invoke(new Action(() => { foundItem.ChildFolderMenuItems.Add(newMenuItem); })); } } } } } }