Improve user manager: Add drop down menu to "From host" input, containing some predefined hosts plus all unique ones from the users list.

This commit is contained in:
Ansgar Becker
2011-02-03 23:50:01 +00:00
parent 374e79448f
commit 95f50b9ca5
2 changed files with 87 additions and 3 deletions

View File

@@ -280,12 +280,16 @@ object UserManagerForm: TUserManagerForm
ParentFont = False
Visible = False
end
object editFromHost: TEdit
object editFromHost: TButtonedEdit
Left = 109
Top = 44
Width = 169
Height = 21
Anchors = [akLeft, akTop, akRight]
Images = MainForm.ImageListMain
RightButton.DropDownMenu = menuHost
RightButton.ImageIndex = 75
RightButton.Visible = True
TabOrder = 1
OnChange = Modification
end
@@ -337,4 +341,32 @@ object UserManagerForm: TUserManagerForm
TabOrder = 3
OnClick = btnDiscardClick
end
object menuHost: TPopupMenu
OnPopup = menuHostPopup
Left = 8
Top = 328
object menuHost1: TMenuItem
Caption = 'Access from server location only'
Hint = 'localhost'
OnClick = menuHostClick
end
object menuHost2: TMenuItem
Caption = 'Local network: 192.168.%'
Hint = '192.168.%'
OnClick = menuHostClick
end
object menuHost3: TMenuItem
Caption = 'Local network: 10.122.%'
Hint = '10.122.%'
OnClick = menuHostClick
end
object menuHostLocal4: TMenuItem
Caption = 'Access from everywhere'
Hint = '%'
OnClick = menuHostClick
end
object N1: TMenuItem
Caption = '-'
end
end
end

View File

@@ -6,7 +6,7 @@ interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls,
ExtCtrls, ToolWin, ClipBrd, Generics.Collections, Generics.Defaults, SynRegExpr,
mysql_connection, helpers, VirtualTrees;
mysql_connection, helpers, VirtualTrees, Menus;
{$I const.inc}
@@ -50,7 +50,7 @@ type
lblPassword: TLabel;
lblUsername: TLabel;
lblRepeatPassword: TLabel;
editFromHost: TEdit;
editFromHost: TButtonedEdit;
editUsername: TEdit;
editPassword: TButtonedEdit;
editRepeatPassword: TEdit;
@@ -62,6 +62,12 @@ type
btnCloneUser: TToolButton;
lblWarning: TLabel;
Label1: TLabel;
menuHost: TPopupMenu;
menuHost1: TMenuItem;
menuHostLocal4: TMenuItem;
menuHost2: TMenuItem;
menuHost3: TMenuItem;
N1: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormShow(Sender: TObject);
@@ -101,6 +107,8 @@ type
procedure listUsersHeaderClick(Sender: TVTHeader; HitInfo: TVTHeaderHitInfo);
procedure listUsersCompareNodes(Sender: TBaseVirtualTree; Node1, Node2: PVirtualNode; Column: TColumnIndex; var Result: Integer);
procedure listUsersAfterPaint(Sender: TBaseVirtualTree; TargetCanvas: TCanvas);
procedure menuHostClick(Sender: TObject);
procedure menuHostPopup(Sender: TObject);
private
{ Private declarations }
FUsers: TUserList;
@@ -1033,6 +1041,50 @@ begin
end;
procedure TUserManagerForm.menuHostClick(Sender: TObject);
begin
// Insert predefined host
editFromHost.Text := (Sender as TMenuItem).Hint;
end;
procedure TUserManagerForm.menuHostPopup(Sender: TObject);
var
Item: TMenuItem;
i: Integer;
User: TUser;
ItemExists: Boolean;
begin
// Delete custom items and readd unique ones
for i:=menuHost.Items.Count-1 downto 0 do begin
if menuHost.Items[i].Caption = '-' then
break;
menuHost.Items.Delete(i);
end;
for User in FUsers do begin
if User.Host = '' then
Continue;
ItemExists := False;
for Item in menuHost.Items do begin
if Item.Hint = User.Host then begin
ItemExists := True;
Break;
end;
end;
if not ItemExists then begin
Item := TMenuItem.Create(menuHost);
Item.Caption := User.Host;
Item.Hint := User.Host;
Item.OnClick := menuHostClick;
menuHost.Items.Add(Item);
end;
end;
// Auto check current host if any matches
for Item in menuHost.Items do
Item.Checked := Item.Hint = editFromHost.Text;
end;
procedure TUserManagerForm.editPasswordRightButtonClick(Sender: TObject);
begin
// Auto generate a random password, display it for a second and copy it to clipboard