source: trunk/dll/notebook.c@ 998

Last change on this file since 998 was 998, checked in by John Small, 17 years ago

Added comments and removed dead code.

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