Rev 75 | Rev 83 | 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; |
||
75 | daniel-mar | 19 | procedure Button1Click(Sender: TObject); |
77 | daniel-mar | 20 | procedure Button2Click(Sender: TObject); |
21 | procedure FormShow(Sender: TObject); |
||
75 | daniel-mar | 22 | private |
77 | daniel-mar | 23 | localRecyclersNode: TTreeNode; |
24 | individualRecyclersNode: TTreeNode; |
||
75 | daniel-mar | 25 | end; |
26 | |||
27 | var |
||
28 | RecyclerListingMainForm: TRecyclerListingMainForm; |
||
29 | |||
30 | implementation |
||
31 | |||
32 | {$R *.dfm} |
||
33 | |||
34 | uses |
||
35 | RecBinUnit2, ContNrs, SIDUnit; |
||
36 | |||
37 | // TODO: SID Namen auflösen und dementsprechend anzeigen |
||
38 | // TODO: zu jedem element mehr informationen anzeigen, nicht nur den ursprungsnamen |
||
77 | daniel-mar | 39 | // TODO: Einstellungen usw anzeigen, so wie im alten Demo |
75 | daniel-mar | 40 | |
41 | procedure TRecyclerListingMainForm.Button1Click(Sender: TObject); |
||
42 | var |
||
43 | drives: TObjectList{TRbDrive}; |
||
44 | iDrive: integer; |
||
45 | drive: TRbDrive; |
||
46 | nDrive: TTreeNode; |
||
47 | |||
48 | bins: TObjectList{TRbRecycleBin}; |
||
49 | iBin: integer; |
||
50 | bin: TRbRecycleBin; |
||
51 | nBin: TTreeNode; |
||
52 | |||
53 | items: TObjectList{TRbRecycleBinItem}; |
||
54 | iItem: integer; |
||
55 | item: TRbRecycleBinItem; |
||
56 | nItem: TTreeNode; |
||
57 | begin |
||
77 | daniel-mar | 58 | localRecyclersNode.DeleteChildren; |
59 | |||
75 | daniel-mar | 60 | TreeView1.Items.BeginUpdate; |
61 | drives := TObjectList.Create(true); |
||
62 | bins := TObjectList.Create(true); |
||
63 | items := TObjectList.Create(true); |
||
64 | try |
||
65 | drives.Clear; |
||
66 | TRecycleBinManager.ListDrives(drives); |
||
67 | for iDrive := 0 to drives.Count - 1 do |
||
68 | begin |
||
69 | drive := drives.Items[iDrive] as TRbDrive; |
||
70 | |||
77 | daniel-mar | 71 | if drive.VolumeGUIDAvailable then |
72 | nDrive := TreeView1.Items.AddChildObject(localRecyclersNode, 'Drive '+drive.DriveLetter+': ' + GUIDToString(drive.VolumeGUID), drive) |
||
73 | else |
||
74 | nDrive := TreeView1.Items.AddChildObject(localRecyclersNode, 'Drive '+drive.DriveLetter+':', drive); |
||
75 | nDrive.ImageIndex := 6; |
||
76 | nDrive.SelectedIndex := 6; |
||
75 | daniel-mar | 77 | |
78 | bins.Clear; |
||
79 | if CheckBox1.Checked then |
||
80 | drive.ListRecycleBins(bins, GetMySID) |
||
81 | else |
||
82 | drive.ListRecycleBins(bins); |
||
83 | for iBin := 0 to bins.Count - 1 do |
||
84 | begin |
||
85 | bin := bins.Items[iBin] as TRbRecycleBin; |
||
86 | |||
87 | nBin := TreeView1.Items.AddChildObject(nDrive, bin.FileOrDirectory, bin); |
||
77 | daniel-mar | 88 | nBin.ImageIndex := 4; |
89 | nBin.SelectedIndex := 4; |
||
75 | daniel-mar | 90 | |
91 | items.Clear; |
||
92 | bin.ListItems(items); |
||
93 | for iItem := 0 to items.Count - 1 do |
||
94 | begin |
||
95 | item := items.Items[iItem] as TRbRecycleBinItem; |
||
96 | nItem := TreeView1.Items.AddChildObject(nBin, item.Source, bin); |
||
77 | daniel-mar | 97 | nItem.ImageIndex := 0; |
98 | nItem.SelectedIndex := 0; |
||
75 | daniel-mar | 99 | end; |
100 | end; |
||
101 | end; |
||
102 | finally |
||
103 | drives.Free; |
||
104 | bins.Free; |
||
105 | items.Free; |
||
106 | TreeView1.Items.EndUpdate; |
||
107 | end; |
||
77 | daniel-mar | 108 | |
109 | localRecyclersNode.Expand(false); |
||
75 | daniel-mar | 110 | end; |
111 | |||
77 | daniel-mar | 112 | procedure TRecyclerListingMainForm.Button2Click(Sender: TObject); |
113 | var |
||
114 | bin: TRbRecycleBin; |
||
115 | nBin: TTreeNode; |
||
116 | |||
117 | items: TObjectList{TRbRecycleBinItem}; |
||
118 | iItem: integer; |
||
119 | item: TRbRecycleBinItem; |
||
120 | nItem: TTreeNode; |
||
121 | begin |
||
122 | bin := TRbRecycleBin.Create(LabeledEdit1.Text); |
||
123 | |||
124 | nBin := TreeView1.Items.AddChildObject(individualRecyclersNode, bin.FileOrDirectory, bin); |
||
125 | individualRecyclersNode.Expand(false); |
||
126 | |||
127 | items := TObjectList.Create(true); |
||
128 | try |
||
129 | items.Clear; |
||
130 | bin.ListItems(items); |
||
131 | for iItem := 0 to items.Count - 1 do |
||
132 | begin |
||
133 | item := items.Items[iItem] as TRbRecycleBinItem; |
||
134 | nItem := TreeView1.Items.AddChildObject(nBin, item.Source, bin); |
||
135 | nItem.ImageIndex := 0; |
||
136 | nItem.SelectedIndex := 0; |
||
137 | end; |
||
138 | finally |
||
139 | items.Free; |
||
140 | end; |
||
141 | |||
142 | nBin.Expand(false); |
||
143 | end; |
||
144 | |||
145 | procedure TRecyclerListingMainForm.FormShow(Sender: TObject); |
||
146 | begin |
||
147 | localRecyclersNode := TreeView1.Items.Add(nil, 'Local recyclers'); |
||
148 | localRecyclersNode.ImageIndex := 2; |
||
149 | localRecyclersNode.SelectedIndex := 2; |
||
150 | |||
151 | individualRecyclersNode := TreeView1.Items.Add(nil, 'Manually added recycle bins'); |
||
152 | individualRecyclersNode.ImageIndex := 2; |
||
153 | individualRecyclersNode.SelectedIndex := 2; |
||
154 | end; |
||
155 | |||
75 | daniel-mar | 156 | end. |