clprefsdisk.c

来自「PGP8.0源码 请认真阅读您的文件包然后写出其具体功能」· C语言 代码 · 共 246 行

C
246
字号
/*____________________________________________________________________________
	Copyright (C) 2002 PGP Corporation
	All rights reserved.
	
	CLprefsDisk.c - handle PGPdisk preferences dialog

	$Id: CLprefsDisk.c,v 1.13 2002/08/06 20:09:19 dallen Exp $
____________________________________________________________________________*/
#include "pgpPFLConfig.h"

// project header files
#include "PGPclx.h"
#include "PGPdiskHelp.h"
#include "CLprefs.h"

// definitions
#define	kMaxMinutesTimeout			999
#define	kMaxMinutesTimeoutDigits	3

// external globals
extern HINSTANCE	g_hInst;

static DWORD aDiskIds[] = {			// Help IDs
	IDC_ALLOWFORCE_CHECK,	IDH_PGPCLPREF_DISKALLOWFORCIBLEUNMOUNTS,
	IDC_ALWAYSFORCE_CHECK,	IDH_PGPCLPREF_DISKALWAYSFORCEUNMOUNTS,
	IDC_UNMOUNT_CHECK,		IDH_PGPCLPREF_DISKAUTOUNMOUNT,
	IDC_MINUTES_EDIT,		IDH_PGPCLPREF_DISKAUTOUNMOUNTMINS,
	IDC_SLEEP_CHECK,		IDH_PGPCLPREF_DISKUNMOUNTONSLEEP,
	IDC_PREVENT_CHECK,		IDH_PGPCLPREF_DISKPREVENTSLEEP,
	IDC_MOUNTBROWSE_CHECK,	IDH_PGPCLPREF_DISKBROWSEONMOUNT,
	IDC_WARNDEL_CHECK,		IDH_PGPCLPREF_DISKWARNONDELETE,
	0,0
};


//	_____________________________________________________
//
//  Message processing function for PGPdisk prefs property sheet

