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

📄 fmain.pas

📁 siMail, siMail, siMail, siMail
💻 PAS
📖 第 1 页 / 共 3 页
字号:
    Self.Name, 'viewToolbar', True);
  StatusBar1.Visible := frmMailbox.Profile.Config.ReadBool(
    Self.Name, 'viewStatusbar', True);

  actViewToolbar.Checked := tb1.Visible;
  actViewStatusbar.Checked := StatusBar1.Visible;
  pnlAddressBook.Height := frmMailbox.Profile.Config.ReadInteger(
    Self.Name, 'addressBookPanelHeight', Trunc(pnlAddrBookAndMbox.Height * 0.30));
  pnlMailList.Height := frmMailbox.Profile.Config.ReadInteger(
    Self.Name, 'pnlMailListHeight', Trunc(pnlMails.Height * 0.4));
  pnlAddrBookAndMbox.Width :=
    frmMailbox.Profile.Config.readInteger(Self.Name, 'pnlAddrBookAndMboxWidth',
    Trunc(Self.Width * 0.25));
end;

procedure TfrmMain.dfsSplitter2Moved(Sender: TObject);
begin
  frmMailbox.Profile.Config.WriteInteger(Self.Name, 'addressBookPanelHeight',
    pnlAddressBook.Height);
end;

procedure TfrmMain.dfsSplitter3Moved(Sender: TObject);
begin
  frmMailbox.Profile.Config.WriteInteger(Self.Name, 'pnlMailListHeight',
    pnlMailList.Height);
end;

procedure TfrmMain.dfsSplitter1Moved(Sender: TObject);
begin
  frmMailbox.Profile.Config.WriteInteger(Self.Name, 'pnlAddrBookAndMboxWidth',
    pnlAddrBookAndMbox.Width);
end;

procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  logPop3.Clear;
  tray.HideTaskbarIcon;
end;

procedure TfrmMain.actTBMessageReplyExecute(Sender: TObject);
begin
  frmMaillist.actMessageReply.Execute;
end;

procedure TfrmMain.actTBMessageReplyUpdate(Sender: TObject);
begin
  frmMaillist.actMessageReply.Update;
end;

procedure TfrmMain.actTBMessageForwardExecute(Sender: TObject);
begin
  frmMaillist.actMessageForward.Execute;
end;

procedure TfrmMain.actTBMessageForwardUpdate(Sender: TObject);
begin
  frmMaillist.actMessageForward.Update;
end;

function TfrmMain.AddLeadingZeroes(Value: Longword; len: Byte): String;
var tmpStr: String;
var i: Integer;
begin
  if Length(IntToStr(Value)) >= len then begin Result := IntToStr(Value); exit; end;
  for i := 1 to len - Length(IntToStr(Value)) do tmpStr := tmpStr + '0';
  Result := tmpStr + IntToStr(Value);
end;

procedure TfrmMain.actTBSendUpdate(Sender: TObject);
begin
  actTBSend.Enabled := frmMailbox.actAccountSendThis.Enabled or
    frmMailbox.actAccountSendAll.Enabled;
end;

procedure TfrmMain.actTBSendExecute(Sender: TObject);
begin
  if frmMailbox.actAccountSendThis.Enabled then
    frmMailbox.actAccountSendThis.Execute
  else
    frmMailbox.actAccountSendAll.Execute;
end;

procedure TfrmMain.SetDefaultProfile(profileName: String);
begin
  xmlIni.WriteString('general', 'defaultProfile', profileName);
end;

procedure TfrmMain.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
begin
   // + key
  if (Msg.CharCode = 107) and (GetFocus = frmMailView.msgImage.Handle) then begin
    frmMailView.cmdZoomPlusClick(frmMailView.cmdZoomPlus);
    Handled := True;
  end // - key
  else if (Msg.CharCode = 109) and (GetFocus = frmMailView.msgImage.Handle) then begin
    frmMailView.cmdZoomMinusClick(frmMailView.cmdZoomMinus);
    Handled := True;
  end
  else if (Msg.CharCode = 46) then begin //del key
    Handled := actDeleteF;
  end;
end;

procedure TfrmMain.CenterForm(frm: TForm);
var t, l: Integer;
begin
  t := (Screen.Height div 2) - (frm.Height div 2);
  l := (Screen.Width div 2) - (frm.Width div 2);

  frm.Top := t;
  frm.Left := l;
end;

