📄 publickeymanager.cpp
字号:
// PublicKeyManager.cpp : implementation file
//
#include "stdafx.h"
#include "SecretChat.h"
#include "PublicKeyManager.h"
#include "SecretChatDlg.h" //主窗口类头文件
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPublicKeyManager dialog
CPublicKeyManager::CPublicKeyManager(CWnd* pParent /*=NULL*/)
: CDialog(CPublicKeyManager::IDD, pParent)
{
//{{AFX_DATA_INIT(CPublicKeyManager)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CPublicKeyManager::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPublicKeyManager)
DDX_Control(pDX, IDC_FRIENDLIST, m_friendList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPublicKeyManager, CDialog)
//{{AFX_MSG_MAP(CPublicKeyManager)
ON_BN_CLICKED(IDC_SELECT, OnSelect)
ON_BN_CLICKED(IDC_ASK, OnAsk)
ON_BN_CLICKED(IDC_ADD, OnAdd)
ON_BN_CLICKED(IDC_EDIT, OnEdit)
ON_BN_CLICKED(IDC_DELETE, OnDelete)
ON_LBN_DBLCLK(IDC_FRIENDLIST, OnDblclkFriendlist)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPublicKeyManager message handlers
void CPublicKeyManager::OnOK()
{
// TODO: Add extra validation here
//CDialog::OnOK();
}
void CPublicKeyManager::OnCancel()
{
// TODO: Add extra cleanup here
//CDialog::OnCancel();
}
BOOL CPublicKeyManager::OnInitDialog()
{
CDialog::OnInitDialog();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
BOOL CPublicKeyManager::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
return CDialog::PreTranslateMessage(pMsg);
}
void CPublicKeyManager::OnSelect()
{
CSecretChatDlg * pSecretChatDlg = (CSecretChatDlg *)AfxGetMainWnd();
CString strFriend;
//获得现在选择列表的索引
if(m_friendList.GetCurSel() != -1)
{
m_friendList.GetText(
m_friendList.GetCurSel(),
strFriend);
AfxGetApp()->WriteProfileString(
"SecretKeySetup",
"FriendPublicKey",
strFriend);
pSecretChatDlg->m_setupDlg.ShowTabWindow(0);
}
else
{
AfxMessageBox("没选择公钥");
}
}
void CPublicKeyManager::OnAsk()
{
CSecretChatDlg * pSecretChatDlg = (CSecretChatDlg *)AfxGetMainWnd();
pSecretChatDlg->AskPublicKey();
pSecretChatDlg->m_setupDlg.PostMessage(WM_COMMAND, IDCANCEL);
}
void CPublicKeyManager::OnAdd()
{
CSecretChatDlg * pSecretChatDlg = (CSecretChatDlg *)AfxGetMainWnd();
CString str = "公钥文件(*.pk)|*.pk|";
CFileDialog fileName(
TRUE,
0,
0,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
str,
this);
if ( fileName.DoModal() == 1)
{
CString strNewFileName = pSecretChatDlg->m_appName
+ "\\friend\\"
+ fileName.GetFileName();
WIN32_FIND_DATA wfd;
HANDLE hSearch = ::FindFirstFile(
strNewFileName,
&wfd);
if(hSearch != INVALID_HANDLE_VALUE)
{
if(MessageBox(
"公钥文件已经存在。覆盖 " + strNewFileName + " 文件吗?",
"添加公钥文件",
MB_YESNO | MB_ICONQUESTION) == IDNO)
{
return;
}
}
::CopyFile(
fileName.GetPathName(),
strNewFileName,
FALSE);
pSecretChatDlg->m_setupDlg.ShowTabWindow(0); //刷新列表
pSecretChatDlg->m_setupDlg.ShowTabWindow(2); //刷新列表
}
}
void CPublicKeyManager::OnEdit()
{
CSecretKeyEdit secretKeyEditDlg;
CSecretChatDlg * pSecretChatDlg = (CSecretChatDlg *)AfxGetMainWnd();
//获得现在选择列表的索引
if(m_friendList.GetCurSel() != -1)
{
CString strFriend;
m_friendList.GetText(
m_friendList.GetCurSel(),
strFriend);
secretKeyEditDlg.m_select = SELECT_PUBLIC;
if(secretKeyEditDlg.validateSecretKey(
pSecretChatDlg->m_appName + "\\friend\\" + strFriend) != SELECT_PUBLIC)
{
MessageBox(
"不是用户公钥文件",
"密聊",
MB_ICONINFORMATION);
return;
}
secretKeyEditDlg.DoModal();
}
}
void CPublicKeyManager::OnDelete()
{
CSecretKeyEdit secretKeyEditDlg;
CSecretChatDlg * pSecretChatDlg = (CSecretChatDlg *)AfxGetMainWnd();
//获得现在选择列表的索引
if(m_friendList.GetCurSel() != -1)
{
CString strFriend;
m_friendList.GetText(
m_friendList.GetCurSel(),
strFriend);
if(MessageBox(
"是否删除公钥文件 " + strFriend + " 吗?",
"删除公钥文件",
MB_YESNO | MB_ICONQUESTION) == IDNO)
{
return;
}
::DeleteFile(
pSecretChatDlg->m_appName
+ "\\friend\\"
+ strFriend);
pSecretChatDlg->m_setupDlg.ShowTabWindow(0); //刷新列表,因为下拉列表没更新,再点击确定就不能保持了
pSecretChatDlg->m_setupDlg.ShowTabWindow(2); //刷新列表
}
}
void CPublicKeyManager::OnDblclkFriendlist() //双击列表
{
OnEdit();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -