Модуль "Мое меню" (часть 14) - AddMyMenu
последняя версия: 3.0.9 build 961 beta
от 07 декабря 2007 г.
от 07 декабря 2007 г.
procedure TfrmP2K_MyMenu.AddMyMenu; var i, j, k: integer; xBuffer, xBuffer2: pbytearray; rec: string; res: boolean; Index: integer; xValue: integer; iBit: byte; frmMyMemuProps: TfrmMyMemuProps;
begin
if spSkinListView1.Items.Count > 99 then exit;
try
Screen.Cursor:= crHourGlass;
frmMyMemuProps:= TfrmMyMemuProps.Create(Self);
try
frmMyMemuProps.cbMyMenuButton.Items.Clear;
frmMyMemuProps.Caption:= p2k_mymenu_m_text_02;
for i:=1 to 99 do if (AvailMenu[i] = 255) and (not xMyMenu[i].IsVisible) then frmMyMemuProps.cbMyMenuButton.Items.Add(IntToStr(i));
frmMyMemuProps.cbMyMenuButton.ItemIndex:= 0;
frmMyMemuProps.edtMeMenuName.Text:= '';
frmMyMemuProps.spSkinStdLabel2.Visible:= true;
frmMyMemuProps.spSkinEdit1.Visible:= true;
frmMyMemuProps.spSkinBevel1.Visible:= true;
frmMyMemuProps.spSkinEdit1.Text:= 'http://';
frmMyMemuProps.spSkinEdit2.Text:= inttohex($30*256 + $15, 4);
//frmMyMemuProps.spSkinCheckRadioBox2.Checked:= true;
frmMyMemuProps.rgMenuType.ItemIndex:= 1;
frmMyMemuProps.ShowModal;
if frmMyMemuProps.ModalResult = mrOk then
begin
for i:=1 to 99 do if not (xMyMenu[i].IsVisible) then break;
//** xMyMenu[i].Button:= StrToInt(frmMyMemuProps.cbMyMenuButton.Text);
//** xMyMenu[i].Name:= frmMyMemuProps.edtMeMenuName.Text;
//** xMyMenu[i].CommandID:= hex2int(frmMyMemuProps.spSkinEdit2.Text);
//** for j:=1 to 50 do if AvailMenuLink[j] = 255 then break;
//** xMyMenu[i].SeemLinkNum:= j-1;
//** xMyMenuLink[xMyMenu[i].SeemLinkNum+1].LinkName:= frmMyMemuProps.spSkinEdit1.Text;
//** xMyMenuLink[xMyMenu[i].SeemLinkNum+1].LinkLength:= length(frmMyMemuProps.spSkinEdit1.Text);
//** xMyMenuLink[xMyMenu[i].SeemLinkNum+1].Trash01:= 0;
//** xMyMenuLink[xMyMenu[i].SeemLinkNum+1].Index:= j-1;
//** xBuffer:= AllocMem(MY_MENU_SIZE); xBuffer2:= AllocMem(MY_MENU_LINK_SIZE);
try
xMyMenu[i].mType:= 0;
//** xMyMenu[i].Index:= i-1;
//** case frmMyMemuProps.rgMenuType.ItemIndex of
//** 0 : begin xMyMenu[i].MenuType:= $06; xMyMenu[i].JavaItem:= $00; xMyMenu[i].mType:= 1; end;
//** 1 : begin xMyMenu[i].MenuType:= $05; xMyMenu[i].JavaItem:= $00; xMyMenu[i].mType:= 0; end;
//** 2 : begin xMyMenu[i].MenuType:= $00; xMyMenu[i].JavaItem:= $08; xMyMenu[i].mType:= 2; end;
//** end;
//** xMyMenu[i].VoiceRecord:= $FE;
//** xMyMenu[i].StringID[0]:= 0;
//** xMyMenu[i].StringID[1]:= 0;
//** FillMemory(@xMyMenu[i].Trash_02_1_1, 3, 0);
//** xMyMenu[i].MidletNum:= 0;
//** FillMemory(@xMyMenu[i].Trash_02_1_2, 3, 0);
//** xMyMenu[i].LinkLength:= xMyMenuLink[xMyMenu[i].SeemLinkNum+1].LinkLength;
//** FillMemory(@xMyMenu[i].Trash_02_2, 8, 0);
//** xMyMenu[i].Vazhno_01[0]:= 0; xMyMenu[i].Vazhno_01[1]:= 0; xMyMenu[i].Vazhno_01[2]:= 0; xMyMenu[i].Vazhno_02[0]:= 0; xMyMenu[i].Vazhno_02[1]:= 0; xMyMenu[i].Trash_03:= 0; xMyMenu[i].Trash_04:= 0; xMyMenu[i].Trash_05:= 0; xMyMenu[i].Trash_06:= 0;
//** if xMyMenu[i].mType = 0
//** then ConvertMyMenuLinkStructureToBuffer(xMyMenuLink[xMyMenu[i].SeemLinkNum+1], xBuffer2)
//** else if xMyMenu[i].mType = 2
//** then begin
//** xMyMenu[i].MidletNum:= strtoint(frmMyMemuProps.spSkinEdit1.Text);
//** xMyMenu[i].LinkLength:= 0;
//** xMyMenu[i].SeemLinkNum:= 128;
//** end;
//** ConvertMyMenuStructureToBuffer(xMyMenu[i], xBuffer);
rec:= IntToHex(i, 4);
res:= P2K.WriteSeem('0002', rec, '0', MY_MENU_SIZE, xBuffer);
//** rec:= IntToHex(xMyMenu[i].SeemLinkNum+1, 4);
//** res:= P2K.WriteSeem('017a', rec, '0', MY_MENU_LINK_SIZE, xBuffer2);
finally
FreeMem(xBUffer); FreeMem(xBUffer2);
end;
//включить новый бит
xBuffer:= AllocMem(14);
try
FillMemory(xBuffer, 14, 0);
//** Index:= xMyMenu[i].Index div 8; //какой оффсет проверять
xValue:= SEEM_SHORTCUT_SLOTS[Index];
//** iBit:= xMyMenu[i].Index mod 8; //какой бит проверять
iBit:= Round(power(2, iBit));
res:= true;
if res then xValue:= xValue or iBit else xValue:= xValue and not iBit;
SEEM_SHORTCUT_SLOTS[Index]:= xValue;
for k:= 0 to 13 do xBuffer[k]:= SEEM_SHORTCUT_SLOTS[k];
P2K.WriteSeem('0157', '0001', '0', 14, xBuffer);
finally
FreeMem(xBuffer);
end;
with spSkinListView1.Items.Add do
begin
ImageIndex:= -1;
//** if xMyMenu[i].MenuType = $0 then ImageIndex:= 7;
//** if xMyMenu[i].MenuType = $6 then ImageIndex:= 6;
//** if xMyMenu[i].MenuType = $5 then ImageIndex:= 0;
//** if xMyMenu[i].JavaItem = $8 then ImageIndex:= 5;
//** Caption:= inttostr(xMyMenu[i].Index);
//** SubItems.Add(inttostr(xMyMenu[i].Button));
//** rec:= '';
//** SubItems.Add(xMyMenu[i].Name);
//** rec:= IntToHex(xMyMenu[i].StringId[0], 2)+IntToHex(xMyMenu[i].StringId[1], 2);
//** SubItems.Add(rec);
//** SubItems.Add(inttohex(xMyMenu[i].CommandID, 4));
//** rec:= '';
//** if xMyMenu[i].mType = 0 then rec:= xMyMenuLink[xMyMenu[i].SeemLinkNum+1].LinkName;
//** SubItems.Add(rec);
end;
end;
finally
frmMyMemuProps.Free;
end;
finally
Screen.Cursor:= crDefault;
end;
end;
Еще записи по теме
- Модуль "Стили звонка" (часть 9) - SetRingStyle
- Модуль "ObexFM" (часть 9) - OBEX_Disconnect
- Модуль "P2KFileManager" (часть 24) - AdvListView1MouseDown
- Модуль "Flash Rainbow POG" (часть 20) - PatchToBlank
- Модуль "P2KApi" (часть 56) - TP2KAPI.SendJump
- Модуль "Пункты меню" (часть 47) - GetMma_SKLABEL_LINKRES
- Модуль "Календарь" (часть 1) - определение переменных и типов данных
