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);
            }
        }
示例#3
0
        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();
                        }
                    }
                }
            }
        }