Subversion Repositories recyclebinunit

Rev

Rev 77 | Rev 86 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. unit RecyclerListingMain;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, StdCtrls, ComCtrls, ExtCtrls, ImgList;
  8.  
  9. type
  10.   TRecyclerListingMainForm = class(TForm)
  11.     TreeView1: TTreeView;
  12.     Panel1: TPanel;
  13.     Button1: TButton;
  14.     CheckBox1: TCheckBox;
  15.     Button2: TButton;
  16.     OpenDialog1: TOpenDialog;
  17.     LabeledEdit1: TLabeledEdit;
  18.     ImageList1: TImageList;
  19.     CheckBox2: TCheckBox;
  20.     procedure Button1Click(Sender: TObject);
  21.     procedure Button2Click(Sender: TObject);
  22.     procedure FormShow(Sender: TObject);
  23.   private
  24.     localRecyclersNode: TTreeNode;
  25.     individualRecyclersNode: TTreeNode;
  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
  40. // TODO: Einstellungen usw anzeigen, so wie im alten Demo
  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
  59.   localRecyclersNode.DeleteChildren;
  60.  
  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.  
  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;
  77.       nDrive.SelectedIndex := nDrive.ImageIndex;
  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);
  89.         nBin.ImageIndex := 4;
  90.         nBin.SelectedIndex := nBin.ImageIndex;
  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;
  97.  
  98.           if not FileExists(item.PhysicalFile) and CheckBox2.Checked then continue;
  99.  
  100.           nItem := TreeView1.Items.AddChildObject(nBin, item.Source, bin);
  101.  
  102.           if FileExists(item.PhysicalFile) then
  103.             nItem.ImageIndex := 0
  104.           else
  105.             nItem.ImageIndex := 8;
  106.           nItem.SelectedIndex := nItem.ImageIndex;
  107.         end;
  108.       end;
  109.     end;
  110.   finally
  111.     drives.Free;
  112.     bins.Free;
  113.     items.Free;
  114.     TreeView1.Items.EndUpdate;
  115.   end;
  116.  
  117.   localRecyclersNode.Expand(false);
  118. end;
  119.  
  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;
  142.  
  143.       if not FileExists(item.PhysicalFile) and CheckBox2.Checked then continue;
  144.  
  145.       nItem := TreeView1.Items.AddChildObject(nBin, item.Source, bin);
  146.  
  147.       if FileExists(item.PhysicalFile) then
  148.         nItem.ImageIndex := 0
  149.       else
  150.         nItem.ImageIndex := 8;
  151.       nItem.SelectedIndex := nItem.ImageIndex;
  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;
  164.   localRecyclersNode.SelectedIndex := localRecyclersNode.ImageIndex;
  165.  
  166.   individualRecyclersNode := TreeView1.Items.Add(nil, 'Manually added recycle bins');
  167.   individualRecyclersNode.ImageIndex := 2;
  168.   individualRecyclersNode.SelectedIndex := individualRecyclersNode.ImageIndex;
  169. end;
  170.  
  171. end.
  172.