Модуль "P2KFileManager" (часть 8) - DownLoadFile

Рубрика: Исходники
Среда, 21 апреля 2010 г.
Просмотров: 115
последняя версия: 3.0.9 build 961 beta
от 07 декабря 2007 г.
procedure TfrmP2KFileManager.DownLoadFile;
var
  z, k, h: integer;
  a: word;
  s, t: string;
  p: string;
  n: TTreeNode;
  frmProgress: TfrmProgress;
  TotalSize: integer;
  xItem: TListItem;
  xF: array of TMotoFile;

begin
  if not Form1.IsP2KConnected then exit;
  if AdvListView1.Selected = nil then exit;
  if RzTreeView1.Selected = nil then exit;
  n:= RzTreeView1.Selected;
  while n <> nil do
    begin
      Insert('/' + n.Text, p, 1);
      n:= n.Parent;
    end;
  p:= p + '/';
  if AdvListView1.SelCount = 1
    then begin
           s:= AdvListView1.Selected.Caption;
           SaveDialog1.FileName:= s;
           s:= p + s;
           //z:= StrToInt(AdvListView1.Selected.SubItems[1]);
           z:= integer(AdvListView1.Selected.Data);
           a:= convert_word(strToint(AdvListView1.Selected.SubItems[2]));
           if SaveDialog1.Execute then
             begin
               frmProgress:= TfrmProgress.Create(Self);
               frmProgress.GradientLabel1.Visible:= true;
               frmProgress.GradientLabel2.Visible:= true;
               frmProgress.GradientLabel1.Caption:= '';
               frmProgress.GradientLabel2.Caption:= '';
               frmProgress.AdvProgressBar1.Value:= 0;
               frmProgress.AdvProgressBar1.Visible:= true;
               frmProgress.AdvProgressBar2.Value:= 0;
               frmProgress.AdvProgressBar2.Visible:= false;
               frmProgress.AdvProgressBar2.MaxValue:= z;
               frmProgress.AdvProgressBar1.MaxValue:= z;
               Form1.Enabled:= false;
               frmProgress.Show;
               //##Application.ProcessMessages;
               frmProgress.Update;
               if CorrectMotoName(s) then
                 begin
                   Screen.Cursor:= crHourGlass;
                   try
                     if P2K.DownLoadFile(s, z, a, SaveDialog1.FileName, frmProgress)
                       then begin end  //Form1.ShowAlert(Format('Файл %s успешно слит с телефона', [s]))
                       else begin end; //Form1.ShowAlert(Format('Не удалось слить файл %s с телефона', [s]))
                   except
                     //Form1.ShowAlert(Format('Непредвиденная ошибка скачивания файла %s', [s]))
                   end;
                   Screen.Cursor:= crDefault;
                 end;
               frmProgress.Free;
               Form1.Enabled:= true;
             end;
         end
    else begin
           if FolderDialog2.Execute then
             begin
               frmProgress:= TfrmProgress.Create(Self);
               frmProgress.GradientLabel1.Visible:= true;
               frmProgress.GradientLabel2.Visible:= true;
               frmProgress.GradientLabel1.Caption:= '';
               frmProgress.GradientLabel2.Caption:= '';
               frmProgress.AdvProgressBar1.Value:= 0;
               frmProgress.AdvProgressBar1.Visible:= true;
               frmProgress.AdvProgressBar2.Value:= 0;
               frmProgress.AdvProgressBar2.Visible:= true;
               TotalSize:= 0;
               xItem:= AdvListView1.Selected;
               k:= 0;
               h:= AdvListView1.SelCount;
               SetLength(xF, h);
               while xItem <> nil do
                 begin
                   s:= xItem.Caption;
                   //z:= StrToInt(xItem.SubItems[1]);
                   z:= integer(xItem.Data);
                   TotalSize:= TotalSize + z;
                   FillMemory(@xF[k].Name, 256, 0);
                   CopyMemory(@xF[k].Name, PChar(s), length(s));
                   xF[k].Size:= z;
                   xF[k].Attr:= convert_word(integer(xItem.Data));
                   xItem:= AdvListView1.GetNextItem(xItem, sdAll, [isSelected]);
                   inc(k);
                 end;
               frmProgress.AdvProgressBar2.MaxValue:= TotalSize;
               Form1.Enabled:= false;
               frmProgress.Show;
               //##Application.ProcessMessages;
               frmProgress.Update;
               try
                 for k:= 0 to High(xF) do
                   begin
                     if CorrectMotoName(s) then
                       begin
                         try
                           s:= xF[k].Name;
                           z:= xF[k].Size;
                           a:= xF[k].Attr;
                           t:= FolderDialog2.Directory + '\' +s;
                           frmProgress.AdvProgressBar1.MaxValue:= z;
                           try
                             if P2K.DownLoadFile(p+s, z, a, t, frmProgress)
                               then begin end //Form1.ShowAlert(Format('Файл %s успешно слит с телефона', [s]))
                               else begin end; //Form1.ShowAlert(Format('Не удалось слить файл %s с телефона', [s]))
                           except
                             //Form1.ShowAlert(Format('Непредвиденная ошибка скачивания файла %s', [s]))
                           end;
                         finally
                           Screen.Cursor:= crDefault;
                         end;
                       end
                       else frmProgress.AdvProgressBar2.Value:= frmProgress.AdvProgressBar2.Value + xF[k].Size;
                   end;
               except
                 //Form1.ShowAlert('Непредвиденная ошибка скачивания файлов');
               end;
                 frmProgress.Free;
                 Form1.Enabled:= true;
             end;
         end;
end;
Rambler's Top100