summaryrefslogtreecommitdiffstats
path: root/private/nw/convert/nwconv/statbox.c
diff options
context:
space:
mode:
Diffstat (limited to 'private/nw/convert/nwconv/statbox.c')
-rw-r--r--private/nw/convert/nwconv/statbox.c568
1 files changed, 568 insertions, 0 deletions
diff --git a/private/nw/convert/nwconv/statbox.c b/private/nw/convert/nwconv/statbox.c
new file mode 100644
index 000000000..70d2b42a8
--- /dev/null
+++ b/private/nw/convert/nwconv/statbox.c
@@ -0,0 +1,568 @@
+/*
+ +-------------------------------------------------------------------------+
+ | Status Dialog box routines - Used during Conversion |
+ +-------------------------------------------------------------------------+
+ | (c) Copyright 1993-1994 |
+ | Microsoft Corp. |
+ | All rights reserved |
+ | |
+ | Program : [StatBox.c] |
+ | Programmer : Arthur Hanson |
+ | Original Program Date : [Feb 08, 1994] |
+ | Last Update : [Feb 08, 1994] |
+ | |
+ | Version: 1.00 |
+ | |
+ | Description: |
+ | |
+ | History: |
+ | arth Feb 08, 1994 1.00 Original Version. |
+ | |
+ +-------------------------------------------------------------------------+
+*/
+
+
+#include "globals.h"
+#include "convapi.h"
+
+static TCHAR tmpStr[1024];
+static TCHAR PanelTitle[80];
+static HANDLE hStatus = NULL;
+static HANDLE hPanel = NULL;
+static BOOL DoCancel = FALSE;
+
+/*+-------------------------------------------------------------------------+
+ | Routines for status dialog put up during conversion. |
+ +-------------------------------------------------------------------------+*/
+
+/*+-------------------------------------------------------------------------+
+ | DrainPump()
+ +-------------------------------------------------------------------------+*/
+void DrainPump() {
+ MSG msg;
+
+ while (PeekMessage(&msg, hStatus, 0, 0xfff, PM_REMOVE)) {
+ if ((IsDialogMessage(hStatus, &msg) == FALSE) &&
+ (IsDialogMessage(hPanel, &msg) == FALSE)) {
+ TranslateMessage(&msg);
+ DispatchMessage(&msg);
+ }
+ }
+
+} // DrainPump
+
+
+/*+-------------------------------------------------------------------------+
+ | Status_CurConv()
+ +-------------------------------------------------------------------------+*/
+// Current server pair being converted
+void Status_CurConv(UINT Num) {
+ wsprintf(tmpStr, TEXT("%5u"), Num);
+ SendDlgItemMessage(hStatus, IDC_S_CUR_CONV, WM_SETTEXT, 0, (LPARAM) tmpStr);
+ SendMessage(hStatus, WM_PAINT, 0, 0L);
+ DrainPump();
+} // Status_CurConv
+
+
+/*+-------------------------------------------------------------------------+
+ | Status_TotConv()
+ +-------------------------------------------------------------------------+*/
+// Total number of server pairs to convert
+void Status_TotConv(UINT Num) {
+ wsprintf(tmpStr, TEXT("%5u"), Num);
+ SendDlgItemMessage(hStatus, IDC_S_TOT_CONV, WM_SETTEXT, 0, (LPARAM) tmpStr);
+ SendMessage(hStatus, WM_PAINT, 0, 0L);
+ DrainPump();
+} // Status_TotConv
+
+
+/*+-------------------------------------------------------------------------+
+ | Status_SrcServ()
+ +-------------------------------------------------------------------------+*/
+// Current source server of server pair being converted
+void Status_SrcServ(LPTSTR Server) {
+ wsprintf(tmpStr, TEXT("%-15s"), Server);
+ SendDlgItemMessage(hStatus, IDC_S_SRCSERV, WM_SETTEXT, 0, (LPARAM) tmpStr);
+ SendMessage(hStatus, WM_PAINT, 0, 0L);
+ DrainPump();
+} // Status_SrcServ
+
+
+/*+-------------------------------------------------------------------------+
+ | Status_DestServ()
+ +-------------------------------------------------------------------------+*/
+// Current destination server of server pair being converted
+void Status_DestServ(LPTSTR Server) {
+ wsprintf(tmpStr, TEXT("%-15s"), Server);
+ SendDlgItemMessage(hStatus, IDC_S_DESTSERV, WM_SETTEXT, 0, (LPARAM) tmpStr);
+ SendMessage(hStatus, WM_PAINT, 0, 0L);
+ DrainPump();
+} // Status_DestServ
+
+
+/*+-------------------------------------------------------------------------+
+ | Status_ConvTxt()
+ +-------------------------------------------------------------------------+*/
+// Text describing what is being converted (Groups, Users Files)
+void Status_ConvTxt(LPTSTR Text) {
+ wsprintf(tmpStr, TEXT("%-20s"), Text);
+ SendDlgItemMessage(hStatus, IDC_S_CONVTXT, WM_SETTEXT, 0, (LPARAM) tmpStr);
+ SendMessage(hStatus, WM_PAINT, 0, 0L);
+ DrainPump();
+} // Status_ConvTxt
+
+
+/*+-------------------------------------------------------------------------+
+ | Status_CurNum()
+ +-------------------------------------------------------------------------+*/
+// Current item number being converted (current group # or User # or file #)...
+void Status_CurNum(UINT Num) {
+ wsprintf(tmpStr, TEXT("%7s"), lToStr(Num));
+ SendDlgItemMessage(hStatus, IDC_S_CUR_NUM, WM_SETTEXT, 0, (LPARAM) tmpStr);
+ SendMessage(hStatus, WM_PAINT, 0, 0L);
+ DrainPump();
+} // Status_CurNum
+
+
+/*+-------------------------------------------------------------------------+
+ | Status_CurTot()
+ +-------------------------------------------------------------------------+*/
+// Total items in set being converted (user, group, files...)
+void Status_CurTot(UINT Num) {
+ wsprintf(tmpStr, TEXT("%7s"), lToStr(Num));
+ SendDlgItemMessage(hStatus, IDC_S_CUR_TOT, WM_SETTEXT, 0, (LPARAM) tmpStr);
+ SendMessage(hStatus, WM_PAINT, 0, 0L);
+ DrainPump();
+} // Status_CurTot
+
+
+/*+-------------------------------------------------------------------------+
+ | Status_ItemLabel()
+ +-------------------------------------------------------------------------+*/
+// Label for set being converted ("Group:", "User:")
+void Status_ItemLabel(LPTSTR Text, ...) {
+ va_list marker;
+
+ va_start(marker, Text);
+
+ wvsprintf(tmpStr, Text, marker);
+ SendDlgItemMessage(hStatus, IDC_S_ITEMLABEL, WM_SETTEXT, 0, (LPARAM) tmpStr);
+ SendMessage(hStatus, WM_PAINT, 0, 0L);
+ DrainPump();
+
+ va_end(marker);
+
+} // Status_ItemLabel
+
+
+/*+-------------------------------------------------------------------------+
+ | Status_Item()
+ +-------------------------------------------------------------------------+*/
+// Name of current thing being converted (actual user or group name)
+void Status_Item(LPTSTR Text) {
+ wsprintf(tmpStr, TEXT("%-15s"), Text);
+ SendDlgItemMessage(hStatus, IDC_S_STATUSITEM, WM_SETTEXT, 0, (LPARAM) tmpStr);
+ SendMessage(hStatus, WM_PAINT, 0, 0L);
+ DrainPump();
+} // Status_Item
+
+
+/*+-------------------------------------------------------------------------+
+ | Status_TotComplete()
+ +-------------------------------------------------------------------------+*/
+// Total #server pairs converted so far
+void Status_TotComplete(UINT Num) {
+ wsprintf(tmpStr, TEXT("%7s"), lToStr(Num));
+ SendDlgItemMessage(hStatus, IDC_S_TOT_COMP, WM_SETTEXT, 0, (LPARAM) tmpStr);
+ SendMessage(hStatus, WM_PAINT, 0, 0L);
+ DrainPump();
+} // Status_TotComplete
+
+
+/*+-------------------------------------------------------------------------+
+ | Status_TotGroups()
+ +-------------------------------------------------------------------------+*/
+void Status_TotGroups(UINT Num) {
+ wsprintf(tmpStr, TEXT("%7s"), lToStr(Num));
+ SendDlgItemMessage(hStatus, IDC_S_TOT_GROUPS, WM_SETTEXT, 0, (LPARAM) tmpStr);
+ SendMessage(hStatus, WM_PAINT, 0, 0L);
+ DrainPump();
+} // Status_TotGroup
+
+
+/*+-------------------------------------------------------------------------+
+ | Status_TotUsers()
+ +-------------------------------------------------------------------------+*/
+void Status_TotUsers(UINT Num) {
+ wsprintf(tmpStr, TEXT("%7s"), lToStr(Num));
+ SendDlgItemMessage(hStatus, IDC_S_TOT_USERS, WM_SETTEXT, 0, (LPARAM) tmpStr);
+ SendMessage(hStatus, WM_PAINT, 0, 0L);
+ DrainPump();
+} // Status_TotUsers
+
+
+/*+-------------------------------------------------------------------------+
+ | Status_TotFiles()
+ +-------------------------------------------------------------------------+*/
+void Status_TotFiles(UINT Num) {
+ wsprintf(tmpStr, TEXT("%7s"), lToStr(Num));
+ SendDlgItemMessage(hStatus, IDC_S_TOT_FILES, WM_SETTEXT, 0, (LPARAM) tmpStr);
+ SendMessage(hStatus, WM_PAINT, 0, 0L);
+ DrainPump();
+} // Status_TotFiles
+
+
+/*+-------------------------------------------------------------------------+
+ | Status_TotErrors()
+ +-------------------------------------------------------------------------+*/
+void Status_TotErrors(UINT Num) {
+ wsprintf(tmpStr, TEXT("%7s"), lToStr(Num));
+ SendDlgItemMessage(hStatus, IDC_S_TOT_ERRORS, WM_SETTEXT, 0, (LPARAM) tmpStr);
+ SendMessage(hStatus, WM_PAINT, 0, 0L);
+ DrainPump();
+} // Status_TotErrors
+
+
+/*+-------------------------------------------------------------------------+
+ | Status_BytesTxt()
+ +-------------------------------------------------------------------------+*/
+void Status_BytesTxt(LPTSTR Text) {
+ wsprintf(tmpStr, TEXT("%-15s"), Text);
+ SendDlgItemMessage(hStatus, IDC_PANEL1, WM_SETTEXT, 0, (LPARAM) tmpStr);
+ SendMessage(hStatus, WM_PAINT, 0, 0L);
+ DrainPump();
+} // Status_BytesTxt
+
+
+/*+-------------------------------------------------------------------------+
+ | Status_Bytes()
+ +-------------------------------------------------------------------------+*/
+void Status_Bytes(LPTSTR Text) {
+ wsprintf(tmpStr, TEXT("%s"), Text);
+ SendDlgItemMessage(hStatus, IDC_PANEL2, WM_SETTEXT, 0, (LPARAM) tmpStr);
+ SendMessage(hStatus, WM_PAINT, 0, 0L);
+ DrainPump();
+} // Status_Bytes
+
+
+/*+-------------------------------------------------------------------------+
+ | Status_TotBytes()
+ +-------------------------------------------------------------------------+*/
+void Status_TotBytes(LPTSTR Text) {
+ wsprintf(tmpStr, TEXT("%s"), Text);
+ SendDlgItemMessage(hStatus, IDC_PANEL3, WM_SETTEXT, 0, (LPARAM) tmpStr);
+ SendMessage(hStatus, WM_PAINT, 0, 0L);
+ DrainPump();
+} // Status_TotBytes
+
+
+/*+-------------------------------------------------------------------------+
+ | Status_BytesSep()
+ +-------------------------------------------------------------------------+*/
+void Status_BytesSep(LPTSTR Text) {
+ wsprintf(tmpStr, TEXT("%s"), Text);
+ SendDlgItemMessage(hStatus, IDC_PANEL4, WM_SETTEXT, 0, (LPARAM) tmpStr);
+ SendMessage(hStatus, WM_PAINT, 0, 0L);
+ DrainPump();
+} // Status_BytesSep
+
+
+/*+-------------------------------------------------------------------------+
+ | DlgStatus()
+ +-------------------------------------------------------------------------+*/
+LRESULT CALLBACK DlgStatus(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) {
+ RECT rc;
+
+ switch (message) {
+ case WM_INITDIALOG:
+ // Center the dialog over the application window
+ CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));
+ return (TRUE);
+
+ case WM_SETFOCUS:
+ GetWindowRect(hDlg, &rc);
+ InvalidateRect(hDlg, &rc, FALSE);
+ SendMessage(hStatus, WM_PAINT, 0, 0L);
+ break;
+ }
+
+ return (FALSE); // Didn't process the message
+
+ lParam;
+} // DlgStatus
+
+
+
+/*+-------------------------------------------------------------------------+
+ | DoStatusDlg()
+ +-------------------------------------------------------------------------+*/
+void DoStatusDlg(HWND hDlg) {
+ DLGPROC lpfnDlg;
+
+ lpfnDlg = MakeProcInstance((DLGPROC)DlgStatus, hInst);
+ hStatus = CreateDialog(hInst, TEXT("StatusDlg"), hDlg, lpfnDlg) ;
+ FreeProcInstance(lpfnDlg);
+
+} // DoStatusDlg
+
+
+/*+-------------------------------------------------------------------------+
+ | StatusDlgKill()
+ +-------------------------------------------------------------------------+*/
+void StatusDlgKill() {
+ DestroyWindow(hStatus);
+ hStatus = NULL;
+
+} // StatusDlgKill
+
+
+
+/*+-------------------------------------------------------------------------+
+ | Information (Panel) Dialog Routines |
+ +-------------------------------------------------------------------------+*/
+
+/*+-------------------------------------------------------------------------+
+ | Panel_Line()
+ +-------------------------------------------------------------------------+*/
+void Panel_Line(int Line, LPTSTR szFormat, ...) {
+ va_list marker;
+
+ if (hPanel == NULL)
+ return;
+
+ va_start(marker, szFormat);
+
+ wvsprintf(tmpStr, szFormat, marker);
+ tmpStr[60] = TEXT('\0');
+ SendDlgItemMessage(hPanel, IDC_PANEL1 - 1 + Line, WM_SETTEXT, 0, (LPARAM) tmpStr);
+ SendMessage(hPanel, WM_PAINT, 0, 0L);
+ DrainPump();
+
+ va_end(marker);
+
+} // Panel_ConvTxt
+
+
+/*+-------------------------------------------------------------------------+
+ | Panel_Cancel()
+ +-------------------------------------------------------------------------+*/
+BOOL Panel_Cancel() {
+
+ if ((hPanel == NULL) || !DoCancel)
+ return FALSE;
+
+ return TRUE;
+
+} // Panel_Cancel
+
+
+/*+-------------------------------------------------------------------------+
+ | DlgPanel()
+ +-------------------------------------------------------------------------+*/
+LRESULT CALLBACK DlgPanel(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) {
+ int wmId, wmEvent;
+ RECT rc;
+
+ switch (message) {
+ case WM_INITDIALOG:
+ // Center the dialog over the application window
+ DoCancel = FALSE;
+ CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));
+ SendMessage(hDlg, WM_SETTEXT, (WPARAM) 0, (LPARAM) PanelTitle);
+ return (TRUE);
+
+ case WM_SETFOCUS:
+ GetWindowRect(hDlg, &rc);
+ InvalidateRect(hDlg, &rc, FALSE);
+ SendMessage(hPanel, WM_PAINT, 0, 0L);
+ break;
+
+ case WM_COMMAND:
+ wmId = LOWORD(wParam);
+ wmEvent = HIWORD(wParam);
+
+ switch (wmId) {
+ case IDCANCEL:
+ DoCancel = TRUE;
+ return (TRUE);
+
+ break;
+ }
+
+ break;
+ }
+
+ return (FALSE); // Didn't process the message
+
+ lParam;
+} // DlgPanel
+
+
+/*+-------------------------------------------------------------------------+
+ | PanelDlg_Do()
+ +-------------------------------------------------------------------------+*/
+void PanelDlg_Do(HWND hDlg, LPTSTR Title) {
+ DLGPROC lpfnDlg;
+
+ lstrcpy(PanelTitle, Title);
+ lpfnDlg = MakeProcInstance((DLGPROC)DlgPanel, hInst);
+ hPanel = CreateDialog(hInst, TEXT("PanelDLG"), hDlg, lpfnDlg) ;
+ FreeProcInstance(lpfnDlg);
+
+} // PanelDlg_Do
+
+
+/*+-------------------------------------------------------------------------+
+ | PanelDlgKill()
+ +-------------------------------------------------------------------------+*/
+void PanelDlgKill() {
+
+ if (hPanel == NULL)
+ return;
+
+ DestroyWindow(hPanel);
+ hPanel = NULL;
+ DoCancel = FALSE;
+
+} // PanelDlgKill
+
+
+/*+-------------------------------------------------------------------------+
+ | Name Error Dialog (User and Group) |
+ +-------------------------------------------------------------------------+*/
+
+static TCHAR OldName[60];
+static TCHAR NewName[60];
+static LPTSTR DlgTitle;
+static LPTSTR NameErrorProblem;
+static ULONG RetType;
+static ULONG MaxNameLen;
+/*+-------------------------------------------------------------------------+
+ | NameErrorDlg()
+ |
+ +-------------------------------------------------------------------------+*/
+LRESULT CALLBACK NameErrorDlg(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) {
+ int wmId, wmEvent;
+
+ switch (message) {
+ case WM_INITDIALOG:
+ // Center the dialog over the application window
+ CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));
+
+ // Init all the display fields
+ SendMessage(hDlg, WM_SETTEXT, (WPARAM) 0, (LPARAM) DlgTitle);
+ SendMessage(GetDlgItem(hDlg, IDC_OLDNAME), WM_SETTEXT, (WPARAM) 0, (LPARAM) OldName);
+ SendMessage(GetDlgItem(hDlg, IDC_NEWNAME), WM_SETTEXT, (WPARAM) 0, (LPARAM) NewName);
+ SendMessage(GetDlgItem(hDlg, IDC_PANEL1), WM_SETTEXT, (WPARAM) 0, (LPARAM) NameErrorProblem);
+
+ // limit the name length
+ PostMessage(GetDlgItem(hDlg, IDC_NEWNAME), EM_LIMITTEXT, (WPARAM) MaxNameLen, 0);
+ return (TRUE);
+
+ case WM_COMMAND:
+ wmId = LOWORD(wParam);
+ wmEvent = HIWORD(wParam);
+
+ switch (wmId) {
+ case IDABORT:
+ // This will cancel the conversion - but need to check with the user
+ // if this is what they really want to do
+ if (MessageBox(hDlg, Lids(IDS_E_15), Lids(IDS_E_16), MB_YESNO) == IDYES) {
+ RetType = (ULONG) IDABORT;
+ EndDialog(hDlg, 0);
+ }
+
+ return (TRUE);
+ break;
+
+ case IDRETRY:
+ * (WORD *)NewName = (WORD) MaxNameLen + 1;
+ SendMessage(GetDlgItem(hDlg, IDC_NEWNAME), EM_GETLINE, 0, (LPARAM) NewName);
+ RetType = (ULONG) IDRETRY;
+ EndDialog(hDlg, 0);
+ return (TRUE);
+ break;
+
+ case IDIGNORE:
+ RetType = (ULONG) IDCANCEL;
+ EndDialog(hDlg, 0);
+ return (TRUE);
+ break;
+
+ }
+
+ break;
+ }
+
+ return (FALSE); // Didn't process the message
+
+ lParam;
+} // NameErrorDlg
+
+
+/*+-------------------------------------------------------------------------+
+ | UserNameErrorDlg_Do()
+ |
+ +-------------------------------------------------------------------------+*/
+ULONG UserNameErrorDlg_Do(LPTSTR Title, LPTSTR Problem, USER_BUFFER *User) {
+ DLGPROC lpfnDlg;
+
+ lstrcpy(OldName, User->Name);
+ lstrcpy(NewName, User->NewName);
+ MaxNameLen = MAX_USER_NAME_LEN;
+
+ DlgTitle = Title;
+ NameErrorProblem = Problem;
+ lpfnDlg = MakeProcInstance((DLGPROC) NameErrorDlg, hInst);
+ CursorNormal();
+ DialogBox(hInst, TEXT("NameError"), hStatus, lpfnDlg) ;
+ CursorHourGlass();
+ FreeProcInstance(lpfnDlg);
+
+ if (RetType == IDRETRY) {
+ User->err = 0;
+ lstrcpy(User->NewName, NewName);
+
+ // if the name is different then flag that it is a new name
+ if (lstrcmpi(User->NewName, User->Name))
+ User->IsNewName = TRUE;
+ }
+
+ return RetType;
+
+} // UserNameErrorDlg_Do
+
+
+/*+-------------------------------------------------------------------------+
+ | GroupNameErrorDlg_Do()
+ |
+ +-------------------------------------------------------------------------+*/
+ULONG GroupNameErrorDlg_Do(LPTSTR Title, LPTSTR Problem, GROUP_BUFFER *Group) {
+ DLGPROC lpfnDlg;
+
+ lstrcpy(OldName, Group->Name);
+ lstrcpy(NewName, Group->NewName);
+ MaxNameLen = MAX_NT_GROUP_NAME_LEN;
+
+ DlgTitle = Title;
+ NameErrorProblem = Problem;
+ lpfnDlg = MakeProcInstance((DLGPROC) NameErrorDlg, hInst);
+ CursorNormal();
+ DialogBox(hInst, TEXT("NameError"), hStatus, lpfnDlg) ;
+ CursorHourGlass();
+ FreeProcInstance(lpfnDlg);
+
+ if (RetType == IDRETRY) {
+ Group->err = 0;
+ lstrcpy(Group->NewName, NewName);
+
+ // if the name is different then flag that it is a new name
+ if (lstrcmpi(Group->NewName, Group->Name))
+ Group->IsNewName = TRUE;
+ }
+
+ return RetType;
+
+} // GroupNameErrorDlg_Do
+
+