www.pudn.com > EmailServer.zip > ManageAliases.pas


unit ManageAliases; 
 
(******************************************************************************) 
(*                                                                            *) 
(* Hermes Manage Aliases Dialog Box                                           *) 
(* Part of Hermes SMTP/POP3 Server.                                           *) 
(* Copyright(C) 2000 by Alexander J. Fanti, All Rights Reserver Worldwide.    *) 
(*                                                                            *) 
(* Created January 13, 2000 by Alexander J. Fanti.  See License.txt           *) 
(*                                                                            *) 
(* Used by: Main                                                              *) 
(* Uses: DataU1, AddEditAlias                                                 *) 
(*                                                                            *) 
(* Description: This Modal dialog window allows the user to Add, Edit, Delete *) 
(*              and Rename user aliases                                       *) 
(*                                                                            *) 
(* Revisions: 1/21/2000  AJF  Commented                                       *) 
(*                                                                            *) 
(******************************************************************************) 
 
interface 
 
uses 
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 
  StdCtrls, Menus, Buttons; 
 
type 
  TfrmManageAliases = class(TForm) 
    lstList: TListBox; 
    btnDelete: TBitBtn; 
    btnAdd: TBitBtn; 
    btnEdit: TBitBtn; 
    btnImport: TBitBtn; 
    btnClose: TBitBtn; 
    btnRename: TBitBtn; 
    btnExport: TBitBtn; 
    popupMenu: TPopupMenu; 
    puAdd: TMenuItem; 
    puEdit: TMenuItem; 
    puDelete: TMenuItem; 
    puRename: TMenuItem; 
    N1: TMenuItem; 
    puImport: TMenuItem; 
    puExport: TMenuItem; 
    procedure FormShow(Sender: TObject); 
    procedure popupMenuPopup(Sender: TObject); 
    procedure lstListClick(Sender: TObject); 
    procedure btnAddClick(Sender: TObject); 
    procedure btnEditClick(Sender: TObject); 
    procedure btnDeleteClick(Sender: TObject); 
    procedure btnRenameClick(Sender: TObject); 
    procedure btnImportClick(Sender: TObject); 
    procedure btnExportClick(Sender: TObject); 
    procedure btnCloseClick(Sender: TObject); 
    procedure lstListDblClick(Sender: TObject); 
  private 
    { Private declarations } 
    procedure Add;      // Add Alias 
    procedure Edit;     // Edit Alias 
    procedure Delete;   // Delete Alias 
    procedure Rename;   // Rename Alias 
    procedure Import;   // Import Alias 
    procedure DoExport; // Export Alias 
    procedure EnableUI; // Enable buttons and popum menus based on selections 
  public 
    { Public declarations } 
  end; 
 
var 
  frmManageAliases: TfrmManageAliases; 
 
implementation 
 
uses DataU1, AddEditAlias; 
 
{$R *.DFM} 
 
procedure TfrmManageAliases.FormShow(Sender: TObject); 
begin 
  // Populate list with aliases 
  INI.Alias_GetList(lstList.Items); 
  // Enable buttons based on list selection 
  EnableUI; 
end; 
 
procedure TfrmManageAliases.Add; 
begin 
  // if they added an alias through the AddEditAlias Dialog... 
  // then refresh the list of aliases 
  if frmAddEditAlias.Add then INI.Alias_GetList(lstList.Items); 
end; 
procedure TfrmManageAliases.Edit; 
begin 
  // if there's a selected alias, then let them edit it 
  // through the AddEditAlias Dialog... 
  // then refresh the list of aliases 
  if lstList.ItemIndex > -1 then 
    if frmAddEditAlias.Edit(lstList.Items[lstList.ItemIndex]) then 
      INI.Alias_GetList(lstList.Items); 
end; 
procedure TfrmManageAliases.Delete; 
var 
  x : Integer; 
begin 
  // Ask if they really want to delete, cause it can't be un-done 
  x := MessageDlg('Deleting alias(es) cannot be undone.  Proceed?', 
                  mtConfirmation, [mbYes, mbNo], 0); 
  if x = mrYes then begin 
    // they really want to do it... for each selected alias... 
    // call the delete function and refresh the alias list 
    for x := 0 to lstList.Items.Count -1 do 
      if lstList.Selected[x] then INI.Alias_Delete(lstList.Items[x]); 
    INI.Alias_GetList(lstList.Items); 
  end; 
end; 
procedure TfrmManageAliases.Rename; 
var 
  OldAliasID, AliasUser, NewAliasID : String; 
begin 
  // if there's an alias selected... 
  if lstList.ItemIndex > -1 then 
    INI.Alias_Parse(lstList.Items[lstList.ItemIndex], OldAliasID, AliasUser); 
  NewAliasID := InputBox('Rename Alias', 'Enter New Alias Name', OldAliasID); 
 
  if Pos(ALIASSEPERATOR, NewAliasID) = 0 then begin 
    // and the new alias isn't the same as the old one... 
    // then rename the alias and refresh the display 
    if LowerCase(NewAliasID) <> LowerCase(OldAliasID) then begin 
      if not INI.Alias_Rename(OldAliasID, NewAliasID) then 
        ShowMessage('Error: Cound not re-name.' + #13 + #10 + 
                    'Aliases must have a unique Name.') 
      else 
        INI.Alias_GetList(lstList.Items); 
    end; 
  end else begin 
    ShowMessage('Alias cannot contain "' + ALIASSEPERATOR + '".'); 
  end; 
end; 
procedure TfrmManageAliases.Import; 
begin // Import Aliases 
  ShowMessage('Feature not implemented yet...'); 
 
  // DEBUG 
  // How should I import Aliases? 
end; 
procedure TfrmManageAliases.DoExport; 
begin // Export aliases 
  ShowMessage('Feature not implemented yet...'); 
 
  // DEBUG 
  // How should I export aliases? 
end; 
procedure TfrmManageAliases.EnableUI; 
begin 
  // Enable buttons and menus based on list selection 
  btnEdit.Enabled   := lstList.SelCount = 1; 
  btnDelete.Enabled := lstList.SelCount > 0; 
  btnRename.Enabled := lstList.SelCount = 1; 
  btnExport.Enabled := lstList.Items.Count > 0; 
  puEdit.Enabled   := lstList.SelCount = 1; 
  puDelete.Enabled := lstList.SelCount > 0; 
  puRename.Enabled := lstList.SelCount = 1; 
  puExport.Enabled := lstList.Items.Count > 0; 
end; 
 
// Hook Buttond and menus up with functions for performing actions 
procedure TfrmManageAliases.btnAddClick(Sender: TObject); 
begin  Add;                                    end; 
procedure TfrmManageAliases.btnEditClick(Sender: TObject); 
begin  Edit;                                   end; 
procedure TfrmManageAliases.btnDeleteClick(Sender: TObject); 
begin  Delete;                                 end; 
procedure TfrmManageAliases.btnRenameClick(Sender: TObject); 
begin  Rename;                                 end; 
procedure TfrmManageAliases.btnImportClick(Sender: TObject); 
begin  Import;                                 end; 
procedure TfrmManageAliases.btnExportClick(Sender: TObject); 
begin  DoExport;                               end; 
procedure TfrmManageAliases.lstListClick(Sender: TObject); 
begin  EnableUI;                               end; 
procedure TfrmManageAliases.lstListDblClick(Sender: TObject); 
begin  Edit;                                   end; 
procedure TfrmManageAliases.popupMenuPopup(Sender: TObject); 
begin  EnableUI;                               end; 
procedure TfrmManageAliases.btnCloseClick(Sender: TObject); 
begin  Close;                                  end; 
 
end.