winnt-port-cleanup-20010111
[openafs.git] / src / WINNT / afssvrmgr / set_release.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 "svrmgr.h"
16 #include "set_release.h"
17 #include "propcache.h"
18
19
20 /*
21  * DEFINITIONS ________________________________________________________________
22  *
23  */
24
25
26 /*
27  * PROTOTYPES _________________________________________________________________
28  *
29  */
30
31 BOOL CALLBACK Filesets_Release_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp);
32 void Filesets_Release_OnInitDialog (HWND hDlg, LPIDENT lpi);
33 void Filesets_Release_OnOK (HWND hDlg, LPIDENT lpi);
34
35
36 /*
37  * ROUTINES ___________________________________________________________________
38  *
39  */
40
41 void Filesets_Release (LPIDENT lpi)
42 {
43    HWND hCurrent;
44    if ((hCurrent = PropCache_Search (pcSET_RELEASE, lpi)) != NULL)
45       {
46       SetFocus (hCurrent);
47       }
48    else
49       {
50       HWND hDlg = ModelessDialogParam (IDD_SET_RELEASE, NULL, (DLGPROC)Filesets_Release_DlgProc, (LPARAM)lpi);
51       ShowWindow (hDlg, SW_SHOW);
52       }
53 }
54
55
56 BOOL CALLBACK Filesets_Release_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
57 {
58    if (AfsAppLib_HandleHelp (IDD_SET_RELEASE, hDlg, msg, wp, lp))
59       return TRUE;
60
61    if (msg == WM_INITDIALOG)
62       SetWindowLong (hDlg, DWL_USER, lp);
63
64    LPIDENT lpi;
65    if ((lpi = (LPIDENT)GetWindowLong (hDlg, DWL_USER)) != NULL)
66       {
67       switch (msg)
68          {
69          case WM_INITDIALOG:
70             PropCache_Add (pcSET_RELEASE, lpi, hDlg);
71             Filesets_Release_OnInitDialog (hDlg, lpi);
72             break;
73
74          case WM_COMMAND:
75             switch (LOWORD(wp))
76                {
77                case IDOK:
78                   Filesets_Release_OnOK (hDlg, lpi);
79                   DestroyWindow (hDlg);
80                   break;
81                case IDCANCEL:
82                   DestroyWindow (hDlg);
83                   break;
84                }
85             break;
86
87          case WM_DESTROY:
88             PropCache_Delete (pcSET_RELEASE, lpi);
89             break;
90          }
91       }
92
93    return FALSE;
94 }
95
96
97 void Filesets_Release_OnInitDialog (HWND hDlg, LPIDENT lpi)
98 {
99    TCHAR szServer[ cchNAME ];
100    TCHAR szAggregate[ cchNAME ];
101    TCHAR szFileset[ cchNAME ];
102    lpi->GetServerName (szServer);
103    lpi->GetAggregateName (szAggregate);
104    lpi->GetFilesetName (szFileset);
105
106    TCHAR szOld[ cchRESOURCE ];
107    GetDlgItemText (hDlg, IDC_RELSET_DESC, szOld, cchRESOURCE);
108
109    LPTSTR pszText = FormatString (szOld, TEXT("%s%s%s"), szServer, szAggregate, szFileset);
110    SetDlgItemText (hDlg, IDC_RELSET_DESC, pszText);
111    FreeString (pszText);
112
113    CheckDlgButton (hDlg, IDC_RELSET_NORMAL, TRUE);
114    CheckDlgButton (hDlg, IDC_RELSET_FORCE, FALSE);
115 }
116
117
118 void Filesets_Release_OnOK (HWND hDlg, LPIDENT lpi)
119 {
120    LPSET_RELEASE_PARAMS lpp = New (SET_RELEASE_PARAMS);
121    memset (lpp, 0x00, sizeof(SET_RELEASE_PARAMS));
122    lpp->lpiRW = lpi;
123    lpp->fForce = IsDlgButtonChecked (hDlg, IDC_RELSET_FORCE);
124    StartTask (taskSET_RELEASE, NULL, lpp);
125 }
126