⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fmain.pas

📁 siMail, siMail, siMail, siMail
💻 PAS
📖 第 1 页 / 共 3 页
字号:
(*
# (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 + -