/// <summary> /// 粘贴文件 /// </summary> private void PasteFile(IDataObject obj) { var files = obj.GetData(DataFormats.FileDrop) as string[]; if (files == null) { return; } var docDao = new DocDao(); var keyDao = new KeyDao(); foreach (var file in files) { if (Directory.Exists(file)) { ImportCat(_CurrCat, file); continue; } if (File.Exists(file)) { var docDto = ImportImg(docDao, keyDao, _CurrCat, file); if (docDto != null) { docDto.Prepare(); _Docs.Add(docDto); } continue; } } }
/// <summary> /// 以目录为单位导入 /// </summary> /// <param name="dto"></param> /// <param name="path"></param> private int ImportCat(DocDto dto, string path) { var qty = 0; var dirs = Directory.GetDirectories(path); if (dirs != null) { var docDao = new DocDao(); foreach (var dir in dirs) { var catDto = new CatImgDto(); catDto.path = dir; catDto.names = Path.GetFileName(dir); catDto.pid = dto.id; docDao.Save(catDto); qty += ImportCat(catDto, path); } } var files = System.IO.Directory.GetFiles(path); qty += ImportImg(dto, files); return(qty); }
/// <summary> /// 执行文件导入 /// </summary> /// <param name="docDao"></param> /// <param name="keyDao"></param> /// <param name="cat"></param> /// <param name="srcFile"></param> /// <returns></returns> private DocDto ImportImg(DocDao docDao, KeyDao keyDao, DocDto cat, string srcFile) { var name = Path.GetFileName(srcFile); var dstFile = DocDto.Combine(cat.FullRelativeFile, name); var docDto = new DocImgDto(); docDto.names = cat.GenDocName(name); docDto.path = dstFile; docDto.pid = cat.id; docDto.Init(_Cfg); var key = DocImgDto.GetFileHash(srcFile); if (string.IsNullOrEmpty(key)) { if (!docDto.ImportFile(srcFile, false)) { return(null); } } var keyDto = keyDao.Read(key); if (keyDto == null) { keyDto = new KeyDto(); keyDto.names = name; keyDto.key = key; keyDto.qty = 1; keyDto.file = dstFile; keyDao.Save(keyDto); if (!docDto.ImportFile(srcFile, false)) { return(null); } } else { keyDto.qty += 1; keyDao.Change(keyDto.id, 1); } docDto.key = keyDto.id; docDao.Save(docDto); return(docDto); }
/// <summary> /// 删除目录 /// </summary> /// <param name="doc"></param> private void DeleteCat(DocDto doc) { var parent = doc.Parent; if (parent == null) { return; } var docDao = new DocDao(); var items = docDao.List <DocDto>(doc); if (items != null && items.GetEnumerator().MoveNext()) { MessageBox.Show("目录不为空,不能删除!"); return; } docDao.Delete(doc.id); parent.CatList.Remove(doc); }