void AddFilesToList(CloudFolder folder, ref List <CloudFile> flatFilesList) { foreach (CloudFolder subfolder in folder.Subfolders) { flatFilesList.AddRange(subfolder.Files); AddFilesToList(subfolder, ref flatFilesList); } }
void AddCheckedFilesToYadisk() { if (checkedFilesSize > MainForm.freeSpace) { MessageBox.Show("Not enougt free space on Yandex disk"); return; } if (checkedFiles.Count > 0) { DialogResult dialogResult = MessageBox.Show(checkedFiles.Count + $" new files found. Size: {Math.Round(checkedFilesSize / 1000000.0, 2)} MB. Download?", "", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.Yes) { foreach (CloudFile file in checkedFiles) { string savePath = MainForm.cloudPublicFolder.Name + file.Path; string[] folders = ParsePath(savePath); CloudFolder currentFolder = (CloudFolder)MainForm.yadiskFolder.Subfolders[2]; savePath = currentFolder.Path; for (int i = 0; i < folders.Length; i++) { if (!currentFolder.Subfolders.ConvertAll(x => x.Name).Contains(folders[i])) { Link linki = MainForm.rc.CreateResource(currentFolder.Path.Replace("disk:", "") + "/" + folders[i]); CloudFolder createdFolder = new CloudFolder(folders[i], DateTime.Now, DateTime.Now, 0); createdFolder.Path = currentFolder.Path + "/" + folders[i]; currentFolder.Subfolders.Add(createdFolder); } currentFolder = (CloudFolder)currentFolder.Subfolders.Find(x => x.Name == folders[i]); savePath += "/" + folders[i]; } //Uri link = (rc.GetPublicResourceDownloadLink(cloudPublicFolder.PublicKey, file.Path)).Href; //TODO: add whole folders if all files inside are checked Link link = MainForm.rc.SaveToDiskPublicResource(MainForm.cloudPublicFolder.PublicKey, file.Name, file.Path, savePath); } MessageBox.Show("Finished"); } } else { MessageBox.Show("No files checked!"); } }
public SyncFilesForm(CloudFolder newFilesFolder, CloudServiceType cloudServiceName) { InitializeComponent(); SendMessage(filter_textBox.Handle, 0x1501, 1, "Filter by name"); overwriteMode_comboBox.DataSource = new BindingSource(overwriteModes, null); overwriteMode_comboBox.DisplayMember = "Value"; overwriteMode_comboBox.ValueMember = "Key"; nodeCheckBox2.IsVisibleValueNeeded += CheckIndex; cloudServiceType = cloudServiceName; if (cloudServiceType == CloudServiceType.Mega) { downloadMega_button.Enabled = true; getJdLinks_button.Enabled = false; downloadFiles_button.Enabled = false; } if (cloudServiceType == CloudServiceType.Yadisk) { if (Properties.Settings.Default.loginedYandex) { addFilesToYadisk_button.Enabled = true; } getJdLinks_button.Enabled = true; downloadFiles_button.Enabled = false; } progressBars = new List <ProgressBar> { progressBar1, progressBar2, progressBar3, progressBar4 }; progressLabels = new List <Label> { label1, label2, label3, label4, DownloadProgress_label }; rootFolder = newFilesFolder; nodeCheckBox2.CheckStateChanged += new EventHandler <TreePathEventArgs>(NodeCheckStateChanged); newFilesTreeViewAdv.ShowNodeToolTips = true; newFilesTreeViewAdv.NodeControls[2].ToolTipProvider = new ToolTipProvider(); newFilesTreeViewAdv.NodeFilter = filter; //newFilesTreeViewAdv.Expanded += new EventHandler<TreeViewAdvEventArgs>(Form1.treeViewAdv_Expanded); //newFilesTreeViewAdv.Collapsed += new EventHandler<TreeViewAdvEventArgs>(Form1.treeViewAdv_Expanded); newFiles_model = new TreeModel(); newFilesFlat_model = new TreeModel(); ColumnNode rootFlatNode = new ColumnNode(newFilesFolder.Name, newFilesFolder.Created, newFilesFolder.Modified, newFilesFolder.Size); newFilesFlat_model.Nodes.Add(rootFlatNode); ColumnNode rootNode = new ColumnNode(newFilesFolder.Name, newFilesFolder.Created, newFilesFolder.Modified, newFilesFolder.Size); //rootNode.Tag = newFilesFolder; newFilesTreeViewAdv.Model = new SortedTreeModel(newFiles_model); newFilesTreeViewAdv.BeginUpdate(); newFiles_model.Nodes.Add(rootNode); foreach (CloudFile file in newFilesFolder.Files) { ColumnNode ffileNode = new ColumnNode(file.Name, file.Created, file.Modified, file.Size); ffileNode.Tag = file; rootFlatNode.Nodes.Add(ffileNode); string[] folders = ParsePath(file.Path); if (folders == null) { ColumnNode subNode = new ColumnNode(file.Name, file.Created, file.Modified, file.Size); subNode.Tag = file; rootNode.Nodes.Add(subNode); } else { ColumnNode currentNode = rootNode; //creating folders nodes and file node from file path string currentFolderPath = @"/"; //+ folders[0] + @"/"; for (int i = 0; i < folders.Length; i++) { if (folders[i] == "") { } currentFolderPath += folders[i] + @"/"; ColumnNode subNode = new ColumnNode(folders[i], file.Created, file.Modified, 0); if (currentNode.Nodes.ToList().ConvertAll(x => x.Text).Contains(folders[i])) { currentNode = (ColumnNode)currentNode.Nodes.ToList().Find(x => x.Text == folders[i]); } else { currentNode.Nodes.Add(subNode); currentNode = subNode; } if (i == folders.Length - 1) { ColumnNode fileNode = new ColumnNode(file.Name, file.Created, file.Modified, file.Size); fileNode.Tag = file; currentNode.Nodes.Add(fileNode); } } } } //Form1.BuildSubfolderNodes(rootNode); //BuildFullFolderStructure(rootNode); newFilesTreeViewAdv.EndUpdate(); newFilesTreeViewAdv.Root.Children[0].Expand(); newFiles_model.Nodes[0].CheckState = CheckState.Checked; this.Show(); //CheckAllSubnodes(newFiles_model.Nodes[0], false); }
public void AddSubfolder(CloudFolder subfolder) { this.Subfolders.Add(subfolder); //if (subfolder.Modified > this.Modified) // this.Modified = subfolder.Modified; }