📄 clprefs.c
字号:
(LPARAM)&(pcds->stDecryptDuration));
uEncrypt = pcds->stDecryptDuration.wHour * 3600;
uEncrypt += (pcds->stDecryptDuration.wMinute * 60);
uEncrypt += pcds->stDecryptDuration.wSecond;
SendMessage (pcds->hwndSignDuration, DTM_GETSYSTEMTIME, 0,
(LPARAM)&(pcds->stSignDuration));
uSign = pcds->stSignDuration.wHour * 3600;
uSign += (pcds->stSignDuration.wMinute * 60);
uSign += pcds->stSignDuration.wSecond;
if (IsDlgButtonChecked (hDlg, IDC_ENCRYPTTOSELF) == BST_CHECKED)
b = TRUE;
else
b = FALSE;
PGPclErrorBox (hDlg, PGPSetPrefBoolean (PrefRefClient,
kPGPPrefEncryptToSelf, b));
u = 0;
b = FALSE;
if (uEncrypt > 0) {
if (IsDlgButtonChecked (hDlg, IDC_DECRYPTCACHEENABLE) ==
BST_CHECKED)
b = TRUE;
}
PGPclErrorBox (hDlg, PGPSetPrefBoolean (PrefRefClient,
kPGPPrefDecryptCacheEnable, b));
PGPclErrorBox (hDlg, PGPSetPrefNumber (PrefRefClient,
kPGPPrefDecryptCacheSeconds, uEncrypt));
if (!b) u |= PGPCL_DECRYPTIONCACHE;
b = FALSE;
if (uSign > 0) {
if (IsDlgButtonChecked (hDlg, IDC_SIGNCACHEENABLE) ==
BST_CHECKED)
b = TRUE;
}
PGPclErrorBox (hDlg, PGPSetPrefBoolean (PrefRefClient,
kPGPPrefSignCacheEnable, b));
PGPclErrorBox (hDlg, PGPSetPrefNumber (PrefRefClient,
kPGPPrefSignCacheSeconds, uSign));
if (!b) u |= PGPCL_SIGNINGCACHE;
if (u != 0)
PGPclNotifyPurgePassphraseCache (u, 0);
if (!GetDlgItemText (hDlg, IDC_COMMENTBLOCK, sz, sizeof(sz))) {
sz[0] = '\0';
}
PGPclErrorBox (hDlg, PGPSetPrefString (PrefRefClient,
kPGPPrefComment, sz));
if (IsDlgButtonChecked (hDlg, IDC_USEFASTKEYGEN) ==
BST_CHECKED)
b = TRUE;
else
b = FALSE;
PGPclErrorBox (hDlg, PGPSetPrefBoolean (PrefRefClient,
kPGPPrefFastKeyGen, b));
if (IsDlgButtonChecked (hDlg, IDC_WIPECONFIRM) ==
BST_CHECKED)
b = TRUE;
else
b = FALSE;
PGPclErrorBox (hDlg, PGPSetPrefBoolean (PrefRefClient,
kPGPPrefWarnOnWipe, b));
u = GetDlgItemInt (hDlg, IDC_NUMPASSES, NULL, FALSE);
if (u < 1) u = 1;
if (u > MAXWIPEPASSES) u = MAXWIPEPASSES;
PGPclErrorBox (hDlg, PGPSetPrefNumber (PrefRefClient,
kPGPPrefFileWipePasses, u));
returnErr = kPGPError_NoErr;
SetWindowLong (hDlg, DWL_MSGRESULT, PSNRET_NOERROR);
return TRUE;
case PSN_KILLACTIVE :
pcds = (PCACHEDURATIONSTRUCT)GetWindowLong (hDlg, GWL_USERDATA);
SendMessage (pcds->hwndDecryptDuration, DTM_GETSYSTEMTIME, 0,
(LPARAM)&(pcds->stDecryptDuration));
uEncrypt = pcds->stDecryptDuration.wHour * 3600;
uEncrypt += (pcds->stDecryptDuration.wMinute * 60);
uEncrypt += pcds->stDecryptDuration.wSecond;
SendMessage (pcds->hwndSignDuration, DTM_GETSYSTEMTIME, 0,
(LPARAM)&(pcds->stSignDuration));
uSign = pcds->stSignDuration.wHour * 3600;
uSign += (pcds->stSignDuration.wMinute * 60);
uSign += pcds->stSignDuration.wSecond;
if (uEncrypt > MAXCACHETIMELIMIT)
{
PGPclMessageBox (hDlg, IDS_CAPTION,
IDS_INVALIDCACHEVALUE, MB_OK|MB_ICONHAND);
SetFocus (pcds->hwndDecryptDuration);
SetWindowLong (hDlg, DWL_MSGRESULT, TRUE);
return TRUE;
}
if (uSign > MAXCACHETIMELIMIT)
{
PGPclMessageBox (hDlg, IDS_CAPTION,
IDS_INVALIDCACHEVALUE, MB_OK|MB_ICONHAND);
SetFocus (pcds->hwndSignDuration);
SetWindowLong (hDlg, DWL_MSGRESULT, TRUE);
return TRUE;
}
SetWindowLong (hDlg, DWL_MSGRESULT, FALSE);
return TRUE;
case PSN_RESET :
returnErr = kPGPError_UserAbort;
SetWindowLong (hDlg, DWL_MSGRESULT, FALSE);
break;
}
}
return FALSE;
}
// _____________________________________________________
//
// Message processing function for property sheet dialog
static LRESULT WINAPI
sEmailPropDlgProc (
HWND hDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
PGPBoolean b;
UINT u;
switch (uMsg) {
case WM_INITDIALOG:
if (bNeedsCentering)
{
HWND hParent;
RECT rc;
hParent = GetParent (hDlg);
GetWindowRect (hParent, &rc);
SetWindowPos (hParent, NULL,
(GetSystemMetrics(SM_CXSCREEN) - (rc.right - rc.left)) / 2,
(GetSystemMetrics(SM_CYSCREEN) - (rc.bottom - rc.top)) / 3,
0, 0, SWP_NOSIZE | SWP_NOZORDER);
bNeedsCentering = FALSE;
}
b = DEFAULT_MAILENCRYPTPGPMIME;
PGPGetPrefBoolean (PrefRefClient, kPGPPrefMailEncryptPGPMIME, &b);
if (b) CheckDlgButton (hDlg, IDC_ENCRYPTPGPMIME, BST_CHECKED);
else CheckDlgButton (hDlg, IDC_ENCRYPTPGPMIME, BST_UNCHECKED);
u = DEFAULT_WORDWRAPWIDTH;
PGPGetPrefNumber (PrefRefClient, kPGPPrefWordWrapWidth, &u);
SetDlgItemInt (hDlg, IDC_WRAPNUMBER, u, FALSE);
b = DEFAULT_WORDWRAPENABLE;
PGPGetPrefBoolean (PrefRefClient, kPGPPrefWordWrapEnable, &b);
if (b) {
CheckDlgButton (hDlg, IDC_WRAPENABLE, BST_CHECKED);
EnableWindow (GetDlgItem (hDlg, IDC_WRAPNUMBER), TRUE);
}
else {
CheckDlgButton (hDlg, IDC_WRAPENABLE, BST_UNCHECKED);
EnableWindow (GetDlgItem (hDlg, IDC_WRAPNUMBER), FALSE);
}
b = DEFAULT_MAILENCRYPTDEFAULT;
PGPGetPrefBoolean (PrefRefClient, kPGPPrefMailEncryptDefault, &b);
if (b) CheckDlgButton (hDlg, IDC_ENCRYPTBYDEFAULT, BST_CHECKED);
else CheckDlgButton (hDlg, IDC_ENCRYPTBYDEFAULT, BST_UNCHECKED);
b = DEFAULT_MAILSIGNDEFAULT;
PGPGetPrefBoolean (PrefRefClient, kPGPPrefMailSignDefault, &b);
if (b) CheckDlgButton (hDlg, IDC_SIGNBYDEFAULT, BST_CHECKED);
else CheckDlgButton (hDlg, IDC_SIGNBYDEFAULT, BST_UNCHECKED);
b = DEFAULT_AUTODECRYPT;
PGPGetPrefBoolean (PrefRefClient, kPGPPrefAutoDecrypt, &b);
if (b) CheckDlgButton (hDlg, IDC_AUTODECRYPT, BST_CHECKED);
else CheckDlgButton (hDlg, IDC_AUTODECRYPT, BST_UNCHECKED);
b = DEFAULT_USESECUREVIEWER;
PGPGetPrefBoolean (PrefRefClient, kPGPPrefAlwaysUseSecureViewer, &b);
if (b) CheckDlgButton (hDlg, IDC_USESECUREVIEWER, BST_CHECKED);
else CheckDlgButton (hDlg, IDC_USESECUREVIEWER, BST_UNCHECKED);
return TRUE;
case WM_HELP:
WinHelp (((LPHELPINFO) lParam)->hItemHandle, g_szHelpFile,
HELP_WM_HELP, (DWORD) (LPSTR) aEmailIds);
break;
case WM_CONTEXTMENU:
WinHelp ((HWND) wParam, g_szHelpFile, HELP_CONTEXTMENU,
(DWORD) (LPVOID) aEmailIds);
break;
case WM_COMMAND :
switch (LOWORD (wParam)) {
case IDC_WRAPENABLE :
if (IsDlgButtonChecked (hDlg, IDC_WRAPENABLE) == BST_CHECKED)
EnableWindow (GetDlgItem (hDlg, IDC_WRAPNUMBER), TRUE);
else
EnableWindow (GetDlgItem (hDlg, IDC_WRAPNUMBER), FALSE);
break;
}
break;
case WM_NOTIFY :
switch (((NMHDR FAR *) lParam)->code) {
case PSN_SETACTIVE :
break;
case PSN_HELP :
WinHelp (hDlg, g_szHelpFile, HELP_CONTEXT,
IDH_PGPCLPREF_EMAILDIALOG);
break;
case PSN_APPLY :
if (IsDlgButtonChecked (hDlg, IDC_WRAPENABLE) == BST_CHECKED)
b = TRUE;
else
b = FALSE;
PGPclErrorBox (hDlg, PGPSetPrefBoolean (PrefRefClient,
kPGPPrefWordWrapEnable, b));
if (b)
{
u = GetDlgItemInt (hDlg, IDC_WRAPNUMBER, NULL, FALSE);
PGPclErrorBox (hDlg, PGPSetPrefNumber (PrefRefClient,
kPGPPrefWordWrapWidth, u));
}
if (IsDlgButtonChecked (hDlg, IDC_ENCRYPTPGPMIME) == BST_CHECKED)
b = TRUE;
else
b = FALSE;
PGPclErrorBox (hDlg, PGPSetPrefBoolean (PrefRefClient,
kPGPPrefMailEncryptPGPMIME, b));
PGPclErrorBox (hDlg, PGPSetPrefBoolean (PrefRefClient,
kPGPPrefMailSignPGPMIME, b));
if (IsDlgButtonChecked (
hDlg, IDC_ENCRYPTBYDEFAULT) == BST_CHECKED)
b = TRUE;
else
b = FALSE;
PGPclErrorBox (hDlg, PGPSetPrefBoolean (PrefRefClient,
kPGPPrefMailEncryptDefault, b));
if (IsDlgButtonChecked (hDlg, IDC_SIGNBYDEFAULT) == BST_CHECKED)
b = TRUE;
else
b = FALSE;
PGPclErrorBox (hDlg, PGPSetPrefBoolean (PrefRefClient,
kPGPPrefMailSignDefault, b));
if (IsDlgButtonChecked (hDlg, IDC_AUTODECRYPT) == BST_CHECKED)
b = TRUE;
else
b = FALSE;
PGPclErrorBox (hDlg, PGPSetPrefBoolean (PrefRefClient,
kPGPPrefAutoDecrypt, b));
if (IsDlgButtonChecked (
hDlg, IDC_USESECUREVIEWER) == BST_CHECKED)
b = TRUE;
else
b = FALSE;
PGPclErrorBox (hDlg, PGPSetPrefBoolean (PrefRefClient,
kPGPPrefAlwaysUseSecureViewer, b));
returnErr = kPGPError_NoErr;
SetWindowLong (hDlg, DWL_MSGRESULT, PSNRET_NOERROR);
return TRUE;
case PSN_KILLACTIVE :
if (IsDlgButtonChecked (hDlg, IDC_WRAPENABLE) == BST_CHECKED)
{
u = GetDlgItemInt (hDlg, IDC_WRAPNUMBER, NULL, FALSE);
if (u == 0)
{
PGPclMessageBox (hDlg, IDS_CAPTION,
IDS_INVALIDWRAP, MB_OK|MB_ICONHAND);
SendDlgItemMessage (hDlg, IDC_WRAPNUMBER, EM_SETSEL, 0, -1);
SetFocus (GetDlgItem (hDlg, IDC_WRAPNUMBER));
SetWindowLong (hDlg, DWL_MSGRESULT, TRUE);
return TRUE;
}
}
SetWindowLong (hDlg, DWL_MSGRESULT, FALSE);
return TRUE;
case PSN_RESET :
returnErr = kPGPError_UserAbort;
SetWindowLong (hDlg, DWL_MSGRESULT, FALSE);
break;
}
}
return FALSE;
}
// _____________________________________________________
//
// Message processing function for property sheet dialog
static VOID
sSetHotKeyControl (
HWND hwnd,
PGPUInt32 u)
{
UINT uKey = LOWORD (u);
UINT uMod = 0;
if (u & kPGPHotKeyAltModifier)
uMod |= HOTKEYF_ALT;
if (u & kPGPHotKeyCtrlModifier)
uMod |= HOTKEYF_CONTROL;
if (u & kPGPHotKeyExtModifier)
uMod |= HOTKEYF_EXT;
if (u & kPGPHotKeyShiftModifier)
uMod |= HOTKEYF_SHIFT;
SendMessage (hwnd, HKM_SETHOTKEY, MAKEWORD (LOBYTE (uKey), uMod), 0);
if (u & kPGPHotKeyEnabled)
EnableWindow (hwnd, TRUE);
else
EnableWindow (hwnd, FALSE);
}
// _____________________________________________________
//
// Message processing function for property sheet dialog
static PGPUInt32
sGetHotKeyControl (
HWND hwnd)
{
UINT uKey;
WORD wMod;
uKey = SendMessage (hwnd, HKM_GETHOTKEY, 0, 0);
wMod = HIBYTE (LOWORD (uKey));
uKey &= 0xFF;
if (wMod & HOTKEYF_ALT)
uKey |= kPGPHotKeyAltModifier;
if (wMod & HOTKEYF_CONTROL)
uKey |= kPGPHotKeyCtrlModifier;
if (wMod & HOTKEYF_EXT)
uKey |= kPGPHotKeyExtModifier;
if (wMod & HOTKEYF_SHIFT)
uKey |= kPGPHotKeyShiftModifier;
return uKey;
}
// _____________________________________________________
//
// Message processing function for property sheet dialog
static BOOL
sDoHotKeysOverlap (
PGPHotKeys* photkeys)
{
PGPUInt32* pStart = &(photkeys->hotkeyPurgePassphraseCache);
PGPUInt32* pEnd = &(photkeys->hotkeyDiskUnmount);
PGPUInt32* p;
do
{
p = pStart+1;
while (p <= pEnd)
{
if ((*p & kPGPHotKeyEnabled) &&
(*p == *pStart))
return TRUE;
p++;
}
pStart++;
}
while (pStart < pEnd);
return FALSE;
}
// _____________________________________________________
//
// determine if hotkey is already in use -- this works because
// we have already disabled all PGP hotkeys (except PGPdisk)
static BOOL
sIsHotKeyInUse (
PGPUInt32 uHotKey)
{
UINT uMod = 0;
BOOL bInUse = TRUE;
if (uHotKey & kPGPHotKeyAltModifier)
uMod |= MOD_ALT;
if (uHotKey & kPGPHotKeyCtrlModifier)
uMod |= MOD_CONTROL;
if (uHotKey & kPGPHotKeyShiftModifier)
uMod |= MOD_SHIFT;
if (RegisterHotKey (NULL, 0xC000, uMod, (uHotKey & 0xFF)))
{
UnregisterHotKey (NULL, 0xC000);
bInUse = FALSE;
}
return bInUse;
}
// _____________________________________________________
//
// Message processing function for property sheet dialog
static LRESULT WINAPI
sHotkeyPropDlgProc (
HWND hDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
switch (uMsg) {
case WM_INITDIALOG:
{
PGPHotKeys* phks = NULL;
PGPSize size;
PGPHotKeys hotkeys;
PGPError err;
if (bNeedsCentering)
{
HWND hParent;
RECT rc;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -