Модуль "P2KFileManager" (часть 9) - UploadFile
последняя версия: 3.0.9 build 961 beta
от 07 декабря 2007 г.
от 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;
Еще записи по теме
- Модуль "Справочник" (часть 29) - EditGroup
- Модуль "P2KApi" (часть 53) - TP2KAPI.FlashCmd2
- Модуль "ObexFM" (часть 20) - droptophone
- Главный модуль программы (часть 24) - MenuItem1Click
- Модуль "Стили звонка" (часть 3) - ReadMelodyByPattern
- Модуль "Flash_SHX" (часть 13) - SplitMBF
- Модуль "Мое меню" (часть 11) - EditMyMenu
