📄 fmain.pas
字号:
(*
# (C) Copyright 2003
# Miha Vrhovnik, miha.vrhovnik@cordia.si
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
# MA 02111-1307 USA
#
# The Initial Developer of the Original Code is Miha Vrhovnik (Slovenia).
# Portions created by Miha Vrhovnik are Copyright (c)2003.
# All Rights Reserved.
#==============================================================================
# Contributor(s):
#==============================================================================
# History: see whats new.txt from distribution package
#==============================================================================
*)
unit fMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, XPMenu, Menus, Clipbrd, VirtualTrees, CoolTrayIcon, XPMan, ExtCtrls,
ImgList, StdCtrls, ComCtrls, pngimage, OmniXMLConf, ToolWin, tbxThemesList,
account, ActnList, ShellApi, synautil, hh_funcs, OleCtrls, TB2Dock, TB2Item,
TBXStatusBars, TBX, TBXSwitcher, JvComponent, CommCtrl, JvDirectories,
TB2Toolbar, JclShell, synacode, embeddedWB, JvExControls, JvMouseGesture,
JvSpecialProgress, JvLogFile, uThemes, Math, JvComputerInfoEx, JvExExtCtrls,
JvNetscapeSplitter;
type
TfrmMain = class(TForm)
pnlAddrBookAndMbox: TPanel;
pnlAddressBook: TPanel;
pnlMailboxes: TPanel;
dfsSplitter1: TJvNetscapeSplitter;
dfsSplitter2: TJvNetscapeSplitter;
dfsSplitter4: TJvNetscapeSplitter;
pnlMails: TPanel;
dfsSplitter3: TJvNetscapeSplitter;
pnlPreview: TPanel;
pnlMailList: TPanel;
tray: TCoolTrayIcon;
ActionList: TActionList;
actDelete: TAction;
alToolbar: TActionList;
actTBMessageNew: TAction;
actTBMessageReply: TAction;
actTBMessageForward: TAction;
actTBMessageReplyAll: TAction;
actTBMessagePrint: TAction;
actTBMessageFind: TAction;
actTBFetch: TAction;
actTBSend: TAction;
actTBFetchNSend: TAction;
actTBAddrBook: TAction;
actTBOptions: TAction;
actTBOnline: TAction;
actTBCustomize: TAction;
actTBMaximize: TAction;
actTBExit: TAction;
actTrayShow: TAction;
actTrayCompose: TAction;
actTraySend: TAction;
actTrayExit: TAction;
actFileImport: TAction;
actFileExportMbox: TAction;
actFileBackupBackup: TAction;
actFileBackupRestore: TAction;
actFileOnline: TAction;
actFileExit: TAction;
actViewToolbar: TAction;
actViewStatusbar: TAction;
actViewAddressBook: TAction;
actViewMailView: TAction;
actToolsAddressBook: TAction;
actToolsSignatures: TAction;
actToolsOptions: TAction;
actToolsCustomize: TAction;
actHelpIndex: TAction;
actHelpCheckNewer: TAction;
actHelpHome: TAction;
actHelpAbout: TAction;
actViewLargeHdrs: TAction;
actToolsTranslationFlagAsText: TAction;
actToolsTranslationSystemLocale: TAction;
actHelpHOWTOTranslate: TAction;
XPManifest1: TXPManifest;
TBXDock1: TTBXDock;
mnu: TTBXToolbar;
File1: TTBXSubmenuItem;
Import1: TTBXItem;
BackupAndRestore1: TTBXSubmenuItem;
Backup1: TTBXItem;
Restore1: TTBXItem;
N1: TTBXSeparatorItem;
PrintSetup1: TTBXItem;
PrintPreview1: TTBXItem;
Print1: TTBXItem;
N2: TTBXSeparatorItem;
Identity1: TTBXSubmenuItem;
Change1: TTBXItem;
Delete4: TTBXItem;
N14: TTBXSeparatorItem;
WorkOffline1: TTBXItem;
Exit1: TTBXItem;
mnuAccount: TTBXSubmenuItem;
Managerules1: TTBXItem;
Fetchmessagesonthisaccount1: TTBXItem;
Fetchmessagesonallaccounts1: TTBXItem;
PreviewMail1: TTBXItem;
Previewmailonallaccounts1: TTBXItem;
Sendunsentmessages1: TTBXItem;
Composemessagewiththisaccount1: TTBXItem;
Serverproperties1: TTBXItem;
Rename1: TTBXItem;
Delete1: TTBXItem;
Refreshtotals1: TTBXItem;
N21: TTBXSeparatorItem;
Newaccount1: TTBXItem;
Newfolder1: TTBXItem;
Newmailbox1: TTBXItem;
Mailbox1: TTBXSubmenuItem;
New2: TTBXItem;
Rename2: TTBXItem;
Delete2: TTBXItem;
Compress1: TTBXItem;
Pack1: TTBXItem;
PasswordProtect2: TTBXItem;
FilterManager1: TTBXItem;
Empty1: TTBXItem;
N5: TTBXSeparatorItem;
Packall1: TTBXItem;
CompressAll1: TTBXItem;
N20: TTBXSeparatorItem;
EmptyTrash1: TTBXItem;
EmptyJunkMail1: TTBXItem;
N6: TTBXSeparatorItem;
Properties2: TTBXItem;
Message1: TTBXSubmenuItem;
NewMessage1: TTBXItem;
Reply1: TTBXItem;
ReplyAll1: TTBXItem;
Forward1: TTBXItem;
ForwardasAttachment1: TTBXItem;
Bounce1: TTBXItem;
Redirectto1: TTBXItem;
AnnotateMessage1: TTBXItem;
Continueediting1: TTBXItem;
Delete3: TTBXItem;
N4: TTBXSeparatorItem;
Mark1: TTBXSubmenuItem;
asread1: TTBXItem;
asunread1: TTBXItem;
N8: TTBXSeparatorItem;
replied1: TTBXItem;
unreplied1: TTBXItem;
N15: TTBXSeparatorItem;
Forwarded1: TTBXItem;
Unforwarded1: TTBXItem;
Flag1: TTBXSubmenuItem;
actMessageLabelCompany1: TTBXItem;
actMessageLabelBusiness1: TTBXItem;
actMessageLabelFriend1: TTBXItem;
actMessageLabelImportant1: TTBXItem;
actMessageLabelReply1: TTBXItem;
actMessageLabelToDo1: TTBXItem;
actMessageLabelTrashLater1: TTBXItem;
actMessageLabelCustom11: TTBXItem;
actMessageLabelCustom21: TTBXItem;
actMessageLabelFollowUp1: TTBXItem;
N3: TTBXSeparatorItem;
Clearlabel1: TTBXItem;
Groupby1: TTBXSubmenuItem;
Date1: TTBXItem;
Sender1: TTBXItem;
Size1: TTBXItem;
Label1: TTBXItem;
Priority1: TTBXItem;
N11: TTBXSeparatorItem;
ransfer1: TTBXItem;
Properties3: TTBXItem;
View1: TTBXSubmenuItem;
oolbar1: TTBXItem;
Statusbar2: TTBXItem;
N19: TTBXSeparatorItem;
Addressbookpanel1: TTBXItem;
Mailviewpanel1: TTBXItem;
Largemessageheaders1: TTBXItem;
Options1: TTBXSubmenuItem;
AddressBook1: TTBXItem;
Managesignatures1: TTBXItem;
N12: TTBXSeparatorItem;
Configure1: TTBXItem;
Configure2: TTBXItem;
ranslation1: TTBXSubmenuItem;
Flagastext1: TTBXItem;
Systemlocale1: TTBXItem;
Help1: TTBXSubmenuItem;
Index1: TTBXItem;
Howtotranslate1: TTBXItem;
N9: TTBXSeparatorItem;
Checkfornewerversion1: TTBXItem;
siMailHomepage1: TTBXItem;
N10: TTBXSeparatorItem;
About1: TTBXItem;
tb1: TTBXToolbar;
tbxThemes: TTBXSwitcher;
TBXItem1: TTBXItem;
TBXItem2: TTBXItem;
TBXItem3: TTBXItem;
TBXItem4: TTBXItem;
popTray: TTBXPopupMenu;
mnuShow: TTBXItem;
N17: TTBXSeparatorItem;
mnuNewMessage2: TTBXItem;
mnuCheckMail: TTBXItem;
mnuPreviewMail: TTBXItem;
mnuSentUnsentMail: TTBXItem;
N18: TTBXSeparatorItem;
mnuExit2: TTBXItem;
TBXSeparatorItem1: TTBXSeparatorItem;
TBXItem5: TTBXItem;
TBXItem6: TTBXItem;
TBXSeparatorItem2: TTBXSeparatorItem;
TBXSubmenuItem1: TTBXSubmenuItem;
TBXSubmenuItem2: TTBXSubmenuItem;
TBXSubmenuItem3: TTBXSubmenuItem;
TBXSeparatorItem3: TTBXSeparatorItem;
TBXItem7: TTBXItem;
TBXItem8: TTBXItem;
TBXItem9: TTBXItem;
TBXItem10: TTBXItem;
TBXItem11: TTBXItem;
TBXSeparatorItem4: TTBXSeparatorItem;
TBXItem12: TTBXItem;
TBXItem14: TTBXItem;
TBXItem15: TTBXItem;
TBXItem13: TTBXItem;
TBXItem16: TTBXItem;
XPMenu1: TXPMenu;
StatusBar1: TTBXStatusBar;
TBXItem17: TTBXItem;
TBXItem18: TTBXItem;
TBXSeparatorItem5: TTBXSeparatorItem;
TBXItem19: TTBXItem;
TBXItem20: TTBXItem;
TBXItem21: TTBXItem;
actFileExport: TAction;
TBXItem22: TTBXItem;
TBXItem23: TTBXItem;
TBXSeparatorItem6: TTBXSeparatorItem;
mGesture: TJvMouseGestureHook;
progr1: TJvSpecialProgress;
dlProgress: TJvSpecialProgress;
TBXItem24: TTBXItem;
TBXItem25: TTBXItem;
actFocusMailboxes: TAction;
actFocusAddrBk: TAction;
actFocusMessageList: TAction;
actFocusMessageView: TAction;
TBXSeparatorItem7: TTBXSeparatorItem;
TBXItem26: TTBXItem;
TBXItem27: TTBXItem;
TBXItem28: TTBXItem;
TBXItem29: TTBXItem;
logPop3: TJvLogFile;
actSaveLog: TAction;
popCustomize: TTBXPopupMenu;
TBXItem30: TTBXItem;
actCustomize: TAction;
compInfo: TJvComputerInfoEx;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure AppException(Sender: TObject; E: Exception);
procedure actDeleteExecute(Sender: TObject);
procedure actDeleteUpdate(Sender: TObject);
procedure actTBMessageNewExecute(Sender: TObject);
procedure actTBExitExecute(Sender: TObject);
procedure actTBFetchExecute(Sender: TObject);
procedure actTBFetchUpdate(Sender: TObject);
procedure actTBMaximizeExecute(Sender: TObject);
procedure actTrayExitExecute(Sender: TObject);
procedure actTrayShowExecute(Sender: TObject);
procedure actTrayShowUpdate(Sender: TObject);
procedure actFileExitExecute(Sender: TObject);
procedure actHelpAboutExecute(Sender: TObject);
procedure actHelpHomeExecute(Sender: TObject);
procedure actViewToolbarExecute(Sender: TObject);
procedure actViewStatusbarExecute(Sender: TObject);
procedure actViewAddressBookUpdate(Sender: TObject);
procedure actViewMailViewUpdate(Sender: TObject);
procedure actViewAddressBookExecute(Sender: TObject);
procedure actViewMailViewExecute(Sender: TObject);
procedure actViewLargeHdrsUpdate(Sender: TObject);
procedure actViewLargeHdrsExecute(Sender: TObject);
procedure actTBMessageNewUpdate(Sender: TObject);
procedure trayDblClick(Sender: TObject);
procedure actToolsSignaturesExecute(Sender: TObject);
procedure actToolsOptionsExecute(Sender: TObject);
procedure FormHide(Sender: TObject);
procedure actToolsTranslationFlagAsTextExecute(Sender: TObject);
procedure actToolsTranslationSystemLocaleExecute(Sender: TObject);
procedure actHelpHOWTOTranslateExecute(Sender: TObject);
procedure actFileOnlineExecute(Sender: TObject);
procedure actTBOnlineExecute(Sender: TObject);
procedure dfsSplitter2Moved(Sender: TObject);
procedure dfsSplitter3Moved(Sender: TObject);
procedure dfsSplitter1Moved(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure actTBMessageReplyExecute(Sender: TObject);
procedure actTBMessageReplyUpdate(Sender: TObject);
procedure actTBMessageForwardExecute(Sender: TObject);
procedure actTBMessageForwardUpdate(Sender: TObject);
procedure actTBSendUpdate(Sender: TObject);
procedure actTBSendExecute(Sender: TObject);
procedure FormShortCut(var Msg: TWMKey; var Handled: Boolean);
procedure actToolsAddressBookExecute(Sender: TObject);
procedure actTBAddrBookExecute(Sender: TObject);
procedure actFileImportExecute(Sender: TObject);
procedure WMCopyData(var Message: TWMCopyData); message WM_COPYDATA;
procedure WMQueryEndSession(var Message : TWMQueryEndSession); message WM_QUERYENDSESSION;
procedure FormConstrainedResize(Sender: TObject; var MinWidth,
MinHeight, MaxWidth, MaxHeight: Integer);
procedure actHelpCheckNewerExecute(Sender: TObject);
procedure actToolsCustomizeExecute(Sender: TObject);
procedure actTBCustomizeExecute(Sender: TObject);
procedure actTBMessageReplyAllUpdate(Sender: TObject);
procedure actTBMessageReplyAllExecute(Sender: TObject);
procedure StatusBar1Resize(Sender: TObject);
procedure actTBMessagePrintUpdate(Sender: TObject);
procedure actTBMessagePrintExecute(Sender: TObject);
procedure actTrayComposeExecute(Sender: TObject);
procedure actTrayComposeUpdate(Sender: TObject);
procedure dlProgressDblClick(Sender: TObject);
procedure actTBFetchNSendExecute(Sender: TObject);
procedure actTBFetchNSendUpdate(Sender: TObject);
procedure mGestureJvMouseGestureCustomInterpretation(
aGesture: String);
procedure actFileExportExecute(Sender: TObject);
procedure actFocusMailboxesExecute(Sender: TObject);
procedure actFocusAddrBkExecute(Sender: TObject);
procedure actFocusMessageListExecute(Sender: TObject);
procedure actFocusMessageViewExecute(Sender: TObject);
procedure actSaveLogExecute(Sender: TObject);
procedure actCustomizeExecute(Sender: TObject);
procedure dfsSplitter3Restore(Sender: TObject);
procedure dfsSplitter2Restore(Sender: TObject);
procedure dfsSplitter1Restore(Sender: TObject);
private
FmaillistOldHeight: Integer;
FcmdLineProcessed: Boolean;
FSelectedTheme: Integer;
procedure findTemporaryFolder;
function GetFileVersion(const FileName: string; var Major, Minor,
Release, Build: Word): Boolean;
function GetOnline: Boolean;
procedure SetOnline(const Value: Boolean);
procedure defaultFolders;
procedure processCommandLine;
procedure processCommands(lst: TStringList);
{ Private declarations }
public
{ Public declarations }
help: THookHelpSystem;
function GetFileVersionAsString(const FileName: string): String;
function sizeToString(size: Int64): String;
function getEnvirometVar(variableName: String): String;
function FindFileIcon(imageList: TimageList; fileName: String;
Large: Boolean): Integer;
procedure FindFolders(path, mask: String; var lst: TStringList);
procedure ConvertToHighColor(ImageList: TImageList);
procedure LoadUserSettings;
function AddLeadingZeroes(Value: Longword; len: Byte): String;
procedure SetDefaultProfile(profileName: String);
procedure CenterForm(frm: TForm);
function ValidateFileName(FileName: String): String;
function actDeleteF: Boolean;
published
property Online: Boolean read GetOnline write SetOnline;
property SelectedTheme: Integer read FSelectedTheme write FSelectedTheme;
end;
var
frmMain: TfrmMain;
xmlIni: TxmlConf;
FormatSettings: TFormatSettings;
lstThemes: TThemeList;
//characters which are disallowed to appear in filename.
const notAllowedInFileName: array [0..8] of Char = ('\', '/', ':', '*', '?', '"', '<', '>', '|');
const sNotAllowedInFileName: set of Char = ['\', '/', ':', '*', '?', '"', '<', '>', '|'];
const siMailHome = 'http://simail.sourceforge.net';
const infoPanel = 1; //no of panel for load, mouse over anchor, ...
const tmpFilePrefix = 'siMail_temporary_file_';
implementation
{$R *.dfm}
uses
fSplash, fAbout, mailBox, addressBook, maillist, fMailView, fMyInputBox,
fSignatures, fSettings, fFlagPrepare, fProfiles, fImportMessagesWizard, prevInst,
StrUtils, dImages, gnugettext, defFldrs, update, fThemes, tasks,
fExportMessagesWizard, D6OnHelpFix, fCustomizeButtons;
procedure TfrmMain.FormCreate(Sender: TObject);
var tmpStr: String;
begin
mainWindowHWND^ := Self.Handle;
Randomize;
FcmdLineProcessed := False;
//create default folders and assign them to Default folders structure
defaultFolders;
//open xmlConfig
xmlIni := nil;
xmlIni := TxmlConf.Create(df.Application + 'config.xml');
//add to translation ignore list
TP_GlobalIgnoreClassProperty(TEmbeddedWB, 'StatusText');
TP_GlobalIgnoreClass(TJvComputerInfoEx);
lstThemes := TThemeList.Create;
//create windows
frmThemeConfig := TfrmThemeConfig.Create(Application); //!! needed if we want load theme in oncreate event of frmMailbox
dmImages := TdmImages.Create(Application); //!!
frmMailbox := TfrmMailbox.Create(Self);
frmAddressBook := TfrmAddressBook.Create(Self);
frmMaillist := TfrmMaillist.Create(Self);
frmMailView := TfrmMailView.Create(Self);
//assign and show windows to frmMain panels
try
with frmMailView do begin
BorderStyle := bsNone;
Parent := pnlPreview;
Align := alClient;
Show;
end;
except
MessageDlg(Format(_('Window creation failed ''%s''.'), ['TfrmMailPreview']),
mtError, [mbOK], 0);
Self.Close;
end;
try
with frmMailbox do begin
BorderStyle := bsNone;
Parent := pnlMailboxes;
Align := alClient;
Show;
end;
except
MessageDlg(Format(_('Window creation failed ''%s''.'), ['TfrmMailbox']),
mtError, [mbOK], 0);
Self.Close;
end;
try
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -