From 21645be4ef886623328f5033cfae3863c6eeb0b3 Mon Sep 17 00:00:00 2001 From: Admin Date: Sun, 6 Dec 2020 23:02:18 -0600 Subject: [PATCH] Added functionality to the '...' button for the 'Default New Contents' folder option on the ProfileManager form. Added a way for the user to move all newly discovered files to their default new content location. --- .vs/DataOrganizer/v16/.suo | Bin 145920 -> 145920 bytes DataOrganizer/FileViewer.Designer.cs | 190 ++++++++++++++++----------- DataOrganizer/FileViewer.cs | 45 ++++++- DataOrganizer/ProfileManager.cs | 13 +- 4 files changed, 170 insertions(+), 78 deletions(-) diff --git a/.vs/DataOrganizer/v16/.suo b/.vs/DataOrganizer/v16/.suo index b70aa90c747e2c65847bb1fbc788f3904dd38b0b..5a524a35c89f9cb539fcd5b0914112ead0326306 100644 GIT binary patch delta 2878 zcmZqp!qM=BV}gMu69W_oFfgz(Fff4l|Nj5~4-#c&U|>*SU|>*UU|`UitjH?9vEUCQ zCj)y%X6Tt~j7F17nd%vxRf)2N?vy!cd2RybAI*NDPEQd{u}gEcIege+n@&Fi0~nFlaI` zFi1dMB+9_RAO#8o1_lN>1_lOksJJ8p1A{h{4e}Al=O7wnI0&ml!#KG_Mqsjli~t8nC&;;zHDnYRg(nNj2s286 zNm&p%xj}|SMVWztL4|>VK@}RQAj?5oKpxS8I&|_H8HvdvG6EnClW(wSOp<*d3sM8a zH4F?4wG0dlbx<=Jz^2pI0SYk7K{SQ~7#J8939u~UVVWdT!e~0VRHUBKWb#*$dPd{P zrK0tWMw`Ei*E2F!ZZ4Jl&&a4axm3EI6O>&*A>^C5R&sZMU*fxicc;z zsAm+L{MDeIQDkzdVLh860|P_fy3N0|*_b97RY=W;M)g8aNHZ`nEM{O}SOO{o7$;9M z(qiP=yw}K?aghttBohr+ZbnFX!OO_Nz{kkIAOPhHGBPj-GB7X*gTx@|8I-jDi!(AX zNI^>jkbpEJ1H)!ehTB+B!#K&H1mwCX6xVTjf?dbJ019{Ui3JljFNslMv;ZZIFANL} zUl|w}zA-Q`d}m-_U}j`s_{qS)@QZ zg%E2VUQ=eVEXq+^G=ptX4$EYwRY{W*I#{-+#WBuioc_Oe#DMZWV(bsW5%>kj4abXd}8F79N@+?{eV5A2#9b15hBwMI5LJz z4{>7DneO1kC^CJD6Qd3*sE}uvd@#g%`vE6LDMnr^1_lNJ1_lNYtv3DRM@GqME{vPG zLDd{6bQu^JrtfxTjG8X=kx`C4pP`5$ogs0$ts7$$qrvnCu8gwN@4GT`Z$IG1SjNO{ z%wW!7!eGfz%fL9@(VfvAR0A@UFfcIKGH@`cP57 z*Uf8UoW3!EQG2^)5aW7AF;LotN?5ErD zFx?fbgs26z9S$sGU|=wuuEWc8dC?-aWf_btlS39l<7#qBfyeX>*^DyN3zQhyw&&zA zPGR0w#@JV~z0ZoVh;cMp{26;$2!;J(CP7fU0TSX82h15576BEny|NKl- zwoj5_%3<8zkjd!4wB6wcV*}&z1L91KlLJB=wh1yFV4SRyBes2-I+GUD^ad8D1KSUX zGBq%6cQ6Ez2PBvr8MpBK0DeTM+yDRo delta 3904 zcmZqp!qM=BV}gMu0}Kc-Fz_-kFfcJNF#P-f|365Wk%56hf`NfSl7WFiYqBDz_{M@i zjGPA~o>!}!xyGn8xs<7%v48Scrg}C-1_p+UjFYRFs{}0>7#KdVgS0a+a4|42{GFI6 zJc);;UJ7dP|NsC0i!d-S$T2W5@G~$lurV+&@Gvki2s1D+a4;}12r)1)h%hoRh%+!S z@G&qj2rw`(fb=MU%=-WT|KI=r|4TD4Fo;6ML2@ALKr}bVT1Ey2btE}4MzDUq|MQ`O zh9H9`CQ5HU!ePTWi7AKEpz=f@$U~lB4=n@AfIqSYzN7Ku@OizR+)i;fd#5f21+wPRjNV5frpWSK?f=)52ZnV zS7BgaFos$W;u|n9Fla;NSs54@#6UJoEO21;VqjqSI$4wT`XnwBnLY*vhJFSHh6xM| z3{w~w7$z|=FieKV$m9Sg9o_{{4#)@pCMJq+Uci;WxJZC$5|_#33Lc)#4qOKq7YVRT z5-VX0om?tb&locKt5`i_@Z?hQdRA{x!kPS2w3^WZEN2duGXu#nnr{9oUeCzbx4BgE zKO>{UB60Um+L4LmF?pwu#1gGXU<36B7yI7o_7W^y5qxP}q~ z0|O|?Kwej6U|;|R5h#i^pl;TJ(v#QlNN^fK!^Z@qb@CIQKeCk!3=CBa3=F*t3=B04 z3=Fjl3=DNpEe(_ZN|!TgZZ4Ji&&Vh@xzy-CqwM5T`Fcj_&0poYnHH(AOwucv{6$Y@ z@&vsUM#;%v_39ZVHkX>$GqNrL1>@wO7QY#_H-EL}X4)iC!pOLAa;aqZBzb|!0(L2k zVv|el>KR2Qf3>S;6rNmaU(W{0Zhh+}|8lI80tGZE&=)c=Ff3wVU|0-F?~Du#OBp6l za?)bt-MrVynQ@Yv#>4`iNjxm30*sJ+DagpcAjHVPAk4_XAPC9^j0_B*Fp-2NA5bcj zVq{>DW@KR43`zsHh$q~FA_+xbQ-(Y5@NirpjmYYjux)~=$R4}q^u8e4BT;#&EDUOFx?3ATn zT>Wi@GVXkBr-g0m+Kr`pvKMS8E5(~hG*8^;FiBS12~>_SDEukDW~=QqVaJlt$p!Hf zCdrjB>P;?{`_HHgN+E2ZLdc6{^Dp@*CPi^w(JD{Zzz=zBd-i{Sa#~FBoMoAj{Nr@r z?zraIPfW}VlNC9IH+LviFk(qglS|EeCNn14Z*E9xV4Qp}$&M+OW0J)e*1w=U3QAx+ z)(i{`Ww5AAVcN_X_MegQ|0bIfCQuslKuKeqpv>5}4y0F+Q+#5B@!87cT6}pIn$M0jlO0xQjBA_1shQQj0Q^T?Y4)5sx!ULl~H7Rhzp|*BgkkgT$CNFfLlawk(5@WzjOG$w@_C(>G)@ z%1kd%VPxB$lgBuPdC@AS$psfvHm7Wx$2eJ_w{QD|BF2BklRuQ@O;5056qwFq&G==y zgA?OwDyGb7u8eVvOw;3C85Ox9kqXKRJ(CZn6i+W;VG^5eP{7EBE#+o8Gm5b?Ff4#1 z4o1D{g}hAS^}!6u;D`)j$Y;oBC}D78$Y;o5NC8Kx6GJIO2}21(K0_WuJcBbs4nrnG zGD9|l217nW5x{5=rAZSxH6P6q%!0&lrT7g6G}0I0z)bTC>4U* zso-c}fH?h!0)Yg{GMQ0WdwPR2BhT~{cSfPf!%|ae?S!ma``a5(S=c%kzw+~6lpA(@WH$P|3PIBnjw-nGvW0A zu8gA772O%-r|Y;gaxoh)7)*C?V>IGTWyoPjWk>|aXwCF`H^!1dTGoY65AtNxo8I8g z7&bk^gHdan2V(={b_Xt|2FB?Po{ZnPLD383Okmr%6tqAI!)-{oPMS+sSotY}_j1eTg!o!gd7(rU#6Z1(aAOrxn>if^S(iBjYq4CI_&qwmal8 zIxtOl5CB;RvVD643sVE*_5)f>4vgFMn4B0Vm!!x|PcUX$Fny6Xqr-Fu1EvF$nUqAP muPa~_+OB5K#Kkz>K!j<+_5&2R2W6Ji(); + + files.AddRange(ActiveSnapshotForPrimaryTree.Files.Values.Where(x => x.Status == FileSnapshot.FileStatus.PendingInsert || x.Status == FileSnapshot.FileStatus.PendingUpdate)); + + foreach(var file in files) + { + var path = file.ParentFolder.FullPath.Remove(0, folderGroup.Path.Length + 1); + var newFilePath = Path.Combine(profile.DefaultNewContentFolder, file.PathNoRoot); + Directory.CreateDirectory(Path.Combine(profile.DefaultNewContentFolder, path)); + + UpdateStatusStrip($"Moving {file.Name} to default location '{profile.DefaultNewContentFolder}'."); + if(!File.Exists(newFilePath)) File.Copy(file.FullPath, newFilePath); + } + } + + private void CommitScanResultsButton_Click(object sender, EventArgs e) + { + throw new NotImplementedException(); + } + private void FolderSelectButton_Click1(object sender, EventArgs e) { WriteFilesToDb(GetActiveFolderGroup().Path); @@ -72,12 +98,14 @@ namespace DataOrganizer var files = db.GetFilesForProfileByFolderGroup(profile.Id, folderGroup.Id); ActiveSnapshotForPrimaryTree = new Snapshot(files, folderGroup); - //if(ActiveSnapshotForPrimaryTree.Directories.ContainsKey(@"W:\Test\Amagi Brilliant Park\Season 1")) ActiveSnapshotForPrimaryTree.DeleteFolder(ActiveSnapshotForPrimaryTree.Directories[@"W:\Test\Amagi Brilliant Park\Season 1"]); - foreach(var folder in ActiveSnapshotForPrimaryTree.Root.Folders) { PrimaryFilesTreeView.Nodes.Add(GetNodeFromSnapshot(folder)); } + + CommitScanResultsButton.Enabled = false; + MoveModifiedFilesButton.Enabled = false; + ScanResultsLabel.Text = string.Empty; } private TreeNode GetNodeFromSnapshot(KeyValuePair folder) @@ -134,6 +162,9 @@ namespace DataOrganizer } RootFolderComboBox.Enabled = true; + CommitScanResultsButton.Enabled = false; + MoveModifiedFilesButton.Enabled = false; + ScanResultsLabel.Text = string.Empty; } private void FolderSelectButton_Click(object sender, EventArgs e) @@ -161,6 +192,8 @@ namespace DataOrganizer private void ScanRootFolderButton_Click(object sender, EventArgs e) { + CommitScanResultsButton.Enabled = false; + MoveModifiedFilesButton.Enabled = false; var folderGroup = GetActiveFolderGroup(); var files = new List(); var rootFolder = new DirectoryInfo(folderGroup.Path); @@ -218,7 +251,13 @@ namespace DataOrganizer modifiedFilesCount++; } - label8.Text = $"New Files: {newFilesCount}{Environment.NewLine}Modified Files: {modifiedFilesCount}{Environment.NewLine}Deleted Files: {deletedFilesCount}"; + ScanResultsLabel.Text = $"New Files: {newFilesCount}{Environment.NewLine}Modified Files: {modifiedFilesCount}{Environment.NewLine}Deleted Files: {deletedFilesCount}"; + + if(newFilesCount > 0 || modifiedFilesCount > 0) + { + CommitScanResultsButton.Enabled = true; + MoveModifiedFilesButton.Enabled = true; + } } private List ProcessFileFolders(FileSnapshot file) diff --git a/DataOrganizer/ProfileManager.cs b/DataOrganizer/ProfileManager.cs index 5e12003..053fc73 100644 --- a/DataOrganizer/ProfileManager.cs +++ b/DataOrganizer/ProfileManager.cs @@ -44,12 +44,23 @@ namespace DataOrganizer MachineNameTextBox.TextChanged += MachineNameTextBox_TextChanged; FolderGroupPathTextBox.TextChanged += ToggleGroupInsertButton; FolderGroupListView.MouseClick += FolderGroupListView_MouseClick; + SelectNewContentLocationButton.Click += SelectNewContentLocationButton_Click1; deleteMenuItem.Click += DeleteMenuItem_Click; PopulateProfiles(); SetupForNewProfile(); } + private void SelectNewContentLocationButton_Click1(object sender, EventArgs e) + { + var dialog = new FolderBrowserDialog() { Description = "Select the folder where new content will be placed." }; + + if (dialog.ShowDialog() == DialogResult.OK) + { + NewContentLocationTextBox.Text = dialog.SelectedPath; + } + } + private void FolderGroupListView_MouseClick(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) @@ -132,7 +143,7 @@ namespace DataOrganizer if (!IsUpdating) { var folders = new List(); - //TODO: crash + foreach(ListViewItem node in FolderGroupListView.Items) { folders.Add(FolderGroups[node.Text]);