procedure TfrmMain.actToolsAddressBookExecute(Sender: TObject);
begin
  frmAddressBook.actOpenAddressBook.Execute;
end;

procedure TfrmMain.actTBAddrBookExecute(Sender: TObject);
begin
  frmAddressBook.actOpenAddressBook.Execute;
end;

procedure TfrmMain.actFileImportExecute(Sender: TObject);
begin
  frmImportMessagesWizard.ShowModal;
end;

procedure TfrmMain.defaultFolders;
var str: TStringList;
var lnk: TShellLink;
begin
  df.Application := ExtractFilePath(Application.ExeName);
  findTemporaryFolder;
  df.Profiles := df.Application + 'Profiles\';
  df.Themes := df.Application + 'Themes\';
  df.PlugIns := df.Application + 'Plug-Ins\';
  df.piImportMessages := df.PlugIns + 'Import\Messages\';
  df.piImportAddressBook := df.PlugIns + 'Import\Address Book\';
  df.piExportMessages := df.PlugIns + 'Export\Messages\';
  df.piExportAddressBook := df.PlugIns + 'Export\Address Book\';
  df.piAttachments := df.PlugIns + 'Attachments\';

  //profiles & public address book folder
  if not DirectoryExists(df.Profiles + 'Address Book') then
    ForceDirectories(df.Profiles + 'Address Book');

  //temp folder
  if not DirectoryExists(df.Application + 'Temp\') then
    ForceDirectories(df.Application + 'Temp\');
  //themes folder
  if not DirectoryExists(df.Themes) then
    ForceDirectories(df.Themes);

  //various import plug-Ins folders
  if not DirectoryExists(df.piImportMessages) then
    ForceDirectories(df.piImportMessages);
  if not DirectoryExists(df.piImportAddressBook) then
    ForceDirectories(df.piImportAddressBook);
  //various export plug-Ins folders
  if not DirectoryExists(df.piExportMessages) then
    ForceDirectories(df.piExportMessages);
  if not DirectoryExists(df.piExportAddressBook) then
    ForceDirectories(df.piExportAddressBook);

  if not DirectoryExists(df.piAttachments) then
    ForceDirectories(df.piAttachments);

  //warning file in Profiles folder
  if not FileExists(df.Profiles + 'Read Me.txt') then begin
    str := TstringList.Create;
    str.Text := _('WARNING!!' + #13#10 + #13#10 +
      'DO NOT EDIT OR DELETE ANY FILE OR FOLDER HERE!!!' + #13#10 +
      'Everything is generated automaticaly.' + #13#10 + #13#10 + 'si.Mail Team');
    str.SaveToFile(df.Profiles + 'Read Me.txt');
    FreeAndNil(str);
  end;

  //add link to si.Mail in SendTo folder
  if not FileExists(compInfo.Folders.SendTo + 'si.Mail.lnk') then begin
    with lnk do begin
      WorkingDirectory := df.Application;
      IconIndex := 0;
      Target := Application.ExeName;
      Description := _('si.Mail - an e-mail client.');
      IconLocation := Target;
      Arguments := '/attach';
    end;
    ShellLinkCreate(lnk, compInfo.Folders.SendTo + 'si.Mail.lnk');
  end;
end;

procedure TfrmMain.FormConstrainedResize(Sender: TObject; var MinWidth,
  MinHeight, MaxWidth, MaxHeight: Integer);
begin
  MinWidth := 640;
  MinHeight := 480;
end;

procedure TfrmMain.WMCopyData(var Message: TWMCopyData);
var cs: PCopyDataStruct;
var sl: TStringList;
var tmpStr: String;
begin
  cs := Message.CopyDataStruct;
  sl := TStringList.Create;
  try
    SetLength(tmpStr, cs^.cbData);
    Move(cs^.lpData^, PChar(tmpStr)^, cs^.cbData);
    sl.Text := tmpStr;

    processCommands(sl);
  finally
    FreeAndNil(sl);
  end;

  Message.Result := 1;
end;

procedure TfrmMain.processCommandLine;
var sl: TStringList;
var i: Integer;
begin
  if FcmdLineProcessed then Exit;
  FcmdLineProcessed := True;
  sl := TStringList.Create;
  try
    if ParamCount > 0 then begin
      for i := 1 to ParamCount do
        sl.Add(ParamStr(i));

      processCommands(sl);
    end;
  finally
    FreeAndNil(sl);
  end;
end;

procedure TfrmMain.processCommands(lst: TStringList);
var tmpStr1, tmpStr2, tmpStr3: String;
var strTo, strCc, strBcc, strAttach: String;
var strBody, strSubject: String;
begin
  if UpperCase(lst.Strings[0]) = '/ATTACH' then begin
    lst.Delete(0);
    frmMaillist.actMessageNew.Execute;
    frmMaillist.LastCompose.CreateMessage('',_('Files attached through Send To'), '', lst);
  end
  else if UpperCase(lst.Strings[0]) = '/RESTORE' then begin
    tray.ShowMainForm;
    ShowWindow(Self.Handle, SW_RESTORE);
    BringWindowToTop(Self.Handle);
  end
  else if UpperCase(lst.Strings[0]) = '/MAILURL' then begin
    lst.Delete(0);
    tmpStr1 := lst.Text;
    tmpStr1 := StringReplace(tmpStr1, '&', '&', [rfReplaceAll, rfIgnoreCase]);

    if UpperCase(LeftStr(tmpStr1, 7)) = 'MAILTO:' then begin
      tmpStr1 := RightStr(tmpStr1, Length(tmpStr1) - 7);
      //to field is everything up to ?
      strTo := DecodeURL(FetchEx(tmpStr1, '?', ''));
      if tmpStr1 <> '' then begin
        if tmpStr1[1] = '&' then
          tmpStr1 := RightStr(tmpStr1, Length(tmpStr1) - 1);

        //parse other parameters
        while tmpStr1 <> '' do begin
          tmpStr2 := FetchEx(tmpStr1, '&', '');
          tmpStr3 := UpperCase(LeftStr(tmpStr2, Pos('=',tmpStr2)));
          if tmpStr3 = 'SUBJECT=' then begin
            strSubject := DecodeURL(RightStr(tmpStr2, Length(tmpStr2) - Length(tmpStr3)));
          end
          else if tmpStr3 = 'CC=' then begin
            if strCc <> '' then
              strCc := strCc + ',';
            strCc := strCc + DecodeURL(RightStr(tmpStr2, Length(tmpStr2) - Length(tmpStr3)));
          end
          else if tmpStr3 = 'BCC=' then begin
            if strBcc <> '' then
              strBcc := strBcc + ',';
            strBcc := strBcc + DecodeURL(RightStr(tmpStr2, Length(tmpStr2) - Length(tmpStr3)));
          end
          else if tmpStr3 = 'ATTACH=' then begin
            if strAttach <> '' then
              strAttach := strAttach + ',';
            strAttach := strAttach + DecodeURL(RightStr(tmpStr2, Length(tmpStr2) - Length(tmpStr3)));
          end
          else if tmpStr3 = 'BODY=' then begin
            if strBody <> '' then
              strBody := strBody + #13#10;
            strBody := strBody + DecodeURL(RightStr(tmpStr2, Length(tmpStr2) - Length(tmpStr3)));
          end;
        end;
      end;
      frmMaillist.actMessageNew.Execute;
      lst.Text := strAttach;
      frmMaillist.LastCompose.CreateMessage(strBody, strSubject, strTo, strCc, strBcc, lst);
    end
    else
      MessageDlg(_('Wrong mailto: format.'), mtError, [mbOK], 0);
  end;

  if frmMaillist.LastCompose <> nil then begin
    try
      ShowWindow(frmMaillist.LastCompose.Handle, SW_RESTORE);
    except
    end;
  end;
end;

procedure TfrmMain.actHelpCheckNewerExecute(Sender: TObject);
var Major: Word;
var Minor: Word;
var Release: Word;
var Build: Word;
begin
  GetFileVersion(Application.ExeName, Major, Minor, Release, Build);
  CheckForNewer(siMailHome, Major, Minor, Release, Build);
end;

procedure TfrmMain.actToolsCustomizeExecute(Sender: TObject);
begin
  frmThemeConfig.ShowModal;
end;

procedure TfrmMain.actTBCustomizeExecute(Sender: TObject);
begin
  actToolsCustomize.Execute;
end;

procedure TfrmMain.actTBMessageReplyAllUpdate(Sender: TObject);
begin
  frmMaillist.actMessageReplyAll.Update;
end;

procedure TfrmMain.actTBMessageReplyAllExecute(Sender: TObject);
begin
  frmMaillist.actMessageReplyAll.Execute;
end;

procedure TfrmMain.StatusBar1Resize(Sender: TObject);
begin
  StatusBar1.Panels[0].Size := Trunc(Self.ClientWidth * 0.25);
  StatusBar1.Panels[1].Size := Trunc(Self.ClientWidth * 0.55);
  StatusBar1.Panels[2].Size := Trunc(Self.ClientWidth * 0.18);
  (*dlProgress.Height := StatusBar1.Height;
  dlProgress.Width := StatusBar1.Panels[2].Size;
  dlProgress.Repaint;*)
end;

procedure TfrmMain.actTBMessagePrintUpdate(Sender: TObject);
begin
  actTBMessagePrint.Enabled := frmMailView.actFilePrintPrint.Enabled;
end;

procedure TfrmMain.actTBMessagePrintExecute(Sender: TObject);
begin
  frmMailView.actFilePrintPrint.Execute;
end;

procedure TfrmMain.actTrayComposeExecute(Sender: TObject);
begin
  frmMailbox.actAccountComposeMessageThis.Execute;
end;

procedure TfrmMain.actTrayComposeUpdate(Sender: TObject);
begin
  actTrayCompose.Enabled := frmMailbox.actAccountComposeMessageThis.Enabled;
end;

procedure TfrmMain.dlProgressDblClick(Sender: TObject);
begin
  frmTasks.Show;
end;

procedure TfrmMain.actTBFetchNSendExecute(Sender: TObject);
begin
  if frmMailbox.actAccountSendFetchThis.Enabled then
    frmMailbox.actAccountSendFetchThis.Execute
  else
    frmMailbox.actAccountSendFetchAll.Execute;
end;

procedure TfrmMain.actTBFetchNSendUpdate(Sender: TObject);
begin
  frmMailbox.actAccountSendFetchThis.Update;
  actTBFetchNSend.Enabled := frmMailbox.actAccountSendFetchThis.Enabled or
    frmMailbox.actAccountSendFetchAll.Enabled;
end;

procedure TfrmMain.mGestureJvMouseGestureCustomInterpretation(
  aGesture: String);
begin
  StatusBar1.Panels.Items[0].Caption := aGesture;
end;

function TfrmMain.ValidateFileName(FileName: String): String;
var i: Integer;
begin
  for i := 1 to Length(FileName) do begin
    if FileName[i] in sNotAllowedInFileName then
      FileName[i] := '_';
  end;
  Result := FileName;
end;

procedure TfrmMain.actFileExportExecute(Sender: TObject);
begin
  frmExportMessagesWizard.ShowModal;
end;

procedure TfrmMain.actFocusMailboxesExecute(Sender: TObject);
begin
  if frmMailbox.Visible then
    frmMailbox.trMailbox.SetFocus;
end;

procedure TfrmMain.actFocusAddrBkExecute(Sender: TObject);
begin
  if frmAddressBook.Visible then
    frmAddressBook.trAddressBook.SetFocus;
end;

procedure TfrmMain.actFocusMessageListExecute(Sender: TObject);
begin
  if frmMaillist.Visible then
    frmMaillist.lstMailList.SetFocus;
end;

procedure TfrmMain.actFocusMessageViewExecute(Sender: TObject);
begin
  if frmMailView.Visible then
    frmMailView.SetFocus;
end;

procedure TfrmMain.actSaveLogExecute(Sender: TObject);
begin
  logPop3.SaveToFile(df.Application + 'pop3.log');
end;

procedure TfrmMain.actCustomizeExecute(Sender: TObject);
begin
//
end;

procedure TfrmMain.WMQueryEndSession(var Message: TWMQueryEndSession);
begin
  Message.Result := 1;
  actFileExit.Execute;
end;

procedure TfrmMain.dfsSplitter3Restore(Sender: TObject);
begin
  frmMailbox.Profile.Config.WriteInteger(Self.Name, 'pnlMailListHeight',
    pnlMailList.Height);
end;

procedure TfrmMain.dfsSplitter2Restore(Sender: TObject);
begin
  frmMailbox.Profile.Config.WriteInteger(Self.Name, 'addressBookPanelHeight',
    pnlAddressBook.Height);
end;

procedure TfrmMain.dfsSplitter1Restore(Sender: TObject);
begin
  frmMailbox.Profile.Config.WriteInteger(Self.Name, 'pnlAddrBookAndMboxWidth',
    pnlAddrBookAndMbox.Width);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -