public ChangeModeFileOperationInfo(FileSystemItemInfo item, FilePermission? userMode, FilePermission? groupMode, FilePermission? otherMode, bool? uidBit, bool? gidBit, bool? stickyBit, bool recursive) : base(item, recursive) { this.UserMode = userMode; this.GroupMode = groupMode; this.OtherMode = otherMode; this.UIDBit = uidBit; this.GIDBit = gidBit; this.StickyBit = stickyBit; }
protected override void Action(FileSystemItemInfo item) { ChangeModeFileOperationInfo info = (ChangeModeFileOperationInfo)this.Info; this.directoryService.ChangePermissions (item, info.UserMode.HasValue ? info.UserMode.Value : item.UserMode, info.GroupMode.HasValue ? info.GroupMode.Value : item.GroupMode, info.OtherMode.HasValue ? info.OtherMode.Value : item.OtherMode, info.UIDBit.HasValue ? info.UIDBit.Value : item.UIDBit, info.GIDBit.HasValue ? info.GIDBit.Value : item.GIDBit, info.StickyBit.HasValue ? info.StickyBit.Value : item.StickyBit); }
protected abstract void Action(FileSystemItemInfo item);
protected override void Action(FileSystemItemInfo item) { this.directoryService.Delete (item); }
private string GetTargetPath(FileSystemItemInfo item) { CopyFileOperationInfo info = (CopyFileOperationInfo)this.Info; string relativeTargetPath = item.DirectoryPath.Remove (0, info.Item.DirectoryPath.Length); if (relativeTargetPath.StartsWith ("/")) relativeTargetPath = relativeTargetPath.Remove (0, 1); return Path.Combine (info.TargetItem.Path, relativeTargetPath); }
protected override void PreAction(FileSystemItemInfo item) { base.PreAction (item); if (item is DirectoryItemInfo && string.IsNullOrEmpty (item.LinkTarget)) { string targetPath = this.GetTargetPath (item); FileSystemItemInfo targetItem = this.directoryService.Get (Path.Combine (targetPath, item.Name), 0); if (targetItem is FileItemInfo) directoryService.Delete (targetItem); if (targetItem == null || targetItem is FileItemInfo) Directory.CreateDirectory (Path.Combine (targetPath, item.Name)); } }
public int Start(FileSystemItemInfo item) { return (int)this.Call ("Start", item); }
protected override void Action(FileSystemItemInfo item) { ChangeOwnerFileOperationInfo info = (ChangeOwnerFileOperationInfo)this.Info; this.directoryService.ChangeOwner (item, info.NewUID, info.NewGID); }
private void FileOperationItemWorker(FileSystemItemInfo item, bool check) { if (!this.BlockedItems.Contains (item.Path)) { ((FileOperationInfo)this.Info).Actual = item; if (check) { this.CheckAction (item); } else { this.PreAction (item); } if (this.ShouldRecruse && item is DirectoryItemInfo) { foreach (FileSystemItemInfo contentItem in this.directoryService.GetContents ((DirectoryItemInfo)item, 0)) { this.FileOperationItemWorker (contentItem, check); } } if (!check) { this.Action (item); this.PostAction (item); } } }
public MoveFileOperationInfo(FileSystemItemInfo item, DirectoryItemInfo targetItem, bool quiet) : base(item, targetItem, quiet) { }
public FileOperationInfo(FileSystemItemInfo item) : base() { this.Item = item; }
public DeleteFileOperationInfo(FileSystemItemInfo item) : base(item) { }
public CopyFileOperationInfo(FileSystemItemInfo item, DirectoryItemInfo targetItem, bool quiet) : base(item) { this.TargetItem = targetItem; this.Quiet = quiet; }
public ChangeFileOperationInfo(FileSystemItemInfo item, bool recursive) : base(item) { this.Recursive = recursive; }
public int Start(FileSystemItemInfo item, DirectoryItemInfo targetItem, bool quiet) { return (int)this.Call ("Start", item, targetItem, quiet); }
protected virtual void CheckAction(FileSystemItemInfo item) { }
protected virtual void PreAction(FileSystemItemInfo item) { }
public ChangeOwnerFileOperationInfo(FileSystemItemInfo item, uint newUID, uint newGID, bool recursive) : base(item, recursive) { this.NewUID = newUID; this.NewGID = newGID; }
protected override void Action(FileSystemItemInfo item) { CopyFileOperationInfo info = (CopyFileOperationInfo)this.Info; info.Actual = item; if (item is FileItemInfo) { info.ActualProgress = new ProgressInfo (); info.ActualProgress.Max = ((FileItemInfo)item).Size; } string targetPath = this.GetTargetPath (item); if (item is FileItemInfo || (item is DirectoryItemInfo && !string.IsNullOrEmpty (item.LinkTarget))) { FileSystemItemInfo targetItem = this.directoryService.Get (Path.Combine (this.GetTargetPath (item), item.Name), 0); if (targetItem != null) this.directoryService.Delete (targetItem); FileProgressWatcher watcher = new FileProgressWatcher (Path.Combine (targetPath, item.Name), info.ActualProgress); try { if (info is MoveFileOperationInfo) this.directoryService.Move (item, ((DirectoryItemInfo)this.directoryService.Get (targetPath, 0))); else { this.directoryService.Copy (item, ((DirectoryItemInfo)this.directoryService.Get (targetPath, 0))); FileSystemItemInfo newItem = this.directoryService.Get (System.IO.Path.Combine (targetPath, item.Name), 0); this.directoryService.ChangePermissions (newItem, item.UserMode, item.GroupMode, item.OtherMode, item.UIDBit, item.GIDBit, item.StickyBit); this.directoryService.ChangeOwner (newItem, item.UID, item.GID); } } finally { watcher.Stop (); } } else if (info is MoveFileOperationInfo && Directory.GetDirectories (item.Path).Length == 0 && Directory.GetFiles (item.Path).Length == 0) { this.directoryService.Delete (item); } if (item is FileItemInfo) { info.ActualProgress.Current = ((FileItemInfo)item).Size; info.OverallProgress.Current += ((FileItemInfo)item).Size; } }
protected override void CheckAction(FileSystemItemInfo item) { base.CheckAction (item); if (!item.CanCopy ()) throw new AccessViolationException ("you have no permission to copy <" + item.Path + ">"); FileSystemItemInfo targetItem = this.directoryService.Get (Path.Combine (this.GetTargetPath (item), item.Name), 0); if (targetItem is FileItemInfo && !((CopyFileOperationInfo)this.Info).Quiet) { ((CopyFileOperationInfo)this.Info).ConflictItem = targetItem; if (targetItem.CanDelete ()) { ((CopyFileOperationInfo)this.Info).ConflictOverwriteable = true; } else { ((CopyFileOperationInfo)this.Info).ConflictOverwriteable = false; } this.InConflict = true; } while (this.InConflict) Thread.Sleep (10); if (item is FileItemInfo) ((CopyFileOperationInfo)this.Info).OverallProgress.Max += ((FileItemInfo)item).Size; }
protected override void CheckAction(FileSystemItemInfo item) { base.CheckAction (item); if (!item.CanChange ()) throw new AccessViolationException ("you have no permission to change <" + item.Path + ">"); }
public int Start(FileSystemItemInfo item, ushort newUID, ushort newGID, bool recursive) { return (int)this.Call ("Start", item, newUID, newGID, recursive); }