Модуль "P2KFileManager" (часть 9) - UploadFile

Рубрика: Исходники
Среда, 21 апреля 2010 г.
Просмотров: 121
последняя версия: 3.0.9 build 961 beta
от 07 декабря 2007 г.
procedure TfrmP2KFileManager.UploadFile;
var
  up, p, na: string;
  n, tn: TTreeNode;
  frmProgress: tfrmProgress;
  TotalSize, curSize, i, j: integer;
  xFHandle: integer;
  xIndex: integer;
  xFilter, tmp: string;
  FreeSpace: integer;

begin
  up:= '';
  FreeSpace:= 0;
  if not Form1.IsP2KConnected then exit;
  //up:= Form1.AdvOfficeComboBox2.Text;
  up:= AdvOfficeComboBox2.Text;
  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 up <> '' then p:= up;
  xIndex:= 1;
  xFilter:= 'All files|*.*'+'|'+'media files|*.mp3;*.mid;*.imy;*.midi;*.wav;*.amr'+'|'+
            'mid|*.mid'+'|'+'midi|*.midi'+'|'+'imy|*.imy'+'|'+'mp3|*.mp3'+'|'+
            'wav|*.wav'+'|'+'amr|*.amr'+'|'+'graphic files|*.gif;*.jpg;*.jpeg;*.ems;*.emp;*.ema;*.png;*.wbmp;*.bmp'+'|'+
            'gif|*.gif'+'|'+'jpg|*.jpg'+'|'+'jpeg|*.jpeg'+'|'+'ems|*.ems'+'|'+
            'emp|*.emp'+'|'+'ema|*.ema'+'|'+'png|*.png'+'|'+'wbmp|*.wbmp'+'|'+
            'bmp|*.bmp'+'|'+'video files|*.mp4;*.avi;*.3gp'+'|'+'avi|*.avi'+'|'+
            'mp4|*.mp4'+'|'+'3gp|*.3gp';
  tmp:= '';
  if RzTreeView1.Selected <> nil then tmp:= RzTreeView1.Selected.Text;
  if tmp = 'picture' then begin
                        xIndex:=2;
                        xFilter:= 'All files|*.*'+'|'+'graphic files|*.gif;*.jpg;*.jpeg;*.ems;*.emp;*.ema;*.png;*.wbmp;*.bmp'+'|'+
                                  'gif|*.gif'+'|'+'jpg|*.jpg'+'|'+'jpeg|*.jpeg'+'|'+'ems|*.ems'+'|'+
                                  'emp|*.emp'+'|'+'ema|*.ema'+'|'+'png|*.png'+'|'+'wbmp|*.wbmp'+'|'+'bmp|*.bmp';
                      end;
  if tmp = 'audio' then begin
                          xIndex:=2;
                          xFilter:= 'All files|*.*'+'|'+'media files|*.mp3;*.mid;*.imy;*.midi;*.wav;*.amr'+'|'+
                                    'mid|*.mid'+'|'+'midi|*.midi'+'|'+'imy|*.imy'+'|'+'mp3|*.mp3'+'|'+
                                    'wav|*.wav'+'|'+'amr|*.amr';
                      end;
  if tmp = 'video' then begin
                          xIndex:=2;
                          xFilter:= 'All files|*.*'+'|'+'video files|*.mp4;*.avi;*.3gp'+'|'+
                                    'avi|*.avi'+'|'+'mp4|*.mp4'+'|'+'3gp|*.3gp';
                        end;
  OpenDialog1.Filter:= xFilter;
  OpenDialog1.FilterIndex:= xIndex;
  if OpenDialog1.Execute then
    begin
      frmProgress:= TfrmProgress.Create(Self);
      TotalSize:= 0;
      if OpenDialog1.Files.Count = 1
      then
        begin
          na:= OpenDialog1.FileName;
          frmProgress.GradientLabel1.Caption:= Format(p2k_fm_pw_text04, [na]);
          frmProgress.GradientLabel2.Caption:= Format(p2k_fm_pw_text05, [p]);
          frmProgress.AdvProgressBar2.Visible:= false;
          Form1.Enabled:= false;
          frmProgress.Show;
          //##Application.ProcessMessages;
          frmProgress.Update;
          Screen.Cursor:= crHourGlass;
          try
            // проверить свободное место
            FreeSpace:= P2K.GetVolumeSize(Copy(p, 1, 2));
            xFHandle:= FileOpen(na, fmOpenRead);
            curSize := FileSeek(xFHandle,0,2);
            FileSeek(xFHandle,0,0);
            FileClose(xFHandle);
            if FreeSpace > curSize
              then
                begin
                  try
                    if P2K.UploadFile(na, p + ExtractFileName(na), frmProgress)
                       then begin end //Form1.ShowAlert(Format('Файл %s успешно залит в телефон', [na]))
                       else begin end; //Form1.ShowAlert(Format('Не удалось залить файл %s в телефон', [na]));
                    // добавить файл в список
                    xFHandle:= FileOpen(na,fmOpenRead);
                    curSize := FileSeek(xFHandle,0,2);
                    FileSeek(xFHandle,0,0);
                    FileClose(xFHandle);
                    //if AddFileToList(p + ExtractFileName(na), curSize, xMotoFiles) then
                    if AddFileToList(p + ExtractFileName(na), curSize) then
                      begin
                        RzTreeView1.OnChange(RzTreeView1, RzTreeView1.Selected);
                        tmp:= Copy(p, 1, 2);
                        for i:= 0 to High(arrDrives) do
                          begin
                            if tmp = arrDrives[i].Name then begin
                                                              arrDrives[i].CntFiles:= arrDrives[i].CntFiles+1;
                                                              arrDrives[i].Size:= arrDrives[i].Size - curSize;
                                                              break;
                                                            end;
                          end;
                      end;    
                    except
                      //Form1.ShowAlert(Format('Непредвиденная ошибка закачивания файла %s', [na]))
                    end;
                  
                end
              else Form1.spSkinMessage1.MessageDlg(p2k_fm_me_text01, mtError, [mbOk], 0);
          except
            //Form1.ShowAlert(Format('Непредвиденная ошибка закачки файла %s', [na]))
          end;
          frmProgress.Free;
          Form1.Enabled:= true;
          Screen.Cursor:= crDefault;
          //tn:= RzTreeView1.Selected;
          //BuildFolderTree(TreeList1);
          //TreeList1.SetFocus;
          //TreeList1.Select(tn, [ssShift]);
          RzTreeView1.OnChange(RzTreeView1, RzTreeView1.Selected);
        end
      else
        begin
          frmProgress.AdvProgressBar2.Visible:= true;
          for i:= 0 to OpenDialog1.Files.Count-1 do begin
                                         xFHandle:= FileOpen(OpenDialog1.Files[i],fmOpenRead);
                                         curSize := FileSeek(xFHandle,0,2);
                                         FileSeek(xFHandle,0,0);
                                         FileClose(xFHandle);
                                         if curSize <> -1 then TotalSize:= TotalSize + curSize;
                                     end;
          frmProgress.AdvProgressBar2.Value:= 0;
          frmProgress.AdvProgressBar2.MaxValue:= TotalSize;
          frmProgress.GradientLabel2.Caption:= 'В папку ' + p;
          Form1.Enabled:= false;
          frmProgress.Show;
          //##Application.ProcessMessages;
          frmProgress.Update;
          //if TotalSize >= FreeSpace then MessageDlg('Недостаточно свободного места для загрузки файлов.', mtWarning, [mbOk], 0)
          try
            FreeSpace:= P2K.GetVolumeSize(Copy(p, 1, 2));
            if FreeSpace > TotalSize
              then
                begin
                  for i:= 0 to OpenDialog1.Files.Count-1 do
                    begin
                      na:= OpenDialog1.Files[i];
                      frmProgress.GradientLabel1.Caption:= Format(p2k_fm_pw_text04, [na]);
                      Screen.Cursor:= crHourGlass;
                      try
                        if P2K.UploadFile(na, p + ExtractFileName(na), frmProgress)
                         then begin end //Form1.ShowAlert(Format('Файл %s успешно залит в телефон', [na]))
                         else begin end; //Form1.ShowAlert(Format('Не удалось залить файл %s в телефон', [na]));
                        // добавить файл в список
                        xFHandle:= FileOpen(na,fmOpenRead);
                        curSize := FileSeek(xFHandle,0,2);
                        FileSeek(xFHandle,0,0);
                        FileClose(xFHandle);
                        
                        //if AddFileToList(p + ExtractFileName(na), curSize, xMotoFiles) then
                        if AddFileToList(p + ExtractFileName(na), curSize) then
                          begin
                            tmp:= Copy(p, 1, 2);
                            for j:= 0 to High(arrDrives) do
                              begin
                                if tmp = arrDrives[j].Name then begin
                                                                  arrDrives[j].CntFiles:= arrDrives[j].CntFiles+1;
                                                                  arrDrives[j].Size:= arrDrives[j].Size - curSize;
                                                                  break;
                                                                end;
                              end;
                          end;
                      except
                        //Form1.ShowAlert(Format('Непредвиденная ошибка закачки файла %s', [na]));
                      end;
                      Screen.Cursor:= crDefault;
                    end;
                end
              else  Form1.spSkinMessage1.MessageDlg(p2k_fm_me_text01, mtError, [mbOk], 0);
          except
            //Form1.ShowAlert('Непредвиденная ошибка закачки файлов')
          end;
          frmProgress.Free;
          Form1.Enabled:= true;
          tn:= RzTreeView1.Selected;
          //BuildFolderTree(TreeList1);
          //TreeList1.SetFocus;
          RzTreeView1.OnChange(RzTreeView1, tn);
        end;
    end;
end;
Rambler's Top100