udeliveryrule.pas

来自「FMA is a free1 powerful phone editing to」· PAS 代码 · 共 182 行

PAS
182
字号
unit uDeliveryRule;

{
*******************************************************************************
* Descriptions: Text Messages delivery rules
* $Source: /cvsroot/fma/fma/uDeliveryRule.pas,v $
* $Locker:  $
*
* Todo:
*
* Change Log:
* $Log: uDeliveryRule.pas,v $
*
}

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, TntStdCtrls, ComCtrls, TntComCtrls, ImgList, VirtualTrees;

type
  TfrmSMSRule = class(TForm)
    edName: TTntEdit;
    TntLabel27: TTntLabel;
    edFolder: TTntEdit;
    btnBrowse: TTntButton;
    TntLabel1: TTntLabel;
    TntLabel26: TTntLabel;
    btnContacts: TTntButton;
    btnOK: TTntButton;
    btnCancel: TTntButton;
    lvContacts: TTntListView;
    TntLabel2: TTntLabel;
    procedure btnContactsClick(Sender: TObject);
    procedure btnBrowseClick(Sender: TObject);
    procedure OnFolderSelected(Sender: TObject; Node: PVirtualNode;
      var EnableOKButton: boolean; var EnableNewFolder: boolean);
    procedure btnOKClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    FCorrespondents: WideString;
    FFolderNode: PVirtualNode;
    FFolderLocked: boolean;
    procedure Set_Correspondents(const Value: WideString);
    procedure Set_Folder(const Value: PVirtualNode);
    function Get_Name: WideString;
    procedure Set_Name(const Value: WideString);
    procedure Set_Locked(const Value: boolean);
    procedure DoSanityCheck;
  public
    { Public declarations }
    property RuleName: WideString read Get_Name write Set_Name;
    property Correspondents: WideString read FCorrespondents write Set_Correspondents;
    property FolderNode: PVirtualNode read FFolderNode write Set_Folder;
    property FolderLocked: boolean read FFolderLocked write Set_Locked;
  end;

var
  frmSMSRule: TfrmSMSRule;

implementation

uses
  gnugettext, gnugettexthelpers, uDialogs,
  Unit1, uGlobal, uSelectContact, uBrowseFolders;

{$R *.dfm}

procedure TfrmSMSRule.btnContactsClick(Sender: TObject);
begin
  with TfrmSelContact.Create(nil) do
  try
    AllowGroups := False;
    SelContacts := Correspondents;
    if ShowModal = mrOk then
      Correspondents := SelContacts;
  finally
    Free;
  end;
end;

procedure TfrmSMSRule.Set_Correspondents(const Value: WideString);
var
  s,w: WideString;
begin
  FCorrespondents := Value;
  lvContacts.Items.Clear;
  w := Value;
  repeat
    s := GetFirstToken(w,';');
    if s <> '' then
      with lvContacts.Items.Add do begin
        Caption := Form1.ExtractContact(s);
        SubItems.Add(Form1.ExtractNumber(s));
        ImageIndex := 26;
      end;
  until w = '';
end;

procedure TfrmSMSRule.Set_Folder(const Value: PVirtualNode);
begin
  edFolder.Text := Form1.ExplorerNodePath(Value,'\',2);
  FFolderNode := Value;
end;

procedure TfrmSMSRule.btnBrowseClick(Sender: TObject);
var EData: PFmaExplorerNode;
begin
  with TfrmBrowseFolders.Create(nil) do
  try
    OnSelectionChange := OnFolderSelected;
    AllowNewFolder := True;
    RootNode := Form1.FNodeMsgFmaRoot;
    SelectedNodePath := Form1.ExplorerNodePath(FolderNode);
    if ShowModal = mrOK then begin
      EData := tvFolders.GetNodeData(FindNodeWithPath(SelectedNodePath));
      FolderNode := EData.Data;
    end;
  finally
    Free;
  end;
end;

procedure TfrmSMSRule.OnFolderSelected(Sender: TObject; Node: PVirtualNode;
  var EnableOKButton, EnableNewFolder: boolean);
var data: PFmaExplorerNode;
begin
  data := Form1.ExplorerNew.GetNodeData(Node);
  EnableOKButton := Assigned(Node) and (data.StateIndex = FmaSMSSubFolderFlag);
  EnableNewFolder := (Node <> Form1.FNodeMsgOutbox) and (Node <> Form1.FNodeMsgDrafts);
end;

function TfrmSMSRule.Get_Name: WideString;
begin
  Result := edName.Text;
end;

procedure TfrmSMSRule.Set_Name(const Value: WideString);
begin
  edName.Text := Value;
end;

procedure TfrmSMSRule.btnOKClick(Sender: TObject);
begin
  DoSanityCheck;
  ModalResult := mrOk;
end;

procedure TfrmSMSRule.FormCreate(Sender: TObject);
begin
  gghTranslateComponent(self);
end;

procedure TfrmSMSRule.Set_Locked(const Value: boolean);
begin
  FFolderLocked := Value;
  //edFolder.ReadOnly := Value;
  btnBrowse.Enabled := not Value;
  if Value then edFolder.Color := clBtnFace
    else edFolder.Color := clWindow;
end;

procedure TfrmSMSRule.DoSanityCheck;
begin
  if Trim(RuleName) = '' then begin
    MessageDlgW(_('You have to enter rule name.'),mtError,MB_OK);
    Abort;
  end;
  if Trim(Correspondents) = '' then begin
    MessageDlgW(_('You have to select correspondents.'),mtError,MB_OK);
    Abort;
  end;
  if not Assigned(FolderNode) then begin
    MessageDlgW(_('You have to select target folder.'),mtError,MB_OK);
    Abort;
  end;
end;

end.

⌨️ 快捷键说明

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