source: trunk/dll/notebook.c@ 930

Last change on this file since 930 was 930, checked in by John Small, 18 years ago

Some code "cleanup" for ticket 150.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 102.9 KB
Line 
1
2/***********************************************************************
3
4 $Id: notebook.c 930 2008-01-19 13:54:06Z jbs $
5
6 Configuration notebook
7
8 Copyright (c) 1993-98 M. Kimes
9 Copyright (c) 2004, 2008 Steven H. Levine
10
11 01 Aug 04 SHL Rework lstrip/rstrip usage
12 23 May 05 SHL Use QWL_USER
13 04 Jun 05 SHL Support Cancel button; make Esc key more consistent
14 29 May 06 SHL Comments
15 17 Jul 06 SHL Use Runtime_Error
16 15 Aug 06 SHL Rework SetMask args
17 03 Aug 07 GKY Enlarged and made setable everywhere Findbuf (speed file loading)
18 13 Aug 07 SHL Move #pragma alloc_text to end for OpenWatcom compat
19 13 Aug 07 SHL Rework FilesToGet min/max to match how DosFindFirst/Next works
20 19 Aug 07 SHL Sync with SaveDirCnrState mods
21 21 Aug 07 GKY Make Subject column in dircnr sizable and movable from the rigth to the left pane
22 26 Nov 07 GKY Allow a currently nonvalid path in the ext path field with warning
23 06 Jan 08 GKY Use NormalizeCmdLine to check program strings on entry
24 10 Jan 08 SHL Remember last settings page
25 10 Jan 08 SHL Rework page select logic
26 xx Jan 08 JBS Ticket 150: fix/improve save and restore of dir cnr state at FM/2 close/reopen
27
28***********************************************************************/
29
30#include <stdio.h>
31#include <stdlib.h>
32#include <string.h>
33
34#define INCL_DOS
35#define INCL_WIN
36#define INCL_LONGLONG // dircnrs.h
37
38#include "fm3dlg.h"
39#include "fm3str.h"
40#include "pathutil.h" // BldQuotedFileName
41#include "errutil.h" // Dos_Error...
42#include "strutil.h" // GetPString
43#include "fm3dll.h"
44
45#pragma data_seg(DATA2)
46
47static PSZ pszSrcFile = __FILE__;
48
49static HWND hwndNotebook;
50
51MRESULT EXPENTRY CfgADlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
52{
53 ULONG ulResult;
54
55 switch (msg) {
56 case WM_INITDLG:
57 WinSendDlgItemMsg(hwnd, CFGA_VIRUS, EM_SETTEXTLIMIT,
58 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
59 WinSendDlgItemMsg(hwnd, CFGA_EXTRACTPATH, EM_SETTEXTLIMIT,
60 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
61 WinEnableWindow(WinWindowFromID(hwnd, CFGA_FIND), FALSE);
62 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
63 break;
64
65 case UM_UNDO:
66 WinCheckButton(hwnd, CFGA_ARCSTUFFVISIBLE, fArcStuffVisible);
67 WinCheckButton(hwnd, CFGA_FOLDERAFTEREXTRACT, fFolderAfterExtract);
68 WinCheckButton(hwnd, CFGA_QUICKARCFIND, fQuickArcFind);
69 WinCheckButton(hwnd, CFGA_DEFARC, (*szDefArc != 0));
70 WinSetDlgItemText(hwnd, CFGA_DEFARCNAME, szDefArc);
71 WinSetDlgItemText(hwnd, CFGA_VIRUS, virus);
72 WinSetDlgItemText(hwnd, CFGA_EXTRACTPATH, extractpath);
73 break;
74
75 case WM_CONTROL:
76 switch (SHORT1FROMMP(mp1)) {
77 case CFGA_VIRUS:
78 case CFGA_EXTRACTPATH:
79 switch (SHORT2FROMMP(mp1)) {
80 case EN_KILLFOCUS:
81 WinEnableWindow(WinWindowFromID(hwnd, CFGA_FIND), FALSE);
82 break;
83 case EN_SETFOCUS:
84 WinEnableWindow(WinWindowFromID(hwnd, CFGA_FIND), TRUE);
85 break;
86 }
87 break;
88 case CFGA_DEFARC:
89 switch (SHORT2FROMMP(mp1)) {
90 case BN_CLICKED:
91 if (WinQueryButtonCheckstate(hwnd, CFGA_DEFARC)) {
92
93 ARC_TYPE *pat = arcsighead; // Hide dups
94
95 if (!WinDlgBox(HWND_DESKTOP, hwnd,
96 SBoxDlgProc, FM3ModHandle, ASEL_FRAME,
97 (PVOID) & pat) || !pat || !pat->id || !*pat->id) {
98 DosBeep(250, 100); // Complain
99 WinCheckButton(hwnd, CFGA_DEFARC, FALSE);
100 }
101 else
102 WinSetDlgItemText(hwnd, CFGA_DEFARCNAME, pat->id);
103 }
104 break;
105 default:
106 break;
107 }
108 break;
109
110 default:
111 break;
112 }
113 return 0;
114
115 case WM_COMMAND:
116 switch (SHORT1FROMMP(mp1)) {
117 case IDM_UNDO:
118 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
119 break;
120
121 case DID_CANCEL:
122 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
123
124 case DID_OK:
125 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
126 break;
127
128 case IDM_HELP:
129 if (hwndHelp)
130 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
131 MPFROM2SHORT(HELP_CFGA, 0), MPFROMSHORT(HM_RESOURCEID));
132 break;
133
134 case CFGA_FIND:
135 {
136 CHAR filename[CCHMAXPATH + 9], szfilename[CCHMAXPATH + 9];
137 USHORT id;
138 HWND hwndFocus;
139
140 strcpy(filename, "*.EXE");
141 hwndFocus = WinQueryFocus(HWND_DESKTOP);
142 if (hwndFocus) {
143 id = WinQueryWindowUShort(hwndFocus, QWS_ID);
144 switch (id) {
145 case CFGA_VIRUS:
146 if (insert_filename(hwnd, filename, 2, FALSE) && *filename) {
147 BldQuotedFileName(szfilename, filename);
148 strcat(szfilename, " %p");
149 WinSetDlgItemText(hwnd, id, szfilename);
150 }
151 break;
152 case CFGA_EXTRACTPATH:
153 strcpy(filename, extractpath);
154 if (WinDlgBox(HWND_DESKTOP, hwndNotebook,
155 WalkExtractDlgProc, FM3ModHandle, WALK_FRAME,
156 MPFROMP(filename)) && *filename)
157 WinSetDlgItemText(hwnd, id, filename);
158 break;
159 default:
160 Runtime_Error(pszSrcFile, __LINE__, "bad case");
161 break;
162 }
163 }
164 }
165 break;
166 }
167 return 0;
168
169 case WM_CLOSE:
170 fQuickArcFind = WinQueryButtonCheckstate(hwnd, CFGA_QUICKARCFIND);
171 PrfWriteProfileData(fmprof,
172 appname,
173 "QuickArcFind", &fQuickArcFind, sizeof(BOOL));
174 fArcStuffVisible = WinQueryButtonCheckstate(hwnd, CFGA_ARCSTUFFVISIBLE);
175 PrfWriteProfileData(fmprof,
176 appname,
177 "ArcStuffVisible", &fArcStuffVisible, sizeof(BOOL));
178 fFolderAfterExtract = WinQueryButtonCheckstate(hwnd,
179 CFGA_FOLDERAFTEREXTRACT);
180 PrfWriteProfileData(fmprof,
181 appname,
182 "FolderAfterExtract",
183 &fFolderAfterExtract, sizeof(BOOL));
184 if (WinQueryButtonCheckstate(hwnd, CFGA_DEFARC)) {
185
186 CHAR temp[CCHMAXPATH];
187
188 *temp = 0;
189 WinQueryDlgItemText(hwnd, CFGA_DEFARCNAME, CCHMAXPATH, temp);
190 strcpy(szDefArc, temp);
191 }
192 else
193 *szDefArc = 0;
194 PrfWriteProfileString(fmprof, appname, "DefArc", szDefArc);
195 {
196 CHAR szCLBuf[MAXCOMLINESTRG], szPathBuf[CCHMAXPATH];
197 PSZ pszWorkBuf;
198
199 pszWorkBuf = xmalloc(MAXCOMLINESTRG, pszSrcFile, __LINE__);
200 WinQueryDlgItemText(hwnd, CFGA_VIRUS, MAXCOMLINESTRG, szCLBuf);
201 szCLBuf[MAXCOMLINESTRG - 1] = 0;
202 if (strcmp(szCLBuf, virus)){
203 NormalizeCmdLine(pszWorkBuf, szCLBuf);
204 memcpy(virus, pszWorkBuf, strlen(pszWorkBuf) + 1);
205 xfree(pszWorkBuf);
206 if (!strchr(virus, '%') && strlen(virus) > 3)
207 strcat(virus, " %p");
208 }
209 if (!*virus)
210 strcpy(virus, "OS2SCAN.EXE %p /SUB /A");
211 WinQueryDlgItemText(hwnd, CFGA_EXTRACTPATH, CCHMAXPATH, szPathBuf);
212 szPathBuf[CCHMAXPATH - 1] = 0;
213 bstrip(szPathBuf);
214 if (strcmp(extractpath, szPathBuf)) {
215 memcpy(extractpath, szPathBuf, strlen(szPathBuf) + 1);
216 if (*extractpath){
217 MakeFullName(extractpath);
218 if (IsFile(extractpath)) {
219 ulResult = saymsg(MB_YESNOCANCEL | MB_ICONQUESTION | MB_DEFBUTTON1, HWND_DESKTOP,
220 GetPString(IDS_WARNINGTEXT),
221 GetPString(IDS_EXTPATHNOTVALIDTEXT),
222 extractpath);
223 if (ulResult == MBID_YES)
224 *extractpath = 0;
225 if (ulResult == MBID_CANCEL){
226 WinDlgBox(HWND_DESKTOP,
227 hwnd,
228 CfgDlgProc,
229 FM3ModHandle,
230 CFG_FRAME,
231 MPFROMLONG(IDM_ARCHIVERSETTINGS));
232 break;
233 }
234 }
235 }
236 }
237 }
238 PrfWriteProfileString(fmprof, appname, "Virus", virus);
239 PrfWriteProfileString(fmprof, appname, "ExtractPath", extractpath);
240 break;
241 }
242 if (fCancelAction) {
243 fCancelAction = FALSE;
244 WinDlgBox(HWND_DESKTOP,
245 hwnd,
246 CfgDlgProc,
247 FM3ModHandle,
248 CFG_FRAME,
249 MPFROMLONG(IDM_ARCHIVERSETTINGS));
250 }
251 return WinDefDlgProc(hwnd, msg, mp1, mp2);
252}
253
254MRESULT EXPENTRY CfgSDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
255{
256 switch (msg) {
257 case WM_INITDLG:
258 WinSendDlgItemMsg(hwnd, CFGS_FILESTOGET, SPBM_SETTEXTLIMIT,
259 MPFROMSHORT(8), MPVOID);
260 WinSendDlgItemMsg(hwnd, CFGS_FILESTOGET, SPBM_OVERRIDESETLIMITS,
261 MPFROMLONG(FILESTOGET_MAX), MPFROMLONG(FILESTOGET_MIN));
262 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
263 break;
264
265 case UM_UNDO:
266 WinCheckButton(hwnd, CFGS_NOICONSFILES, (fNoIconsFiles == FALSE));
267 WinCheckButton(hwnd, CFGS_NOICONSDIRS, (fNoIconsDirs == FALSE));
268 WinCheckButton(hwnd, CFGS_LOADSUBJECTS, fLoadSubject);
269 WinCheckButton(hwnd, CFGS_LOADLONGNAMES, fLoadLongnames);
270 WinCheckButton(hwnd, CFGS_FORCELOWER, fForceLower);
271 WinCheckButton(hwnd, CFGS_FORCEUPPER, fForceUpper);
272 WinCheckButton(hwnd, CFGS_NOREMOVABLESCAN, fNoRemovableScan);
273 WinCheckButton(hwnd, CFGS_REMOTEBUG, fRemoteBug);
274 WinSendDlgItemMsg(hwnd, CFGS_FILESTOGET, SPBM_SETCURRENTVALUE,
275 MPFROMLONG(FilesToGet), MPVOID);
276 return 0;
277
278 case WM_CONTROL:
279 switch (SHORT1FROMMP(mp1)) {
280 case CFGS_FORCEUPPER:
281 case CFGS_FORCELOWER:
282 {
283 BOOL temp;
284
285 temp = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1));
286 if (temp) {
287 switch (SHORT1FROMMP(mp1)) {
288 case CFGS_FORCEUPPER:
289 WinCheckButton(hwnd, CFGS_FORCELOWER, FALSE);
290 break;
291 case CFGS_FORCELOWER:
292 WinCheckButton(hwnd, CFGS_FORCEUPPER, FALSE);
293 break;
294 }
295 }
296 }
297 break;
298 }
299 return 0;
300
301 case WM_COMMAND:
302 switch (SHORT1FROMMP(mp1)) {
303 case IDM_UNDO:
304 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
305 break;
306
307 case DID_CANCEL:
308 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
309
310 case DID_OK:
311 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
312 break;
313
314 case IDM_HELP:
315 if (hwndHelp)
316 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
317 MPFROM2SHORT(HELP_CFGS, 0), MPFROMSHORT(HM_RESOURCEID));
318 break;
319 }
320 return 0;
321
322 case WM_CLOSE:
323 fLoadLongnames = WinQueryButtonCheckstate(hwnd, CFGS_LOADLONGNAMES);
324 PrfWriteProfileData(fmprof, appname, "LoadLongname", &fLoadLongnames,
325 sizeof(BOOL));
326 fLoadSubject = WinQueryButtonCheckstate(hwnd, CFGS_LOADSUBJECTS);
327 PrfWriteProfileData(fmprof, appname, "LoadSubject", &fLoadSubject,
328 sizeof(BOOL));
329 fRemoteBug = WinQueryButtonCheckstate(hwnd, CFGS_REMOTEBUG);
330 PrfWriteProfileData(fmprof, appname, "RemoteBug", &fRemoteBug,
331 sizeof(BOOL));
332 fNoRemovableScan = WinQueryButtonCheckstate(hwnd, CFGS_NOREMOVABLESCAN);
333 PrfWriteProfileData(fmprof, FM3Str, "NoRemovableScan", &fNoRemovableScan,
334 sizeof(BOOL));
335 fNoIconsFiles = WinQueryButtonCheckstate(hwnd, CFGS_NOICONSFILES);
336 fNoIconsFiles = (fNoIconsFiles) ? FALSE : TRUE;
337 PrfWriteProfileData(fmprof, appname, "NoIconsFiles",
338 &fNoIconsFiles, sizeof(BOOL));
339 fNoIconsDirs = WinQueryButtonCheckstate(hwnd, CFGS_NOICONSDIRS);
340 fNoIconsDirs = (fNoIconsDirs) ? FALSE : TRUE;
341 PrfWriteProfileData(fmprof, appname, "NoIconsDirs",
342 &fNoIconsDirs, sizeof(BOOL));
343 fForceUpper = WinQueryButtonCheckstate(hwnd, CFGS_FORCEUPPER);
344 PrfWriteProfileData(fmprof, appname, "ForceUpper",
345 &fForceUpper, sizeof(BOOL));
346 fForceLower = WinQueryButtonCheckstate(hwnd, CFGS_FORCELOWER);
347 PrfWriteProfileData(fmprof, appname, "ForceLower",
348 &fForceLower, sizeof(BOOL));
349 {
350 WinSendDlgItemMsg(hwnd, CFGS_FILESTOGET, SPBM_QUERYVALUE,
351 MPFROMP(&FilesToGet), MPFROM2SHORT(0, SPBQ_DONOTUPDATE));
352 if (FilesToGet < FILESTOGET_MIN)
353 FilesToGet = FILESTOGET_MIN;
354 else if (FilesToGet > FILESTOGET_MAX)
355 FilesToGet = FILESTOGET_MAX;
356 PrfWriteProfileData(fmprof,
357 appname, "FilesToGet", &FilesToGet, sizeof(ULONG));
358 }
359 break;
360 }
361 return WinDefDlgProc(hwnd, msg, mp1, mp2);
362}
363
364MRESULT EXPENTRY CfgVDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
365{
366 switch (msg) {
367 case WM_INITDLG:
368 WinSendDlgItemMsg(hwnd, CFGV_VIEWER, EM_SETTEXTLIMIT,
369 MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
370 WinSendDlgItemMsg(hwnd, CFGV_EDITOR, EM_SETTEXTLIMIT,
371 MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
372 WinSendDlgItemMsg(hwnd, CFGV_BINVIEW, EM_SETTEXTLIMIT,
373 MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
374 WinSendDlgItemMsg(hwnd, CFGV_BINED, EM_SETTEXTLIMIT,
375 MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
376 WinEnableWindow(WinWindowFromID(hwnd, CFGV_FIND), FALSE);
377 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
378 break;
379
380 case UM_UNDO:
381 WinSetDlgItemText(hwnd, CFGV_VIEWER, viewer);
382 WinSetDlgItemText(hwnd, CFGV_EDITOR, editor);
383 WinSetDlgItemText(hwnd, CFGV_BINVIEW, binview);
384 WinSetDlgItemText(hwnd, CFGV_BINED, bined);
385 WinCheckButton(hwnd, CFGV_USENEWVIEWER, fUseNewViewer);
386 WinCheckButton(hwnd, CFGV_GUESSTYPE, fGuessType);
387 WinCheckButton(hwnd, CFGV_VIEWCHILD, fViewChild);
388 WinCheckButton(hwnd, CFGV_CHECKMM, fCheckMM);
389 return 0;
390
391 case WM_CONTROL:
392 switch (SHORT1FROMMP(mp1)) {
393 case CFGV_VIEWER:
394 case CFGV_EDITOR:
395 case CFGV_BINVIEW:
396 case CFGV_BINED:
397 switch (SHORT2FROMMP(mp1)) {
398 case EN_KILLFOCUS:
399 WinEnableWindow(WinWindowFromID(hwnd, CFGV_FIND), FALSE);
400 break;
401 case EN_SETFOCUS:
402 WinEnableWindow(WinWindowFromID(hwnd, CFGV_FIND), TRUE);
403 break;
404 }
405 break;
406 }
407 return 0;
408
409 case WM_COMMAND:
410 switch (SHORT1FROMMP(mp1)) {
411 case IDM_UNDO:
412 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
413 break;
414
415 case DID_CANCEL:
416 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
417
418 case DID_OK:
419 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
420 break;
421
422 case IDM_HELP:
423 if (hwndHelp)
424 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
425 MPFROM2SHORT(HELP_CFGV, 0), MPFROMSHORT(HM_RESOURCEID));
426 break;
427
428 case CFGV_FIND:
429 {
430 CHAR filename[CCHMAXPATH + 9], szfilename[CCHMAXPATH + 9];
431 USHORT id;
432 HWND hwndFocus;
433
434 strcpy(filename, "*.EXE");
435 hwndFocus = WinQueryFocus(HWND_DESKTOP);
436 if (hwndFocus) {
437 id = WinQueryWindowUShort(hwndFocus, QWS_ID);
438 switch (id) {
439 case CFGV_BINVIEW:
440 case CFGV_BINED:
441 case CFGV_VIEWER:
442 case CFGV_EDITOR:
443 if (insert_filename(hwnd, filename, 2, FALSE) && *filename) {
444 BldQuotedFileName(szfilename, filename);
445 strcat(szfilename, " %a");
446 WinSetDlgItemText(hwnd, id, szfilename);
447 }
448 break;
449 default:
450 Runtime_Error(pszSrcFile, __LINE__, "bad case %d", id);
451 break;
452 }
453 }
454 }
455 break;
456 }
457 return 0;
458
459 case WM_CLOSE:
460 {
461 CHAR szCLBuf[MAXCOMLINESTRG];
462 PSZ pszWorkBuf;
463
464 pszWorkBuf = xmalloc(MAXCOMLINESTRG, pszSrcFile, __LINE__);
465 WinQueryDlgItemText(hwnd, CFGV_VIEWER, MAXCOMLINESTRG, szCLBuf);
466 szCLBuf[MAXCOMLINESTRG - 1] = 0;
467 if (strcmp(szCLBuf, viewer)){
468 NormalizeCmdLine(pszWorkBuf, szCLBuf);
469 memcpy(viewer, pszWorkBuf, strlen(pszWorkBuf) + 1);
470 if (!strchr(viewer, '%') && strlen(viewer) > 3)
471 strcat(viewer, " %a");
472 }
473 WinQueryDlgItemText(hwnd, CFGV_EDITOR, MAXCOMLINESTRG, szCLBuf);
474 szCLBuf[MAXCOMLINESTRG - 1] = 0;
475 if (strcmp(szCLBuf, editor)){
476 NormalizeCmdLine(pszWorkBuf, szCLBuf);
477 memcpy(editor, pszWorkBuf, strlen(pszWorkBuf) + 1);
478 if (!strchr(editor, '%') && strlen(editor) > 3)
479 strcat(editor, " %a");
480 }
481 WinQueryDlgItemText(hwnd, CFGV_BINVIEW, MAXCOMLINESTRG, szCLBuf);
482 szCLBuf[MAXCOMLINESTRG - 1] = 0;
483 if (strcmp(szCLBuf, binview)){
484 NormalizeCmdLine(pszWorkBuf, szCLBuf);
485 memcpy(binview, pszWorkBuf, strlen(pszWorkBuf) + 1);
486 if (!strchr(binview, '%') && strlen(binview) > 3)
487 strcat(binview, " %a");
488 }
489 WinQueryDlgItemText(hwnd, CFGV_BINED, MAXCOMLINESTRG, szCLBuf);
490 szCLBuf[MAXCOMLINESTRG - 1] = 0;
491 if (strcmp(szCLBuf, bined)){
492 NormalizeCmdLine(pszWorkBuf, szCLBuf);
493 memcpy(bined, pszWorkBuf, strlen(pszWorkBuf) + 1);
494 if (!strchr(bined, '%') && strlen(bined) > 3)
495 strcat(bined, " %a");
496 }
497 xfree(pszWorkBuf);
498 PrfWriteProfileString(fmprof, appname, "Viewer", viewer);
499 PrfWriteProfileString(fmprof, appname, "Editor", editor);
500 PrfWriteProfileString(fmprof, appname, "BinView", binview);
501 PrfWriteProfileString(fmprof, appname, "BinEd", bined);
502 fUseNewViewer = WinQueryButtonCheckstate(hwnd, CFGV_USENEWVIEWER);
503 PrfWriteProfileData(fmprof, appname, "UseNewViewer", &fUseNewViewer,
504 sizeof(BOOL));
505 fGuessType = WinQueryButtonCheckstate(hwnd, CFGV_GUESSTYPE);
506 PrfWriteProfileData(fmprof, appname, "GuessType", &fGuessType,
507 sizeof(BOOL));
508 fViewChild = WinQueryButtonCheckstate(hwnd, CFGV_VIEWCHILD);
509 PrfWriteProfileData(fmprof, appname, "ViewChild", &fViewChild,
510 sizeof(BOOL));
511 fCheckMM = WinQueryButtonCheckstate(hwnd, CFGV_CHECKMM);
512 PrfWriteProfileData(fmprof, appname, "CheckMM", &fCheckMM, sizeof(BOOL));
513
514 break;
515 }
516 }
517 if (fCancelAction) {
518 fCancelAction = FALSE;
519 WinDlgBox(HWND_DESKTOP,
520 hwnd,
521 CfgDlgProc,
522 FM3ModHandle,
523 CFG_FRAME,
524 MPFROMLONG(IDM_VIEWERSETTINGS));
525 }
526 return WinDefDlgProc(hwnd, msg, mp1, mp2);
527}
528
529MRESULT EXPENTRY CfgHDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
530{
531 switch (msg) {
532 case WM_INITDLG:
533 WinSendDlgItemMsg(hwnd, CFGH_RUNFTPWORKDIR, EM_SETTEXTLIMIT,
534 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
535 WinSendDlgItemMsg(hwnd, CFGH_RUNHTTPWORKDIR, EM_SETTEXTLIMIT,
536 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
537 WinSendDlgItemMsg(hwnd, CFGH_FTPRUN, EM_SETTEXTLIMIT,
538 MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
539 WinSendDlgItemMsg(hwnd, CFGH_HTTPRUN, EM_SETTEXTLIMIT,
540 MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
541 WinSendDlgItemMsg(hwnd, CFGH_MAILRUN, EM_SETTEXTLIMIT,
542 MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
543 WinSendDlgItemMsg(hwnd, CFGH_RUNMAILWORKDIR, EM_SETTEXTLIMIT,
544 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
545 WinEnableWindow(WinWindowFromID(hwnd, CFGH_FIND), FALSE);
546 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
547 break;
548
549 case UM_UNDO:
550 WinSetDlgItemText(hwnd, CFGH_RUNFTPWORKDIR, ftprundir);
551 WinSetDlgItemText(hwnd, CFGH_RUNHTTPWORKDIR, httprundir);
552 WinSetDlgItemText(hwnd, CFGH_RUNMAILWORKDIR, mailrundir);
553 WinSetDlgItemText(hwnd, CFGH_MAILRUN, mailrun);
554 WinSetDlgItemText(hwnd, CFGH_FTPRUN, ftprun);
555 WinSetDlgItemText(hwnd, CFGH_HTTPRUN, httprun);
556 WinCheckButton(hwnd, CFGH_HTTPRUNWPSDEFAULT, fHttpRunWPSDefault);
557 WinCheckButton(hwnd, CFGH_FTPRUNWPSDEFAULT, fFtpRunWPSDefault);
558 WinCheckButton(hwnd, CFGH_LIBPATHSTRICTHTTPRUN, fLibPathStrictHttpRun);
559 WinCheckButton(hwnd, CFGH_LIBPATHSTRICTFTPRUN, fLibPathStrictFtpRun);
560 WinCheckButton(hwnd, CFGH_LIBPATHSTRICTMAILRUN, fLibPathStrictMailRun);
561 WinCheckButton(hwnd, CFGH_NOMAILTOMAILRUN, fNoMailtoMailRun);
562 return 0;
563
564 case WM_CONTROL:
565 switch (SHORT1FROMMP(mp1)) {
566 case CFGH_HTTPRUN:
567 case CFGH_FTPRUN:
568 case CFGH_RUNFTPWORKDIR:
569 case CFGH_RUNHTTPWORKDIR:
570 case CFGH_RUNMAILWORKDIR:
571 case CFGH_MAILRUN:
572 switch (SHORT2FROMMP(mp1)) {
573 case EN_KILLFOCUS:
574 WinEnableWindow(WinWindowFromID(hwnd, CFGH_FIND), FALSE);
575 break;
576 case EN_SETFOCUS:
577 WinEnableWindow(WinWindowFromID(hwnd, CFGH_FIND), TRUE);
578 break;
579 }
580 break;
581 }
582 return 0;
583
584 case WM_COMMAND:
585 switch (SHORT1FROMMP(mp1)) {
586 case IDM_UNDO:
587 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
588 break;
589
590 case DID_CANCEL:
591 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
592
593 case DID_OK:
594 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
595 break;
596
597 case IDM_HELP:
598 if (hwndHelp)
599 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
600 MPFROM2SHORT(HELP_CFGH, 0), MPFROMSHORT(HM_RESOURCEID));
601 break;
602
603 case CFGH_FIND:
604 {
605 CHAR filename[CCHMAXPATH + 9], szfilename[CCHMAXPATH + 9];
606 USHORT id;
607 HWND hwndFocus;
608
609 strcpy(filename, "*.EXE");
610 hwndFocus = WinQueryFocus(HWND_DESKTOP);
611 if (hwndFocus) {
612 id = WinQueryWindowUShort(hwndFocus, QWS_ID);
613 switch (id) {
614 case CFGH_HTTPRUN:
615 case CFGH_FTPRUN:
616 case CFGH_MAILRUN:
617 if (insert_filename(hwnd, filename, 2, FALSE) && *filename) {
618 BldQuotedFileName(szfilename, filename);
619 WinSetDlgItemText(hwnd, id, szfilename);
620 }
621 break;
622 case CFGH_RUNFTPWORKDIR:
623 strcpy(filename, ftprundir);
624 if (WinDlgBox(HWND_DESKTOP, hwndNotebook,
625 WalkExtractDlgProc, FM3ModHandle, WALK_FRAME,
626 MPFROMP(filename)) && *filename)
627 WinSetDlgItemText(hwnd, id, filename);
628 break;
629 case CFGH_RUNHTTPWORKDIR:
630 strcpy(filename, httprundir);
631 if (WinDlgBox(HWND_DESKTOP, hwndNotebook,
632 WalkExtractDlgProc, FM3ModHandle, WALK_FRAME,
633 MPFROMP(filename)) && *filename)
634 WinSetDlgItemText(hwnd, id, filename);
635 break;
636 case CFGH_RUNMAILWORKDIR:
637 strcpy(filename, mailrundir);
638 if (WinDlgBox(HWND_DESKTOP, hwndNotebook,
639 WalkExtractDlgProc, FM3ModHandle, WALK_FRAME,
640 MPFROMP(filename)) && *filename)
641 WinSetDlgItemText(hwnd, id, filename);
642 break;
643 default:
644 Runtime_Error(pszSrcFile, __LINE__, "bad case %d", id);
645 break;
646 }
647 }
648 }
649 break;
650 }
651 return 0;
652
653 case WM_CLOSE:
654 { // fixme these strings can be longer than CCHMAXPATH since
655 // they contain args.
656 CHAR szCLBuf[MAXCOMLINESTRG], szPathBuf[CCHMAXPATH];
657 PSZ pszWorkBuf;
658
659 pszWorkBuf = xmalloc(MAXCOMLINESTRG, pszSrcFile, __LINE__);
660 WinQueryDlgItemText(hwnd, CFGH_RUNHTTPWORKDIR, CCHMAXPATH, szPathBuf);
661 szPathBuf[CCHMAXPATH - 1] = 0;
662 bstrip(szPathBuf);
663 memcpy(httprundir, szPathBuf, strlen(szPathBuf) + 1);
664 WinQueryDlgItemText(hwnd, CFGH_RUNFTPWORKDIR, CCHMAXPATH, szPathBuf);
665 szPathBuf[CCHMAXPATH - 1] = 0;
666 bstrip(szPathBuf);
667 memcpy(ftprundir, szPathBuf, strlen(szPathBuf) + 1);
668 WinQueryDlgItemText(hwnd, CFGH_RUNMAILWORKDIR, CCHMAXPATH, szPathBuf);
669 szPathBuf[CCHMAXPATH - 1] = 0;
670 bstrip(szPathBuf);
671 memcpy(mailrundir, szPathBuf, strlen(szPathBuf) + 1);
672 WinQueryDlgItemText(hwnd, CFGH_FTPRUN, MAXCOMLINESTRG, szCLBuf);
673 szCLBuf[MAXCOMLINESTRG - 1] = 0;
674 if (strcmp(szCLBuf, ftprun)){
675 NormalizeCmdLine(pszWorkBuf, szCLBuf);
676 memcpy(ftprun, pszWorkBuf, strlen(pszWorkBuf) + 1);
677 }
678 WinQueryDlgItemText(hwnd, CFGH_HTTPRUN, MAXCOMLINESTRG, szCLBuf);
679 szCLBuf[MAXCOMLINESTRG - 1] = 0;
680 if (strcmp(szCLBuf, httprun)){
681 NormalizeCmdLine(pszWorkBuf, szCLBuf);
682 memcpy(httprun, pszWorkBuf, strlen(pszWorkBuf) + 1);
683 }
684 WinQueryDlgItemText(hwnd, CFGH_MAILRUN, MAXCOMLINESTRG, szCLBuf);
685 szCLBuf[MAXCOMLINESTRG - 1] = 0;
686 if (strcmp(szCLBuf, mailrun)){
687 NormalizeCmdLine(pszWorkBuf, szCLBuf);
688 memcpy(mailrun, pszWorkBuf, strlen(pszWorkBuf) + 1);
689 }
690 xfree(pszWorkBuf);
691 PrfWriteProfileString(fmprof, appname, "HttpRunDir", httprundir);
692 PrfWriteProfileString(fmprof, appname, "FtpRunDir", ftprundir);
693 PrfWriteProfileString(fmprof, appname, "MailRunDir", mailrundir);
694 PrfWriteProfileString(fmprof, appname, "FTPRun", ftprun);
695 PrfWriteProfileString(fmprof, appname, "HTTPRun", httprun);
696 PrfWriteProfileString(fmprof, appname, "MailRun", mailrun);
697 fHttpRunWPSDefault = WinQueryButtonCheckstate(hwnd, CFGH_HTTPRUNWPSDEFAULT);
698 PrfWriteProfileData(fmprof, appname, "HttpRunWPSDefault", &fHttpRunWPSDefault,
699 sizeof(BOOL));
700 fFtpRunWPSDefault = WinQueryButtonCheckstate(hwnd, CFGH_FTPRUNWPSDEFAULT);
701 PrfWriteProfileData(fmprof, appname, "FtpRunWPSDefault", &fFtpRunWPSDefault,
702 sizeof(BOOL));
703 fLibPathStrictHttpRun = WinQueryButtonCheckstate(hwnd, CFGH_LIBPATHSTRICTHTTPRUN);
704 PrfWriteProfileData(fmprof, appname, "LibPathStrictHttpRun",
705 &fLibPathStrictHttpRun, sizeof(BOOL));
706 fLibPathStrictFtpRun = WinQueryButtonCheckstate(hwnd, CFGH_LIBPATHSTRICTFTPRUN);
707 PrfWriteProfileData(fmprof, appname, "LibPathStrictFtpRun",
708 &fLibPathStrictFtpRun, sizeof(BOOL));
709 fLibPathStrictMailRun = WinQueryButtonCheckstate(hwnd, CFGH_LIBPATHSTRICTMAILRUN);
710 PrfWriteProfileData(fmprof, appname, "LibPathStrictMailRun",
711 &fLibPathStrictMailRun, sizeof(BOOL));
712 fNoMailtoMailRun = WinQueryButtonCheckstate(hwnd, CFGH_NOMAILTOMAILRUN);
713 PrfWriteProfileData(fmprof, appname, "NoMailtoMailRun",
714 &fNoMailtoMailRun, sizeof(BOOL));
715 break;
716 }
717 }
718 if (fCancelAction) {
719 fCancelAction = FALSE;
720 WinDlgBox(HWND_DESKTOP,
721 hwnd,
722 CfgDlgProc,
723 FM3ModHandle,
724 CFG_FRAME,
725 MPFROMLONG(IDM_VIEWERSETTINGS));
726 }
727 return WinDefDlgProc(hwnd, msg, mp1, mp2);
728}
729
730MRESULT EXPENTRY CfgBDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
731{
732 switch (msg) {
733 case WM_INITDLG:
734 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
735 break;
736
737 case UM_UNDO:
738 WinCheckButton(hwnd, CFGB_TOOLBARHELP, fToolbarHelp);
739 WinCheckButton(hwnd, CFGB_DRIVEBARHELP, fDrivebarHelp);
740 WinCheckButton(hwnd, CFGB_OTHERHELP, fOtherHelp);
741 return 0;
742
743 case WM_COMMAND:
744 switch (SHORT1FROMMP(mp1)) {
745 case IDM_UNDO:
746 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
747 break;
748
749 case DID_CANCEL:
750 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
751
752 case DID_OK:
753 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
754 break;
755
756 case IDM_HELP:
757 if (hwndHelp)
758 WinSendMsg(hwndHelp,
759 HM_DISPLAY_HELP,
760 MPFROM2SHORT(HELP_CFGB, 0), MPFROMSHORT(HM_RESOURCEID));
761 break;
762 }
763 return 0;
764
765 case WM_CLOSE:
766 fToolbarHelp = WinQueryButtonCheckstate(hwnd, CFGB_TOOLBARHELP);
767 PrfWriteProfileData(fmprof,
768 FM3Str, "ToolbarHelp", &fToolbarHelp, sizeof(BOOL));
769 fDrivebarHelp = WinQueryButtonCheckstate(hwnd, CFGB_DRIVEBARHELP);
770 PrfWriteProfileData(fmprof,
771 FM3Str, "DrivebarHelp", &fDrivebarHelp, sizeof(BOOL));
772 fOtherHelp = WinQueryButtonCheckstate(hwnd, CFGB_OTHERHELP);
773 PrfWriteProfileData(fmprof,
774 FM3Str, "OtherHelp", &fOtherHelp, sizeof(BOOL));
775 break;
776 }
777 return WinDefDlgProc(hwnd, msg, mp1, mp2);
778}
779
780MRESULT EXPENTRY CfgTSDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
781{
782 static MASK mask;
783
784 switch (msg) {
785 case WM_INITDLG:
786 WinSendDlgItemMsg(hwnd,
787 CFG5_FILTER,
788 EM_SETTEXTLIMIT, MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
789 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
790 break;
791
792 case UM_FOCUSME:
793 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, IDM_HELP));
794 return 0;
795
796 case UM_UNDO:
797 {
798 ULONG flWindowAttr = 0;
799 ULONG ulSize = sizeof(ULONG);
800
801 if (!PrfQueryProfileData(fmprof,
802 appname,
803 "TreeflWindowAttr",
804 (PVOID) & flWindowAttr, &ulSize))
805 flWindowAttr |= (CV_TREE | CA_TREELINE | CV_ICON | CV_MINI | CV_FLOW);
806 WinCheckButton(hwnd, CFG5_ICON, ((flWindowAttr & CV_ICON) != FALSE));
807 WinCheckButton(hwnd, CFG5_MINIICONS,
808 ((flWindowAttr & CV_MINI) != FALSE));
809 memset(&mask, 0, sizeof(mask));
810 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
811 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
812 mask.fIsTree = TRUE;
813 ulSize = sizeof(MASK);
814 if (PrfQueryProfileData(fmprof, appname, "TreeFilter", &mask, &ulSize)) {
815 SetMask(NULL, &mask);
816 }
817 if (!mask.attrFile)
818 mask.attrFile = (FILE_READONLY | FILE_NORMAL |
819 FILE_ARCHIVED | FILE_DIRECTORY |
820 FILE_HIDDEN | FILE_SYSTEM);
821 strcpy(mask.prompt, GetPString(IDS_TREEFILTERTITLETEXT));
822 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
823 WinCheckButton(hwnd, CFG6_SORTFIRST, FALSE);
824 WinCheckButton(hwnd, CFG6_SORTLAST, FALSE);
825 WinCheckButton(hwnd, CFG6_SORTSIZE, FALSE);
826 WinCheckButton(hwnd, CFG6_SORTEASIZE, FALSE);
827 WinCheckButton(hwnd, CFG6_SORTLWDATE, FALSE);
828 WinCheckButton(hwnd, CFG6_SORTLADATE, FALSE);
829 WinCheckButton(hwnd, CFG6_SORTCRDATE, FALSE);
830 WinCheckButton(hwnd, CFG6_SORTNAME, FALSE);
831 WinCheckButton(hwnd, CFG6_SORTREVERSE, FALSE);
832 if (TreesortFlags & SORT_FIRSTEXTENSION)
833 WinCheckButton(hwnd, CFG6_SORTFIRST, TRUE);
834 else if (TreesortFlags & SORT_LASTEXTENSION)
835 WinCheckButton(hwnd, CFG6_SORTLAST, TRUE);
836 else if (TreesortFlags & SORT_SIZE)
837 WinCheckButton(hwnd, CFG6_SORTSIZE, TRUE);
838 else if (TreesortFlags & SORT_EASIZE)
839 WinCheckButton(hwnd, CFG6_SORTEASIZE, TRUE);
840 else if (TreesortFlags & SORT_LWDATE)
841 WinCheckButton(hwnd, CFG6_SORTLWDATE, TRUE);
842 else if (TreesortFlags & SORT_LADATE)
843 WinCheckButton(hwnd, CFG6_SORTLADATE, TRUE);
844 else if (TreesortFlags & SORT_CRDATE)
845 WinCheckButton(hwnd, CFG6_SORTCRDATE, TRUE);
846 else if (TreesortFlags & SORT_FILENAME)
847 WinCheckButton(hwnd, CFG6_SORTFILENAME, TRUE);
848 else
849 WinCheckButton(hwnd, CFG6_SORTNAME, TRUE);
850 if (TreesortFlags & SORT_REVERSE)
851 WinCheckButton(hwnd, CFG6_SORTREVERSE, TRUE);
852 }
853 return 0;
854
855 case UM_SETUP5:
856 if (WinDlgBox(HWND_DESKTOP, hwndNotebook, PickMaskDlgProc,
857 FM3ModHandle, MSK_FRAME, MPFROMP(&mask))) {
858 SetMask(NULL, &mask);
859 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
860 }
861 return 0;
862
863 case WM_CONTROL:
864 switch (SHORT1FROMMP(mp1)) {
865 case CFG5_FILTER:
866 switch (SHORT2FROMMP(mp1)) {
867 case EN_SETFOCUS:
868 PostMsg(hwnd, UM_FOCUSME, MPVOID, MPVOID);
869 PostMsg(hwnd, UM_SETUP5, MPVOID, MPVOID);
870 break;
871 }
872 break;
873 }
874 return 0;
875
876 case WM_COMMAND:
877 switch (SHORT1FROMMP(mp1)) {
878 case IDM_UNDO:
879 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
880 break;
881
882 case DID_CANCEL:
883 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
884
885 case DID_OK:
886 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
887 break;
888
889 case IDM_HELP:
890 if (hwndHelp)
891 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
892 MPFROM2SHORT(HELP_TREEVIEW, 0),
893 MPFROMSHORT(HM_RESOURCEID));
894 break;
895 }
896 return 0;
897
898 case WM_CLOSE:
899 {
900 ULONG flWindowAttr = 0;
901
902 if (WinQueryButtonCheckstate(hwnd, CFG5_ICON))
903 flWindowAttr |= CV_ICON;
904 else
905 flWindowAttr |= CV_TEXT;
906 if (WinQueryButtonCheckstate(hwnd, CFG5_MINIICONS))
907 flWindowAttr |= CV_MINI;
908 flWindowAttr |= (CV_TREE | CV_FLOW | CA_TREELINE);
909 PrfWriteProfileData(fmprof,
910 appname,
911 "TreeflWindowAttr", &flWindowAttr, sizeof(ULONG));
912 if (hwndTree) {
913
914 CNRINFO cnri;
915
916 memset(&cnri, 0, sizeof(cnri));
917 cnri.cb = sizeof(cnri);
918 WinSendMsg(WinWindowFromID
919 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
920 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
921 cnri.flWindowAttr = flWindowAttr;
922 WinSendMsg(WinWindowFromID
923 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
924 CM_SETCNRINFO, MPFROMP(&cnri),
925 MPFROMLONG(CMA_FLWINDOWATTR));
926 }
927 }
928 TreesortFlags = 0;
929 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFILENAME))
930 TreesortFlags |= SORT_FILENAME;
931 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTSIZE))
932 TreesortFlags |= SORT_SIZE;
933 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTEASIZE))
934 TreesortFlags |= SORT_EASIZE;
935 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFIRST))
936 TreesortFlags |= SORT_FIRSTEXTENSION;
937 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLAST))
938 TreesortFlags |= SORT_LASTEXTENSION;
939 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLWDATE))
940 TreesortFlags |= SORT_LWDATE;
941 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLADATE))
942 TreesortFlags |= SORT_LADATE;
943 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTCRDATE))
944 TreesortFlags |= SORT_CRDATE;
945 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSFIRST))
946 TreesortFlags |= SORT_DIRSFIRST;
947 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSLAST))
948 TreesortFlags |= SORT_DIRSLAST;
949 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTREVERSE))
950 TreesortFlags |= SORT_REVERSE;
951 PrfWriteProfileData(fmprof, appname, "TreeSort", &TreesortFlags,
952 sizeof(INT));
953 if (hwndTree)
954 PostMsg(hwndTree, WM_COMMAND, MPFROM2SHORT(IDM_RESORT, 0), MPVOID);
955 *mask.prompt = 0;
956 PrfWriteProfileData(fmprof, appname, "TreeFilter", &mask, sizeof(MASK));
957 if (hwndTree) {
958
959 DIRCNRDATA *dcd;
960
961 dcd = WinQueryWindowPtr(WinWindowFromID(WinWindowFromID(hwndTree,
962 FID_CLIENT),
963 TREE_CNR), QWL_USER);
964 if (dcd && dcd->size == sizeof(DIRCNRDATA)) {
965 dcd->mask = mask;
966 PostMsg(hwndTree, UM_FILTER, MPVOID, MPVOID);
967 }
968 }
969 break;
970 }
971 return WinDefDlgProc(hwnd, msg, mp1, mp2);
972}
973
974MRESULT EXPENTRY CfgTDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
975{
976 switch (msg) {
977 case WM_INITDLG:
978 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
979 break;
980
981 case UM_UNDO:
982 WinCheckButton(hwnd, CFGT_FOLLOWTREE, fFollowTree);
983 WinCheckButton(hwnd, CFGT_TOPDIR, fTopDir);
984 WinCheckButton(hwnd, CFGT_DCOPENS, fDCOpens);
985 WinCheckButton(hwnd, CFGT_VTREEOPENSWPS, fVTreeOpensWPS);
986 WinCheckButton(hwnd, CFGT_COLLAPSEFIRST, fCollapseFirst);
987 WinCheckButton(hwnd, CFGT_SWITCHTREEONFOCUS, fSwitchTreeOnFocus);
988 WinCheckButton(hwnd, CFGT_SWITCHTREE, fSwitchTree);
989 WinCheckButton(hwnd, CFGT_SWITCHTREEEXPAND, fSwitchTreeExpand);
990 WinCheckButton(hwnd, CFGT_SHOWENV, fShowEnv);
991 return 0;
992
993 case WM_COMMAND:
994 switch (SHORT1FROMMP(mp1)) {
995 case IDM_UNDO:
996 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
997 break;
998
999 case DID_CANCEL:
1000 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1001
1002 case DID_OK:
1003 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1004 break;
1005
1006 case IDM_HELP:
1007 if (hwndHelp)
1008 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1009 MPFROM2SHORT(HELP_CFGT, 0), MPFROMSHORT(HM_RESOURCEID));
1010 break;
1011 }
1012 return 0;
1013
1014 case WM_CLOSE:
1015 fVTreeOpensWPS = WinQueryButtonCheckstate(hwnd, CFGT_VTREEOPENSWPS);
1016 PrfWriteProfileData(fmprof, FM3Str, "VTreeOpensWPS", &fVTreeOpensWPS,
1017 sizeof(BOOL));
1018 fCollapseFirst = WinQueryButtonCheckstate(hwnd, CFGT_COLLAPSEFIRST);
1019 PrfWriteProfileData(fmprof, appname, "CollapseFirst", &fCollapseFirst,
1020 sizeof(BOOL));
1021 fSwitchTreeOnFocus = WinQueryButtonCheckstate(hwnd,
1022 CFGT_SWITCHTREEONFOCUS);
1023 PrfWriteProfileData(fmprof, appname, "SwitchTreeOnFocus",
1024 &fSwitchTreeOnFocus, sizeof(BOOL));
1025 fSwitchTreeExpand = WinQueryButtonCheckstate(hwnd, CFGT_SWITCHTREEEXPAND);
1026 PrfWriteProfileData(fmprof, appname, "SwitchTreeExpand",
1027 &fSwitchTreeExpand, sizeof(BOOL));
1028 fSwitchTree = WinQueryButtonCheckstate(hwnd, CFGT_SWITCHTREE);
1029 PrfWriteProfileData(fmprof, appname, "SwitchTree", &fSwitchTree,
1030 sizeof(BOOL));
1031 fFollowTree = WinQueryButtonCheckstate(hwnd, CFGT_FOLLOWTREE);
1032 PrfWriteProfileData(fmprof, appname, "FollowTree", &fFollowTree,
1033 sizeof(BOOL));
1034 fTopDir = WinQueryButtonCheckstate(hwnd, CFGT_TOPDIR);
1035 PrfWriteProfileData(fmprof, appname, "TopDir", (PVOID) & fTopDir,
1036 sizeof(BOOL));
1037 fDCOpens = WinQueryButtonCheckstate(hwnd, CFGT_DCOPENS);
1038 PrfWriteProfileData(fmprof, FM3Str, "DoubleClickOpens", &fDCOpens,
1039 sizeof(BOOL));
1040 if (hwndTree && fShowEnv != WinQueryButtonCheckstate(hwnd, CFGT_SHOWENV))
1041 PostMsg(WinWindowFromID
1042 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR), WM_COMMAND,
1043 MPFROM2SHORT(IDM_RESCAN, 0), MPVOID);
1044 fShowEnv = WinQueryButtonCheckstate(hwnd, CFGT_SHOWENV);
1045 PrfWriteProfileData(fmprof, appname, "ShowEnv", &fShowEnv, sizeof(BOOL));
1046 break;
1047 }
1048 return WinDefDlgProc(hwnd, msg, mp1, mp2);
1049}
1050
1051MRESULT EXPENTRY CfgGDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
1052{
1053 switch (msg) {
1054 case WM_INITDLG:
1055 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1056 break;
1057
1058 case UM_UNDO:
1059 WinCheckButton(hwnd, CFGG_CONFIRMDELETE, fConfirmDelete);
1060 WinCheckButton(hwnd, CFGG_VERIFYWRITES, fVerify);
1061 WinCheckButton(hwnd, CFGG_LINKSETSICON, fLinkSetsIcon);
1062 WinCheckButton(hwnd, CFGG_DONTMOVEMOUSE, fDontMoveMouse);
1063 WinCheckButton(hwnd, CFGG_DEFAULTCOPY, fCopyDefault);
1064 WinCheckButton(hwnd, CFGG_IDLECOPY, fRealIdle);
1065 WinCheckButton(hwnd, CFGG_DNDDLG, fDragndropDlg);
1066 WinCheckButton(hwnd, CFGG_DEFAULTDELETEPERM, fDefaultDeletePerm);
1067 {
1068 long th = fNoFinger ? 2 : (fNoDead ? 1 : 0);
1069 WinCheckButton(hwnd, CFGG_NODEAD, th);
1070 }
1071 WinCheckButton(hwnd, CFGG_BORING, fDullMin);
1072 WinCheckButton(hwnd, CFGG_CUSTOMFILEDLG, fCustomFileDlg);
1073 WinCheckButton(hwnd, CFGG_FM2DELETES, fFM2Deletes);
1074 WinCheckButton(hwnd, CFGG_CONFIRMTARGET, fConfirmTarget);
1075 WinSetDlgItemText(hwnd, CFGG_TARGETDIR, targetdir);
1076 return 0;
1077
1078 case UM_FOCUSME:
1079 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, IDM_HELP));
1080 return 0;
1081
1082 case UM_SETUP5:
1083 SetTargetDir(hwnd, FALSE);
1084 WinSetDlgItemText(hwnd, CFGG_TARGETDIR, targetdir);
1085 return 0;
1086
1087 case WM_CONTROL:
1088 switch (SHORT1FROMMP(mp1)) {
1089 case CFGG_TARGETDIR:
1090 switch (SHORT2FROMMP(mp1)) {
1091 case EN_SETFOCUS:
1092 PostMsg(hwnd, UM_FOCUSME, MPVOID, MPVOID);
1093 PostMsg(hwnd, UM_SETUP5, MPVOID, MPVOID);
1094 break;
1095 }
1096 break;
1097 }
1098 return 0;
1099
1100 case WM_COMMAND:
1101 switch (SHORT1FROMMP(mp1)) {
1102 case IDM_UNDO:
1103 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1104 break;
1105
1106 case DID_CANCEL:
1107 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1108
1109 case DID_OK:
1110 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1111 break;
1112
1113 case IDM_HELP:
1114 if (hwndHelp)
1115 WinSendMsg(hwndHelp,
1116 HM_DISPLAY_HELP,
1117 MPFROM2SHORT(HELP_CFGG, 0), MPFROMSHORT(HM_RESOURCEID));
1118 break;
1119 }
1120 return 0;
1121
1122 case WM_CLOSE:
1123 {
1124 long test;
1125
1126 test = WinQueryButtonCheckstate(hwnd, CFGG_NODEAD);
1127 fNoDead = (test == 1);
1128 fNoFinger = (test == 2);
1129 PrfWriteProfileData(fmprof, FM3Str, "NoDead", &fNoDead, sizeof(BOOL));
1130 PrfWriteProfileData(fmprof,
1131 FM3Str, "NoFinger", &fNoFinger, sizeof(BOOL));
1132 WinDestroyPointer(hptrFinger);
1133 if (!fNoDead)
1134 hptrFinger = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, FINGER_ICON);
1135 else
1136 hptrFinger = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, FINGER2_ICON);
1137 }
1138 fLinkSetsIcon = WinQueryButtonCheckstate(hwnd, CFGG_LINKSETSICON);
1139 PrfWriteProfileData(fmprof,
1140 appname,
1141 "LinkSetsIcon", &fLinkSetsIcon, sizeof(BOOL));
1142 fCustomFileDlg = WinQueryButtonCheckstate(hwnd, CFGG_CUSTOMFILEDLG);
1143 PrfWriteProfileData(fmprof,
1144 FM3Str,
1145 "CustomFileDlg", &fCustomFileDlg, sizeof(BOOL));
1146 fDullMin = WinQueryButtonCheckstate(hwnd, CFGG_BORING);
1147 PrfWriteProfileData(fmprof,
1148 FM3Str, "DullDatabar", &fDullMin, sizeof(BOOL));
1149 fConfirmDelete = WinQueryButtonCheckstate(hwnd, CFGG_CONFIRMDELETE);
1150 PrfWriteProfileData(fmprof,
1151 appname,
1152 "ConfirmDelete", &fConfirmDelete, sizeof(BOOL));
1153 fDontMoveMouse = WinQueryButtonCheckstate(hwnd, CFGG_DONTMOVEMOUSE);
1154 PrfWriteProfileData(fmprof,
1155 appname,
1156 "DontMoveMouse", &fDontMoveMouse, sizeof(BOOL));
1157 fCopyDefault = WinQueryButtonCheckstate(hwnd, CFGG_DEFAULTCOPY);
1158 PrfWriteProfileData(fmprof, appname, "DefaultCopy",
1159 &fCopyDefault, sizeof(BOOL));
1160 fRealIdle = WinQueryButtonCheckstate(hwnd, CFGG_IDLECOPY);
1161 PrfWriteProfileData(fmprof, appname, "IdleCopy",
1162 &fRealIdle, sizeof(BOOL));
1163 fDragndropDlg = WinQueryButtonCheckstate(hwnd, CFGG_DNDDLG);
1164 PrfWriteProfileData(fmprof, appname, "Drag&DropDlg",
1165 &fDragndropDlg, sizeof(BOOL));
1166 fVerify = WinQueryButtonCheckstate(hwnd, CFGG_VERIFYWRITES);
1167 PrfWriteProfileData(fmprof, appname, "VerifyWrites",
1168 &fVerify, sizeof(BOOL));
1169 DosSetVerify(fVerify);
1170 fDefaultDeletePerm = WinQueryButtonCheckstate(hwnd,
1171 CFGG_DEFAULTDELETEPERM);
1172 PrfWriteProfileData(fmprof, appname, "DefaultDeletePerm",
1173 &fDefaultDeletePerm, sizeof(BOOL));
1174 fFM2Deletes = WinQueryButtonCheckstate(hwnd, CFGG_FM2DELETES);
1175 PrfWriteProfileData(fmprof, FM3Str, "FM2Deletes",
1176 &fFM2Deletes, sizeof(BOOL));
1177 fConfirmTarget = WinQueryButtonCheckstate(hwnd, CFGG_CONFIRMTARGET);
1178 PrfWriteProfileData(fmprof, appname, "ConfirmTarget",
1179 &fConfirmTarget, sizeof(BOOL));
1180 break;
1181 }
1182 return WinDefDlgProc(hwnd, msg, mp1, mp2);
1183}
1184
1185MRESULT EXPENTRY CfgCDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
1186{
1187 switch (msg) {
1188 case WM_INITDLG:
1189 WinSendDlgItemMsg(hwnd, CFGC_COMPARE, EM_SETTEXTLIMIT,
1190 MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
1191 WinSendDlgItemMsg(hwnd, CFGC_DIRCOMPARE, EM_SETTEXTLIMIT,
1192 MPFROM2SHORT(MAXCOMLINESTRG, 0), MPVOID);
1193 WinEnableWindow(WinWindowFromID(hwnd, CFGC_FIND), FALSE);
1194 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1195 break;
1196
1197 case UM_UNDO:
1198 WinSetDlgItemText(hwnd, CFGC_COMPARE, compare);
1199 WinSetDlgItemText(hwnd, CFGC_DIRCOMPARE, dircompare);
1200 return 0;
1201
1202 case WM_CONTROL:
1203 switch (SHORT1FROMMP(mp1)) {
1204 case CFGC_COMPARE:
1205 case CFGC_DIRCOMPARE:
1206 switch (SHORT2FROMMP(mp1)) {
1207 case EN_KILLFOCUS:
1208 WinEnableWindow(WinWindowFromID(hwnd, CFGC_FIND), FALSE);
1209 break;
1210 case EN_SETFOCUS:
1211 WinEnableWindow(WinWindowFromID(hwnd, CFGC_FIND), TRUE);
1212 break;
1213 }
1214 break;
1215 }
1216 return 0;
1217
1218 case WM_COMMAND:
1219 switch (SHORT1FROMMP(mp1)) {
1220 case IDM_UNDO:
1221 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1222 break;
1223
1224 case DID_CANCEL:
1225 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1226
1227 case DID_OK:
1228 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1229 break;
1230
1231 case IDM_HELP:
1232 if (hwndHelp)
1233 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1234 MPFROM2SHORT(HELP_CFGC, 0), MPFROMSHORT(HM_RESOURCEID));
1235 break;
1236
1237 case CFGC_FIND:
1238 {
1239 CHAR filename[CCHMAXPATH + 9], szfilename[CCHMAXPATH + 9];
1240 USHORT id;
1241 HWND hwndFocus;
1242
1243 strcpy(filename, "*.EXE");
1244 hwndFocus = WinQueryFocus(HWND_DESKTOP);
1245 if (hwndFocus) {
1246 id = WinQueryWindowUShort(hwndFocus, QWS_ID);
1247 switch (id) {
1248 case CFGC_COMPARE:
1249 case CFGC_DIRCOMPARE:
1250 if (insert_filename(hwnd, filename, 2, FALSE) && *filename) {
1251 BldQuotedFileName(szfilename, filename);
1252 strcat(szfilename, " %a");
1253 WinSetDlgItemText(hwnd, id, szfilename);
1254 }
1255 break;
1256 default:
1257 Runtime_Error(pszSrcFile, __LINE__, "bad case %d", id);
1258 break;
1259 }
1260 }
1261 }
1262 break;
1263 }
1264 return 0;
1265
1266 case WM_CLOSE:
1267 {
1268 CHAR szCLBuf[MAXCOMLINESTRG];
1269 PSZ pszWorkBuf;
1270
1271 pszWorkBuf = xmalloc(MAXCOMLINESTRG, pszSrcFile, __LINE__);
1272 WinQueryDlgItemText(hwnd, CFGC_DIRCOMPARE, MAXCOMLINESTRG, szCLBuf);
1273 szCLBuf[MAXCOMLINESTRG - 1] = 0;
1274 if (strcmp(szCLBuf, dircompare)){
1275 NormalizeCmdLine(pszWorkBuf, szCLBuf);
1276 memcpy(dircompare, pszWorkBuf, strlen(pszWorkBuf) + 1);
1277 if (!strchr(dircompare, '%') && strlen(dircompare) > 3)
1278 strcat(dircompare, " %a");
1279 }
1280 PrfWriteProfileString(fmprof, appname, "DirCompare", dircompare);
1281 WinQueryDlgItemText(hwnd, CFGC_COMPARE, MAXCOMLINESTRG, szCLBuf);
1282 szCLBuf[MAXCOMLINESTRG - 1] = 0;
1283 if (strcmp(szCLBuf, compare)){
1284 NormalizeCmdLine(pszWorkBuf, szCLBuf);
1285 memcpy(compare, pszWorkBuf, strlen(pszWorkBuf) + 1);
1286 if (!strchr(compare, '%') && strlen(compare) > 3)
1287 strcat(compare, " %a");
1288 }
1289 xfree(pszWorkBuf);
1290 PrfWriteProfileString(fmprof, appname, "Compare", compare);
1291 break;
1292 }
1293 }
1294 if (fCancelAction) {
1295 fCancelAction = FALSE;
1296 WinDlgBox(HWND_DESKTOP,
1297 hwnd,
1298 CfgDlgProc,
1299 FM3ModHandle,
1300 CFG_FRAME,
1301 MPFROMLONG(IDM_COMPARESETTINGS));
1302 }
1303 return WinDefDlgProc(hwnd, msg, mp1, mp2);
1304}
1305
1306MRESULT EXPENTRY CfgDDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
1307{
1308 switch (msg) {
1309 case WM_INITDLG:
1310 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1311 break;
1312
1313 case UM_UNDO:
1314 WinCheckButton(hwnd, CFGD_UNHILITE, fUnHilite);
1315 WinCheckButton(hwnd, CFGD_SYNCUPDATES, fSyncUpdates);
1316 WinCheckButton(hwnd, CFGD_LOOKINDIR, fLookInDir);
1317 WinCheckButton(hwnd, CFGD_MINONOPEN, fMinOnOpen);
1318 WinCheckButton(hwnd, CFGD_SELECTEDALWAYS, fSelectedAlways);
1319 WinCheckButton(hwnd, CFGD_NOSEARCH, fNoSearch);
1320 WinCheckButton(hwnd, CFGD_EXTENDEDSEL,
1321 ((ulCnrType & CCS_EXTENDSEL) != 0));
1322 WinCheckButton(hwnd, CFGD_MULTIPLESEL,
1323 ((ulCnrType & CCS_MULTIPLESEL) != 0));
1324 WinCheckButton(hwnd, CFGD_LEAVETREE, fLeaveTree);
1325 WinCheckButton(hwnd, CFGD_NOFOLDMENU, fNoFoldMenu);
1326 return 0;
1327
1328 case WM_COMMAND:
1329 switch (SHORT1FROMMP(mp1)) {
1330 case IDM_UNDO:
1331 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1332 break;
1333
1334 case DID_CANCEL:
1335 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1336
1337 case DID_OK:
1338 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1339 break;
1340
1341 case IDM_HELP:
1342 if (hwndHelp)
1343 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1344 MPFROM2SHORT(HELP_CFGD, 0), MPFROMSHORT(HM_RESOURCEID));
1345 break;
1346 }
1347 return 0;
1348
1349 case WM_CLOSE:
1350 ulCnrType = 0;
1351 if (WinQueryButtonCheckstate(hwnd, CFGD_EXTENDEDSEL))
1352 ulCnrType |= CCS_EXTENDSEL;
1353 if (WinQueryButtonCheckstate(hwnd, CFGD_MULTIPLESEL))
1354 ulCnrType |= CCS_MULTIPLESEL;
1355 PrfWriteProfileData(fmprof, appname, "ContainerType",
1356 (PVOID) & ulCnrType, sizeof(BOOL));
1357 fMinOnOpen = WinQueryButtonCheckstate(hwnd, CFGD_MINONOPEN);
1358 PrfWriteProfileData(fmprof, FM3Str, "MinDirOnOpen", &fMinOnOpen,
1359 sizeof(BOOL));
1360 fLeaveTree = WinQueryButtonCheckstate(hwnd, CFGD_LEAVETREE);
1361 PrfWriteProfileData(fmprof, appname, "LeaveTree", &fLeaveTree,
1362 sizeof(BOOL));
1363 fNoFoldMenu = WinQueryButtonCheckstate(hwnd, CFGD_NOFOLDMENU);
1364 PrfWriteProfileData(fmprof, appname, "NoFoldMenu", &fNoFoldMenu,
1365 sizeof(BOOL));
1366 fSelectedAlways = WinQueryButtonCheckstate(hwnd, CFGD_SELECTEDALWAYS);
1367 PrfWriteProfileData(fmprof, appname, "SelectedAlways", &fSelectedAlways,
1368 sizeof(BOOL));
1369 fNoSearch = WinQueryButtonCheckstate(hwnd, CFGD_NOSEARCH);
1370 PrfWriteProfileData(fmprof, appname, "NoSearch", &fNoSearch,
1371 sizeof(BOOL));
1372 fLookInDir = WinQueryButtonCheckstate(hwnd, CFGD_LOOKINDIR);
1373 PrfWriteProfileData(fmprof, FM3Str, "LookInDir", (PVOID) & fLookInDir,
1374 sizeof(BOOL));
1375 fUnHilite = WinQueryButtonCheckstate(hwnd, CFGD_UNHILITE);
1376 PrfWriteProfileData(fmprof, appname, "UnHilite",
1377 &fUnHilite, sizeof(BOOL));
1378 {
1379 BOOL dummy = WinQueryButtonCheckstate(hwnd, CFGD_SYNCUPDATES);
1380
1381 if (dummy != fSyncUpdates) {
1382 fSyncUpdates = dummy;
1383 if (hwndMain && !strcmp(realappname, FM3Str)) {
1384 if (SaveDirCnrState(hwndMain, GetPString(IDS_FM2TEMPTEXT)) > 0) {
1385 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2));
1386 PostMsg(hwndMain, UM_RESTORE, MPVOID, MPVOID);
1387 }
1388 }
1389 }
1390 }
1391 PrfWriteProfileData(fmprof, appname, "SyncUpdates",
1392 &fSyncUpdates, sizeof(BOOL));
1393 if (!(ulCnrType & (CCS_EXTENDSEL | CCS_MULTIPLESEL)))
1394 saymsg(MB_ENTER | MB_ICONEXCLAMATION,
1395 HWND_DESKTOP,
1396 GetPString(IDS_WARNINGTEXT),
1397 GetPString(IDS_SELECTTYPEERRORTEXT));
1398 break;
1399 }
1400 return WinDefDlgProc(hwnd, msg, mp1, mp2);
1401}
1402
1403MRESULT EXPENTRY CfgMDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
1404{
1405 switch (msg) {
1406 case WM_INITDLG:
1407 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1408 break;
1409
1410 case UM_UNDO:
1411 WinCheckButton(hwnd, CFGM_EXTERNALINIS, fExternalINIs);
1412 WinCheckButton(hwnd, CFGM_EXTERNALARCBOXES, fExternalArcboxes);
1413 WinCheckButton(hwnd, CFGM_EXTERNALVIEWER, fExternalViewer);
1414 WinCheckButton(hwnd, CFGM_EXTERNALCOLLECTOR, fExternalCollector);
1415 WinCheckButton(hwnd, CFGM_SAVESTATE, fSaveState);
1416 WinCheckButton(hwnd, CFGM_AUTOTILE, (fAutoTile));
1417 WinCheckButton(hwnd, CFGM_FREETREE, (fFreeTree));
1418 WinCheckButton(hwnd, CFGM_SPLITSTATUS, (fSplitStatus));
1419 WinCheckButton(hwnd, CFGM_NOTREEGAP, (fNoTreeGap));
1420 WinCheckButton(hwnd, CFGM_STARTMIN, (fStartMinimized));
1421 WinCheckButton(hwnd, CFGM_STARTMAX, (fStartMaximized));
1422 WinCheckButton(hwnd, CFGM_DATAMIN, (fDataMin));
1423 WinCheckButton(hwnd, CFGM_TILEBACKWARDS, (fTileBackwards));
1424 {
1425 long th;
1426
1427 th = (fAutoAddDirs && fAutoAddAllDirs) ? 2 : (fAutoAddDirs) ? 1 : 0;
1428 WinCheckButton(hwnd, CFGM_RECENTDIRS, th);
1429 WinSendMsg(hwnd, UM_RESTORE, MPFROM2SHORT(CFGM_RECENTDIRS, 0), MPVOID);
1430 }
1431 WinCheckButton(hwnd, CFGM_USERLISTSWITCHES, fUserListSwitches);
1432 WinCheckButton(hwnd, CFGM_WSANIMATE, (fwsAnimate != 0));
1433 WinCheckButton(hwnd, CFGM_SEPARATEPARMS, fSeparateParms);
1434 WinCheckButton(hwnd, CFGM_BLUELED, fBlueLED);
1435 WinCheckButton(hwnd, CFGM_SHOWTARGET, fShowTarget);
1436 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMAX), !(fStartMinimized));
1437 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMIN), !(fStartMaximized));
1438 return 0;
1439
1440 case UM_RESTORE:
1441 {
1442 long test;
1443 BOOL th, oh;
1444 char s[80];
1445
1446 test = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1));
1447 th = (test != 0);
1448 oh = (test == 1);
1449 *s = 0;
1450 switch (SHORT1FROMMP(mp1)) {
1451 case CFGM_RECENTDIRS:
1452 sprintf(s,
1453 GetPString(IDS_RECENTHELPWHICHTEXT),
1454 (!oh && th) ?
1455 GetPString(IDS_RECENTONLYTEXT) :
1456 (oh && th) ?
1457 GetPString(IDS_ALLONLYTEXT) : GetPString(IDS_NONE));
1458 break;
1459 }
1460 if (*s)
1461 WinSetDlgItemText(hwnd, SHORT1FROMMP(mp1), s);
1462 }
1463 return 0;
1464
1465 case WM_CONTROL:
1466 switch (SHORT1FROMMP(mp1)) {
1467 case CFGM_RECENTDIRS:
1468 WinSendMsg(hwnd, UM_RESTORE, mp1, MPVOID);
1469 break;
1470 case CFGM_STARTMIN:
1471 if (WinQueryButtonCheckstate(hwnd, CFGM_STARTMIN)) {
1472 WinCheckButton(hwnd, CFGM_STARTMAX, FALSE);
1473 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMAX), FALSE);
1474 }
1475 else
1476 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMAX), TRUE);
1477 break;
1478 case CFGM_STARTMAX:
1479 if (WinQueryButtonCheckstate(hwnd, CFGM_STARTMAX)) {
1480 WinCheckButton(hwnd, CFGM_STARTMIN, FALSE);
1481 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMIN), FALSE);
1482 }
1483 else
1484 WinEnableWindow(WinWindowFromID(hwnd, CFGM_STARTMIN), TRUE);
1485 break;
1486 }
1487 return 0;
1488
1489 case WM_COMMAND:
1490 switch (SHORT1FROMMP(mp1)) {
1491 case IDM_UNDO:
1492 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1493 break;
1494
1495 case DID_CANCEL:
1496 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1497
1498 case DID_OK:
1499 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1500 break;
1501
1502 case IDM_HELP:
1503 if (hwndHelp)
1504 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1505 MPFROM2SHORT(HELP_CFGM, 0), MPFROMSHORT(HM_RESOURCEID));
1506 break;
1507 }
1508 return 0;
1509
1510 case WM_CLOSE:
1511 if (hwndMain && !strcmp(realappname, FM3Str)) {
1512 if (fFreeTree != WinQueryButtonCheckstate(hwnd, CFGM_FREETREE))
1513 PostMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_FREETREE, 0), MPVOID);
1514 if (fAutoTile != WinQueryButtonCheckstate(hwnd, CFGM_AUTOTILE))
1515 PostMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_AUTOTILE, 0), MPVOID);
1516 if (fSplitStatus != WinQueryButtonCheckstate(hwnd, CFGM_SPLITSTATUS)) {
1517 fSplitStatus = (fSplitStatus) ? FALSE : TRUE;
1518 PostMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_BLINK, 0), MPVOID);
1519 PrfWriteProfileData(fmprof, FM3Str, "SplitStatus", &fSplitStatus,
1520 sizeof(BOOL));
1521 }
1522 }
1523 fUserListSwitches = WinQueryButtonCheckstate(hwnd, CFGM_USERLISTSWITCHES);
1524 PrfWriteProfileData(fmprof, FM3Str, "UserListSwitches",
1525 (PVOID) & fUserListSwitches, sizeof(BOOL));
1526 fExternalINIs = WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALINIS);
1527 PrfWriteProfileData(fmprof, FM3Str, "ExternalINIs",
1528 (PVOID) & fExternalINIs, sizeof(BOOL));
1529 fExternalArcboxes = WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALARCBOXES);
1530 PrfWriteProfileData(fmprof, FM3Str, "ExternalArcboxes",
1531 (PVOID) & fExternalArcboxes, sizeof(BOOL));
1532 fExternalCollector =
1533 WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALCOLLECTOR);
1534 PrfWriteProfileData(fmprof, FM3Str, "ExternalCollector",
1535 (PVOID) & fExternalCollector, sizeof(BOOL));
1536 fExternalViewer = WinQueryButtonCheckstate(hwnd, CFGM_EXTERNALVIEWER);
1537 PrfWriteProfileData(fmprof, FM3Str, "ExternalViewer",
1538 (PVOID) & fExternalViewer, sizeof(BOOL));
1539 {
1540 long test;
1541
1542 test = WinQueryButtonCheckstate(hwnd, CFGM_RECENTDIRS);
1543 fAutoAddDirs = (test != 0);
1544 fAutoAddAllDirs = (test == 2);
1545 }
1546 PrfWriteProfileData(fmprof,
1547 appname,
1548 "AutoAddDirs", (PVOID) & fAutoAddDirs, sizeof(BOOL));
1549 PrfWriteProfileData(fmprof,
1550 appname,
1551 "AutoAddAllDirs",
1552 (PVOID) & fAutoAddAllDirs, sizeof(BOOL));
1553 fwsAnimate = WinQueryButtonCheckstate(hwnd, CFGM_WSANIMATE);
1554 if (fwsAnimate)
1555 fwsAnimate = WS_ANIMATE;
1556 PrfWriteProfileData(fmprof,
1557 appname,
1558 "WS_ANIMATE", (PVOID) & fwsAnimate, sizeof(ULONG));
1559 fSaveState = WinQueryButtonCheckstate(hwnd, CFGM_SAVESTATE);
1560 PrfWriteProfileData(fmprof,
1561 FM3Str,
1562 "SaveState", (PVOID) & fSaveState, sizeof(BOOL));
1563 fStartMinimized = WinQueryButtonCheckstate(hwnd, CFGM_STARTMIN);
1564 PrfWriteProfileData(fmprof,
1565 appname,
1566 "StartMinimized",
1567 (PVOID) & fStartMinimized, sizeof(BOOL));
1568 fStartMaximized = WinQueryButtonCheckstate(hwnd, CFGM_STARTMAX);
1569 PrfWriteProfileData(fmprof,
1570 appname,
1571 "StartMaximized",
1572 (PVOID) & fStartMaximized, sizeof(BOOL));
1573 fDataMin = WinQueryButtonCheckstate(hwnd, CFGM_DATAMIN);
1574 PrfWriteProfileData(fmprof,
1575 FM3Str, "DataMin", (PVOID) & fDataMin, sizeof(BOOL));
1576 fTileBackwards = WinQueryButtonCheckstate(hwnd, CFGM_TILEBACKWARDS);
1577 PrfWriteProfileData(fmprof,
1578 FM3Str,
1579 "TileBackwards",
1580 (PVOID) & fTileBackwards, sizeof(BOOL));
1581 fNoTreeGap = WinQueryButtonCheckstate(hwnd, CFGM_NOTREEGAP);
1582 PrfWriteProfileData(fmprof,
1583 FM3Str,
1584 "NoTreeGap", (PVOID) & fNoTreeGap, sizeof(BOOL));
1585 fBlueLED = WinQueryButtonCheckstate(hwnd, CFGM_BLUELED);
1586 PrfWriteProfileData(fmprof,
1587 appname, "BlueLED", (PVOID) & fBlueLED, sizeof(BOOL));
1588 {
1589 BOOL dummy;
1590
1591 dummy = WinQueryButtonCheckstate(hwnd, CFGM_SHOWTARGET);
1592 if (dummy != fShowTarget) {
1593 fShowTarget = dummy;
1594 PrfWriteProfileData(fmprof,
1595 appname,
1596 "ShowTarget",
1597 (PVOID) & fShowTarget, sizeof(BOOL));
1598 if (hwndMain)
1599 PostMsg(WinQueryWindow(hwndMain, QW_PARENT),
1600 WM_UPDATEFRAME, MPFROMLONG(FCF_SIZEBORDER), MPVOID);
1601 SetTargetDir(hwnd, TRUE);
1602 }
1603 dummy = WinQueryButtonCheckstate(hwnd, CFGM_SEPARATEPARMS);
1604 if (dummy != fSeparateParms) {
1605 fSeparateParms = dummy;
1606 PrfWriteProfileData(fmprof,
1607 FM3Str,
1608 "SeparateParms",
1609 (PVOID) & fSeparateParms, sizeof(BOOL));
1610 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER),
1611 UM_UNDO, MPVOID, MPVOID);
1612 }
1613 }
1614 break;
1615 }
1616 return WinDefDlgProc(hwnd, msg, mp1, mp2);
1617}
1618
1619MRESULT EXPENTRY Cfg5DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
1620{
1621 static MASK mask;
1622
1623 switch (msg) {
1624 case WM_INITDLG:
1625 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETTEXTLIMIT,
1626 MPFROMSHORT(8), MPVOID);
1627 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_OVERRIDESETLIMITS,
1628 MPFROMLONG(1000), MPFROMLONG(50));
1629 WinSendDlgItemMsg(hwnd,
1630 CFG5_FILTER,
1631 EM_SETTEXTLIMIT, MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
1632 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1633 break;
1634
1635 case UM_FOCUSME:
1636 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, CFG5_MINIICONS));
1637 return 0;
1638
1639 case UM_UNDO:
1640 {
1641 ULONG flWindowAttr = 0;
1642 ULONG ulSize = sizeof(ULONG);
1643
1644 if (!PrfQueryProfileData(fmprof,
1645 appname,
1646 "DirflWindowAttr", &flWindowAttr, &ulSize))
1647 flWindowAttr = (CV_NAME | CV_MINI | CA_DETAILSVIEWTITLES | CV_FLOW);
1648 if (flWindowAttr & CV_ICON)
1649 WinCheckButton(hwnd, CFG5_ICON, TRUE);
1650 if (flWindowAttr & CV_NAME)
1651 WinCheckButton(hwnd, CFG5_NAME, TRUE);
1652 if (flWindowAttr & CV_TEXT)
1653 WinCheckButton(hwnd, CFG5_TEXT, TRUE);
1654 if (flWindowAttr & CV_DETAIL)
1655 WinCheckButton(hwnd, CFG5_DETAIL, TRUE);
1656 if (flWindowAttr & CV_MINI)
1657 WinCheckButton(hwnd, CFG5_MINIICONS, TRUE);
1658 if (flWindowAttr & CA_DETAILSVIEWTITLES)
1659 WinCheckButton(hwnd, CFG5_SHOWTITLES, TRUE);
1660 WinCheckButton(hwnd, CFG5_SHOWLNAMES, detailslongname);
1661 WinCheckButton(hwnd, CFG5_SHOWSUBJECT, detailssubject);
1662 WinCheckButton(hwnd, CFG5_SHOWEAS, detailsea);
1663 WinCheckButton(hwnd, CFG5_SHOWSIZE, detailssize);
1664 WinCheckButton(hwnd, CFG5_SHOWICON, detailsicon);
1665 WinCheckButton(hwnd, CFG5_SHOWLWDATE, detailslwdate);
1666 WinCheckButton(hwnd, CFG5_SHOWLWTIME, detailslwtime);
1667 WinCheckButton(hwnd, CFG5_SHOWLADATE, detailsladate);
1668 WinCheckButton(hwnd, CFG5_SHOWLATIME, detailslatime);
1669 WinCheckButton(hwnd, CFG5_SHOWCRDATE, detailscrdate);
1670 WinCheckButton(hwnd, CFG5_SHOWCRTIME, detailscrtime);
1671 WinCheckButton(hwnd, CFG5_SHOWATTR, detailsattr);
1672 memset(&mask, 0, sizeof(mask));
1673 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
1674 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
1675 ulSize = sizeof(MASK);
1676 if (PrfQueryProfileData(fmprof, appname, "DirFilter", &mask, &ulSize))
1677 SetMask(NULL, &mask);
1678 if (!mask.attrFile)
1679 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
1680 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
1681 strcpy(mask.prompt, GetPString(IDS_DEFDIRFILTERTITLETEXT));
1682 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
1683 WinCheckButton(hwnd, CFG5_SUBJECTINLEFTPANE, fSubjectInLeftPane);
1684 WinCheckButton(hwnd, CFG5_SUBJECTLENGTHMAX, fSubjectLengthMax);
1685 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETCURRENTVALUE,
1686 MPFROMLONG(SubjectDisplayWidth), MPVOID);
1687 }
1688 return 0;
1689
1690 case UM_SETUP5:
1691 if (WinDlgBox(HWND_DESKTOP, hwndNotebook, PickMaskDlgProc,
1692 FM3ModHandle, MSK_FRAME, MPFROMP(&mask))) {
1693 SetMask(NULL, &mask);
1694 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
1695 }
1696 return 0;
1697
1698 case WM_CONTROL:
1699 switch (SHORT1FROMMP(mp1)) {
1700 case CFG5_FILTER:
1701 switch (SHORT2FROMMP(mp1)) {
1702 case EN_SETFOCUS:
1703 PostMsg(hwnd, UM_FOCUSME, MPVOID, MPVOID);
1704 PostMsg(hwnd, UM_SETUP5, MPVOID, MPVOID);
1705 break;
1706 }
1707 break;
1708 }
1709 return 0;
1710
1711 case WM_COMMAND:
1712 switch (SHORT1FROMMP(mp1)) {
1713 case IDM_UNDO:
1714 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1715 break;
1716
1717 case DID_CANCEL:
1718 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1719
1720 case DID_OK:
1721 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1722 break;
1723
1724 case IDM_HELP:
1725 if (hwndHelp)
1726 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1727 MPFROM2SHORT(HELP_CFG5, 0), MPFROMSHORT(HM_RESOURCEID));
1728 break;
1729 }
1730 return 0;
1731
1732 case WM_CLOSE:
1733 {
1734 ULONG flWindowAttr = 0;
1735
1736 if (WinQueryButtonCheckstate(hwnd, CFG5_ICON))
1737 flWindowAttr |= CV_ICON;
1738 if (WinQueryButtonCheckstate(hwnd, CFG5_NAME))
1739 flWindowAttr |= CV_NAME;
1740 if (WinQueryButtonCheckstate(hwnd, CFG5_TEXT))
1741 flWindowAttr |= CV_TEXT;
1742 if (WinQueryButtonCheckstate(hwnd, CFG5_DETAIL))
1743 flWindowAttr |= CV_DETAIL;
1744 if (WinQueryButtonCheckstate(hwnd, CFG5_MINIICONS))
1745 flWindowAttr |= CV_MINI;
1746 if (WinQueryButtonCheckstate(hwnd, CFG5_SHOWTITLES))
1747 flWindowAttr |= CA_DETAILSVIEWTITLES;
1748 flWindowAttr |= CV_FLOW;
1749 PrfWriteProfileData(fmprof,
1750 appname,
1751 "DirflWindowAttr", &flWindowAttr, sizeof(ULONG));
1752 }
1753 detailslongname = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLNAMES);
1754 PrfWriteProfileData(fmprof, appname, "DetailsLongname",
1755 &detailslongname, sizeof(BOOL));
1756 detailssubject = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSUBJECT);
1757 PrfWriteProfileData(fmprof, appname, "DetailsSubject",
1758 &detailssubject, sizeof(BOOL));
1759 PrfWriteProfileData(fmprof, appname, "DetailsEA",
1760 &detailsea, sizeof(BOOL));
1761 detailssize = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSIZE);
1762 PrfWriteProfileData(fmprof, appname, "DetailsSize",
1763 &detailssize, sizeof(BOOL));
1764 detailsicon = WinQueryButtonCheckstate(hwnd, CFG5_SHOWICON);
1765 PrfWriteProfileData(fmprof, appname, "DetailsIcon",
1766 &detailsicon, sizeof(BOOL));
1767 detailslwdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWDATE);
1768 PrfWriteProfileData(fmprof, appname, "DetailsLWDate",
1769 &detailslwdate, sizeof(BOOL));
1770 detailslwtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWTIME);
1771 PrfWriteProfileData(fmprof, appname, "DetailsLWTime",
1772 &detailslwtime, sizeof(BOOL));
1773 detailsladate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLADATE);
1774 PrfWriteProfileData(fmprof, appname, "DetailsLADate",
1775 &detailsladate, sizeof(BOOL));
1776 detailslatime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLATIME);
1777 PrfWriteProfileData(fmprof, appname, "DetailsLATime",
1778 &detailslatime, sizeof(BOOL));
1779 detailscrdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRDATE);
1780 PrfWriteProfileData(fmprof, appname, "DetailsCRDate",
1781 &detailscrdate, sizeof(BOOL));
1782 detailscrtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRTIME);
1783 PrfWriteProfileData(fmprof, appname, "DetailsCRTime",
1784 &detailscrtime, sizeof(BOOL));
1785 detailsattr = WinQueryButtonCheckstate(hwnd, CFG5_SHOWATTR);
1786 PrfWriteProfileData(fmprof, appname, "DetailsAttr",
1787 &detailsattr, sizeof(BOOL));
1788 fSubjectInLeftPane = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTINLEFTPANE);
1789 PrfWriteProfileData(fmprof, appname, "SubjectInLeftPane",
1790 &fSubjectInLeftPane, sizeof(BOOL));
1791 fSubjectLengthMax = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX);
1792 PrfWriteProfileData(fmprof, appname, "SubjectLengthMax",
1793 &fSubjectLengthMax, sizeof(BOOL));
1794 *mask.prompt = 0;
1795 PrfWriteProfileData(fmprof, appname, "DirFilter", &mask, sizeof(MASK));
1796 {
1797 if (!WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX)) {
1798 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_QUERYVALUE,
1799 MPFROMP(&SubjectDisplayWidth), MPFROM2SHORT(0, SPBQ_DONOTUPDATE));
1800 if (SubjectDisplayWidth < 50)
1801 SubjectDisplayWidth = 0;
1802 else if (SubjectDisplayWidth > 1000)
1803 SubjectDisplayWidth = 1000;
1804 }
1805 else
1806 SubjectDisplayWidth = 0;
1807 PrfWriteProfileData(fmprof,
1808 appname, "SubjectDisplayWidth",
1809 &SubjectDisplayWidth, sizeof(ULONG));
1810 PrfWriteProfileData(fmprof,
1811 appname, "DirCnr.SubjectDisplayWidth",
1812 &SubjectDisplayWidth, sizeof(ULONG));
1813 }
1814 break;
1815 }
1816 return WinDefDlgProc(hwnd, msg, mp1, mp2);
1817}
1818
1819MRESULT EXPENTRY Cfg6DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
1820{
1821 switch (msg) {
1822 case WM_INITDLG:
1823 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1824 break;
1825
1826 case UM_UNDO:
1827 WinCheckButton(hwnd, CFG6_SORTFIRST, FALSE);
1828 WinCheckButton(hwnd, CFG6_SORTLAST, FALSE);
1829 WinCheckButton(hwnd, CFG6_SORTSIZE, FALSE);
1830 WinCheckButton(hwnd, CFG6_SORTEASIZE, FALSE);
1831 WinCheckButton(hwnd, CFG6_SORTLWDATE, FALSE);
1832 WinCheckButton(hwnd, CFG6_SORTLADATE, FALSE);
1833 WinCheckButton(hwnd, CFG6_SORTCRDATE, FALSE);
1834 WinCheckButton(hwnd, CFG6_SORTNAME, FALSE);
1835 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
1836 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
1837 WinCheckButton(hwnd, CFG6_SORTREVERSE, FALSE);
1838 if (sortFlags & SORT_FIRSTEXTENSION)
1839 WinCheckButton(hwnd, CFG6_SORTFIRST, TRUE);
1840 else if (sortFlags & SORT_LASTEXTENSION)
1841 WinCheckButton(hwnd, CFG6_SORTLAST, TRUE);
1842 else if (sortFlags & SORT_SIZE)
1843 WinCheckButton(hwnd, CFG6_SORTSIZE, TRUE);
1844 else if (sortFlags & SORT_EASIZE)
1845 WinCheckButton(hwnd, CFG6_SORTEASIZE, TRUE);
1846 else if (sortFlags & SORT_LWDATE)
1847 WinCheckButton(hwnd, CFG6_SORTLWDATE, TRUE);
1848 else if (sortFlags & SORT_LADATE)
1849 WinCheckButton(hwnd, CFG6_SORTLADATE, TRUE);
1850 else if (sortFlags & SORT_CRDATE)
1851 WinCheckButton(hwnd, CFG6_SORTCRDATE, TRUE);
1852 else if (sortFlags & SORT_FILENAME)
1853 WinCheckButton(hwnd, CFG6_SORTFILENAME, TRUE);
1854 else
1855 WinCheckButton(hwnd, CFG6_SORTNAME, TRUE);
1856 if (sortFlags & SORT_DIRSFIRST)
1857 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, TRUE);
1858 else if (sortFlags & SORT_DIRSLAST)
1859 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, TRUE);
1860 if (sortFlags & SORT_REVERSE)
1861 WinCheckButton(hwnd, CFG6_SORTREVERSE, TRUE);
1862 return 0;
1863
1864 case WM_CONTROL:
1865 switch (SHORT1FROMMP(mp1)) {
1866 case CFG6_SORTDIRSFIRST:
1867 case CFG6_SORTDIRSLAST:
1868 {
1869 BOOL temp;
1870
1871 temp = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1));
1872 if (temp) {
1873 switch (SHORT1FROMMP(mp1)) {
1874 case CFG6_SORTDIRSFIRST:
1875 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
1876 break;
1877 case CFG6_SORTDIRSLAST:
1878 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
1879 break;
1880 }
1881 }
1882 }
1883 break;
1884 }
1885 return 0;
1886
1887 case WM_COMMAND:
1888 switch (SHORT1FROMMP(mp1)) {
1889 case IDM_UNDO:
1890 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1891 break;
1892
1893 case DID_CANCEL:
1894 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1895
1896 case DID_OK:
1897 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
1898 break;
1899
1900 case IDM_HELP:
1901 if (hwndHelp)
1902 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
1903 MPFROM2SHORT(HELP_CFG6, 0), MPFROMSHORT(HM_RESOURCEID));
1904 break;
1905 }
1906 return 0;
1907
1908 case WM_CLOSE:
1909 sortFlags = 0;
1910 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFILENAME))
1911 sortFlags |= SORT_FILENAME;
1912 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTSIZE))
1913 sortFlags |= SORT_SIZE;
1914 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTEASIZE))
1915 sortFlags |= SORT_EASIZE;
1916 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFIRST))
1917 sortFlags |= SORT_FIRSTEXTENSION;
1918 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLAST))
1919 sortFlags |= SORT_LASTEXTENSION;
1920 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLWDATE))
1921 sortFlags |= SORT_LWDATE;
1922 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLADATE))
1923 sortFlags |= SORT_LADATE;
1924 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTCRDATE))
1925 sortFlags |= SORT_CRDATE;
1926 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSFIRST))
1927 sortFlags |= SORT_DIRSFIRST;
1928 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSLAST))
1929 sortFlags |= SORT_DIRSLAST;
1930 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTREVERSE))
1931 sortFlags |= SORT_REVERSE;
1932 PrfWriteProfileData(fmprof, appname, "Sort", &sortFlags, sizeof(INT));
1933 break;
1934 }
1935 return WinDefDlgProc(hwnd, msg, mp1, mp2);
1936}
1937
1938MRESULT EXPENTRY Cfg7DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
1939{
1940 static MASK mask;
1941
1942 switch (msg) {
1943 case WM_INITDLG:
1944 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETTEXTLIMIT,
1945 MPFROMSHORT(8), MPVOID);
1946 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_OVERRIDESETLIMITS,
1947 MPFROMLONG(1000), MPFROMLONG(50));
1948 WinSendDlgItemMsg(hwnd, CFG5_FILTER, EM_SETTEXTLIMIT,
1949 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
1950 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
1951 break;
1952
1953 case UM_FOCUSME:
1954 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, CFG5_MINIICONS));
1955 return 0;
1956
1957 case UM_UNDO:
1958 WinCheckButton(hwnd, CFG5_EXTERNALCOLLECTOR, fExternalCollector);
1959 {
1960 ULONG flWindowAttr = 0;
1961 ULONG ulSize = sizeof(ULONG);
1962
1963 if (!PrfQueryProfileData(fmprof,
1964 appname,
1965 "CollectorflWindowAttr", &flWindowAttr, &ulSize))
1966 flWindowAttr = (CV_NAME | CA_DETAILSVIEWTITLES | CV_MINI | CV_FLOW);
1967 if (flWindowAttr & CV_ICON)
1968 WinCheckButton(hwnd, CFG5_ICON, TRUE);
1969 if (flWindowAttr & CV_NAME)
1970 WinCheckButton(hwnd, CFG5_NAME, TRUE);
1971 if (flWindowAttr & CV_TEXT)
1972 WinCheckButton(hwnd, CFG5_TEXT, TRUE);
1973 if (flWindowAttr & CV_DETAIL)
1974 WinCheckButton(hwnd, CFG5_DETAIL, TRUE);
1975 if (flWindowAttr & CV_MINI)
1976 WinCheckButton(hwnd, CFG5_MINIICONS, TRUE);
1977 if (flWindowAttr & CA_DETAILSVIEWTITLES)
1978 WinCheckButton(hwnd, CFG5_SHOWTITLES, TRUE);
1979 memset(&mask, 0, sizeof(mask));
1980 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
1981 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
1982 ulSize = sizeof(MASK);
1983 if (PrfQueryProfileData(fmprof,
1984 appname, "CollectorFilter", &mask, &ulSize)) {
1985 SetMask(NULL, &mask);
1986 }
1987 if (!mask.attrFile)
1988 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN |
1989 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY;
1990 strcpy(mask.prompt, GetPString(IDS_DEFCOLFILTERTITLETEXT));
1991 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
1992 }
1993 {
1994 DIRCNRDATA dcd;
1995
1996 memset(&dcd, 0, sizeof(dcd));
1997 LoadDetailsSwitches("Collector", &dcd);
1998 WinCheckButton(hwnd, CFG5_SHOWLNAMES, dcd.detailslongname);
1999 WinCheckButton(hwnd, CFG5_SHOWSUBJECT, dcd.detailssubject);
2000 WinCheckButton(hwnd, CFG5_SHOWEAS, dcd.detailsea);
2001 WinCheckButton(hwnd, CFG5_SHOWSIZE, dcd.detailssize);
2002 WinCheckButton(hwnd, CFG5_SHOWICON, dcd.detailsicon);
2003 WinCheckButton(hwnd, CFG5_SHOWLWDATE, dcd.detailslwdate);
2004 WinCheckButton(hwnd, CFG5_SHOWLWTIME, dcd.detailslwtime);
2005 WinCheckButton(hwnd, CFG5_SHOWLADATE, dcd.detailsladate);
2006 WinCheckButton(hwnd, CFG5_SHOWLATIME, dcd.detailslatime);
2007 WinCheckButton(hwnd, CFG5_SHOWCRDATE, dcd.detailscrdate);
2008 WinCheckButton(hwnd, CFG5_SHOWCRTIME, dcd.detailscrtime);
2009 WinCheckButton(hwnd, CFG5_SHOWATTR, dcd.detailsattr);
2010 WinCheckButton(hwnd, CFG5_SUBJECTINLEFTPANE, dcd.fSubjectInLeftPane);
2011 WinCheckButton(hwnd, CFG5_SUBJECTLENGTHMAX, dcd.fSubjectLengthMax);
2012 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_SETCURRENTVALUE,
2013 MPFROMLONG(dcd.SubjectDisplayWidth), MPVOID);
2014
2015 }
2016 return 0;
2017
2018 case UM_SETUP5:
2019 if (WinDlgBox(HWND_DESKTOP, hwndNotebook, PickMaskDlgProc,
2020 FM3ModHandle, MSK_FRAME, MPFROMP(&mask))) {
2021 SetMask(NULL, &mask);
2022 WinSetDlgItemText(hwnd, CFG5_FILTER, mask.szMask);
2023 }
2024 return 0;
2025
2026 case WM_CONTROL:
2027 switch (SHORT1FROMMP(mp1)) {
2028 case CFG5_FILTER:
2029 switch (SHORT2FROMMP(mp1)) {
2030 case EN_SETFOCUS:
2031 PostMsg(hwnd, UM_FOCUSME, MPVOID, MPVOID);
2032 PostMsg(hwnd, UM_SETUP5, MPVOID, MPVOID);
2033 break;
2034 }
2035 break;
2036 }
2037 return 0;
2038
2039 case WM_COMMAND:
2040 switch (SHORT1FROMMP(mp1)) {
2041 case IDM_UNDO:
2042 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2043 break;
2044
2045 case DID_CANCEL:
2046 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2047
2048 case DID_OK:
2049 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
2050 break;
2051
2052 case IDM_HELP:
2053 if (hwndHelp)
2054 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2055 MPFROM2SHORT(HELP_CFG7, 0), MPFROMSHORT(HM_RESOURCEID));
2056 break;
2057 }
2058 return 0;
2059
2060 case WM_CLOSE:
2061 fExternalCollector = WinQueryButtonCheckstate(hwnd,
2062 CFG5_EXTERNALCOLLECTOR);
2063 PrfWriteProfileData(fmprof, FM3Str, "ExternalCollector",
2064 &fExternalCollector, sizeof(BOOL));
2065 {
2066 ULONG flWindowAttr = 0;
2067
2068 if (WinQueryButtonCheckstate(hwnd, CFG5_ICON))
2069 flWindowAttr |= CV_ICON;
2070 if (WinQueryButtonCheckstate(hwnd, CFG5_NAME))
2071 flWindowAttr |= CV_NAME;
2072 if (WinQueryButtonCheckstate(hwnd, CFG5_TEXT))
2073 flWindowAttr |= CV_TEXT;
2074 if (WinQueryButtonCheckstate(hwnd, CFG5_DETAIL))
2075 flWindowAttr |= CV_DETAIL;
2076 if (WinQueryButtonCheckstate(hwnd, CFG5_MINIICONS))
2077 flWindowAttr |= CV_MINI;
2078 if (WinQueryButtonCheckstate(hwnd, CFG5_SHOWTITLES))
2079 flWindowAttr |= CA_DETAILSVIEWTITLES;
2080 flWindowAttr |= CV_FLOW;
2081 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2082 &flWindowAttr, sizeof(ULONG));
2083 }
2084 {
2085 DIRCNRDATA dcd;
2086
2087 memset(&dcd, 0, sizeof(dcd));
2088 dcd.detailslongname = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLNAMES);
2089 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLongname",
2090 &dcd.detailslongname, sizeof(BOOL));
2091 dcd.detailssubject = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSUBJECT);
2092 PrfWriteProfileData(fmprof, appname, "Collector.DetailsSubject",
2093 &dcd.detailssubject, sizeof(BOOL));
2094 dcd.detailsea = WinQueryButtonCheckstate(hwnd, CFG5_SHOWEAS);
2095 PrfWriteProfileData(fmprof, appname, "Collector.DetailsEA",
2096 &dcd.detailsea, sizeof(BOOL));
2097 dcd.detailssize = WinQueryButtonCheckstate(hwnd, CFG5_SHOWSIZE);
2098 PrfWriteProfileData(fmprof, appname, "Collector.DetailsSize",
2099 &dcd.detailssize, sizeof(BOOL));
2100 dcd.detailsicon = WinQueryButtonCheckstate(hwnd, CFG5_SHOWICON);
2101 PrfWriteProfileData(fmprof, appname, "Collector.DetailsIcon",
2102 &dcd.detailsicon, sizeof(BOOL));
2103 dcd.detailslwdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWDATE);
2104 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLWDate",
2105 &dcd.detailslwdate, sizeof(BOOL));
2106 dcd.detailslwtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLWTIME);
2107 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLWTime",
2108 &dcd.detailslwtime, sizeof(BOOL));
2109 dcd.detailsladate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLADATE);
2110 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLADate",
2111 &dcd.detailsladate, sizeof(BOOL));
2112 dcd.detailslatime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWLATIME);
2113 PrfWriteProfileData(fmprof, appname, "Collector.DetailsLATime",
2114 &dcd.detailslatime, sizeof(BOOL));
2115 dcd.detailscrdate = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRDATE);
2116 PrfWriteProfileData(fmprof, appname, "Collector.DetailsCRDate",
2117 &dcd.detailscrdate, sizeof(BOOL));
2118 dcd.detailscrtime = WinQueryButtonCheckstate(hwnd, CFG5_SHOWCRTIME);
2119 PrfWriteProfileData(fmprof, appname, "Collector.DetailsCRTime",
2120 &dcd.detailscrtime, sizeof(BOOL));
2121 dcd.detailsattr = WinQueryButtonCheckstate(hwnd, CFG5_SHOWATTR);
2122 PrfWriteProfileData(fmprof, appname, "Collector.DetailsAttr",
2123 &dcd.detailsattr, sizeof(BOOL));
2124 dcd.fSubjectInLeftPane = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTINLEFTPANE);
2125 PrfWriteProfileData(fmprof, appname, "Collector.SubjectInLeftPane",
2126 &dcd.fSubjectInLeftPane, sizeof(BOOL));
2127 dcd.fSubjectLengthMax = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX);
2128 PrfWriteProfileData(fmprof, appname, "Collector.SubjectLengthMax",
2129 &dcd.fSubjectLengthMax, sizeof(BOOL));
2130 *mask.prompt = 0;
2131 PrfWriteProfileData(fmprof,
2132 appname, "CollectorFilter", &mask, sizeof(MASK));
2133 {
2134 if (!WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX)) {
2135 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_QUERYVALUE,
2136 MPFROMP(&dcd.SubjectDisplayWidth), MPFROM2SHORT(0, SPBQ_DONOTUPDATE));
2137 if (dcd.SubjectDisplayWidth < 50)
2138 dcd.SubjectDisplayWidth = 0;
2139 else if (dcd.SubjectDisplayWidth > 1000)
2140 dcd.SubjectDisplayWidth = 1000;
2141 }
2142 else
2143 dcd.SubjectDisplayWidth = 0;
2144 PrfWriteProfileData(fmprof,
2145 appname, "Collector.SubjectDisplayWidth",
2146 &dcd.SubjectDisplayWidth, sizeof(ULONG));
2147 }
2148 }
2149 break;
2150 }
2151 return WinDefDlgProc(hwnd, msg, mp1, mp2);
2152}
2153
2154MRESULT EXPENTRY Cfg8DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
2155{
2156 switch (msg) {
2157 case WM_INITDLG:
2158 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2159 break;
2160
2161 case UM_UNDO:
2162 WinCheckButton(hwnd, CFG6_SORTFIRST, FALSE);
2163 WinCheckButton(hwnd, CFG6_SORTLAST, FALSE);
2164 WinCheckButton(hwnd, CFG6_SORTSIZE, FALSE);
2165 WinCheckButton(hwnd, CFG6_SORTEASIZE, FALSE);
2166 WinCheckButton(hwnd, CFG6_SORTLWDATE, FALSE);
2167 WinCheckButton(hwnd, CFG6_SORTLADATE, FALSE);
2168 WinCheckButton(hwnd, CFG6_SORTCRDATE, FALSE);
2169 WinCheckButton(hwnd, CFG6_SORTNAME, FALSE);
2170 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
2171 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
2172 WinCheckButton(hwnd, CFG6_SORTREVERSE, FALSE);
2173 if (CollectorsortFlags & SORT_FIRSTEXTENSION)
2174 WinCheckButton(hwnd, CFG6_SORTFIRST, TRUE);
2175 else if (CollectorsortFlags & SORT_LASTEXTENSION)
2176 WinCheckButton(hwnd, CFG6_SORTLAST, TRUE);
2177 else if (CollectorsortFlags & SORT_SIZE)
2178 WinCheckButton(hwnd, CFG6_SORTSIZE, TRUE);
2179 else if (CollectorsortFlags & SORT_EASIZE)
2180 WinCheckButton(hwnd, CFG6_SORTEASIZE, TRUE);
2181 else if (CollectorsortFlags & SORT_LWDATE)
2182 WinCheckButton(hwnd, CFG6_SORTLWDATE, TRUE);
2183 else if (CollectorsortFlags & SORT_LADATE)
2184 WinCheckButton(hwnd, CFG6_SORTLADATE, TRUE);
2185 else if (CollectorsortFlags & SORT_CRDATE)
2186 WinCheckButton(hwnd, CFG6_SORTCRDATE, TRUE);
2187 else if (CollectorsortFlags & SORT_FILENAME)
2188 WinCheckButton(hwnd, CFG6_SORTFILENAME, TRUE);
2189 else
2190 WinCheckButton(hwnd, CFG6_SORTNAME, TRUE);
2191 if (CollectorsortFlags & SORT_DIRSFIRST)
2192 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, TRUE);
2193 else if (CollectorsortFlags & SORT_DIRSLAST)
2194 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, TRUE);
2195 if (CollectorsortFlags & SORT_REVERSE)
2196 WinCheckButton(hwnd, CFG6_SORTREVERSE, TRUE);
2197 return 0;
2198
2199 case WM_CONTROL:
2200 switch (SHORT1FROMMP(mp1)) {
2201 case CFG6_SORTDIRSFIRST:
2202 case CFG6_SORTDIRSLAST:
2203 {
2204 BOOL temp;
2205
2206 temp = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1));
2207 if (temp) {
2208 switch (SHORT1FROMMP(mp1)) {
2209 case CFG6_SORTDIRSFIRST:
2210 WinCheckButton(hwnd, CFG6_SORTDIRSLAST, FALSE);
2211 break;
2212 case CFG6_SORTDIRSLAST:
2213 WinCheckButton(hwnd, CFG6_SORTDIRSFIRST, FALSE);
2214 break;
2215 }
2216 }
2217 }
2218 break;
2219 }
2220 return 0;
2221
2222 case WM_COMMAND:
2223 switch (SHORT1FROMMP(mp1)) {
2224 case IDM_UNDO:
2225 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2226 break;
2227
2228 case DID_CANCEL:
2229 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2230
2231 case DID_OK:
2232 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
2233 break;
2234
2235 case IDM_HELP:
2236 if (hwndHelp)
2237 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2238 MPFROM2SHORT(HELP_CFG8, 0), MPFROMSHORT(HM_RESOURCEID));
2239 break;
2240 }
2241 return 0;
2242
2243 case WM_CLOSE:
2244 CollectorsortFlags = 0;
2245 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFILENAME))
2246 CollectorsortFlags |= SORT_FILENAME;
2247 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTSIZE))
2248 CollectorsortFlags |= SORT_SIZE;
2249 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTEASIZE))
2250 CollectorsortFlags |= SORT_EASIZE;
2251 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTFIRST))
2252 CollectorsortFlags |= SORT_FIRSTEXTENSION;
2253 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLAST))
2254 CollectorsortFlags |= SORT_LASTEXTENSION;
2255 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLWDATE))
2256 CollectorsortFlags |= SORT_LWDATE;
2257 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTLADATE))
2258 CollectorsortFlags |= SORT_LADATE;
2259 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTCRDATE))
2260 CollectorsortFlags |= SORT_CRDATE;
2261 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSFIRST))
2262 CollectorsortFlags |= SORT_DIRSFIRST;
2263 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTDIRSLAST))
2264 CollectorsortFlags |= SORT_DIRSLAST;
2265 if (WinQueryButtonCheckstate(hwnd, CFG6_SORTREVERSE))
2266 CollectorsortFlags |= SORT_REVERSE;
2267 PrfWriteProfileData(fmprof,
2268 appname,
2269 "CollectorSort", &CollectorsortFlags, sizeof(INT));
2270 break;
2271 }
2272 return WinDefDlgProc(hwnd, msg, mp1, mp2);
2273}
2274
2275MRESULT EXPENTRY Cfg9DlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
2276{
2277 switch (msg) {
2278 case WM_INITDLG:
2279 break;
2280
2281 case WM_COMMAND:
2282 switch (SHORT1FROMMP(mp1)) {
2283 case IDM_HELP:
2284 if (hwndHelp)
2285 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
2286 MPFROM2SHORT(HELP_CFG9, 0), MPFROMSHORT(HM_RESOURCEID));
2287 return 0;
2288 case CFG9_MAXIMUMUI:
2289 if (hwndMain) {
2290 if (MenuInvisible)
2291 WinSendMsg(hwndMain, WM_COMMAND,
2292 MPFROM2SHORT(IDM_HIDEMENU, 0), MPVOID);
2293 if (!fAutoView)
2294 WinSendMsg(hwndMain, WM_COMMAND,
2295 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2296 if (!fDrivebar)
2297 WinSendMsg(hwndMain, WM_COMMAND,
2298 MPFROM2SHORT(IDM_DRIVEBAR, 0), MPVOID);
2299 if (!fToolbar)
2300 WinSendMsg(hwndMain, WM_COMMAND,
2301 MPFROM2SHORT(IDM_TOOLBAR, 0), MPVOID);
2302 if (!fMoreButtons)
2303 WinSendMsg(hwndMain, WM_COMMAND,
2304 MPFROM2SHORT(IDM_MOREBUTTONS, 0), MPVOID);
2305 if (!fUserComboBox)
2306 WinSendMsg(hwndMain, WM_COMMAND,
2307 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
2308 }
2309 return 0;
2310 case CFG9_MINIMUMUI:
2311 if (hwndMain) {
2312 if (!MenuInvisible)
2313 WinSendMsg(hwndMain, WM_COMMAND,
2314 MPFROM2SHORT(IDM_HIDEMENU, 0), MPVOID);
2315 if (fAutoView)
2316 WinSendMsg(hwndMain, WM_COMMAND,
2317 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2318 if (fToolbar)
2319 WinSendMsg(hwndMain, WM_COMMAND,
2320 MPFROM2SHORT(IDM_TOOLBAR, 0), MPVOID);
2321 if (fMoreButtons)
2322 WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_MOREBUTTONS, 0),
2323 MPVOID);
2324 if (fUserComboBox)
2325 WinSendMsg(hwndMain, WM_COMMAND,
2326 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
2327 saymsg(MB_ENTER | MB_ICONASTERISK,
2328 hwnd,
2329 GetPString(IDS_DONTFORGETTEXT),
2330 GetPString(IDS_UNHIDEMENUWARNTEXT));
2331 }
2332 return 0;
2333 case CFG9_MAXINFOPRETTY:
2334 fLoadSubject = TRUE;
2335 fLoadLongnames = TRUE;
2336 fNoIconsFiles = FALSE;
2337 fNoIconsDirs = FALSE;
2338 fForceUpper = FALSE;
2339 fForceLower = FALSE;
2340 fArcStuffVisible = TRUE;
2341 fSplitStatus = TRUE;
2342 fDragndropDlg = TRUE;
2343 {
2344 ULONG flWindowAttr;
2345
2346 flWindowAttr = CV_DETAIL | CV_FLOW | CA_DETAILSVIEWTITLES;
2347 PrfWriteProfileData(fmprof,
2348 appname,
2349 "DirflWindowAttr", &flWindowAttr, sizeof(ULONG));
2350 PrfWriteProfileData(fmprof,
2351 appname,
2352 "CollectorflWindowAttr",
2353 &flWindowAttr, sizeof(ULONG));
2354 PrfWriteProfileData(fmprof, appname, "DirCnr.Fontnamesize", NULL, 0);
2355 PrfWriteProfileData(fmprof,
2356 appname, "Collector.Fontnamesize", NULL, 0);
2357 }
2358 detailslongname = TRUE;
2359 detailssubject = TRUE;
2360 detailsea = TRUE;
2361 detailssize = TRUE;
2362 detailsicon = TRUE;
2363 detailslwdate = TRUE;
2364 detailslwtime = TRUE;
2365 detailsladate = TRUE;
2366 detailslatime = TRUE;
2367 detailscrdate = TRUE;
2368 detailscrtime = TRUE;
2369 detailsattr = TRUE;
2370 if (hwndTree) {
2371
2372 CNRINFO cnri;
2373 ULONG flWindowAttr = CV_TREE | CV_ICON | CV_FLOW | CA_TREELINE;
2374
2375 memset(&cnri, 0, sizeof(cnri));
2376 cnri.cb = sizeof(cnri);
2377 WinSendMsg(WinWindowFromID
2378 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2379 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2380 cnri.flWindowAttr = flWindowAttr;
2381 WinSendMsg(WinWindowFromID
2382 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2383 CM_SETCNRINFO, MPFROMP(&cnri),
2384 MPFROMLONG(CMA_FLWINDOWATTR));
2385 }
2386 break;
2387
2388 case CFG9_MAXINFOPLAIN:
2389 fLoadSubject = TRUE;
2390 fLoadLongnames = TRUE;
2391 fNoIconsFiles = TRUE;
2392 fNoIconsDirs = TRUE;
2393 fForceUpper = FALSE;
2394 fForceLower = FALSE;
2395 fArcStuffVisible = TRUE;
2396 fSplitStatus = TRUE;
2397 fDragndropDlg = TRUE;
2398 {
2399 ULONG flWindowAttr;
2400
2401 flWindowAttr = CV_DETAIL | CV_FLOW | CV_MINI;
2402 PrfWriteProfileData(fmprof,
2403 appname,
2404 "DirflWindowAttr", &flWindowAttr, sizeof(ULONG));
2405 PrfWriteProfileData(fmprof,
2406 appname,
2407 "CollectorflWindowAttr",
2408 &flWindowAttr, sizeof(ULONG));
2409 PrfWriteProfileData(fmprof,
2410 appname,
2411 "DirCnr.Fontnamesize",
2412 GetPString(IDS_8HELVTEXT),
2413 strlen(GetPString(IDS_8HELVTEXT)) + 1);
2414 PrfWriteProfileData(fmprof,
2415 appname,
2416 "Collector.Fontnamesize",
2417 GetPString(IDS_8HELVTEXT),
2418 strlen(GetPString(IDS_8HELVTEXT)) + 1);
2419 }
2420 detailslongname = TRUE;
2421 detailssubject = TRUE;
2422 detailsea = TRUE;
2423 detailssize = TRUE;
2424 detailsicon = TRUE;
2425 detailslwdate = TRUE;
2426 detailslwtime = TRUE;
2427 detailsladate = TRUE;
2428 detailslatime = TRUE;
2429 detailscrdate = TRUE;
2430 detailscrtime = TRUE;
2431 detailsattr = TRUE;
2432 if (hwndTree) {
2433
2434 CNRINFO cnri;
2435 ULONG flWindowAttr = CV_TREE | CV_MINI | CV_TEXT |
2436 CV_FLOW | CA_TREELINE;
2437
2438 memset(&cnri, 0, sizeof(cnri));
2439 cnri.cb = sizeof(cnri);
2440 WinSendMsg(WinWindowFromID
2441 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2442 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2443 cnri.flWindowAttr = flWindowAttr;
2444 WinSendMsg(WinWindowFromID
2445 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2446 CM_SETCNRINFO, MPFROMP(&cnri),
2447 MPFROMLONG(CMA_FLWINDOWATTR));
2448 }
2449 break;
2450 case CFG9_MAXFILENAMES:
2451 if (hwndMain && fAutoView)
2452 WinSendMsg(hwndMain, WM_COMMAND,
2453 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2454 fForceUpper = FALSE;
2455 fForceLower = TRUE;
2456 fExternalViewer = TRUE;
2457 fExternalArcboxes = TRUE;
2458 fExternalCollector = TRUE;
2459 fExternalINIs = TRUE;
2460 fLoadSubject = FALSE;
2461 fLoadLongnames = FALSE;
2462 fNoIconsFiles = TRUE;
2463 fNoIconsDirs = TRUE;
2464 {
2465 ULONG flWindowAttr;
2466
2467 flWindowAttr = CV_TEXT | CV_FLOW;
2468 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
2469 &flWindowAttr, sizeof(ULONG));
2470 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2471 &flWindowAttr, sizeof(ULONG));
2472 PrfWriteProfileData(fmprof, appname, "DirCnr.Fontnamesize",
2473 GetPString(IDS_8HELVTEXT),
2474 strlen(GetPString(IDS_8HELVTEXT)) + 1);
2475 PrfWriteProfileData(fmprof, appname, "Collector.Fontnamesize",
2476 GetPString(IDS_8HELVTEXT),
2477 strlen(GetPString(IDS_8HELVTEXT)) + 1);
2478 }
2479 if (hwndTree) {
2480
2481 CNRINFO cnri;
2482 ULONG flWindowAttr = CV_TREE | CV_TEXT | CV_FLOW | CA_TREELINE;
2483
2484 memset(&cnri, 0, sizeof(cnri));
2485 cnri.cb = sizeof(cnri);
2486 WinSendMsg(WinWindowFromID
2487 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2488 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2489 cnri.flWindowAttr = flWindowAttr;
2490 WinSendMsg(WinWindowFromID
2491 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2492 CM_SETCNRINFO, MPFROMP(&cnri),
2493 MPFROMLONG(CMA_FLWINDOWATTR));
2494 }
2495 break;
2496 case CFG9_MAXSPEED:
2497 fLoadSubject = FALSE;
2498 fLoadLongnames = FALSE;
2499 fVerify = FALSE;
2500 DosSetVerify(FALSE);
2501 FilesToGet = FILESTOGET_MAX;
2502 fQuickArcFind = TRUE;
2503 fMinOnOpen = TRUE;
2504 fRealIdle = FALSE;
2505 fNoIconsFiles = TRUE;
2506 fNoIconsDirs = TRUE;
2507 fSyncUpdates = FALSE;
2508 fArcStuffVisible = FALSE;
2509 fForceUpper = FALSE;
2510 fForceLower = FALSE;
2511 detailslongname = FALSE;
2512 detailssubject = FALSE;
2513 break;
2514
2515 case CFG9_HECTOR:
2516 fSwitchTree = TRUE;
2517 fSwitchTreeOnFocus = FALSE;
2518 fSwitchTreeExpand = TRUE;
2519 fCollapseFirst = TRUE;
2520 fSelectedAlways = FALSE;
2521 fTileBackwards = FALSE;
2522 fExternalViewer = FALSE;
2523 fExternalArcboxes = TRUE;
2524 fExternalCollector = FALSE;
2525 fExternalINIs = TRUE;
2526 fCopyDefault = FALSE;
2527 fFollowTree = FALSE;
2528 fLoadSubject = FALSE;
2529 fLoadLongnames = FALSE;
2530 fDontMoveMouse = FALSE;
2531 fUnHilite = TRUE;
2532 fUserListSwitches = TRUE;
2533 fDCOpens = FALSE;
2534 fLinkSetsIcon = FALSE;
2535 fConfirmDelete = TRUE;
2536 fSyncUpdates = FALSE;
2537 fRealIdle = FALSE;
2538 fNoIconsFiles = FALSE;
2539 fNoIconsDirs = TRUE;
2540 fFolderAfterExtract = FALSE;
2541 fVerify = TRUE;
2542 DosSetVerify(TRUE);
2543 fForceUpper = FALSE;
2544 fForceLower = TRUE;
2545 fArcStuffVisible = FALSE;
2546 fVTreeOpensWPS = FALSE;
2547 fRemoteBug = FALSE;
2548 fDragndropDlg = TRUE;
2549 fMinOnOpen = FALSE;
2550 fQuickArcFind = TRUE;
2551 fNoRemovableScan = TRUE;
2552 FilesToGet = FILESTOGET_MIN;
2553 fFreeTree = FALSE;
2554 fSplitStatus = TRUE;
2555 fAutoTile = TRUE;
2556 fSaveState = TRUE;
2557 fStartMinimized = FALSE;
2558 fStartMaximized = FALSE;
2559 fDataMin = FALSE;
2560 ulCnrType = CCS_EXTENDSEL | CCS_MULTIPLESEL;
2561 fNoTreeGap = TRUE;
2562 {
2563 ULONG flWindowAttr;
2564
2565 flWindowAttr = (CV_NAME | CV_MINI | CV_FLOW | CA_DETAILSVIEWTITLES);
2566 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
2567 &flWindowAttr, sizeof(ULONG));
2568 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2569 &flWindowAttr, sizeof(ULONG));
2570 }
2571 detailslongname = FALSE;
2572 detailssubject = FALSE;
2573 detailsea = TRUE;
2574 detailssize = TRUE;
2575 detailsicon = TRUE;
2576 detailslwdate = TRUE;
2577 detailslwtime = TRUE;
2578 detailsladate = FALSE;
2579 detailslatime = FALSE;
2580 detailscrdate = FALSE;
2581 detailscrtime = FALSE;
2582 detailsattr = TRUE;
2583 sortFlags = SORT_FILENAME | SORT_DIRSFIRST;
2584 CollectorsortFlags = SORT_FILENAME | SORT_DIRSFIRST;
2585 if (hwndMain) {
2586
2587 SWP swp;
2588
2589 if (WinQueryWindowPos(hwndMain, &swp)) {
2590 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
2591 swp.cx / 5, swp.cy, SWP_MOVE | SWP_SIZE);
2592 }
2593 }
2594 if (hwndMain) {
2595 if (MenuInvisible)
2596 WinSendMsg(hwndMain, WM_COMMAND,
2597 MPFROM2SHORT(IDM_HIDEMENU, 0), MPVOID);
2598 if (fAutoView)
2599 WinSendMsg(hwndMain, WM_COMMAND,
2600 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2601 if (fToolbar)
2602 WinSendMsg(hwndMain, WM_COMMAND,
2603 MPFROM2SHORT(IDM_TOOLBAR, 0), MPVOID);
2604 if (!fDrivebar)
2605 WinSendMsg(hwndMain, WM_COMMAND,
2606 MPFROM2SHORT(IDM_DRIVEBAR, 0), MPVOID);
2607 if (!fMoreButtons)
2608 WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_MOREBUTTONS, 0),
2609 MPVOID);
2610 if (!fUserComboBox)
2611 WinSendMsg(hwndMain, WM_COMMAND,
2612 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
2613 }
2614 if (hwndTree) {
2615
2616 CNRINFO cnri;
2617 ULONG flWindowAttr = (CV_TREE | CV_TEXT | CV_MINI |
2618 CV_FLOW | CA_TREELINE);
2619
2620 memset(&cnri, 0, sizeof(cnri));
2621 cnri.cb = sizeof(cnri);
2622 WinSendMsg(WinWindowFromID
2623 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2624 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2625 cnri.flWindowAttr = flWindowAttr;
2626 WinSendMsg(WinWindowFromID
2627 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2628 CM_SETCNRINFO, MPFROMP(&cnri),
2629 MPFROMLONG(CMA_FLWINDOWATTR));
2630 }
2631 break;
2632
2633 case CFG9_DEFAULT:
2634 fSwitchTree = FALSE;
2635 fSwitchTreeOnFocus = FALSE;
2636 fSwitchTreeExpand = FALSE;
2637 fCollapseFirst = FALSE;
2638 fSelectedAlways = FALSE;
2639 fTileBackwards = FALSE;
2640 fExternalViewer = FALSE;
2641 fExternalArcboxes = FALSE;
2642 fExternalCollector = FALSE;
2643 fExternalINIs = FALSE;
2644 fCopyDefault = FALSE;
2645 fFollowTree = FALSE;
2646 fLoadSubject = TRUE;
2647 fLoadLongnames = TRUE;
2648 fDontMoveMouse = FALSE;
2649 fUnHilite = TRUE;
2650 fUserListSwitches = FALSE;
2651 fDCOpens = FALSE;
2652 fLinkSetsIcon = FALSE;
2653 fConfirmDelete = TRUE;
2654 fSyncUpdates = FALSE;
2655 fRealIdle = FALSE;
2656 fNoIconsFiles = FALSE;
2657 fNoIconsDirs = FALSE;
2658 fFolderAfterExtract = FALSE;
2659 fVerify = TRUE;
2660 fNoSearch = TRUE;
2661 DosSetVerify(TRUE);
2662 fForceUpper = FALSE;
2663 fForceLower = TRUE;
2664 fArcStuffVisible = TRUE;
2665 fVTreeOpensWPS = FALSE;
2666 fRemoteBug = TRUE;
2667 fDragndropDlg = TRUE;
2668 fMinOnOpen = FALSE;
2669 fQuickArcFind = TRUE;
2670 fNoRemovableScan = FALSE;
2671 FilesToGet = FILESTOGET_MAX;
2672 fFreeTree = FALSE;
2673 fSplitStatus = TRUE;
2674 fAutoTile = TRUE;
2675 fSaveState = TRUE;
2676 fStartMinimized = FALSE;
2677 fStartMaximized = FALSE;
2678 fDataMin = TRUE;
2679 ulCnrType = CCS_EXTENDSEL;
2680 fNoTreeGap = FALSE;
2681 {
2682 ULONG flWindowAttr;
2683
2684 flWindowAttr = (CV_NAME | CV_MINI | CV_FLOW | CA_DETAILSVIEWTITLES);
2685 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
2686 &flWindowAttr, sizeof(ULONG));
2687 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2688 &flWindowAttr, sizeof(ULONG));
2689 }
2690 detailslongname = FALSE;
2691 detailssubject = FALSE;
2692 detailsea = TRUE;
2693 detailssize = TRUE;
2694 detailsicon = TRUE;
2695 detailslwdate = TRUE;
2696 detailslwtime = TRUE;
2697 detailsladate = FALSE;
2698 detailslatime = FALSE;
2699 detailscrdate = FALSE;
2700 detailscrtime = FALSE;
2701 detailsattr = TRUE;
2702 sortFlags = SORT_FILENAME | SORT_DIRSFIRST;
2703 CollectorsortFlags = SORT_FILENAME | SORT_DIRSFIRST;
2704 if (hwndMain) {
2705
2706 SWP swp;
2707
2708 if (WinQueryWindowPos(hwndMain, &swp)) {
2709 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
2710 swp.cx / 5,
2711 swp.cy -
2712 (WinQuerySysValue(HWND_DESKTOP, SV_CYICON) * 2),
2713 SWP_MOVE | SWP_SIZE);
2714 }
2715 }
2716 if (hwndTree) {
2717
2718 CNRINFO cnri;
2719 ULONG flWindowAttr = (CV_TREE | CV_TEXT |
2720 CV_FLOW | CA_TREELINE | CV_MINI);
2721
2722 memset(&cnri, 0, sizeof(cnri));
2723 cnri.cb = sizeof(cnri);
2724 WinSendMsg(WinWindowFromID
2725 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2726 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2727 cnri.flWindowAttr = flWindowAttr;
2728 WinSendMsg(WinWindowFromID
2729 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2730 CM_SETCNRINFO, MPFROMP(&cnri),
2731 MPFROMLONG(CMA_FLWINDOWATTR));
2732 }
2733 break;
2734
2735 case CFG9_WINDOZETHINK:
2736 fTileBackwards = FALSE;
2737 ulCnrType = CCS_MULTIPLESEL;
2738 fFollowTree = TRUE;
2739 fTopDir = FALSE;
2740 fSwitchTree = TRUE;
2741 fSwitchTreeOnFocus = FALSE;
2742 fSwitchTreeExpand = TRUE;
2743 fCollapseFirst = TRUE;
2744 fDCOpens = FALSE;
2745 {
2746 ULONG flWindowAttr;
2747
2748 flWindowAttr = CV_NAME | CV_FLOW | CA_DETAILSVIEWTITLES;
2749 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
2750 &flWindowAttr, sizeof(ULONG));
2751 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2752 &flWindowAttr, sizeof(ULONG));
2753 }
2754 fLinkSetsIcon = FALSE;
2755 fFreeTree = FALSE;
2756 fNoTreeGap = TRUE;
2757 fExternalArcboxes = TRUE;
2758 fExternalViewer = TRUE;
2759 fExternalCollector = TRUE;
2760 fExternalINIs = TRUE;
2761 fUserListSwitches = TRUE;
2762 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), UM_UNDO, MPVOID,
2763 MPVOID);
2764 if (hwndTree) {
2765
2766 CNRINFO cnri;
2767 ULONG flWindowAttr = CV_TREE | CV_MINI | CV_ICON |
2768 CV_FLOW | CA_TREELINE;
2769
2770 memset(&cnri, 0, sizeof(cnri));
2771 cnri.cb = sizeof(cnri);
2772 WinSendMsg(WinWindowFromID
2773 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2774 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2775 cnri.flWindowAttr = flWindowAttr;
2776 WinSendMsg(WinWindowFromID
2777 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2778 CM_SETCNRINFO, MPFROMP(&cnri),
2779 MPFROMLONG(CMA_FLWINDOWATTR));
2780 }
2781 if (hwndMain) {
2782 if (fAutoView)
2783 WinSendMsg(hwndMain, WM_COMMAND,
2784 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2785 if (!fDrivebar)
2786 WinSendMsg(hwndMain, WM_COMMAND,
2787 MPFROM2SHORT(IDM_DRIVEBAR, 0), MPVOID);
2788 {
2789 SWP swp;
2790
2791 if (WinQueryWindowPos(hwndMain, &swp)) {
2792 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
2793 swp.cx / 5, swp.cy, SWP_MOVE | SWP_SIZE);
2794 }
2795 }
2796 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2L));
2797 PostMsg(MainObjectHwnd, UM_SETDIR, MPFROMLONG(1L), MPVOID);
2798 }
2799 return 0;
2800
2801 case CFG9_DOSTHINK:
2802 fTileBackwards = TRUE;
2803 ulCnrType = CCS_MULTIPLESEL;
2804 fSwitchTree = TRUE;
2805 fSwitchTreeOnFocus = FALSE;
2806 fSwitchTreeExpand = TRUE;
2807 fCollapseFirst = TRUE;
2808 fFollowTree = TRUE;
2809 fTopDir = FALSE;
2810 if (hwndMain) {
2811 if (!fTextTools)
2812 WinSendMsg(hwndMain, WM_COMMAND,
2813 MPFROM2SHORT(IDM_TEXTTOOLS, 0), MPVOID);
2814 }
2815 {
2816 ULONG flWindowAttr;
2817
2818 flWindowAttr = CV_TEXT | CV_FLOW | CA_DETAILSVIEWTITLES;
2819 PrfWriteProfileData(fmprof, appname, "DirflWindowAttr",
2820 &flWindowAttr, sizeof(ULONG));
2821 PrfWriteProfileData(fmprof, appname, "CollectorflWindowAttr",
2822 &flWindowAttr, sizeof(ULONG));
2823 }
2824 if (hwndTree) {
2825
2826 CNRINFO cnri;
2827 ULONG flWindowAttr = CV_TREE | CV_TEXT | CV_FLOW | CA_TREELINE;
2828
2829 memset(&cnri, 0, sizeof(cnri));
2830 cnri.cb = sizeof(cnri);
2831 WinSendMsg(WinWindowFromID
2832 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2833 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2834 cnri.flWindowAttr = flWindowAttr;
2835 WinSendMsg(WinWindowFromID
2836 (WinWindowFromID(hwndTree, FID_CLIENT), TREE_CNR),
2837 CM_SETCNRINFO, MPFROMP(&cnri),
2838 MPFROMLONG(CMA_FLWINDOWATTR));
2839 }
2840 /* intentional fallthru */
2841 case CFG9_1X:
2842 if (SHORT1FROMMP(mp1) == CFG9_1X) {
2843 fTileBackwards = FALSE;
2844 ulCnrType = CCS_MULTIPLESEL | CCS_EXTENDSEL;
2845 fSwitchTree = FALSE;
2846 fSwitchTreeOnFocus = FALSE;
2847 fSwitchTreeExpand = FALSE;
2848 fCollapseFirst = FALSE;
2849 fFollowTree = FALSE;
2850 fNoSearch = TRUE;
2851 }
2852 fAutoTile = TRUE;
2853 fSaveState = TRUE;
2854 fDCOpens = FALSE;
2855 fLinkSetsIcon = FALSE;
2856 fFreeTree = FALSE;
2857 fNoTreeGap = TRUE;
2858 fExternalArcboxes = TRUE;
2859 fExternalViewer = TRUE;
2860 fExternalCollector = TRUE;
2861 fExternalINIs = TRUE;
2862 fUserListSwitches = TRUE;
2863 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), UM_UNDO, MPVOID,
2864 MPVOID);
2865 if (hwndTree) {
2866
2867 CNRINFO cnri;
2868 ULONG flWindowAttr = CV_TREE | CV_ICON | CV_FLOW | CA_TREELINE;
2869
2870 memset(&cnri, 0, sizeof(cnri));
2871 cnri.cb = sizeof(cnri);
2872 WinSendMsg(WinWindowFromID(WinWindowFromID(hwndTree, FID_CLIENT),
2873 TREE_CNR),
2874 CM_QUERYCNRINFO, MPFROMP(&cnri), MPFROMLONG(sizeof(cnri)));
2875 cnri.flWindowAttr = flWindowAttr;
2876 WinSendMsg(WinWindowFromID(WinWindowFromID(hwndTree, FID_CLIENT),
2877 TREE_CNR),
2878 CM_SETCNRINFO,
2879 MPFROMP(&cnri), MPFROMLONG(CMA_FLWINDOWATTR));
2880 }
2881 if (hwndMain) {
2882 if (fAutoView)
2883 WinSendMsg(hwndMain, WM_COMMAND,
2884 MPFROM2SHORT(IDM_AUTOVIEW, 0), MPVOID);
2885 if (fUserComboBox)
2886 WinSendMsg(hwndMain, WM_COMMAND,
2887 MPFROM2SHORT(IDM_USERLIST, 0), MPVOID);
2888 {
2889 SWP swp;
2890
2891 if (WinQueryWindowPos(hwndMain, &swp)) {
2892 WinSetWindowPos(hwndTree, HWND_TOP, 0, 0,
2893 swp.cx / 5, swp.cy, SWP_MOVE | SWP_SIZE);
2894 }
2895 }
2896 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2L));
2897 PostMsg(MainObjectHwnd, UM_SETDIR, MPVOID, MPVOID);
2898 }
2899 return 0;
2900
2901 case DID_CANCEL:
2902 WinSendMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
2903
2904 case DID_OK:
2905 PostMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER), msg, mp1, mp2);
2906 return 0;
2907
2908 default:
2909 return 0;
2910 }
2911 PrfWriteProfileData(fmprof, appname, "DetailsLongname",
2912 &detailslongname, sizeof(BOOL));
2913 PrfWriteProfileData(fmprof, appname, "DetailsSubject",
2914 &detailssubject, sizeof(BOOL));
2915 PrfWriteProfileData(fmprof, appname, "DetailsEA",
2916 &detailsea, sizeof(BOOL));
2917 PrfWriteProfileData(fmprof, appname, "DetailsSize",
2918 &detailssize, sizeof(BOOL));
2919 PrfWriteProfileData(fmprof, appname, "DetailsIcon",
2920 &detailsicon, sizeof(BOOL));
2921 PrfWriteProfileData(fmprof, appname, "DetailsLWDate",
2922 &detailslwdate, sizeof(BOOL));
2923 PrfWriteProfileData(fmprof, appname, "DetailsLWTime",
2924 &detailslwtime, sizeof(BOOL));
2925 PrfWriteProfileData(fmprof, appname, "DetailsLADate",
2926 &detailsladate, sizeof(BOOL));
2927 PrfWriteProfileData(fmprof, appname, "DetailsLATime",
2928 &detailslatime, sizeof(BOOL));
2929 PrfWriteProfileData(fmprof, appname, "DetailsCRDate",
2930 &detailscrdate, sizeof(BOOL));
2931 PrfWriteProfileData(fmprof, appname, "DetailsCRTime",
2932 &detailscrtime, sizeof(BOOL));
2933 PrfWriteProfileData(fmprof, appname, "DetailsAttr",
2934 &detailsattr, sizeof(BOOL));
2935 if (hwndMain) {
2936 if (SaveDirCnrState(hwndMain, GetPString(IDS_FM2TEMPTEXT)) > 0) {
2937 PostMsg(MainObjectHwnd, UM_RESTORE, MPVOID, MPFROMLONG(2));
2938 PostMsg(hwndMain, UM_RESTORE, MPVOID, MPVOID);
2939 }
2940 }
2941 WinSendMsg((HWND) WinQueryWindowULong(hwnd, QWL_USER),
2942 UM_UNDO, MPVOID, MPVOID);
2943 return 0;
2944
2945 case WM_CLOSE:
2946 break;
2947 }
2948 return WinDefDlgProc(hwnd, msg, mp1, mp2);
2949}
2950
2951struct
2952{
2953 USHORT usMenuId;
2954 USHORT usFrameId;
2955 ULONG ulTitle;
2956 PFNWP pfnPageProc;
2957 HWND hwnd;
2958 ULONG ulHelpId;
2959 ULONG ulPageId;
2960} np[] = {
2961 { IDM_DIRCNRSETTINGS, CFGD_FRAME, IDS_NOTEDIRCNRS1TEXT, CfgDDlgProc, 0, 0, 0 },
2962 { 0, CFG5_FRAME, IDS_NOTEDIRVIEW1TEXT, Cfg5DlgProc, 0, 0, 0},
2963 { 0, CFG6_FRAME, IDS_NOTEDIRSORT1TEXT, Cfg6DlgProc, 0, 0, 0 },
2964 { IDM_COLLECTORSETTINGS, CFG5_FRAME, IDS_NOTECOLVIEW1TEXT, Cfg7DlgProc, 0, 0, 0 },
2965 { 0, CFG6_FRAME, IDS_NOTECOLSORT1TEXT, Cfg8DlgProc, 0, 0, 0 },
2966 { IDM_ARCHIVERSETTINGS, CFGA_FRAME, IDS_NOTEARCHIVER1TEXT, CfgADlgProc, 0, 0, 0 },
2967 { 0, CFGT_FRAME, IDS_NOTETREE1TEXT, CfgTDlgProc, 0, 0, 0 },
2968 { 0, CFGTS_FRAME, IDS_NOTETREESORT1TEXT, CfgTSDlgProc, 0, 0, 0 },
2969 { 0, CFGV_FRAME, IDS_NOTEVIEWERS1TEXT, CfgVDlgProc, 0, 0, 0 },
2970 { IDM_VIEWERSETTINGS, CFGH_FRAME, IDS_NOTEVIEWERS3TEXT, CfgHDlgProc, 0, 0, 0 },
2971 { IDM_COMPARESETTINGS, CFGC_FRAME, IDS_NOTECOMPARE1TEXT, CfgCDlgProc, 0, 0, 0 },
2972 { 0, CFGM_FRAME, IDS_NOTEMONOLITHIC1TEXT, CfgMDlgProc, 0, 0, 0 },
2973 { 0, CFGG_FRAME, IDS_NOTEGENERAL1TEXT, CfgGDlgProc, 0, 0, 0 },
2974 { 0, CFGS_FRAME, IDS_NOTESCANNING1TEXT, CfgSDlgProc, 0, 0, 0 },
2975 { 0, CFGB_FRAME, IDS_NOTEBUBBLE1TEXT, CfgBDlgProc, 0, 0, 0 },
2976 { IDM_QUICKSETTINGS, CFG9_FRAME, IDS_NOTEQUICK1TEXT, Cfg9DlgProc, 0, 0, 0 },
2977 { 0, 0, 0, NULL, 0, 0, 0 } // usFrameId 0 is end marker
2978};
2979
2980MRESULT EXPENTRY CfgDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
2981{
2982 HWND hwndTemp;
2983 USHORT attrib = BKA_FIRST;
2984 INT x;
2985 ULONG ulPageId;
2986 ULONG ulSize;
2987
2988 static PSZ pszIK_LastSettingsPage = "LastSettingsPage";
2989 static BOOL fInitDone;
2990
2991 static UINT uLastPageIndex;
2992
2993 switch (msg) {
2994 case WM_INITDLG:
2995 hwndNotebook = hwnd;
2996 if (!fInitDone) {
2997 ulSize = sizeof(uLastPageIndex);
2998 PrfQueryProfileData(fmprof, appname, pszIK_LastSettingsPage, &uLastPageIndex, &ulSize);
2999 fInitDone = TRUE;
3000 }
3001 if (mp2) {
3002 // If fm/2 lite drop quick setting page
3003 if (mp2 == MPFROMLONG(IDM_LITESETTINGS)) {
3004 x = 0;
3005 while (np[x].usFrameId && np[x].usFrameId != CFG9_FRAME)
3006 x++;
3007 np[x].usFrameId = 0;
3008 mp2 = 0;
3009 }
3010 }
3011 PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID);
3012 WinSendDlgItemMsg(hwnd,
3013 CFG_NOTEBOOK,
3014 BKM_SETDIMENSIONS,
3015 MPFROM2SHORT(82, 24), MPFROMLONG(BKA_MAJORTAB));
3016 WinSendDlgItemMsg(hwnd,
3017 CFG_NOTEBOOK,
3018 BKM_SETDIMENSIONS,
3019 MPFROM2SHORT(20, 20), MPFROMLONG(BKA_PAGEBUTTON));
3020 WinSendDlgItemMsg(hwnd,
3021 CFG_NOTEBOOK,
3022 BKM_SETDIMENSIONS,
3023 MPFROM2SHORT(0, 0), MPFROMLONG(BKA_MINORTAB));
3024 for (x = 0; np[x].usFrameId; x++) {
3025 hwndTemp = WinLoadDlg(HWND_DESKTOP,
3026 HWND_DESKTOP,
3027 np[x].pfnPageProc, FM3ModHandle, np[x].usFrameId, MPVOID);
3028 if (!hwndTemp) {
3029 Win_Error(hwnd, hwnd, pszSrcFile, __LINE__,
3030 "Can not load settings page %u", x);
3031 }
3032 else {
3033 WinSetWindowULong(hwndTemp, QWL_USER, (ULONG)hwnd);
3034 np[x].hwnd = hwndTemp;
3035 np[x].ulPageId = (ULONG)WinSendDlgItemMsg(hwnd,
3036 CFG_NOTEBOOK,
3037 BKM_INSERTPAGE,
3038 MPFROMLONG(BKA_FIRST),
3039 MPFROM2SHORT(BKA_AUTOPAGESIZE |
3040 BKA_STATUSTEXTON |
3041 BKA_MAJOR, attrib));
3042 attrib = BKA_LAST;
3043 WinSendDlgItemMsg(hwnd,
3044 CFG_NOTEBOOK,
3045 BKM_SETPAGEWINDOWHWND,
3046 MPFROMLONG(np[x].ulPageId), MPFROMLONG(np[x].hwnd));
3047 WinSendDlgItemMsg(hwnd,
3048 CFG_NOTEBOOK,
3049 BKM_SETTABTEXT,
3050 MPFROMLONG(np[x].ulPageId),
3051 MPFROMP(GetPString(np[x].ulTitle)));
3052 WinSendDlgItemMsg(hwnd,
3053 CFG_NOTEBOOK,
3054 BKM_SETSTATUSLINETEXT,
3055 MPFROMLONG(np[x].ulPageId),
3056 MPFROMP(GetPString(np[x].ulTitle + 1)));
3057 if (LONGFROMMP(mp2) == np[x].usMenuId) {
3058 uLastPageIndex = x;
3059 }
3060 }
3061 } // for
3062 // If quick settings page requested, assume request is for first time init
3063 // Turn to cfg page and show help
3064 // Page will not be available if running fm/2 lite or if load error
3065 if (mp2 == MPFROMLONG(IDM_QUICKSETTINGS) &&
3066 x-- > 0 && np[x].hwnd && np[x].usFrameId == CFG9_FRAME) {
3067 // 10 Jan 08 SHL fixme to document what UM_SETDIR 1 means
3068 PostMsg(MainObjectHwnd, UM_SETDIR, MPFROMLONG(1), MPVOID);
3069 PostMsg(WinWindowFromID(hwnd, CFG_NOTEBOOK),
3070 BKM_TURNTOPAGE, MPFROMLONG(np[x].ulPageId), MPVOID);
3071 PostMsg(hwnd, UM_FOCUSME, MPFROMLONG(np[x].hwnd), MPVOID);
3072 PostMsg(np[x].hwnd, WM_COMMAND, MPFROM2SHORT(IDM_HELP, 0), MPVOID);
3073 }
3074 else {
3075 if (uLastPageIndex >= x) {
3076 Runtime_Error(pszSrcFile, __LINE__, "uLastPageIndex corrupted (%u)",
3077 uLastPageIndex);
3078 uLastPageIndex = 0;
3079 }
3080 PostMsg(WinWindowFromID(hwnd, CFG_NOTEBOOK),
3081 BKM_TURNTOPAGE, MPFROMLONG(np[uLastPageIndex].ulPageId), MPVOID);
3082 }
3083
3084 break;
3085
3086 case UM_FOCUSME:
3087 if (mp1)
3088 WinSetActiveWindow(HWND_DESKTOP, (HWND) mp1);
3089 break;
3090
3091 case WM_CONTROL:
3092 switch (SHORT1FROMMP(mp1)) {
3093 case CFG_NOTEBOOK:
3094 switch (SHORT2FROMMP(mp1)) {
3095 case BKN_PAGESELECTED:
3096 if (mp2) {
3097 PAGESELECTNOTIFY *psn = mp2;
3098 ULONG id = psn->ulPageIdNew;
3099 UINT x;
3100 for (x = 0; np[x].usFrameId; x++) {
3101 if (np[x].ulPageId == id) {
3102 uLastPageIndex = x; // Found it
3103 break;
3104 }
3105 }
3106 }
3107 } // switch BKN
3108 break;
3109 } // switch page
3110 return 0;
3111
3112 case UM_SETUP:
3113 WinSetActiveWindow(HWND_DESKTOP, WinQueryWindow(hwnd, QW_OWNER));
3114 WinSetActiveWindow(HWND_DESKTOP, hwnd);
3115 return 0;
3116
3117 case WM_COMMAND:
3118 switch (SHORT1FROMMP(mp1)) {
3119 case DID_OK:
3120 WinDismissDlg(hwnd, 1);
3121 break;
3122
3123 case DID_CANCEL:
3124 // Tell current page to undo itself in case changed and still alive
3125 ulPageId = (ULONG) WinSendDlgItemMsg(hwnd,
3126 CFG_NOTEBOOK,
3127 BKM_QUERYPAGEID,
3128 MPFROMLONG(0),
3129 MPFROM2SHORT(BKA_TOP, 0));
3130 hwndTemp = (HWND) WinSendDlgItemMsg(hwnd,
3131 CFG_NOTEBOOK,
3132 BKM_QUERYPAGEWINDOWHWND,
3133 MPFROMLONG(ulPageId), MPVOID);
3134 PrfWriteProfileData(fmprof, FM3Str, pszIK_LastSettingsPage,
3135 (PVOID)&uLastPageIndex, sizeof(uLastPageIndex));
3136 if (hwndTemp)
3137 WinSendMsg(hwndTemp, UM_UNDO, MPVOID, MPVOID);
3138
3139 WinDismissDlg(hwnd, 0);
3140 break;
3141
3142 case IDM_HELP: /* relay message to appropriate page's window */
3143 ulPageId = (ULONG) WinSendDlgItemMsg(hwnd,
3144 CFG_NOTEBOOK,
3145 BKM_QUERYPAGEID,
3146 MPFROMLONG(0),
3147 MPFROM2SHORT(BKA_TOP, 0));
3148 hwndTemp = (HWND) WinSendDlgItemMsg(hwnd,
3149 CFG_NOTEBOOK,
3150 BKM_QUERYPAGEWINDOWHWND,
3151 MPFROMLONG(ulPageId), MPVOID);
3152 if (hwndTemp)
3153 PostMsg(hwndTemp, WM_COMMAND, MPFROM2SHORT(IDM_HELP, 0), MPVOID);
3154 break;
3155 }
3156 return 0;
3157
3158 case UM_UNDO:
3159 for (x = 0; np[x].usFrameId; x++) {
3160 if (np[x].hwnd)
3161 WinSendMsg(np[x].hwnd, UM_UNDO, MPVOID, MPVOID);
3162 }
3163 break;
3164
3165 case WM_DESTROY:
3166 if (np[0].usFrameId) {
3167 for (x = 1; np[x].usFrameId; x++) {
3168 if (np[x].hwnd) {
3169 WinSendMsg(np[x].hwnd, WM_CLOSE, MPVOID, MPVOID);
3170 np[x].hwnd = (HWND) 0;
3171 np[x].ulPageId = 0;
3172 }
3173 }
3174 WinSendMsg(np[0].hwnd, WM_CLOSE, MPVOID, MPVOID);
3175 np[0].hwnd = (HWND) 0;
3176 np[0].ulPageId = 0;
3177 }
3178 hwndNotebook = (HWND) 0;
3179 break;
3180 case WM_CLOSE:
3181 PrfWriteProfileData(fmprof, FM3Str, pszIK_LastSettingsPage,
3182 (PVOID)&uLastPageIndex, sizeof(uLastPageIndex));
3183 break;
3184 }
3185 return WinDefDlgProc(hwnd, msg, mp1, mp2);
3186}
3187
3188#pragma alloc_text(NOTEBOOK,CfgTDlgProc,CfgTSDlgProc,CfgMDlgProc)
3189#pragma alloc_text(NOTEBOOK2,CfgADlgProc,CfgSDlgProc,CfgVDlgProc,CfgHDlgProc)
3190#pragma alloc_text(NOTEBOOK3,CfgDDlgProc,Cfg5DlgProc,Cfg6DlgProc)
3191#pragma alloc_text(NOTEBOOK4,Cfg7DlgProc,Cfg8DlgProc,CfgCDlgProc)
3192#pragma alloc_text(NOTEBOOK5,CfgGDlgProc,CfgDlgProc,CfgBDlgProc)
3193
Note: See TracBrowser for help on using the repository browser.