source: trunk/dll/notebook.c@ 1358

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

Comments for CS 1354/55

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