d9602514eecb4fc1e82ddb4653d6e8d0eb5dcae4
[openafs.git] / src / WINNT / afssvrmgr / svr_syncvldb.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 "svr_syncvldb.h"
17 #include "propcache.h"
18
19
20 /*
21  * DEFINITIONS ________________________________________________________________
22  *
23  */
24
25
26 /*
27  * PROTOTYPES _________________________________________________________________
28  *
29  */
30
31 BOOL CALLBACK Server_SyncVLDB_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp);
32 void Server_SyncVLDB_OnInitDialog (HWND hDlg, LPIDENT lpi);
33 void Server_SyncVLDB_OnOK (HWND hDlg, LPIDENT lpi);
34 void Server_SyncVLDB_OnEndTask_Init (HWND hDlg, LPTASKPACKET ptp);
35
36
37 /*
38  * ROUTINES ___________________________________________________________________
39  *
40  */
41
42 void Server_SyncVLDB (LPIDENT lpi)
43 {
44    HWND hCurrent;
45    if ((hCurrent = PropCache_Search (pcSVR_SYNCVLDB, lpi)) != NULL)
46       {
47       SetFocus (hCurrent);
48       }
49    else
50       {
51       ModelessDialogParam (IDD_SVR_SYNCVLDB, NULL, (DLGPROC)Server_SyncVLDB_DlgProc, (LPARAM)lpi);
52       }
53 }
54
55
56 BOOL CALLBACK Server_SyncVLDB_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
57 {
58    if (AfsAppLib_HandleHelp (IDD_SVR_SYNCVLDB, hDlg, msg, wp, lp))
59       return TRUE;
60
61    if (msg == WM_INITDIALOG)
62       SetWindowLongPtr (hDlg, DWLP_USER, lp);
63
64    LPIDENT lpi;
65    if ((lpi = (LPIDENT)GetWindowLongPtr (hDlg, DWLP_USER)) != NULL)
66       {
67       switch (msg)
68          {
69          case WM_INITDIALOG:
70             PropCache_Add (pcSVR_SYNCVLDB, lpi, hDlg);
71             Server_SyncVLDB_OnInitDialog (hDlg, lpi);
72             break;
73
74          case WM_ENDTASK:
75             LPTASKPACKET ptp;
76             if ((ptp = (LPTASKPACKET)lp) != NULL)
77                {
78                if (ptp->idTask == taskAGG_FIND_GHOST)
79                   Server_SyncVLDB_OnEndTask_Init (hDlg, ptp);
80                FreeTaskPacket (ptp);
81                }
82             break;
83
84          case WM_COMMAND:
85             switch (LOWORD(wp))
86                {
87                case IDOK:
88                   Server_SyncVLDB_OnOK (hDlg, lpi);
89                   DestroyWindow (hDlg);
90                   break;
91
92                case IDCANCEL:
93                   DestroyWindow (hDlg);
94                   break;
95                }
96             break;
97
98          case WM_DESTROY:
99             PropCache_Delete (pcSVR_SYNCVLDB, lpi);
100             break;
101          }
102       }
103
104    return FALSE;
105 }
106
107
108 void Server_SyncVLDB_OnInitDialog (HWND hDlg, LPIDENT lpi)
109 {
110    if (lpi->fIsServer())
111       {
112       TCHAR szServer[ cchNAME ];
113       lpi->GetServerName (szServer);
114
115       LPTSTR pszText = FormatString (IDS_SYNCVLDB_SVR_DESC, TEXT("%s"), szServer);
116       SetDlgItemText (hDlg, IDC_SYNC_DESC, pszText);
117       FreeString (pszText);
118       pszText = FormatString (IDS_SYNCVLDB_SVR_DESC2, TEXT("%s"), szServer);
119       SetDlgItemText (hDlg, IDC_SYNC_DESC2, pszText);
120       FreeString (pszText);
121
122       ShowWindow (hDlg, SW_SHOW);
123       }
124    else // (lpi->fIsAggregate())
125       {
126       TCHAR szServer[ cchNAME ];
127       lpi->GetServerName (szServer);
128       TCHAR szAggregate[ cchNAME ];
129       lpi->GetAggregateName (szAggregate);
130
131       LPTSTR pszText = FormatString (IDS_SYNCVLDB_AGG_DESC, TEXT("%s%s"), szServer, szAggregate);
132       SetDlgItemText (hDlg, IDC_SYNC_DESC, pszText);
133       FreeString (pszText);
134       pszText = FormatString (IDS_SYNCVLDB_AGG_DESC2, TEXT("%s%s"), szServer, szAggregate);
135       SetDlgItemText (hDlg, IDC_SYNC_DESC2, pszText);
136       FreeString (pszText);
137
138       StartTask (taskAGG_FIND_GHOST, hDlg, lpi);
139       }
140 }
141
142
143 void Server_SyncVLDB_OnEndTask_Init (HWND hDlg, LPTASKPACKET ptp)
144 {
145    if (ptp->rc && (!(TASKDATA(ptp)->wGhost & GHOST_HAS_SERVER_ENTRY)))
146       {
147       LPIDENT lpi = (LPIDENT)( ptp->lpUser );
148
149       TCHAR szServer[ cchNAME ];
150       lpi->GetServerName (szServer);
151       TCHAR szAggregate[ cchNAME ];
152       lpi->GetAggregateName (szAggregate);
153
154       ErrorDialog (0, IDS_ERROR_CANT_SYNC_GHOST_AGGREGATE, TEXT("%s%s"), szServer, szAggregate);
155       DestroyWindow (hDlg);
156       return;
157       }
158
159    ShowWindow (hDlg, SW_SHOW);
160 }
161
162
163 void Server_SyncVLDB_OnOK (HWND hDlg, LPIDENT lpi)
164 {
165    LPSVR_SYNCVLDB_PARAMS lpp = New (SVR_SYNCVLDB_PARAMS);
166    lpp->lpi = (LPIDENT)GetWindowLongPtr (hDlg, DWLP_USER);
167    lpp->fForce = TRUE;
168    StartTask (taskSVR_SYNCVLDB, NULL, lpp);
169 }
170