Модуль "Стили звонка" (часть 2) - GetMelodies

Рубрика: Исходники
Среда, 21 апреля 2010 г.
Просмотров: 127
последняя версия: 3.0.9 build 961 beta
от 07 декабря 2007 г.
procedure TfrmP2K_RingStyles.GetMelodies(var AMelodyList: TStringList);
var
  xMelodyList_System_NoAlert: TStringList;
  xMelodyList_System_Alert: TStringList;
  xMelodyList_Other: TStringList;
  xMelodyList_Other2: TStringList;
  xMelodyList_OtherCard: TStringList;
  xFiles: TStringList;
  tmp, str: string;
  i, k, x, t: integer;
  frmProgress: TfrmProgress;
  xCnt, TotalCnt: integer;
  tmp2: string;
  strCard: string;

begin
  xFiles:= TStringList.Create;
  xMelodyList_System_NoAlert:= TStringList.Create;
  xMelodyList_System_Alert:= TStringList.Create;
  xMelodyList_Other:= TStringList.Create;
  xMelodyList_Other2:= TStringList.Create;  
  xMelodyList_OtherCard:= TStringList.Create;  
  Screen.Cursor:= crHourGlass;
  //*************** получим общее кол-во файлов ********************
  TotalCnt:= 0;
  // read mp3
  xCnt:= p2k.GetFilesCount('/a/mobile/audio/*.mp3');
  inc(TotalCnt, xCnt);
  xCnt:= p2k.GetFilesCount('/c/mobile/audio/*.mp3');
  inc(TotalCnt, xCnt);
  xCnt:= p2k.GetFilesCount('/e/mobile/audio/*.mp3');
  inc(TotalCnt, xCnt);
  if UseMelodyFromCard then
    begin
      xCnt:= p2k.GetFilesCount('/b/mobile/audio/*.mp3');
      inc(TotalCnt, xCnt);
    end;
  // read mid
  xCnt:= p2k.GetFilesCount('/a/mobile/audio/*.mid');
  inc(TotalCnt, xCnt);
  xCnt:= p2k.GetFilesCount('/c/mobile/audio/*.mid');
  inc(TotalCnt, xCnt);
  xCnt:= p2k.GetFilesCount('/e/mobile/audio/*.mid');
  inc(TotalCnt, xCnt);
  if UseMelodyFromCard then
    begin
      xCnt:= p2k.GetFilesCount('/b/mobile/audio/*.mid');
      inc(TotalCnt, xCnt);
    end;
  // read wav
  if WavByRing then
    begin
      xCnt:= p2k.GetFilesCount('/a/mobile/audio/*.wav');
      inc(TotalCnt, xCnt);
      xCnt:= p2k.GetFilesCount('/c/mobile/audio/*.wav');
      inc(TotalCnt, xCnt);
      xCnt:= p2k.GetFilesCount('/e/mobile/audio/*.wav');
      inc(TotalCnt, xCnt);
      if UseMelodyFromCard then
        begin
          xCnt:= p2k.GetFilesCount('/b/mobile/audio/*.wav');
          inc(TotalCnt, xCnt);
        end;
    end;
  // read bas
  xCnt:= p2k.GetFilesCount('/a/mobile/audio/*.bas');
  inc(TotalCnt, xCnt);
  xCnt:= p2k.GetFilesCount('/c/mobile/audio/*.bas');
  inc(TotalCnt, xCnt);
  xCnt:= p2k.GetFilesCount('/e/mobile/audio/*.bas');
  inc(TotalCnt, xCnt);
  if UseMelodyFromCard then
    begin
      xCnt:= p2k.GetFilesCount('/b/mobile/audio/*.bas');
      inc(TotalCnt, xCnt);
    end;
  // read imy
  xCnt:= p2k.GetFilesCount('/a/mobile/audio/*.imy');
  inc(TotalCnt, xCnt);
  xCnt:= p2k.GetFilesCount('/c/mobile/audio/*.imy');
  inc(TotalCnt, xCnt);
  xCnt:= p2k.GetFilesCount('/e/mobile/audio/*.imy');
  inc(TotalCnt, xCnt);
  if UseMelodyFromCard then
    begin
      xCnt:= p2k.GetFilesCount('/b/mobile/audio/*.imy');
      inc(TotalCnt, xCnt);
    end;
  // read amr
  if AmrByRing then
    begin
      xCnt:= p2k.GetFilesCount('/a/mobile/audio/*.amr');
      inc(TotalCnt, xCnt);
      xCnt:= p2k.GetFilesCount('/c/mobile/audio/*.amr');
      inc(TotalCnt, xCnt);
      xCnt:= p2k.GetFilesCount('/e/mobile/audio/*.amr');
      inc(TotalCnt, xCnt);
      if UseMelodyFromCard then
        begin
          xCnt:= p2k.GetFilesCount('/b/mobile/audio/*.amr');
          inc(TotalCnt, xCnt);
        end;
    end;
  //*************** считаем списки файлов по маскам ********************
  frmProgress:= TfrmProgress.Create(Self);
  try
    frmProgress.AdvProgressBar1.Value:= 0;
    frmProgress.AdvProgressBar1.MaxValue:= TotalCnt;
    frmProgress.AdvProgressBar2.Visible:= false;
    frmProgress.GradientLabel1.Caption:= p2k_rs_pw_text_01;
    frmProgress.GradientLabel2.Visible:= false;
    Form1.Enabled:= false;
    frmProgress.Show;
    Application.ProcessMessages;
    // mp3
    xFiles.Clear;
    ReadMelodyByPattern('/a/mobile/audio/*.mp3', '/a/mobile/audio/', xFiles, frmProgress);
    AMelodyList.AddStrings(xFiles);
    xFiles.Clear;
    ReadMelodyByPattern('/c/mobile/audio/*.mp3', '/c/mobile/audio/', xFiles, frmProgress);
    AMelodyList.AddStrings(xFiles);
    xFiles.Clear;
    ReadMelodyByPattern('/e/mobile/audio/*.mp3', '/e/mobile/audio/', xFiles, frmProgress);
    AMelodyList.AddStrings(xFiles);
    if UseMelodyFromCard then
      begin
        xFiles.Clear;
        ReadMelodyByPattern('/b/mobile/audio/*.mp3', '/b/mobile/audio/', xFiles, frmProgress);
        AMelodyList.AddStrings(xFiles);
      end;
    // mid
    xFiles.Clear;
    ReadMelodyByPattern('/a/mobile/audio/*.mid', '/a/mobile/audio/', xFiles, frmProgress);
    AMelodyList.AddStrings(xFiles);
    xFiles.Clear;
    ReadMelodyByPattern('/c/mobile/audio/*.mid', '/c/mobile/audio/', xFiles, frmProgress);
    AMelodyList.AddStrings(xFiles);
    xFiles.Clear;
    ReadMelodyByPattern('/e/mobile/audio/*.mid', '/e/mobile/audio/', xFiles, frmProgress);
    AMelodyList.AddStrings(xFiles);
    if UseMelodyFromCard then
      begin
        xFiles.Clear;
        ReadMelodyByPattern('/b/mobile/audio/*.mid', '/b/mobile/audio/', xFiles, frmProgress);
        AMelodyList.AddStrings(xFiles);
      end;
  // read wav
  if WavByRing then
    begin
      xFiles.Clear;
      ReadMelodyByPattern('/a/mobile/audio/*.wav', '/a/mobile/audio/', xFiles, frmProgress);
      AMelodyList.AddStrings(xFiles);
      xFiles.Clear;
      ReadMelodyByPattern('/c/mobile/audio/*.wav', '/c/mobile/audio/', xFiles, frmProgress);
      AMelodyList.AddStrings(xFiles);
      xFiles.Clear;
      ReadMelodyByPattern('/e/mobile/audio/*.wav', '/e/mobile/audio/', xFiles, frmProgress);
      AMelodyList.AddStrings(xFiles);
      if UseMelodyFromCard then
        begin
          xFiles.Clear;
          ReadMelodyByPattern('/b/mobile/audio/*.wav', '/b/mobile/audio/', xFiles, frmProgress);
          AMelodyList.AddStrings(xFiles);
        end;
    end;
    // bas
    xFiles.Clear;
    ReadMelodyByPattern('/a/mobile/audio/*.bas', '/a/mobile/audio/', xFiles, frmProgress);
    AMelodyList.AddStrings(xFiles);
    xFiles.Clear;
    ReadMelodyByPattern('/c/mobile/audio/*.bas', '/c/mobile/audio/', xFiles, frmProgress);
    AMelodyList.AddStrings(xFiles);
    xFiles.Clear;
    ReadMelodyByPattern('/e/mobile/audio/*.bas', '/e/mobile/audio/', xFiles, frmProgress);
    AMelodyList.AddStrings(xFiles);
    if UseMelodyFromCard then
      begin
        xFiles.Clear;
        ReadMelodyByPattern('/b/mobile/audio/*.bas', '/b/mobile/audio/', xFiles, frmProgress);
        AMelodyList.AddStrings(xFiles);
      end;
    // imy
    xFiles.Clear;
    ReadMelodyByPattern('/a/mobile/audio/*.imy', '/a/mobile/audio/', xFiles, frmProgress);
    AMelodyList.AddStrings(xFiles);
    xFiles.Clear;
    ReadMelodyByPattern('/c/mobile/audio/*.imy', '/c/mobile/audio/', xFiles, frmProgress);
    AMelodyList.AddStrings(xFiles);
    xFiles.Clear;
    ReadMelodyByPattern('/e/mobile/audio/*.imy', '/e/mobile/audio/', xFiles, frmProgress);
    AMelodyList.AddStrings(xFiles);
    if UseMelodyFromCard then
      begin
        xFiles.Clear;
        ReadMelodyByPattern('/b/mobile/audio/*.imy', '/b/mobile/audio/', xFiles, frmProgress);
        AMelodyList.AddStrings(xFiles);
      end;
    // amr
  if AmrByRing then
    begin
      xFiles.Clear;
      ReadMelodyByPattern('/a/mobile/audio/*.amr', '/a/mobile/audio/', xFiles, frmProgress);
      AMelodyList.AddStrings(xFiles);
      xFiles.Clear;
      ReadMelodyByPattern('/c/mobile/audio/*.amr', '/c/mobile/audio/', xFiles, frmProgress);
      AMelodyList.AddStrings(xFiles);
      xFiles.Clear;
      ReadMelodyByPattern('/e/mobile/audio/*.amr', '/e/mobile/audio/', xFiles, frmProgress);
      AMelodyList.AddStrings(xFiles);
      if UseMelodyFromCard then
        begin
          xFiles.Clear;
          ReadMelodyByPattern('/b/mobile/audio/*.amr', '/b/mobile/audio/', xFiles, frmProgress);
          AMelodyList.AddStrings(xFiles);
        end;
    end;
    xFiles.Free;
    xFiles:= nil;
   for i:=0 to AMelodyList.Count-1 do
    begin
      tmp:= AMelodyList[i];
      str:= ExtractStr(tmp, #1);
      strCard:= tmp;
      //strCard:= ExtractStr(tmp, #2);
      tmp:= ExtractStr(strCard, #2);
      if (strtoint(tmp) = 4) or (strtoint(tmp) = 5) or (strtoint(tmp) = 69)
        then begin
               if (Pos('~AlertFile', str) <= 0) or
                  (Pos('~0', str) <=0 ) or
                  (Pos('~~.mp3', str) <=0 )
                 then xMelodyList_System_Alert.Add(str)
                 else xMelodyList_System_NoAlert.Add(str);
             end
        else begin
               if (strCard[1] = '1')
                 then xMelodyList_OtherCard.Add(str)
                 else begin
                        if strCard[1] = '0' then xMelodyList_Other.Add(str)
                        else if strCard[1] = '2' then xMelodyList_Other2.Add(str);
                      end;   
             end;
    end;
  //*****************************************************
  for i:= 0 to xMelodyList_System_NoAlert.Count-1 do
    for x:= 0 to xMelodyList_System_NoAlert.Count-1 do
      begin
        str:= xMelodyList_System_NoAlert[x];
        tmp:= xMelodyList_System_NoAlert[i];
        k:= CompareMelody(str, tmp);
        if (k < 0) and (x > i) then
          begin
            xMelodyList_System_NoAlert.Insert(i, xMelodyList_System_NoAlert[x]);
            xMelodyList_System_NoAlert.Delete(x + 1);
          end;
      end;
  //*****************************************************
  for i:= 0 to xMelodyList_System_Alert.Count-1 do
    for x:= 0 to xMelodyList_System_Alert.Count-1 do
      begin
        str:= xMelodyList_System_Alert[x];
        tmp:= xMelodyList_System_Alert[i];
        k:= CompareMelody(str, tmp);
        if (str < tmp) and (x > i) then
          begin
            xMelodyList_System_Alert.Insert(i, xMelodyList_System_Alert[x]);
            xMelodyList_System_Alert.Delete(x + 1);
          end;
      end;
  //*****************************************************
  for i:= 0 to xMelodyList_Other.Count-1 do
    for x:= 0 to xMelodyList_Other.Count-1 do
      begin
        str:= xMelodyList_Other[x];
        tmp:= xMelodyList_Other[i];
        k:= CompareMelody(str, tmp);
        if (k < 0) and (x > i) then
          begin
            xMelodyList_Other.Insert(i, xMelodyList_Other[x]);
            xMelodyList_Other.Delete(x + 1);
          end;
      end;
  for i:= 0 to xMelodyList_Other2.Count-1 do
    for x:= 0 to xMelodyList_Other2.Count-1 do
      begin
        str:= xMelodyList_Other2[x];
        tmp:= xMelodyList_Other2[i];
        k:= CompareMelody(str, tmp);
        if (k < 0) and (x > i) then
          begin
            xMelodyList_Other2.Insert(i, xMelodyList_Other2[x]);
            xMelodyList_Other2.Delete(x + 1);
          end;
      end;
  for i:= 0 to xMelodyList_OtherCard.Count-1 do
    for x:= 0 to xMelodyList_OtherCard.Count-1 do
      begin
        str:= xMelodyList_OtherCard[x];
        tmp:= xMelodyList_OtherCard[i];
        k:= CompareMelody(str, tmp);
        if (k < 0) and (x > i) then
          begin
            xMelodyList_OtherCard.Insert(i, xMelodyList_OtherCard[x]);
            xMelodyList_OtherCard.Delete(x + 1);
          end;
      end;
{
  for i:= 0 to xMelodyList_Other.Count-1 do
    begin
      //if not CorrectMotoName(xMelodyList_Other[i]) then
        begin
          xMelodyList_Other.Insert(xMelodyList_Other.Count, xMelodyList_Other[i]);
          xMelodyList_Other.Delete(i);
        end;
    end;
}
  AMelodyList.Clear;
  AMelodyList.AddStrings(xMelodyList_System_NoAlert);
  AMelodyList.AddStrings(xMelodyList_System_Alert);
  AMelodyList.AddStrings(xMelodyList_Other);
  AMelodyList.AddStrings(xMelodyList_Other2);  
  AMelodyList.AddStrings(xMelodyList_OtherCard);
  xMelodyList_Other.Free; xMelodyList_Other:= nil;
  xMelodyList_Other2.Free; xMelodyList_Other2:= nil;  
  xMelodyList_OtherCard.Free; xMelodyList_OtherCard:= nil;  
  xMelodyList_System_Alert.Free; xMelodyList_System_Alert:= nil;
  xMelodyList_System_NoAlert.Free; xMelodyList_System_NoAlert:= nil;
  AMelodyList.Insert(0, p2k_rs_mel00);
  AMelodyList.Insert(1, p2k_rs_mel01);
  AMelodyList.Insert(2, p2k_rs_mel02);
  AMelodyList.Insert(3, p2k_rs_mel03);
  AMelodyList.Insert(4, p2k_rs_mel04);
  AMelodyList.Insert(5, p2k_rs_mel05);
  AMelodyList.Insert(6, p2k_rs_mel06);
  AMelodyList.Insert(7, p2k_rs_mel07);
  AMelodyList.Insert(8, p2k_rs_mel08);
  AMelodyList.Insert(9, p2k_rs_mel09);
  AMelodyList.SaveToFile(ExePath + 'Data\melody.lst');
  finally
    frmProgress.Free;
    Form1.Enabled:= true;
    Screen.Cursor:= crDefault;    
  end;  
end;
Rambler's Top100