📄 unit1.pas
字号:
unit Unit1;
{
*******************************************************************************
* Descriptions: Main Unit for FMA
* $Source: /cvsroot/fma/fma/Unit1.pas,v $
* $Locker: $
*
* Todo:
* - Replace all 'name + [ + number + ]' with ContactNumberByTel and ContactNumberByName
* - split implementation to different smaller units
*
* Change Log:
* $Log: Unit1.pas,v $
*
*******************************************************************************
}
interface
{$R WinXP.res}
uses
{$IFDEF VER150}
XPStyleActnCtrls,
{$ELSE}
ThemeMgr, TntThemeMgr,
{$ENDIF}
Windows, TntWindows, Messages, SysUtils, TntSysUtils, Variants, Classes, TntClasses, Graphics, TntGraphics,
Controls, TntControls, Forms, TntForms, Dialogs, TntDialogs, StdCtrls, TntStdCtrls, ComCtrls, TntComCtrls,
UniTntCtrls, ExtCtrls, TntExtCtrls, ToolWin, ActnList, TntActnList, Menus, TntMenus, ShellAPI, uSMS, ImgList,
DateUtils, ActnMan, ActnCtrls, ActnMenus, AppEvnts, StdActns, TntStdActns, Placemnt, Registry, WinSock, IniFiles,
Buttons, TntButtons, VirtualTrees, uObex, uExploreView, uWaitComplete, LMDCustomComponent, LMDOneInstance,
LMDControl, LMDBaseControl, LMDBaseGraphicControl, LMDGraphicControl, LMDBaseMeter, LMDCustomProgressFill,
LMDProgressFill, LMDHookComponent, LMDFMDrop, WSocket, WBluetoothSocket, WIrCOMMSocket, mmsystem, uAccessoriesMenu,
uMissedCalls, uKeyPad, CoolTrayIcon, WebUtil, jpeg, AMixer, LMDFill, WebUpdate, aw_SCtrl, CPort, uScriptEditor,
uContactSync, uChatSMS, GR32_Image, uFiles, uSyncCalendar, PBFolderDialog, uSIMEdit, uMEEdit, uMsgView, uInfoView,
uXML, uSyncPhonebook, uSyncBookmarks, uVCard, uLog, uLogger, uMessageData, SEProgress, USBMonitor, ActiveX;
const
LongOperationsTimeout = 45000; // 45 seconds (for searching in phone book, sending messages etc.)
__fma_objcall = 'FmaInternalObjectCall'; // do not localize
FMA_HANDLEMESSAGE = WM_USER + 100;
FmaMessagesRootFlag = $200000; // used for both FmaMessagesPhoneRootFlag and FmaMessagesFmaRootFlag testing
FmaMessagesRootMask = $E00000;
FmaMessagesPhoneRootFlag = FmaMessagesRootFlag;
FmaMessagesFmaRootFlag = FmaMessagesRootFlag or $100000; // see FmaMessagesRootMask
FmaMessageFolderFlag = $080000; // added to Explorer.Node's stateindex
FmaSMSSubFolderFlag = FmaMessagesFmaRootFlag or FmaMessageFolderFlag;
FmaNodeSubitemsMask = $0F0000;
type
TConfirmation = (cfNone, cfYesToAll, cfNoToAll);
TFindContactMode = (fcByNumber, fcByName);
TFindContactResult = (frNone, frIrmcSync, frPhonebook, frSIMCard);
TFmaHandleMessage = record
Msg: Cardinal;
Message: PChar;
Length: Longint;
Result: Longint;
end;
PFmaExplorerNode = ^TFmaExplorerNode;
TFmaExplorerNode = record
Data: Pointer;
Text: WideString;
ImageIndex, StateIndex: Integer;
isFile: boolean;
SpecialImages: Cardinal;
{ specialImages:Cardinal = $ ST M1 M2 NC
ST - standard imageIndex
M1 - mouseOver1 imageIndex
M2 - mouseOver2 imageIndex
NC - not connected imageIndex }
SpecialImagesFlags: Byte;
{ specialImagesFlags:Byte = $ FL
FL - flags::
$01: use image and perform action on click
$02: use mouseOver1 image
$04: use disconnected image
$08: use mouseOver1 image if disconnected (in combination with 4)
$10: use mouseOver2 image if disconnected (in combination with 4)
$20: perform action if disconnected (in combination with 4)
$40: ignore ThreadSafe's Busy state on perform action
$80: show SpecialImages as number
// action that should be performed has to be set in ExplorerNewClick }
end;
TStartupOptions = record
NoObex,NoIRMC,NoGroups,NoFolders,NoProfiles,NoCalls,NoAlarms,NoBaloons,NoClock: boolean;
end;
TProximityOptions = record
AwayLock,NearUnlock,RunSS: boolean;
AwayMusicMode,NearMusicMode: integer;
end;
TTextMessageOptions = record
NoPopup,NoBaloon,MoveToArchive,FullWarning: boolean;
end;
TCallOptions = record
NoPopup,NoBaloon: boolean;
end;
TProfileLoadCallback = procedure (Pos,Max: Integer);
TForm1 = class(TTntForm)
StatusBar: TTntStatusBar;
CoolBar: TCoolBar;
ActionList1: TTntActionList;
ActionConnectionConnect: TTntAction;
ActionConnectionDisconnect: TTntAction;
ImageList1: TImageList;
ActionContactsDownload: TTntAction;
Splitter1: TTntSplitter;
PopupMenu1: TTntPopupMenu;
Refresh3: TTntMenuItem;
ActionConnectionDownload: TTntAction;
ActionSMSArchiveMsg: TTntAction;
ActionSelectAll: TTntAction;
ActionDelete: TTntAction;
ActionSMSMoveMsgToArchive: TTntAction;
ActionSMSNewMsg: TTntAction;
ActionContactsNewMsg: TTntAction;
NewMessage2: TTntMenuItem;
ActionSMSReplyMsg: TTntAction;
ActionSMSForwardMsg: TTntAction;
ActionConnectionToggle: TTntAction;
ActionContactsVoiceCall: TTntAction;
Call1: TTntMenuItem;
Timer1: TTimer;
ApplicationEvents1: TApplicationEvents;
trayMenu: TTntPopupMenu;
Connect1: TTntMenuItem;
NewMessage1: TTntMenuItem;
MainMenu1: TTntMainMenu;
Connection1: TTntMenuItem;
Connect2: TTntMenuItem;
Disconnect1: TTntMenuItem;
Refresh1: TTntMenuItem;
N5: TTntMenuItem;
Exit1: TTntMenuItem;
Action2: TTntMenuItem;
MessagetoContact1: TTntMenuItem;
NewMessage3: TTntMenuItem;
Reply2: TTntMenuItem;
Forward2: TTntMenuItem;
Delete2: TTntMenuItem;
N8: TTntMenuItem;
CopytoArchive1: TTntMenuItem;
MovetoArchive2: TTntMenuItem;
N9: TTntMenuItem;
SelectAll1: TTntMenuItem;
Help1: TTntMenuItem;
About1: TTntMenuItem;
ImageList2: TImageList;
ActionAbout: TTntAction;
ActionWindowRestore: TTntAction;
ShowRestore1: TTntMenuItem;
Exit2: TTntMenuItem;
FormStorage1: TFormStorage;
ActionToolsOptions: TTntAction;
Tools1: TTntMenuItem;
Options1: TTntMenuItem;
ActionConnectionMonitor: TTntAction;
Monitor1: TTntMenuItem;
ActionConnectionAutoConnect: TTntAction;
AutoConnect1: TTntMenuItem;
tbStandard: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
RefreshToolButton: TToolButton;
ScriptControl: TawScriptControl;
ActionToolsEditScript: TTntAction;
EditScript1: TTntMenuItem;
ObexOpenDialog: TTntOpenDialog;
ActionConnectionAbort: TTntAction;
N16: TTntMenuItem;
Abort1: TTntMenuItem;
ActionToolsUpload: TTntAction;
Upload1: TTntMenuItem;
ToolButton13: TToolButton;
ActionToolsPostNote: TTntAction;
Postanote1: TTntMenuItem;
LMDOneInstance1: TLMDOneInstance;
LMDFMDrop: TLMDFMDrop;
tbProfile: TToolBar;
cbProfile: TTntComboBox;
ToolButton11: TToolButton;
ActionSMSDownloadInbox: TTntAction;
ActionToolsEditProfile: TTntAction;
WBtSocket: TWBluetoothSocket;
WIrSocket: TWIrCOMMSocket;
ActionSMSExport: TTntAction;
ExportSMS1: TTntMenuItem;
SaveDialog1: TTntSaveDialog;
ToolButton14: TToolButton;
ActionSyncPhonebook: TTntAction;
StartSyncPhoneBook1: TTntMenuItem;
Sync1: TTntMenuItem;
ToolButton16: TToolButton;
ActionMissedCalls: TTntAction;
ActionMissedCalls1: TTntMenuItem;
ActionToolsKeyPad: TTntAction;
KeyPad1: TTntMenuItem;
ActionExit: TTntAction;
ActionContactsExportME: TTntAction;
ExportContacts1: TTntMenuItem;
ActionToolsEditProfile1: TTntMenuItem;
SaveDialog2: TTntSaveDialog;
ActionToolsPostBookmark: TTntAction;
Postbookmark1: TTntMenuItem;
CoolTrayIcon1: TCoolTrayIcon;
ImageList3: TImageList;
ActionWindowMinimize: TTntAction;
FmaOnSFNet1: TTntMenuItem;
ActionToolsChangeProfile: TTntAction;
ActionToolsDownload: TTntAction;
ObexSaveDialog: TTntSaveDialog;
Download2: TTntMenuItem;
PanelExplorer: TTntPanel;
PanelFolders: TTntPanel;
SpeedButton1: TTntSpeedButton;
ViewExplorer1: TTntMenuItem;
ActionConnectionExplorer: TTntAction;
SyncPhoneClock1: TTntMenuItem;
ActionExplorerUpFolder: TTntAction;
ActionContactsNewPerson: TTntAction;
newcontact1: TTntMenuItem;
Properties1: TTntMenuItem;
tbMessages: TToolBar;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton29: TToolButton;
ToolButton30: TToolButton;
tbCalls: TToolBar;
ToolButton17: TToolButton;
ToolButton10: TToolButton;
ActionEditGoUp: TTntAction;
ActionEditGoDown: TTntAction;
FramePanel: TTntPanel;
PanelTest: TTntPanel;
TntPageControl1: TTntPageControl;
TntTabSheet2: TTntTabSheet;
Memo3: TTntMemo;
Button3: TTntButton;
cbTerminal: TTntComboBox;
TntTabSheet1: TTntTabSheet;
Label1: TTntLabel;
Image: TTntImage;
Label4: TTntLabel;
Label5: TTntLabel;
Memo2: TTntMemo;
Memo1: TTntMemo;
Button1: TTntButton;
Button2: TTntButton;
Edit2: TTntEdit;
RadioButton1: TTntRadioButton;
RadioButton2: TTntRadioButton;
cbObex: TTntComboBox;
Button10: TTntButton;
Button11: TTntButton;
TntTabSheet3: TTntTabSheet;
Label2: TTntLabel;
Label3: TTntLabel;
TntEdit1: TTntEdit;
TntEdit2: TTntEdit;
Button4: TTntButton;
Button5: TTntButton;
Button6: TTntButton;
Button7: TTntButton;
Button8: TTntButton;
Button9: TTntButton;
Button12: TTntButton;
DescrPanel: TTntPanel;
Panel1: TTntPanel;
ToolButton21: TToolButton;
AudioMixer1: TAudioMixer;
lblCurrentPage: TTntLabel;
PopupMenu2: TTntPopupMenu;
ShowExplorer1: TTntMenuItem;
N14: TTntMenuItem;
ImageList4: TImageList;
LMDFill1: TLMDFill;
View1: TTntMenuItem;
MsgPreview1: TTntMenuItem;
ActionViewMsgPreview: TTntAction;
Timer2: TTimer;
FmaOnTheWeb1: TTntMenuItem;
FmaOnTheWeb2: TTntMenuItem;
ActionContactsAddContact: TTntAction;
EditOwnCard1: TTntMenuItem;
ActionContactsOwn: TTntAction;
N6: TTntMenuItem;
SyncOutlook1: TTntMenuItem;
SyncBookmarks1: TTntMenuItem;
N13: TTntMenuItem;
FmaOnForums1: TTntMenuItem;
N22: TTntMenuItem;
CheckforUpdate1: TTntMenuItem;
N25: TTntMenuItem;
N26: TTntMenuItem;
SendOutboxMessages1: TTntMenuItem;
ToolButton3: TToolButton;
ToolButton25: TToolButton;
ActionConnectionSendOutboxMsgs: TTntAction;
ActionToolsKeybLock: TTntAction;
ToggleKeyboardLock1: TTntMenuItem;
pbRSSI: TLMDProgressFill;
pbPower: TLMDProgressFill;
Label6: TTntLabel;
ActionSMSImport: TTntAction;
ActionContactsImportME: TTntAction;
Export1: TTntMenuItem;
ImportSMS1: TTntMenuItem;
ImportContacts1: TTntMenuItem;
DebugTools1: TTntMenuItem;
Timer3: TTimer;
FmaWebUpdate1: TFmaWebUpdate;
ActionSyncWithOutlook: TTntAction;
N29: TTntMenuItem;
swprofile1: TTntMenuItem;
ActionSwitchUserProfile: TTntAction;
ToolButton15: TToolButton;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -