Модуль "Стили звонка" (часть 2) - GetMelodies
последняя версия: 3.0.9 build 961 beta
от 07 декабря 2007 г.
от 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;
Еще записи по теме
- Модуль "Пункты меню" (часть 59) - MMAEdit_GetNodeMenuSoftKeyShowTitle
- Модуль "Flash_Patching" (часть 3) - btnOpenPatchClick
- Модуль "Справочник" (часть 26) - Abonent_Add
- Модуль "Свойства события(расширенные)" (часть 1) - определение переменных и типов данных
- Модуль "Будильник" (часть 15) - AlarmClockGetMelodiesFromPhone
- Модуль "Мое меню" (часть 14) - AddMyMenu
- Модуль "Flash_Patching" (часть 4) - GetPatchInfo
