예제 #1
0
        public static IItemNode GetListFileFolder(IItemNode node)
        {
            string path = node.GetFullPathString();

            node.Childs.Clear();
            foreach (string item in Directory.GetDirectories(path))
            {
                DirectoryInfo info = new DirectoryInfo(item);
                if (CheckAttribute(info.Attributes, FileAttributes.System) | CheckAttribute(info.Attributes, FileAttributes.Offline))
                {
                    continue;
                }
                IItemNode f = new ItemNode();
                f.Info.Name    = info.Name;
                f.Info.Size    = -1;
                f.Info.DateMod = info.LastWriteTime;
                node.AddChild(f);
            }
            foreach (string item in Directory.GetFiles(path))
            {
                FileInfo info = new FileInfo(item);
                if (CheckAttribute(info.Attributes, FileAttributes.System) | CheckAttribute(info.Attributes, FileAttributes.Offline))
                {
                    continue;
                }
                IItemNode f = new ItemNode();
                f.Info.Name    = info.Name;
                f.Info.Size    = info.Length;
                f.Info.DateMod = info.LastWriteTime;
                node.AddChild(f);
            }
            return(node);
        }
예제 #2
0
        static void GetItems(MegaApiClient client, INode node, IItemNode Enode)
        {
            foreach (INode child in client.GetNodes(node))
            {
                ItemNode c = new ItemNode();
                c.Info.ID         = child.Id;
                c.Info.Name       = child.Name;
                c.Info.DateMod    = child.LastModificationDate;
                c.Info.MegaCrypto = new MegaKeyCrypto(child as INodeCrypto);
                switch (child.Type)
                {
                case RootType.File:
                    c.Info.Size = child.Size;
                    Enode.AddChild(c);
                    break;

                case RootType.Directory:
                    c.Info.Size = -1;
                    Enode.AddChild(c);
                    break;

                default: break;
                }
            }
        }
예제 #3
0
        void uploadfile()
        {
            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Multiselect      = true;
            ofd.Filter           = PCPath.FilterAllFiles;
            ofd.InitialDirectory = PCPath.Mycomputer;
            DialogResult result = ofd.ShowDialog();

            if (result != DialogResult.OK | result != DialogResult.Yes)
            {
                return;
            }
            List <IItemNode> items = new List <IItemNode>();
            IItemNode        root  = ItemNode.GetNodeFromDiskPath(System.IO.Path.GetDirectoryName(ofd.FileNames[0]));

            foreach (string s in ofd.SafeFileNames)
            {
                IItemNode n = new ItemNode();
                n.Info.Name = s;
                root.AddChild(n);
                FileInfo info = new FileInfo(n.GetFullPathString());
                n.Info.Size    = info.Length;
                n.Info.DateMod = info.LastWriteTime;
                items.Add(n);
            }
            Setting_UI.reflection_eventtocore.ExplorerAndManagerFile.TransferItems(items, root, managerehistory_itemnodes.NodeWorking(), false);
        }
예제 #4
0
        private void uploadFileToHereToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Multiselect      = true;
            ofd.Filter           = PCPath.FilterAllFiles;
            ofd.InitialDirectory = PCPath.Mycomputer;

            DialogResult result = ofd.ShowDialog();

            if (result == DialogResult.OK | result == DialogResult.Yes)
            {
                List <IItemNode> list_item_from = new List <IItemNode>();

                string    root     = Path.GetDirectoryName(ofd.FileNames[0]);
                IItemNode rootnode = ItemNode.GetNodeFromDiskPath(root);
                foreach (string a in ofd.SafeFileNames)
                {
                    FileInfo  info = new FileInfo(root + "\\" + a);
                    IItemNode n    = new ItemNode();
                    n.Info.Name = a;
                    n.Info.Size = info.Length;
                    rootnode.AddChild(n);
                    list_item_from.Add(n);
                }
                Setting_UI.reflection_eventtocore.ExplorerAndManagerFile.TransferItems(list_item_from, rootnode,
                                                                                       ((UC_LVitem)tabControl1.SelectedTab.Controls[0]).managerhistory_itemnodes.NodeWorking(), false);
            }
        }
        void CreateFolder(object obj)
        {
            ItemNode n = new ItemNode();

            n.Info.Name = (string)obj;
            parent.AddChild(n);
            Setting_UI.reflection_eventtocore.ExplorerAndManagerFile.CreateFolder(n);
            Dispatcher.Invoke(new Action(() => this.Close()));
        }
예제 #6
0
        public IItemNode MakeNodeTo(IItemNode RootFrom, IItemNode RootTo)
        {
            List <IItemNode> FullPathRootFrom = RootFrom.GetFullPath();
            List <IItemNode> NodeFullPath     = this.GetFullPath();
            CloudType        type_rootto      = RootTo.GetRoot.RootType.Type;

            for (int i = NodeFullPath.IndexOf(RootFrom) + 1; i < NodeFullPath.Count; i++)
            {
                ItemNode node = new ItemNode();
                node.Info.Size = NodeFullPath[i].Info.Size;
                node.Info.Name = (type_rootto == CloudType.LocalDisk || type_rootto == CloudType.Dropbox) ? RemoveSpecialChar(NodeFullPath[i].Info.Name) : NodeFullPath[i].Info.Name;
                RootTo.AddChild(node);
                RootTo = node;
            }
            return(RootTo);
        }
예제 #7
0
        //Rename: MoveItem(node,null,newname,false)
        //Cut: MoveItem(node,newparent,null,false)
        //Copy: MoveItem(node,newparent,null,true)
        //
        public bool MoveItem(IItemNode node, IItemNode newparent = null, string newname = null, bool Copy = false)
        {
            CheckThread(false);
            if ((newparent != null && node.GetRoot == newparent.GetRoot) | newparent == null)
            {
                bool flag = false;
                switch (node.GetRoot.RootType.Type)
                {
                case CloudType.Dropbox: flag = Dropbox.Move(node, newparent, newname); break;

                case CloudType.GoogleDrive:
                    Drivev2_File item = GoogleDrive.MoveItem(node, newparent, newname);
                    if (item.title == newname)
                    {
                        flag = true;
                    }
                    item.parents.ForEach(s => { if (!flag && newparent != null && s.id == newparent.Info.ID)
                                                {
                                                    flag = true;
                                                }
                                         });
                    break;

                case CloudType.LocalDisk: flag = LocalDisk.Move(node, newparent, newname); break;

                case CloudType.Mega:
                default: throw new Exception("CloudType not support (" + node.GetRoot.RootType.Type.ToString() + ").");
                }
                if (flag)
                {
                    if (newparent != null)
                    {
                        node.Parent.RemoveChild(node);
                        newparent.AddChild(node);
                    }
                    else
                    {
                        node.Info.Name = newname;
                    }
                }
                return(flag);
            }
            else
            {
                throw new Exception("Root not match.");
            }
        }
예제 #8
0
 public ItemNode(NodeInfo info, IItemNode parent)
 {
     this.Info = info;
     parent.AddChild(this);
 }