Initial IBM OpenAFS 1.0 tree
[openafs.git] / src / WINNT / afssvrmgr / set_rename.cpp
1 extern "C" {
2 #include <afs/param.h>
3 #include <afs/stds.h>
4 }
5
6 #include "svrmgr.h"
7 #include "set_rename.h"
8
9
10 /*
11  * PROTOTYPES _________________________________________________________________
12  *
13  */
14
15 BOOL CALLBACK Filesets_Rename_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp);
16 void Filesets_Rename_OnInitDialog (HWND hDlg, LPSET_RENAME_APPLY_PARAMS psrp);
17 void Filesets_Rename_EnableOK (HWND hDlg, LPSET_RENAME_APPLY_PARAMS psrp);
18
19
20 /*
21  * ROUTINES ___________________________________________________________________
22  *
23  */
24
25 void Filesets_ShowRename (LPIDENT lpiFileset)
26 {
27    LPSET_RENAME_INIT_PARAMS lpp = New (SET_RENAME_INIT_PARAMS);
28    memset (lpp, 0x00, sizeof(SET_RENAME_INIT_PARAMS));
29    lpp->lpiReq = lpiFileset;
30
31    StartTask (taskSET_RENAME_INIT, g.hMain, lpp);
32 }
33
34
35 void Filesets_OnEndTask_ShowRename (LPTASKPACKET ptp)
36 {
37    LPSET_RENAME_INIT_PARAMS lpp = (LPSET_RENAME_INIT_PARAMS)(ptp->lpUser);
38
39    TCHAR szSvrName[ cchNAME ];
40    TCHAR szAggName[ cchNAME ];
41    TCHAR szSetName[ cchNAME ];
42    lpp->lpiReq->GetServerName (szSvrName);
43    lpp->lpiReq->GetAggregateName (szAggName);
44    lpp->lpiReq->GetFilesetName (szSetName);
45
46    if (!ptp->rc)
47       {
48       ErrorDialog (ptp->status, IDS_ERROR_REFRESH_FILESET_STATUS, TEXT("%s%s%s"), szSvrName, szAggName, szSetName);
49       }
50    else if (!lpp->lpiRW) // couldn't find RW fileset entry?
51       {
52       ErrorDialog (ptp->status, IDS_ERROR_NOT_REPLICATED, TEXT("%s"), szSetName);
53       }
54    else
55       {
56       LPSET_RENAME_APPLY_PARAMS psrp = New (SET_RENAME_APPLY_PARAMS);
57       memset (psrp, 0x00, sizeof(SET_RENAME_APPLY_PARAMS));
58       psrp->lpiFileset = lpp->lpiRW;
59
60       int rc = ModalDialogParam (IDD_SET_RENAME, GetActiveWindow(), (DLGPROC)Filesets_Rename_DlgProc, (LPARAM)psrp);
61       if (rc != IDOK)
62          {
63          Delete (psrp);
64          }
65       else
66          {
67          StartTask (taskSET_RENAME_APPLY, NULL, psrp);
68          }
69       }
70
71    Delete (lpp);
72 }
73
74
75 BOOL CALLBACK Filesets_Rename_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
76 {
77    if (AfsAppLib_HandleHelp (IDD_SET_RENAME, hDlg, msg, wp, lp))
78       return TRUE;
79
80    static LPSET_RENAME_APPLY_PARAMS psrp = NULL;
81    if (msg == WM_INITDIALOG)
82       psrp = (LPSET_RENAME_APPLY_PARAMS)lp;
83
84    if (psrp != NULL)
85       {
86       switch (msg)
87          {
88          case WM_INITDIALOG:
89             Filesets_Rename_OnInitDialog (hDlg, psrp);
90             break;
91
92          case WM_COMMAND:
93             switch (LOWORD(wp))
94                {
95                case IDOK:
96                case IDCANCEL:
97                   EndDialog (hDlg, LOWORD(wp));
98                   break;
99
100                case IDC_RENSET_NEW:
101                   Filesets_Rename_EnableOK (hDlg, psrp);
102                   break;
103
104                case IDHELP:
105                   WinHelp (hDlg, cszHELPFILENAME, HELP_CONTEXT, IDH_SVRMGR_RENAMEFILESET_OVERVIEW);
106                   break;
107                }
108             break;
109
110          case WM_DESTROY:
111             psrp = NULL;
112             break;
113          }
114       }
115
116    return FALSE;
117 }
118
119
120 void Filesets_Rename_OnInitDialog (HWND hDlg, LPSET_RENAME_APPLY_PARAMS psrp)
121 {
122    TCHAR szServer[ cchNAME ];
123    TCHAR szAggregate[ cchNAME ];
124    TCHAR szFileset[ cchNAME ];
125
126    psrp->lpiFileset->GetServerName (szServer);
127    psrp->lpiFileset->GetAggregateName (szAggregate);
128    psrp->lpiFileset->GetFilesetName (szFileset);
129
130    TCHAR szOld[ cchRESOURCE ];
131
132    GetDlgItemText (hDlg, IDC_RENSET_DESC, szOld, cchRESOURCE);
133    LPTSTR pszNew = FormatString (szOld, TEXT("%s%s%s"), szServer, szAggregate, szFileset);
134    SetDlgItemText (hDlg, IDC_RENSET_DESC, pszNew);
135    FreeString (pszNew);
136
137    SetDlgItemText (hDlg, IDC_RENSET_OLD, szFileset);
138    SetDlgItemText (hDlg, IDC_RENSET_NEW, szFileset);
139
140    PostMessage (hDlg, WM_NEXTDLGCTL, (WPARAM)GetDlgItem(hDlg,IDC_RENSET_NEW), TRUE);
141
142    Filesets_Rename_EnableOK (hDlg, psrp);
143 }
144
145
146 void Filesets_Rename_EnableOK (HWND hDlg, LPSET_RENAME_APPLY_PARAMS psrp)
147 {
148    TCHAR szOld[ cchNAME ];
149
150    GetDlgItemText (hDlg, IDC_RENSET_OLD, szOld, cchNAME);
151    GetDlgItemText (hDlg, IDC_RENSET_NEW, psrp->szNewName, cchNAME);
152
153    BOOL fEnable = TRUE;
154
155    if (!psrp->szNewName[0])
156       {
157       fEnable = FALSE;
158       }
159    else if (!lstrcmpi (szOld, psrp->szNewName))
160       {
161       fEnable = FALSE;
162       }
163
164    EnableWindow (GetDlgItem (hDlg, IDOK), fEnable);
165 }
166