Модуль "Мое меню" (часть 1) - определение переменных и типов данных
последняя версия: 3.0.9 build 961 beta
от 07 декабря 2007 г.
от 07 декабря 2007 г.
unit uMyMenu; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DynamicSkinForm, SkinCtrls, StdCtrls, ComCtrls, ExtCtrls, ufrmProgress, math, up2kapi, ImgList, PngImageList, Menus, SkinMenus; type TShortcutMenu = packed record Index: byte; //offset 00h MenuType: byte; //offset 01h 05 - link Button: Byte; //offset 02h VoiceRecord: byte; //offset 03h - Fe - no, 01 - yes JavaItem: word; //offset 04h - 05h ----- 0 для всего кроме ява, ява - 8 CommandID: word; //offset 06h - 07h ListItem_id: dword; ListItem_tag: dword; //LinkLength ValueListItem_id: dword; ValueListItem_tag: dword; //Trash_02_2: array [0..7] of byte; //offset 10h - 17h xData: dword; //SeemLinkNum dd: word; StringID: word; //array [0..1] of byte; //offset 1eh - 1fh Name: string[34]; state_tag: byte; Trash_modifiable: byte; end;
TMyMenu = packed record
IsVisible: boolean;
mType: byte; // 0 - link, 1 - menu, 2 - java
xMenu: TShortcutMenu;
Link: string[200];
end;
type
TMyMenuLinks = packed record
Index: byte;
Trash01: byte;
LinkLength: byte;
LinkName: string[100];
end;
type
TWebShortcuts = packed record //1264 или 2112
Visible: byte; // всегда $11 - видим$, 00 - невидим
AllowDelete: byte; //$01 - locked, $00 - unlocked
x2: byte;
xType: byte; //$00, $03, $B4 - не знаю что за параметры
Index: dword; // перевернутый, это все же индекс
Name: array [0..51] of byte; //unicode, в конце $00 $00
Url: array[0..1203] of char; //asci? далее 00
end;
TWebShortcuts2 = packed record //1264 или 2112
Visible: byte; // всегда $11 - видим$, 00 - невидим
AllowDelete: byte; //$01 - locked, $00 - unlocked
x2: byte;
xType: byte; //$00, $03, $B4 - не знаю что за параметры
Index: dword; // перевернутый, это все же индекс
Name: array [0..51] of byte; //unicode, в конце $00 $00
Url: array[0..2051] of char; //asci? далее 00
end;
// а еще в конце 4 байта - хз что , может просто мусор?
// еще какой-то байт отвечает за видимость
const
MY_MENU_SIZE = 68;
MY_MENU_LINK_SIZE = 102;
MY_WEB_SHORTCUT_SIZE = 1264;
MY_WEB_SHORTCUT_SIZE_2 = 2112; // K3
type
TArrayOfMyMenu = array [1..100] of TMyMenu; {01 .. $64}
TArrayOfMyMenuLinks = array [1..50] of TMyMenuLinks; {01 .. $64}
TArrWebShortcuts = array of TWebShortcuts;
TArrWebShortcuts2 = array of TWebShortcuts2;
type
TfrmP2K_MyMenu = class(TFrame)
spSkinFrame1: TspSkinFrame;
Panel1: TspSkinPanel;
spSkinExPanel1: TspSkinExPanel;
spSkinExPanel2: TspSkinExPanel;
spSkinSplitter1: TspSkinSplitter;
spSkinPanel1: TspSkinPanel;
spSkinScrollBar1: TspSkinScrollBar;
spSkinScrollBar2: TspSkinScrollBar;
spSkinListView1: TspSkinListView;
spSkinPanel4: TspSkinPanel;
spSkinScrollBar3: TspSkinScrollBar;
spSkinScrollBar4: TspSkinScrollBar;
spSkinListView2: TspSkinListView;
spSkinPanel2: TspSkinPanel;
AdvGlowButton1: TspSkinSpeedButton;
spSkinSpeedButton1: TspSkinSpeedButton;
spSkinSpeedButton2: TspSkinSpeedButton;
spSkinPanel3: TspSkinPanel;
spSkinSpeedButton3: TspSkinSpeedButton;
spSkinSpeedButton4: TspSkinSpeedButton;
spSkinSpeedButton5: TspSkinSpeedButton;
procedure AdvGlowButton3Click(Sender: TObject);
procedure AdvGlowButton1Click(Sender: TObject);
procedure spSkinSpeedButton1Click(Sender: TObject);
procedure spSkinListView1DblClick(Sender: TObject);
procedure spSkinSpeedButton4Click(Sender: TObject);
procedure spSkinListView2DblClick(Sender: TObject);
procedure spSkinSpeedButton3Click(Sender: TObject);
procedure spSkinSpeedButton5Click(Sender: TObject);
procedure spSkinSpeedButton2Click(Sender: TObject);
procedure spSkinListView1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure spSkinListView2MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
procedure ReadMyMenu;
procedure GetMyMenu(var AMyMenu: TArrayOfMyMenu; var AMyMenuLink: TArrayOfMyMenuLinks; AfrmProgress: TfrmProgress);
procedure ConvertBufferToMyMenuStructure(ABuffer: pbytearray; var AMyMenu: TMyMenu);
procedure ConvertBufferToMyMenuLinkStructure(ABuffer: pbytearray; var AMyMenuLink: TMyMenuLinks);
procedure FillList(AMyMenu: TArrayOfMyMenu; AMyMenuLink: TArrayOfMyMenuLinks);
function GetWebShortcuts(ASize: integer; var AWebShortcuts : TArrWebShortcuts; AfrmProgress: TfrmProgress): boolean; overload;
function GetWebShortcuts(ASize: integer; var AWebShortcuts : TArrWebShortcuts2; AfrmProgress: TfrmProgress): boolean; overload;
procedure FillList2(AWebShortcuts : TArrWebShortcuts); overload;
procedure FillList2(AWebShortcuts : TArrWebShortcuts2); overload;
procedure ConvertMyMenuStructureToBuffer(AMyMenu: TMyMenu; var ABuffer: pbytearray);
procedure ConvertMyMenuLinkStructureToBuffer(AMyMenuLink: TMyMenuLinks; var ABuffer: pbytearray);
procedure WebShortcuts_applyChanges(AWebShortcuts : TArrWebShortcuts); overload;
procedure WebShortcuts_applyChanges(AWebShortcuts : TArrWebShortcuts2); overload;
function GetShortcutType(AfrmProgress: TfrmProgress; var ASize: integer): integer;
procedure EditMyMenu;
procedure AddMyMenu;
procedure DeleteMyMenu;
procedure EditWebShortCuts;
procedure AddWebShortCuts;
procedure DeleteWebShortCuts;
end;
var
frmP2K_MyMenu: TfrmP2K_MyMenu;
xMyMenu: TArrayOfMyMenu;
AvailMenu: array [1..100] of byte;
xMyMenuLink: TArrayOfMyMenuLinks;
AvailMenuLink: array [1..50] of byte;
SEEM_SHORTCUT_SLOTS: array [0..13] of byte;
xWebShortcuts : TArrWebShortcuts = nil;
xWebShortcuts2 : TArrWebShortcuts2 = nil;
//xWebShortcuts : integer = 0;
curMyMenuButton: integer = 0;
xWebShortCutType : byte = 0; // 0 - 1264, 1 - 2112
implementation
uses uMain, uSpecialUtils, uMyMenuProps, uWebShortCuts, uLng;
{$R *.dfm}
Еще записи по теме
- Модуль "P2KFileManager" (часть 14) - GetFullPathOfSelectedNode
- Модуль "ObexFM" (часть 1) - определение переменных и типов данных
- Модуль "P2KApi" (часть 29) - TP2KAPI.File_Open
- Модуль "Сообщения" (часть 5) - RetriveSMS
- Модуль "Пункты меню" (часть 57) - MMAEdit_GetNodeType
- Модуль "Мое меню" (часть 19) - AddWebShortCuts
- Модуль "OtherFeatures" (часть 5) - spSkinListBox1ListBoxClick
