private void fileListRefresher_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (currentDirectory != GetSSFolderPath()) { var item = new FileItem() { Name = "...", Date = "", Size = new FileSize(-2) }; item.AddTag("Folder"); GetFileItemsList().Insert(0, item); } UpdateFileList(); }
private void fileListRefresher_DoWork(object sender, DoWorkEventArgs e) { metroGrid1.Invoke((MethodInvoker)(() => { PoseFileList(); })); GetFileItemsList().Clear(); var directories = Directory.GetDirectories(currentDirectory); foreach (var path in directories) { var info = new DirectoryInfo(path); var fileItem = new FileItem(); fileItem.Name = info.Name; fileItem.Size = new FileSize(-1); fileItem.Date = info.LastWriteTime.ToString(); fileItem.AddTag("Folder"); GetFileItemsList().Add(fileItem); } var files = Directory.GetFiles(currentDirectory, "*.png"); foreach (var path in files) { var info = new FileInfo(path); var fileItem = new FileItem(); fileItem.Name = info.Name; fileItem.Size = new FileSize(info); fileItem.Date = info.LastWriteTime.ToString(); var sha256 = GetSHA256(path); if (containTagList.ContainsKey(sha256)) { foreach (var v in containTagList[sha256].TagItems) { fileItem.AddTag(v); } } GetFileItemsList().Add(fileItem); } }
private void fileSystemWatcher_Changed(object sender, FileSystemEventArgs e) { var path = e.FullPath; if (path == lastDetectSSPath) { return; } lastDetectSSPath = path; foreach (var v in waitCounter) { if (File.Exists(path)) { break; } Task.Delay(100).Wait(); } if (!settingsRunWithVRC.Checked || CheckIsVRCRunning()) { if (settingsSortSS.Checked) { var info = new FileInfo(path); var date = info.CreationTime - TimeSpan.FromHours(settingsBorderHour.Value); var folderName = string.Format("{0}-{1:D2}-{2:D2}", date.Year, date.Month, date.Day); var directoryPath = GetSSFolderPath() + "\\" + folderName; var newPath = directoryPath + "\\" + Path.GetFileName(path); try { if (!Directory.Exists(directoryPath)) { Directory.CreateDirectory(directoryPath); } File.Move(path, newPath); path = newPath; lastFilePath = newPath; LoadRecentlyImage(newPath); if (windowTabControl.SelectedIndex == 0) { LoadTagsData(GetSHA256(lastFilePath)); } if (GetSSFolderPath() == currentDirectory) { var dirInfo = new DirectoryInfo(directoryPath); if (!GetFileItemsList().Any(n => n.Name == dirInfo.Name && n.Tags.Contains("Folder"))) { var fileItem = new FileItem(); fileItem.Name = dirInfo.Name; fileItem.Size = new FileSize(-1); fileItem.Date = dirInfo.LastWriteTime.ToString(); var sha256 = GetSHA256(newPath); fileItem.AddTag("Folder"); GetFileItemsList().Add(fileItem); if (!metroCheckBox1.Checked) { fileItems.Add(fileItem); } SortRows(metroGrid1.SortedColumn, false); } } else if (Path.GetDirectoryName(newPath) == currentDirectory) { info = new FileInfo(newPath); var fileItem = new FileItem(); fileItem.Name = info.Name; fileItem.Size = new FileSize(info); fileItem.Date = info.LastWriteTime.ToString(); var sha256 = GetSHA256(newPath); if (containTagList.ContainsKey(sha256)) { foreach (var v in containTagList[sha256].TagItems) { fileItem.AddTag(v); } } GetFileItemsList().Add(fileItem); if (!metroCheckBox1.Checked) { fileItems.Add(fileItem); } SortRows(metroGrid1.SortedColumn, false); } if (settingsNewSSToQueue.Checked) { RegisterToImageQueue(newPath); if (windowTabControl.SelectedIndex == 2) { ReloadQueueImages(); } } //UpdateFileList(); return; } catch { } } if (settingsNewSSToQueue.Checked) { RegisterToImageQueue(path); if (windowTabControl.SelectedIndex == 2) { ReloadQueueImages(); } } lastFilePath = path; LoadRecentlyImage(path); if (Path.GetDirectoryName(path) == currentDirectory) { var info = new FileInfo(path); var fileItem = new FileItem(); fileItem.Name = info.Name; fileItem.Size = new FileSize(info); fileItem.Date = info.LastWriteTime.ToString(); var sha256 = GetSHA256(path); if (containTagList.ContainsKey(sha256)) { foreach (var v in containTagList[sha256].TagItems) { fileItem.AddTag(v); } } GetFileItemsList().Add(fileItem); } } }
private void PasteFile(string path) { var type = PasteFiles(path, out string[] destPath, out string[] sourcePath); if (type != 0) { foreach (var v in Enumerable.Range(0, destPath.Length)) { var dest = destPath[v]; var src = sourcePath[v]; var sha = GetSHA256(src); var withTags = containTagList.ContainsKey(sha); string[] tagData = null; if (withTags) { tagData = containTagList[sha].TagItems.ToArray(); } if (type == 2) { if (Path.GetDirectoryName(src) == currentDirectory) { var fileName = Path.GetFileName(src); var index = GetFileItemsList().IndexOf(fileItems.FirstOrDefault(n => n.Name == fileName)); if (index >= 0) { GetFileItemsList().RemoveAt(index); } if (metroCheckBox1.Checked) { index = rawFileItems.IndexOf(fileItems.FirstOrDefault(n => n.Name == fileName)); if (index >= 0) { rawFileItems.RemoveAt(index); } } UpdateFileList(); } if (withTags) { containTagList.Remove(sha); } } if (dest.Contains(GetSSFolderPath())) { var newSHA = GetSHA256(dest); if (tagData != null) { if (containTagList.ContainsKey(newSHA)) { containTagList.Add(newSHA, new FilePathTagList() { TagItems = tagData.ToList(), FilePath = dest }); } else { containTagList[newSHA].TagItems = tagData.ToList(); } } if (Path.GetDirectoryName(dest) == currentDirectory) { if (File.GetAttributes(dest).HasFlag(FileAttributes.Directory)) { var dirInfo = new DirectoryInfo(dest); var fileItem = new FileItem(); fileItem.Name = dirInfo.Name; fileItem.Size = new FileSize(-1); fileItem.Date = dirInfo.LastWriteTime.ToString(); fileItem.AddTag("Folder"); GetFileItemsList().Add(fileItem); } else { var info = new FileInfo(dest); var fileItem = new FileItem(); fileItem.Name = info.Name; fileItem.Size = new FileSize(info); fileItem.Date = info.LastWriteTime.ToString(); if (containTagList.ContainsKey(newSHA)) { foreach (var tag in containTagList[newSHA].TagItems) { fileItem.AddTag(tag); } } GetFileItemsList().Add(fileItem); } UpdateFileList(); } } } } }