LRESULT WINAPI
CLDiskPropDlgProc (
		HWND	hwnd,
		UINT	uMsg,
		WPARAM	wParam,
		LPARAM	lParam)
{
	static BOOL		noSleep = FALSE, noPrevent = FALSE;
	PPREFSDLGSTRUCT	ppds;

	switch (uMsg) {

	case WM_INITDIALOG:
	{
		OSVERSIONINFO	osvi;
		PGPUInt32		u;
		PGPPrefRef		prefref;

		SetWindowLong (hwnd, GWL_USERDATA, ((PROPSHEETPAGE*)lParam)->lParam);
		ppds = (PPREFSDLGSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);

		if (ppds->bNeedsCentering) 
		{
			PGPclCenterWindowOnMonitor (GetParent (hwnd), kPGPclWindowMonitor);
			ppds->bNeedsCentering = FALSE;
		}

		prefref = CLGetPrefRef (ppds);

		// initialize auto-unmount minute control
		SendDlgItemMessage (hwnd, IDC_MINUTES_EDIT, EM_SETLIMITTEXT,
				kMaxMinutesTimeoutDigits, 0);
		SendDlgItemMessage (hwnd, IDC_MINUTES_UDCTRL, UDM_SETRANGE,
				0, (LPARAM)MAKELONG (kMaxMinutesTimeout, 1));

		PGPGetPrefNumber (prefref, kPGPPrefDiskAutoUnmountTimeout, &u);
		SendDlgItemMessage (hwnd, IDC_MINUTES_UDCTRL, UDM_SETPOS,
				0, (LPARAM)MAKELONG (u, 0));

		CLDisablePrefControl (hwnd, IDC_MINUTES_EDIT, ppds,
					prefref, kPGPPrefDiskAutoUnmountTimeout);

		// initialize checkboxes
		CLLoadCheckBoxPref (hwnd, IDC_ALWAYSFORCE_CHECK, 
				ppds, prefref, kPGPPrefDiskAlwaysForceUnmounts);

		if (!CLLoadCheckBoxPref (hwnd, IDC_ALLOWFORCE_CHECK, 
				ppds, prefref, kPGPPrefDiskAllowForcibleUnmounts))
		{
			EnableWindow (GetDlgItem (hwnd, IDC_ALWAYSFORCE_CHECK), FALSE);
		}

		if (!CLLoadCheckBoxPref (hwnd, IDC_UNMOUNT_CHECK, 
				ppds, prefref, kPGPPrefDiskUnmountOnInactivity))
		{
			EnableWindow (GetDlgItem (hwnd, IDC_MINUTES_EDIT), FALSE);
		}

		CLLoadCheckBoxPref (hwnd, IDC_PREVENT_CHECK, 
				ppds, prefref, kPGPPrefDiskNoSleepIfFailAU);

		if (!CLLoadCheckBoxPref (hwnd, IDC_SLEEP_CHECK, 
				ppds, prefref, kPGPPrefDiskAutoUnmountOnSleep))
		{
			EnableWindow (GetDlgItem (hwnd, IDC_PREVENT_CHECK), FALSE);
		}

//		CLLoadCheckBoxPref (hwnd, IDC_MOUNTBROWSE_CHECK, 
//				ppds, prefref, kPGPPrefDiskBrowseAfterMount);

		osvi.dwOSVersionInfoSize = sizeof(osvi);

		if (GetVersionEx (&osvi))
		{
			if ((osvi.dwPlatformId == VER_PLATFORM_WIN32_NT) && 
				(osvi.dwMajorVersion < 5))
			{
				// no sleep options under NT4
				noSleep = noPrevent = TRUE;

				EnableWindow(GetDlgItem(hwnd, IDC_SLEEP_CHECK), FALSE);
				CheckDlgButton (hwnd, IDC_SLEEP_CHECK, BST_UNCHECKED);

				EnableWindow(GetDlgItem(hwnd, IDC_PREVENT_CHECK), FALSE);
				CheckDlgButton (hwnd, IDC_PREVENT_CHECK, BST_UNCHECKED);
			}
			else if ((osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) && 
				(osvi.dwMinorVersion == 0))
			{
				// no prevent sleep option under Win95
				noPrevent = TRUE;

				EnableWindow(GetDlgItem(hwnd, IDC_PREVENT_CHECK), FALSE);
				CheckDlgButton (hwnd, IDC_PREVENT_CHECK, BST_UNCHECKED);
			}
		}

		return TRUE;
	}

	case WM_HELP :
	case WM_CONTEXTMENU :
		return PGPclHtmlHelp (hwnd, uMsg, wParam, lParam, 
				(char*)kPGPclDiskHelpFile, aDiskIds);

	case WM_COMMAND :
	{
		PGPPrefRef	prefref;
		ppds = (PPREFSDLGSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);

		switch (LOWORD (wParam)) {
		case IDC_ALLOWFORCE_CHECK :
			prefref = CLGetPrefRef (ppds);
			if (!CLDisablePrefControl (hwnd, IDC_ALWAYSFORCE_CHECK, ppds,
					prefref, kPGPPrefDiskAlwaysForceUnmounts))
			{
				EnableWindow (GetDlgItem (hwnd, IDC_ALWAYSFORCE_CHECK), 
					IsDlgButtonChecked (hwnd, IDC_ALLOWFORCE_CHECK) == BST_CHECKED);
			}
			break;
		
		case IDC_UNMOUNT_CHECK :
			prefref = CLGetPrefRef (ppds);
			if (!CLDisablePrefControl (hwnd, IDC_MINUTES_EDIT, ppds,
					prefref, kPGPPrefDiskAutoUnmountTimeout))
			{
				BOOL	b;
				b = (IsDlgButtonChecked (hwnd, IDC_UNMOUNT_CHECK) == BST_CHECKED);
				EnableWindow (GetDlgItem (hwnd, IDC_MINUTES_EDIT), b);
				EnableWindow (GetDlgItem (hwnd, IDC_MINUTES_UDCTRL), b);
			}
			break;

		case IDC_SLEEP_CHECK :
			prefref = CLGetPrefRef (ppds);
			if (!noPrevent && 
				!CLDisablePrefControl (hwnd, IDC_PREVENT_CHECK, ppds,
					prefref, kPGPPrefDiskNoSleepIfFailAU))
			{
				EnableWindow (GetDlgItem (hwnd, IDC_PREVENT_CHECK), 
					IsDlgButtonChecked (hwnd, IDC_SLEEP_CHECK) == BST_CHECKED);
			}
			break;
		}
		break;
	}

	case WM_NOTIFY :
		switch (((NMHDR FAR *) lParam)->code) {
		case PSN_HELP :
			PGPclHtmlHelp (hwnd, kPGPclHelpContext, 0, 0,
					(char*)kPGPclDiskHelpFile, 
					(DWORD*)IDH_PGPCLPREF_DISKDIALOG);
			break;

		case PSN_APPLY :
		{
			PGPUInt32	u;

			ppds = (PPREFSDLGSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);

			if (ppds->bUseClientLibPrefs && 
				!PGPPrefRefIsValid (ppds->prefref))
			{
				PGPclPeekClientLibPrefRefs (&ppds->prefref, NULL);
			}

			// save checkboxes
			CLSaveCheckBoxPref (hwnd, IDC_ALLOWFORCE_CHECK, 
					ppds->prefref, kPGPPrefDiskAllowForcibleUnmounts);

			CLSaveCheckBoxPref (hwnd, IDC_ALWAYSFORCE_CHECK, 
					ppds->prefref, kPGPPrefDiskAlwaysForceUnmounts);

			CLSaveCheckBoxPref (hwnd, IDC_UNMOUNT_CHECK, 
					ppds->prefref, kPGPPrefDiskUnmountOnInactivity);

			CLSaveCheckBoxPref (hwnd, IDC_PREVENT_CHECK, 
					ppds->prefref, kPGPPrefDiskNoSleepIfFailAU);

			CLSaveCheckBoxPref (hwnd, IDC_SLEEP_CHECK, 
					ppds->prefref, kPGPPrefDiskAutoUnmountOnSleep);

//			CLSaveCheckBoxPref (hwnd, IDC_MOUNTBROWSE_CHECK, 
//					ppds->prefref, kPGPPrefDiskBrowseAfterMount);

			// save minutes
			u = GetDlgItemInt (hwnd, IDC_MINUTES_EDIT, NULL, FALSE);
			if (u < 1) 
				u = 1;
			if (u > kMaxMinutesTimeout) 
				u = kMaxMinutesTimeout;
			PGPclErrorBox (hwnd, PGPSetPrefNumber (ppds->prefref,
									kPGPPrefDiskAutoUnmountTimeout, u));

			ppds->disk.bPrefsModified = TRUE;
			ppds->returnErr = kPGPError_NoErr;
            SetWindowLong (hwnd, DWL_MSGRESULT, PSNRET_NOERROR);
            return TRUE;
		}
		}
	}

	return FALSE;

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?