Rev 77 | Rev 86 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
75 | daniel-mar | 1 | unit RecyclerListingMain; |
2 | |||
3 | interface |
||
4 | |||
5 | uses |
||
6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, |
||
77 | daniel-mar | 7 | Dialogs, StdCtrls, ComCtrls, ExtCtrls, ImgList; |
75 | daniel-mar | 8 | |
9 | type |
||
10 | TRecyclerListingMainForm = class(TForm) |
||
11 | TreeView1: TTreeView; |
||
12 | Panel1: TPanel; |
||
13 | Button1: TButton; |
||
14 | CheckBox1: TCheckBox; |
||
77 | daniel-mar | 15 | Button2: TButton; |
16 | OpenDialog1: TOpenDialog; |
||
17 | LabeledEdit1: TLabeledEdit; |
||
18 | ImageList1: TImageList; |
||
83 | daniel-mar | 19 | CheckBox2: TCheckBox; |
75 | daniel-mar | 20 | procedure Button1Click(Sender: TObject); |
77 | daniel-mar | 21 | procedure Button2Click(Sender: TObject); |
22 | procedure FormShow(Sender: TObject); |
||
75 | daniel-mar | 23 | private |
77 | daniel-mar | 24 | localRecyclersNode: TTreeNode; |
25 | individualRecyclersNode: TTreeNode; |
||
75 | daniel-mar | 26 | end; |
27 | |||
28 | var |
||
29 | RecyclerListingMainForm: TRecyclerListingMainForm; |
||
30 | |||
31 | implementation |
||
32 | |||
33 | {$R *.dfm} |
||
34 | |||
35 | uses |
||
36 | RecBinUnit2, ContNrs, SIDUnit; |
||
37 | |||
38 | // TODO: SID Namen auflösen und dementsprechend anzeigen |
||
39 | // TODO: zu jedem element mehr informationen anzeigen, nicht nur den ursprungsnamen |
||
77 | daniel-mar | 40 | // TODO: Einstellungen usw anzeigen, so wie im alten Demo |
75 | daniel-mar | 41 | |
42 | procedure TRecyclerListingMainForm.Button1Click(Sender: TObject); |
||
43 | var |
||
44 | drives: TObjectList{TRbDrive}; |
||
45 | iDrive: integer; |
||
46 | drive: TRbDrive; |
||
47 | nDrive: TTreeNode; |
||
48 | |||
49 | bins: TObjectList{TRbRecycleBin}; |
||
50 | iBin: integer; |
||
51 | bin: TRbRecycleBin; |
||
52 | nBin: TTreeNode; |
||
53 | |||
54 | items: TObjectList{TRbRecycleBinItem}; |
||
55 | iItem: integer; |
||
56 | item: TRbRecycleBinItem; |
||
57 | nItem: TTreeNode; |
||
58 | begin |
||
77 | daniel-mar | 59 | localRecyclersNode.DeleteChildren; |
60 | |||
75 | daniel-mar | 61 | TreeView1.Items.BeginUpdate; |
62 | drives := TObjectList.Create(true); |
||
63 | bins := TObjectList.Create(true); |
||
64 | items := TObjectList.Create(true); |
||
65 | try |
||
66 | drives.Clear; |
||
67 | TRecycleBinManager.ListDrives(drives); |
||
68 | for iDrive := 0 to drives.Count - 1 do |
||
69 | begin |
||
70 | drive := drives.Items[iDrive] as TRbDrive; |
||
71 | |||
77 | daniel-mar | 72 | if drive.VolumeGUIDAvailable then |
73 | nDrive := TreeView1.Items.AddChildObject(localRecyclersNode, 'Drive '+drive.DriveLetter+': ' + GUIDToString(drive.VolumeGUID), drive) |
||
74 | else |
||
75 | nDrive := TreeView1.Items.AddChildObject(localRecyclersNode, 'Drive '+drive.DriveLetter+':', drive); |
||
76 | nDrive.ImageIndex := 6; |
||
83 | daniel-mar | 77 | nDrive.SelectedIndex := nDrive.ImageIndex; |
75 | daniel-mar | 78 | |
79 | bins.Clear; |
||
80 | if CheckBox1.Checked then |
||
81 | drive.ListRecycleBins(bins, GetMySID) |
||
82 | else |
||
83 | drive.ListRecycleBins(bins); |
||
84 | for iBin := 0 to bins.Count - 1 do |
||
85 | begin |
||
86 | bin := bins.Items[iBin] as TRbRecycleBin; |
||
87 | |||
88 | nBin := TreeView1.Items.AddChildObject(nDrive, bin.FileOrDirectory, bin); |
||
77 | daniel-mar | 89 | nBin.ImageIndex := 4; |
83 | daniel-mar | 90 | nBin.SelectedIndex := nBin.ImageIndex; |
75 | daniel-mar | 91 | |
92 | items.Clear; |
||
93 | bin.ListItems(items); |
||
94 | for iItem := 0 to items.Count - 1 do |
||
95 | begin |
||
96 | item := items.Items[iItem] as TRbRecycleBinItem; |
||
83 | daniel-mar | 97 | |
98 | if not FileExists(item.PhysicalFile) and CheckBox2.Checked then continue; |
||
99 | |||
75 | daniel-mar | 100 | nItem := TreeView1.Items.AddChildObject(nBin, item.Source, bin); |
83 | daniel-mar | 101 | |
102 | if FileExists(item.PhysicalFile) then |
||
103 | nItem.ImageIndex := 0 |
||
104 | else |
||
105 | nItem.ImageIndex := 8; |
||
106 | nItem.SelectedIndex := nItem.ImageIndex; |
||
75 | daniel-mar | 107 | end; |
108 | end; |
||
109 | end; |
||
110 | finally |
||
111 | drives.Free; |
||
112 | bins.Free; |
||
113 | items.Free; |
||
114 | TreeView1.Items.EndUpdate; |
||
115 | end; |
||
77 | daniel-mar | 116 | |
117 | localRecyclersNode.Expand(false); |
||
75 | daniel-mar | 118 | end; |
119 | |||
77 | daniel-mar | 120 | procedure TRecyclerListingMainForm.Button2Click(Sender: TObject); |
121 | var |
||
122 | bin: TRbRecycleBin; |
||
123 | nBin: TTreeNode; |
||
124 | |||
125 | items: TObjectList{TRbRecycleBinItem}; |
||
126 | iItem: integer; |
||
127 | item: TRbRecycleBinItem; |
||
128 | nItem: TTreeNode; |
||
129 | begin |
||
130 | bin := TRbRecycleBin.Create(LabeledEdit1.Text); |
||
131 | |||
132 | nBin := TreeView1.Items.AddChildObject(individualRecyclersNode, bin.FileOrDirectory, bin); |
||
133 | individualRecyclersNode.Expand(false); |
||
134 | |||
135 | items := TObjectList.Create(true); |
||
136 | try |
||
137 | items.Clear; |
||
138 | bin.ListItems(items); |
||
139 | for iItem := 0 to items.Count - 1 do |
||
140 | begin |
||
141 | item := items.Items[iItem] as TRbRecycleBinItem; |
||
83 | daniel-mar | 142 | |
143 | if not FileExists(item.PhysicalFile) and CheckBox2.Checked then continue; |
||
144 | |||
77 | daniel-mar | 145 | nItem := TreeView1.Items.AddChildObject(nBin, item.Source, bin); |
83 | daniel-mar | 146 | |
147 | if FileExists(item.PhysicalFile) then |
||
148 | nItem.ImageIndex := 0 |
||
149 | else |
||
150 | nItem.ImageIndex := 8; |
||
151 | nItem.SelectedIndex := nItem.ImageIndex; |
||
77 | daniel-mar | 152 | end; |
153 | finally |
||
154 | items.Free; |
||
155 | end; |
||
156 | |||
157 | nBin.Expand(false); |
||
158 | end; |
||
159 | |||
160 | procedure TRecyclerListingMainForm.FormShow(Sender: TObject); |
||
161 | begin |
||
162 | localRecyclersNode := TreeView1.Items.Add(nil, 'Local recyclers'); |
||
163 | localRecyclersNode.ImageIndex := 2; |
||
83 | daniel-mar | 164 | localRecyclersNode.SelectedIndex := localRecyclersNode.ImageIndex; |
77 | daniel-mar | 165 | |
166 | individualRecyclersNode := TreeView1.Items.Add(nil, 'Manually added recycle bins'); |
||
167 | individualRecyclersNode.ImageIndex := 2; |
||
83 | daniel-mar | 168 | individualRecyclersNode.SelectedIndex := individualRecyclersNode.ImageIndex; |
77 | daniel-mar | 169 | end; |
170 | |||
75 | daniel-mar | 171 | end. |