source: trunk/dll/notebook.c@ 985

Last change on this file since 985 was 985, checked in by Gregg Young, 17 years ago

Update sizes dialog (ticket 44); Make max command line length user settable (ticket 199); use xfree for free in most cases (ticket 212); initial code to check for valid ini file (ticket 102); Some additional refactoring and structure rework; Some documentation updates;

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