📄 gmnewgrp.c
字号:
/*____________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
GMNewGrp.c - create new recipient group
$Id: GMNewGrp.c,v 1.7 2002/10/29 17:44:44 pbj Exp $
____________________________________________________________________________*/
#include "pgpPFLConfig.h"
// project header files
#include "PGPgmx.h"
#include "UTF8Edit.h"
// typedefs
typedef struct {
PGROUPMAN pGM;
PGPGroupSetRef groupset;
PGPGroupID groupid;
BOOL bNewGroup;
CHAR szGroupName[kPGPMaxGroupNameLength];
CHAR szGroupDesc[kPGPMaxGroupDescriptionLength];
} NEWGROUPSTRUCT;
// external globals
extern HINSTANCE g_hinst;
// local globals
static DWORD aIds[] = { // Help IDs
IDC_NEWGROUPNAME, IDH_PGPPKGRP_GROUPNAME,
IDC_NEWGROUPDESC, IDH_PGPPKGRP_GROUPDESC,
0,0
};
// ___________________________________________________
//
// Dialog Message procedure
// When user asks to add a userID to a key, a dialog
// appears asking for the new userID to be typed in.
// This is the message processing procedure for that
// dialog.
static BOOL CALLBACK
sNewGroupDlgProc (
HWND hDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
NEWGROUPSTRUCT* pngs;
PGPError err;
switch(uMsg) {
case WM_INITDIALOG:
pngs = (NEWGROUPSTRUCT*)lParam;
SetWindowLong (hDlg, GWL_USERDATA, lParam);
UTF8EditInit (GetDlgItem (hDlg, IDC_NEWGROUPNAME));
SendMessage (UTF8EditGetHandle (GetDlgItem (hDlg, IDC_NEWGROUPNAME)),
EM_SETLIMITTEXT, kPGPMaxGroupNameLength, 0);
UTF8EditInit (GetDlgItem (hDlg, IDC_NEWGROUPDESC));
SendMessage (UTF8EditGetHandle (GetDlgItem (hDlg, IDC_NEWGROUPDESC)),
EM_SETLIMITTEXT, kPGPMaxGroupDescriptionLength, 0);
if (!pngs->bNewGroup)
{
CHAR szTitle[64];
LoadString (g_hinst, IDS_GROUPPROPS, szTitle, sizeof(szTitle));
SetWindowText (hDlg, szTitle);
UTF8EditSetText (
GetDlgItem (hDlg, IDC_NEWGROUPNAME), pngs->szGroupName);
UTF8EditSetText (
GetDlgItem (hDlg, IDC_NEWGROUPDESC), pngs->szGroupDesc);
}
return TRUE;
case WM_HELP :
case WM_CONTEXTMENU :
return PGPclHtmlHelp (hDlg, uMsg, wParam, lParam,
(char*)kPGPclHelpFile, aIds);
case WM_DESTROY :
UTF8EditDestroy (GetDlgItem (hDlg, IDC_NEWGROUPNAME));
UTF8EditDestroy (GetDlgItem (hDlg, IDC_NEWGROUPDESC));
return 0;
case WM_COMMAND:
switch(LOWORD (wParam)) {
case IDOK:
pngs = (NEWGROUPSTRUCT*)GetWindowLong (hDlg, GWL_USERDATA);
if (!UTF8EditGetText (
GetDlgItem (hDlg, IDC_NEWGROUPNAME),
pngs->szGroupName, sizeof (pngs->szGroupName)))
{
PGPgmMessageBox (hDlg, IDS_CAPTIONINFO,
IDS_NEEDGROUPNAME, MB_OK|MB_ICONINFORMATION);
return TRUE;
}
UTF8EditGetText (
GetDlgItem (hDlg, IDC_NEWGROUPDESC),
pngs->szGroupDesc, sizeof (pngs->szGroupDesc));
if (pngs->bNewGroup)
{
err = PGPNewGroup (pngs->pGM->groupsetMain,
pngs->szGroupName, pngs->szGroupDesc, &(pngs->groupid));
}
else
{
err = PGPSetGroupName (pngs->pGM->groupsetMain,
pngs->groupid, pngs->szGroupName);
if (IsntPGPError (err))
{
err = PGPSetGroupDescription (pngs->pGM->groupsetMain,
pngs->groupid, pngs->szGroupDesc);
}
}
if (IsPGPError (err))
{
PGPclErrorBox (NULL, err);
EndDialog (hDlg, 0);
return TRUE;
}
EndDialog (hDlg, 1);
return TRUE;
case IDCANCEL:
EndDialog (hDlg, 0);
return TRUE;
}
return TRUE;
}
return FALSE;
}
// ___________________________________________________
//
// Update recipient group
// This routine is called when the user chooses to edit
// recipient group properties
BOOL
GMGroupProperties (PGROUPMAN pGM)
{
BOOL bRetVal = FALSE;
PGPGroupItem groupitem;
PGPGroupInfo groupinfo;
PGPUInt32 iIndex;
TL_TREEITEM tli;
NEWGROUPSTRUCT ngs;
// initialize struct
ngs.pGM = pGM;
ngs.bNewGroup = FALSE;
tli.hItem = GMFocusedItem (pGM);
tli.mask = TLIF_IMAGE|TLIF_PARAM;
TreeList_GetItem (pGM->hwndTree, &tli);
// if selected item is a key, get its parent
if (tli.iImage != IDX_GROUP)
{
tli.hItem = GMFocusedItem (pGM);
tli.mask = TLIF_PARENTHANDLE;
TreeList_GetItem (pGM->hwndTree, &tli);
tli.mask = TLIF_IMAGE|TLIF_PARAM;
TreeList_GetItem (pGM->hwndTree, &tli);
}
// if selected item is a group then get the groupid
if (tli.iImage == IDX_GROUP)
{
ngs.groupid = HIWORD(tli.lParam);
if (ngs.groupid)
{
iIndex = LOWORD(tli.lParam);
PGPGetIndGroupItem (pGM->groupsetMain,
ngs.groupid, iIndex, &groupitem);
ngs.groupid = groupitem.u.groupID;
}
else
ngs.groupid = LOWORD(tli.lParam);
PGPGetGroupInfo (pGM->groupsetMain, ngs.groupid, &groupinfo);
lstrcpy (ngs.szGroupName, groupinfo.name);
lstrcpy (ngs.szGroupDesc, groupinfo.description);
// get new info from user
if (DialogBoxParam (g_hinst, MAKEINTRESOURCE (IDD_NEWGROUP),
pGM->hwndParent, sNewGroupDlgProc, (LPARAM)&ngs))
{
GMSortGroupSet (pGM);
GMCommitGroupChanges (pGM, TRUE);
PGPgmLoadGroups ((HGROUPMAN)pGM);
InvalidateRect (pGM->hwndTree, NULL, FALSE);
UpdateWindow (pGM->hwndTree);
bRetVal = TRUE;
}
}
return bRetVal;
}
// ___________________________________________________
//
// Create new recipient group
// This routine is called when the user chooses to create
// a new recipient group
PGPError PGPgmExport
PGPgmNewGroup (HGROUPMAN hGroupMan)
{
PGROUPMAN pGM = (PGROUPMAN)hGroupMan;
BOOL bRetVal = FALSE;
NEWGROUPSTRUCT ngs;
// initialize struct
ngs.pGM = pGM;
ngs.bNewGroup = TRUE;
// get new group info from user
if (DialogBoxParam (g_hinst, MAKEINTRESOURCE (IDD_NEWGROUP),
pGM->hwndParent, sNewGroupDlgProc, (LPARAM)&ngs))
{
GMCommitGroupChanges (pGM, TRUE);
TreeList_DeleteTree (pGM->hwndTree, FALSE);
InvalidateRect (pGM->hwndTree, NULL, TRUE);
UpdateWindow (pGM->hwndTree);
GMSortGroupSet (pGM);
GMLoadGroupsIntoTree (pGM, TRUE, FALSE, FALSE);
InvalidateRect (pGM->hwndTree, NULL, TRUE);
UpdateWindow (pGM->hwndTree);
bRetVal = TRUE;
}
return bRetVal;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -