File: Password.pas

package info (click to toggle)
mysql-gui-tools 5.0r12-1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 105,540 kB
  • ctags: 50,897
  • sloc: sql: 348,439; pascal: 285,780; cpp: 94,578; ansic: 90,768; objc: 33,761; sh: 25,629; xml: 10,924; yacc: 10,755; java: 9,986; php: 2,806; python: 2,068; makefile: 1,945; perl: 3
file content (118 lines) | stat: -rw-r--r-- 3,527 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
unit Password;

// Copyright (C) 2003, 2004 MySQL AB
//
// 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
//----------------------------------------------------------------------------------------------------------------------
//
// This dialog is used to ask for username and password for a scheduled task.

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,
  MsTask, TntForms, StdCtrls, TntStdCtrls;

type
  TPasswordDialog = class(TTntForm)
    TntLabel1: TTntLabel;
    TntLabel2: TTntLabel;
    TntLabel3: TTntLabel;
    UserNameEdit: TTntEdit;
    PasswordEdit: TTntEdit;
    CancelButton: TTntButton;
    OKButton: TTntButton;
    procedure FormCreate(Sender: TObject);
  public
    class function DetermineUserCredentials(Task: ITask): Boolean;
  end;

var
  PasswordDialog: TPasswordDialog;

//----------------------------------------------------------------------------------------------------------------------
implementation

{$R *.dfm}

uses
  ActiveX, AuxFuncs;

//----------------- TPasswordDialog ------------------------------------------------------------------------------------

class function TPasswordDialog.DetermineUserCredentials(Task: ITask): Boolean;

// Creates a temporary instance of the password dialog and asks for username and password.

var
  Raw: PWideChar;
  Buffer: array[0..1024] of WideChar;
  Size: Cardinal;

begin
  Result := false;
  with TPasswordDialog.Create(nil) do
  try
    // Initialize with existing account information if any.
    if Task.GetAccountInformation(Raw) = S_OK then
    begin
      UserNameEdit.Text := Raw;
      CoTaskMemFree(Raw);
    end
    else
    begin
      Size := SizeOf(Buffer);
      GetUserNameW(@Buffer, Size);
      UserNameEdit.Text := Buffer;
    end;
    PasswordEdit.Text := '';

    while True do
    begin
      Result := ShowModal = mrOK;
      if Result then
      begin
        if PasswordEdit.Text = '' then
        begin
          if Application.MessageBox('Password field is empty. Do you want to continue?', 'Empty password', MB_YESNO) <> IDYES then
            Continue;
        end;
        Task.SetAccountInformation(PWideChar(UserNameEdit.Text), PWideChar(PasswordEdit.Text));
        Break;
      end
      else
        Break;
    end;
  finally
    Free;
  end;
end;

//----------------------------------------------------------------------------------------------------------------------

procedure TPasswordDialog.FormCreate(Sender: TObject);

begin
  InitForm(Self);

  // Set the small black circle as pasword char.
  PasswordEdit.PasswordChar := #$2022;
end;

//----------------------------------------------------------------------------------------------------------------------

end.