source: trunk/dll/notebook.c@ 1434

Last change on this file since 1434 was 1434, checked in by Gregg Young, 16 years ago

Update show label or FS in tree to initialize as driveonly and fixed typo which caused rescan to fail after the value was changed. Renamed some variables.

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