Модуль "ObexFM" (часть 14) - ListView1DblClick

Рубрика: Исходники
Среда, 21 апреля 2010 г.
Просмотров: 157
последняя версия: 3.0.9 build 961 beta
от 07 декабря 2007 г.
procedure TfrmOBEXFM.ListView1DblClick(Sender: TObject);
var
  s, ss, path: String;
  frmProgress: TfrmProgress;
  ml, i: integer;
  pw: array [0..255] of WideChar;

begin
  if TspSkinListView(Sender).Selected.SubItems[2] = 'folder'
    then
      begin
        s:= TspSkinListView(SEnder).Selected.Caption;
        Screen.Cursor:= crHOurGlass;
        frmProgress:= TfrmProgress.Create(Self);
        //frmProgress.AdvProgressBar1.Infinite:= true;
        //frmProgress.AdvProgressBar1.Animated:= true;
        //frmProgress.AdvProgressBar1.ShowPercentage:= false;
        //frmProgress.AdvProgressBar1.ShowPosition:= false;
        frmProgress.GradientLabel1.Caption:= obex_fm_pw_text01;
        frmProgress.GradientLabel2.Visible:= false;
        frmProgress.AdvProgressBar2.Visible:= false;
        if OBEXShowProgress = 1 then frmProgress.Show;
        //Application.ProcessMessages;
        try
          SetPath(s);
          Sleep(OBEXTimeOut);
          GetFolderContent;
        finally
          Screen.Cursor:= crDefault;
          frmProgress.Free;
        end;
      end
  else
    begin
        s:= TspSkinListView(SEnder).Selected.Caption;
        ss:= inttostr(integer(TspSkinListView(SEnder).Selected.Data));
        Screen.Cursor:= crHOurGlass;
        frmProgress:= TfrmProgress.Create(Self);
        //frmProgress.AdvProgressBar1.Infinite:= true;
        //frmProgress.AdvProgressBar1.Animated:= true;
        //frmProgress.AdvProgressBar1.ShowPercentage:= false;
        //frmProgress.AdvProgressBar1.ShowPosition:= false;
        frmProgress.AdvProgressBar1.Value:= 0;
        frmProgress.AdvProgressBar1.MaxValue:= strtoint(ss);
        frmProgress.GradientLabel1.Caption:= obex_fm_pw_text02;
        frmProgress.GradientLabel2.Visible:= false;
        frmProgress.AdvProgressBar2.Visible:= false;
        frmProgress.Show;
        //Application.ProcessMessages;
        try
          // ml - size of sending request (packet)
          ml:=11 {pre-"Name" headers} + (Length(s)+1)*2 {file name "Name" value};
          if iOBEXType = 0 then for i:=0 to 10 do Buffer[i]:=byte(GetFile[i])
                           else for i:=0 to 10 do Buffer[i]:=byte(GetFile2[i]);
          Buffer[1]:=ml div 256;
          Buffer[2]:=ml mod 256;
          Buffer[9]:=((Length(s)+1)*2+3) div 256;
          Buffer[10]:=((Length(s)+1)*2+3) mod 256;
          FillChar(Buffer[11],255,#0);
          StringToWideChar(s,@pw,256);
          for i:=1 to Length(s) do
            begin
              Buffer[10+i*2-1]:=word(pw[i-1]) div 256;
              Buffer[10+i*2]:=word(pw[i-1]) mod 256;
            end;
          Buffer[10+Length(s)*2+2-1]:=$00;
          Buffer[10+Length(s)*2+2]:=$00;
          BufLen:=10+Length(s)*2+2+1;
          path:= GetTempPathEx;
          path:= path + TspSkinListView(SEnder).Selected.Caption;
          AssignFile(DL_File, path);
          Rewrite(DL_File);
          DL_Mode:=True;
          try
            OBEX_SendCommand(integer(TspSkinListView(SEnder).Selected.Data), frmProgress);
          finally
          end;
          DL_Mode:=False;
          CloseFile(DL_File);
          Sleep(100);
          //if OBEX_Opened=False then break;
          Form1.ExecuteFile(path, '', '', SW_SHOW);
        finally
          Screen.Cursor:= crDefault;
          frmProgress.Free;
        end;
    end;
end;
Rambler's Top100