skyrope-mit-merge-hell-20040226
[openafs.git] / src / WINNT / afsusrmgr / usr_search.cpp
1 /*
2  * Copyright 2000, International Business Machines Corporation and others.
3  * All Rights Reserved.
4  * 
5  * This software has been released under the terms of the IBM Public
6  * License.  For details, see the LICENSE file in the top-level source
7  * directory or online at http://www.openafs.org/dl/license10.html
8  */
9
10 extern "C" {
11 #include <afs/param.h>
12 #include <afs/stds.h>
13 }
14
15 #include "TaAfsUsrMgr.h"
16 #include "usr_search.h"
17
18
19 /*
20  * DEFINITIONS ________________________________________________________________
21  *
22  */
23
24
25 /*
26  * PROTOTYPES _________________________________________________________________
27  *
28  */
29
30 BOOL CALLBACK Users_Search_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp);
31 void Users_Search_OnInitDialog (HWND hDlg);
32 void Users_Search_OnCheck (HWND hDlg);
33 void Users_Search_OnOK (HWND hDlg);
34
35
36 /*
37  * ROUTINES ___________________________________________________________________
38  *
39  */
40
41 void Users_SetDefaultSearchParams (LPAFSADMSVR_SEARCH_PARAMS pSearchParams)
42 {
43    memset (pSearchParams, 0x00, sizeof(AFSADMSVR_SEARCH_PARAMS));
44    pSearchParams->SearchType = SEARCH_NO_LIMITATIONS;
45 }
46
47
48 void Users_ShowAdvancedSearch (HWND hParent)
49 {
50    ModalDialog (IDD_SEARCH_USERS, hParent, (DLGPROC)Users_Search_DlgProc);
51 }
52
53
54 BOOL CALLBACK Users_Search_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
55 {
56    if (AfsAppLib_HandleHelp (IDD_SEARCH_USERS, hDlg, msg, wp, lp))
57       return TRUE;
58
59    switch (msg)
60       {
61       case WM_INITDIALOG:
62          Users_Search_OnInitDialog (hDlg);
63          break;
64
65       case WM_COMMAND:
66          switch (LOWORD(wp))
67             {
68             case IDOK:
69                Users_Search_OnOK (hDlg);
70                EndDialog (hDlg, IDOK);
71                break;
72
73             case IDCANCEL:
74                EndDialog (hDlg, IDCANCEL);
75                break;
76
77             case IDC_SEARCH_ALL:
78             case IDC_SEARCH_EXPIRE:
79             case IDC_SEARCH_PWEXPIRE:
80                Users_Search_OnCheck (hDlg);
81                break;
82             }
83          break;
84       }
85
86    return FALSE;
87 }
88
89
90 void Users_Search_OnInitDialog (HWND hDlg)
91 {
92    CheckDlgButton (hDlg, IDC_SEARCH_ALL, (gr.SearchUsers.SearchType == SEARCH_NO_LIMITATIONS));
93    CheckDlgButton (hDlg, IDC_SEARCH_EXPIRE, (gr.SearchUsers.SearchType == SEARCH_EXPIRES_BEFORE));
94    CheckDlgButton (hDlg, IDC_SEARCH_PWEXPIRE, (gr.SearchUsers.SearchType == SEARCH_PASSWORD_EXPIRES_BEFORE));
95
96    SYSTEMTIME stNow;
97    GetSystemTime (&stNow);
98
99    SYSTEMTIME stShow;
100    memcpy (&stShow, ((gr.SearchUsers.SearchType == SEARCH_EXPIRES_BEFORE) ? &gr.SearchUsers.SearchTime : &stNow), sizeof(SYSTEMTIME));
101    DA_SetDate (GetDlgItem (hDlg, IDC_SEARCH_EXPIRE_DATE), &stShow);
102
103    memcpy (&stShow, ((gr.SearchUsers.SearchType == SEARCH_PASSWORD_EXPIRES_BEFORE) ? &gr.SearchUsers.SearchTime : &stNow), sizeof(SYSTEMTIME));
104    DA_SetDate (GetDlgItem (hDlg, IDC_SEARCH_PWEXPIRE_DATE), &stShow);
105
106    Users_Search_OnCheck (hDlg);
107 }
108
109
110 void Users_Search_OnOK (HWND hDlg)
111 {
112    AFSADMSVR_SEARCH_PARAMS OldSearchType;
113    memcpy (&OldSearchType, &gr.SearchUsers, sizeof(AFSADMSVR_SEARCH_PARAMS));
114
115    if (IsDlgButtonChecked (hDlg, IDC_SEARCH_EXPIRE))
116       {
117       gr.SearchUsers.SearchType = SEARCH_EXPIRES_BEFORE;
118       DA_GetDate (GetDlgItem (hDlg, IDC_SEARCH_EXPIRE_DATE), &gr.SearchUsers.SearchTime);
119       }
120    else if (IsDlgButtonChecked (hDlg, IDC_SEARCH_PWEXPIRE))
121       {
122       gr.SearchUsers.SearchType = SEARCH_PASSWORD_EXPIRES_BEFORE;
123       DA_GetDate (GetDlgItem (hDlg, IDC_SEARCH_PWEXPIRE_DATE), &gr.SearchUsers.SearchTime);
124       }
125    else // (IsDlgButtonChecked (hDlg, IDC_SEARCH_ALL))
126       {
127       gr.SearchUsers.SearchType = SEARCH_NO_LIMITATIONS;
128       }
129
130    // If the user changed any search parameters, refresh the display
131    //
132    if (memcmp (&OldSearchType, &gr.SearchUsers, sizeof(AFSADMSVR_SEARCH_PARAMS)))
133       {
134       Display_PopulateList();
135       }
136 }
137
138
139 void Users_Search_OnCheck (HWND hDlg)
140 {
141    EnableWindow (GetDlgItem (hDlg, IDC_SEARCH_EXPIRE_DATE), IsDlgButtonChecked (hDlg, IDC_SEARCH_EXPIRE));
142    EnableWindow (GetDlgItem (hDlg, IDC_SEARCH_PWEXPIRE_DATE), IsDlgButtonChecked (hDlg, IDC_SEARCH_PWEXPIRE));
143 }
144