public ColumnNode(ColumnNode node) { NodeControl1 = node.NodeControl1; NodeControl2 = node.NodeControl2; NodeControl3 = node.NodeControl3; NodeControl4 = node.NodeControl4; Text = this.NodeControl1; Tag = node.Tag; }
static void UpdateParentCheckState(ColumnNode parentNode) { CheckState origState = parentNode.CheckState; int UnCheckedNodes = 0, CheckedNodes = 0, MixedNodes = 0; foreach (ColumnNode tnChild in parentNode.Nodes) { if (tnChild.CheckState == CheckState.Checked) { CheckedNodes++; } else if (tnChild.CheckState == CheckState.Indeterminate) { MixedNodes++; break; } else { UnCheckedNodes++; } } if (MixedNodes > 0) { // at least one child is mixed, so parent must be mixed parentNode.CheckState = CheckState.Indeterminate; } else if (CheckedNodes > 0 && UnCheckedNodes == 0) { // all children are checked //if (parentNode.CheckState == CheckState.Indeterminate) parentNode.CheckState = CheckState.Checked; //parentNode.CheckState = CheckState.Indeterminate; //else // parentNode.CheckState = CheckState.Indeterminate; } else if (CheckedNodes > 0) { // some children are checked, the rest are unchecked parentNode.CheckState = CheckState.Indeterminate; } if (CheckedNodes == 0 && MixedNodes == 0) { //if (parentNode.CheckState != CheckState.Unchecked) // parentNode.CheckState = CheckState.Indeterminate; // all children are unchecked //if (parentNode.CheckState == CheckState.Checked) // parentNode.CheckState = CheckState.Indeterminate; //else parentNode.CheckState = CheckState.Unchecked; } if (parentNode.CheckState != origState && parentNode.Parent.Index != -1) { UpdateParentCheckState((ColumnNode)parentNode.Parent); } }
private bool filter(object obj) { TreeNodeAdv viewNode = obj as TreeNodeAdv; Node n = viewNode != null ? viewNode.Tag as Node : obj as Node; ColumnNode nn = (ColumnNode)n; bool hideByName = n == null || n.Text.ToUpper().Contains(this.filter_textBox.Text.ToUpper()) || n.Nodes.Any(filter); return(hideByName); }
public int Compare(object x, object y) { //string g = x.GetType().ToString(); ColumnNode a = (ColumnNode)x; ColumnNode b = (ColumnNode)y; if ((a.Tag == null || a.Tag.GetType().ToString() == "CloudFolderBrowser.CloudFolder") && (b.Tag != null && b.Tag.GetType().ToString() != "CloudFolderBrowser.CloudFolder")) { return(-1); } if ((b.Tag == null || b.Tag.GetType().ToString() == "CloudFolderBrowser.CloudFolder") && (a.Tag != null && a.Tag.GetType().ToString() != "CloudFolderBrowser.CloudFolder")) { return(1); } int res = 0; if (_mode == "Created") { res = DateTime.Compare(DateTime.Parse(a.NodeControl2), DateTime.Parse(b.NodeControl2)); } if (_mode == "Modified") { res = DateTime.Compare(DateTime.Parse(a.NodeControl3), DateTime.Parse(b.NodeControl3)); } if (_mode == "Size") { if (Double.Parse(a.NodeControl4.Replace(" MB", "")) < Double.Parse(b.NodeControl4.Replace(" MB", ""))) { res = -1; } else if (Double.Parse(a.NodeControl4.Replace(" MB", "")) > Double.Parse(b.NodeControl4.Replace(" MB", ""))) { res = 1; } } if (_mode == "Name") { res = string.Compare(a.NodeControl1, b.NodeControl1); } if (_order == SortOrder.Ascending) { return(-res); } else { return(res); } }
void NodeCheckStateChanged(object sender, TreePathEventArgs e) { ColumnNode checkedNode = (ColumnNode)e.Path.FirstNode; if (checkedNode.CheckState == CheckState.Checked) { //if (checkedNode.Parent.CheckState != CheckState.Checked && checkedNode.Parent.Index !=-1) // UpdateParentCheckState((ColumnNode)checkedNode.Parent); //CheckAllSubnodes(checkedNode, false); //checkedFilesSize += ((CloudFolder)checkedNode.Tag).Size - ((CloudFolder)checkedNode.Tag).SizeTopDirectoryOnly; //label1.Text = $"{Math.Round(checkedFilesSize / 1024000.0, 2)} MB checked"; } else if (checkedNode.CheckState == CheckState.Unchecked) { //checkedFilesSize -= ((CloudFolder)checkedNode.Tag).Size; //if (checkedFilesSize < 0.0001) // checkedFilesSize = 0; //label1.Text = $"{Math.Round(checkedFilesSize / 1024000.0, 2)} MB checked"; //if (checkedNode.Parent.Index != -1) // UpdateParentCheckState((ColumnNode)checkedNode.Parent); //CheckAllSubnodes(checkedNode, true); } else if (checkedNode.CheckState == CheckState.Indeterminate) { if (checkedNode.Tag?.GetType().ToString() == "CloudFolderBrowser.CloudFile") { checkedNode.CheckState = CheckState.Unchecked; } //checkedFilesSize += ((CloudFolder)checkedNode.Tag).SizeTopDirectoryOnly;//((CloudFolder)parentNode.Tag).Files.Sum(x => x.Size) / 1024000.0; //checkedFilesSize = Math.Round(checkedFilesSize, 2); //label1.Text = $"{Math.Round(checkedFilesSize / 1024000.0, 2)} MB checked"; //if(parentNode.Parent.Index != -1) //UpdateParentCheckState((ColumnNode)parentNode.Parent); //CheckAllSubnodes(parentNode, true); } if (checkedNode.Parent.Index != -1) { UpdateParentCheckState((ColumnNode)checkedNode.Parent); } }
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); }