📄 addentrydlg.cpp
字号:
m_fSymbol.DeleteObject();
}
void CAddEntryDlg::OnOK()
{
UpdateData(TRUE);
if(m_editDate.GetWindowTextLength() == 0) m_editDate.SetDate(2999, 12, 28);
if(m_editTime.GetWindowTextLength() == 0) m_editTime.SetTime(23, 59, 59);
if(m_lpPassword != NULL) CSecureEditEx::DeletePassword(m_lpPassword);
m_lpPassword = m_pEditPw.GetPassword();
if(m_lpRepeatPw != NULL) CSecureEditEx::DeletePassword(m_lpRepeatPw);
m_lpRepeatPw = m_pRepeatPw.GetPassword();
CString strGroupTest;
m_cbGroups.GetLBText(m_cbGroups.GetCurSel(), strGroupTest);
if(CPwManager::IsAllowedStoreGroup((LPCTSTR)strGroupTest, PWS_SEARCHGROUP) == FALSE)
{
MessageBox(TRL("The group you selected cannot store entries. Please select a different group."),
TRL("Stop"), MB_ICONWARNING | MB_OK);
return;
}
if(m_bExpires == TRUE)
{
m_tExpire.shYear = (USHORT)m_editDate.GetYear();
m_tExpire.btMonth = (BYTE)m_editDate.GetMonth();
m_tExpire.btDay = (BYTE)m_editDate.GetDay();
m_tExpire.btHour = (BYTE)m_editTime.GetHour();
m_tExpire.btMinute = (BYTE)m_editTime.GetMinute();
m_tExpire.btSecond = (BYTE)m_editTime.GetSecond();
}
else m_pMgr->GetNeverExpireTime(&m_tExpire);
m_reNotes.GetWindowText(m_strNotes);
m_nGroupId = m_cbGroups.GetCurSel();
if(_tcscmp(m_lpPassword, m_lpRepeatPw) != 0)
{
CSecureEditEx::DeletePassword(m_lpPassword); m_lpPassword = NULL;
CSecureEditEx::DeletePassword(m_lpRepeatPw); m_lpRepeatPw = NULL;
MessageBox(TRL("Password and repeated password aren't identical!"),
TRL("Stop"), MB_OK | MB_ICONWARNING);
return;
}
// If the user hasn't changed the standard URL assume no URL
if(m_strURL == PWAE_STDURL) m_strURL.Empty();
UpdateData(FALSE);
CleanUp();
CDialog::OnOK();
}
void CAddEntryDlg::OnCancel()
{
CleanUp();
CDialog::OnCancel();
}
void CAddEntryDlg::OnCheckHidePw()
{
UpdateData(TRUE);
if(m_bStars == FALSE)
{
m_pEditPw.EnableSecureMode(FALSE);
m_pRepeatPw.EnableSecureMode(FALSE);
m_pEditPw.SetPasswordChar(0);
m_pRepeatPw.SetPasswordChar(0);
m_pEditPw.SetFont(&m_fStyle, TRUE);
m_pRepeatPw.SetFont(&m_fStyle, TRUE);
}
else // m_bStars == TRUE
{
m_pEditPw.EnableSecureMode(CPwSafeDlg::m_bSecureEdits);
m_pRepeatPw.EnableSecureMode(CPwSafeDlg::m_bSecureEdits);
// TCHAR tchDot = (TCHAR)(_T('z') + 27);
TCHAR tchDot = CPwSafeApp::GetPasswordCharacter();
m_pEditPw.SetPasswordChar(tchDot);
m_pRepeatPw.SetPasswordChar(tchDot);
m_pEditPw.SetFont(&m_fSymbol, TRUE);
m_pRepeatPw.SetFont(&m_fSymbol, TRUE);
}
m_tipSecClear.Activate(m_pEditPw.IsSecureModeEnabled());
UpdateData(FALSE);
m_pRepeatPw.SetFocus();
m_pEditPw.SetFocus();
}
void CAddEntryDlg::OnPickIconBtn()
{
CIconPickerDlg dlg;
dlg.m_pImageList = m_pParentIcons;
dlg.m_uNumIcons = (UINT)m_pParentIcons->GetImageCount();
dlg.m_nSelectedIcon = m_nIconId;
if(dlg.DoModal() == IDOK)
{
m_nIconId = dlg.m_nSelectedIcon;
if((m_nIconId >= 0) && (m_pParentIcons != NULL))
m_btPickIcon.SetIcon(m_pParentIcons->ExtractIcon(m_nIconId));
}
}
void CAddEntryDlg::OnRandomPwBtn()
{
CPwGeneratorExDlg dlg;
UpdateData(TRUE);
dlg.InitEx(1, m_bStars, FALSE);
if(dlg.DoModal() == IDOK)
{
LPTSTR lpPassword = dlg.GetGeneratedPassword();
m_pEditPw.SetPassword(lpPassword); // Allows NULL
m_pRepeatPw.SetPassword(lpPassword);
CSecureEditEx::DeletePassword(lpPassword); lpPassword = NULL;
UpdateData(FALSE);
LPTSTR lpCur = m_pEditPw.GetPassword();
NewGUI_ShowQualityMeter(&m_cPassQuality, GetDlgItem(IDC_STATIC_PASSBITS),
lpCur);
CSecureEditEx::DeletePassword(lpCur); lpCur = NULL;
}
}
void CAddEntryDlg::OnReCopyAll()
{
long lStart, lEnd;
m_reNotes.GetSel(lStart, lEnd);
m_reNotes.SetSel(0, -1);
m_reNotes.Copy();
m_reNotes.SetSel(lStart, lEnd);
}
void CAddEntryDlg::OnReCopySel()
{
m_reNotes.Copy();
}
void CAddEntryDlg::OnReDelete()
{
m_reNotes.Clear();
}
void CAddEntryDlg::OnRePaste()
{
m_reNotes.Paste();
}
void CAddEntryDlg::OnReSelectAll()
{
m_reNotes.SetSel(0, -1);
}
void CAddEntryDlg::OnReCut()
{
m_reNotes.Cut();
}
void CAddEntryDlg::OnReUndo()
{
m_reNotes.Undo();
}
BOOL CAddEntryDlg::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
MSGFILTER *lpMsgFilter = (MSGFILTER *)lParam;
if((wParam == IDC_RE_NOTES) && (lpMsgFilter->nmhdr.code == EN_MSGFILTER)
&& (lpMsgFilter->msg == WM_RBUTTONDOWN))
{
POINT pt;
GetCursorPos(&pt);
m_popmenu.LoadMenu(IDR_RECTX_MENU);
m_popmenu.SetMenuDrawMode(BCMENU_DRAWMODE_XP); // <<<!=>>> BCMENU_DRAWMODE_ORIGINAL
m_popmenu.SetSelectDisableMode(FALSE);
m_popmenu.SetXPBitmap3D(TRUE);
m_popmenu.SetBitmapBackground(RGB(255, 0, 255));
m_popmenu.SetIconSize(16, 16);
m_popmenu.LoadToolbar(IDR_INFOICONS, IDB_INFOICONS_EX);
BCMenu *psub = (BCMenu *)m_popmenu.GetSubMenu(0);
CPwSafeDlg::_TranslateMenu(psub, TRUE, NULL);
psub->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y, this);
m_popmenu.DestroyMenu();
}
return CDialog::OnNotify(wParam, lParam, pResult);
}
void CAddEntryDlg::OnSetAttachBtn()
{
DWORD dwFlags;
CString strFilter;
UpdateData(TRUE);
strFilter = TRL("All Files");
strFilter += _T(" (*.*)|*.*||");
dwFlags = OFN_LONGNAMES | OFN_EXTENSIONDIFFERENT;
// OFN_EXPLORER = 0x00080000, OFN_ENABLESIZING = 0x00800000
dwFlags |= 0x00080000 | 0x00800000;
dwFlags |= OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
CFileDialog dlg(TRUE, NULL, NULL, dwFlags, strFilter, this);
if(dlg.DoModal() == IDOK)
{
int nRet;
if(m_strAttachment == CString(PWS_NEW_ATTACHMENT)) nRet = IDYES;
else if(m_strAttachment.IsEmpty() == FALSE)
{
CString strMsg = TRL("There already is a file attached with this entry.");
strMsg += _T("\r\n\r\n");
strMsg += TRL("Do you want to overwrite the current attachment?");
nRet = MessageBox(strMsg, TRL("Overwrite?"), MB_YESNO | MB_ICONQUESTION);
}
else nRet = IDYES;
if(nRet == IDYES)
m_strAttachment = CString(PWS_NEW_ATTACHMENT) + dlg.GetPathName();
}
UpdateData(FALSE);
UpdateControlsStatus();
}
void CAddEntryDlg::OnSaveAttachBtn()
{
UpdateData(TRUE);
DWORD dwFlags;
CString strSample;
CString strFilter;
if(m_dwEntryIndex == DWORD_MAX) return;
PW_ENTRY *pEntry = m_pMgr->GetEntry(m_dwEntryIndex);
ASSERT(pEntry != NULL); if(pEntry == NULL) return;
if(_tcslen(pEntry->pszBinaryDesc) == 0)
{
MessageBox(TRL("There is no file attached with this entry."), TRL("Password Safe"), MB_ICONINFORMATION);
return;
}
strSample = pEntry->pszBinaryDesc;
strFilter = TRL("All Files");
strFilter += _T(" (*.*)|*.*||");
dwFlags = OFN_LONGNAMES | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
dwFlags |= OFN_EXTENSIONDIFFERENT;
// OFN_EXPLORER = 0x00080000, OFN_ENABLESIZING = 0x00800000
dwFlags |= 0x00080000 | 0x00800000 | OFN_NOREADONLYRETURN;
CFileDialog dlg(FALSE, NULL, strSample, dwFlags, strFilter, this);
if(dlg.DoModal() == IDOK) { m_pMgr->SaveBinaryData(pEntry, dlg.GetPathName()); }
UpdateData(FALSE);
UpdateControlsStatus();
}
void CAddEntryDlg::OnRemoveAttachBtn()
{
UpdateData(TRUE);
m_strAttachment = CString(PWS_NEW_ATTACHMENT);
UpdateData(FALSE);
UpdateControlsStatus();
}
void CAddEntryDlg::UpdateControlsStatus()
{
UpdateData(TRUE);
if((m_strAttachment.GetLength() == 0) || (m_strAttachment == CString(PWS_NEW_ATTACHMENT)))
{
m_btSetAttachment.EnableWindow(TRUE);
m_btSaveAttachment.EnableWindow(FALSE);
m_btRemoveAttachment.EnableWindow(FALSE);
}
else
{
m_btSetAttachment.EnableWindow(TRUE);
if(m_strAttachment.Left((int)_tcslen(PWS_NEW_ATTACHMENT)) != CString(PWS_NEW_ATTACHMENT))
m_btSaveAttachment.EnableWindow(TRUE);
else
m_btSaveAttachment.EnableWindow(FALSE);
m_btRemoveAttachment.EnableWindow(TRUE);
}
if(m_strTitle == PWS_TAN_ENTRY) m_btSetAttachment.EnableWindow(FALSE); // Unchangable
if(m_bExpires == TRUE)
{
m_editDate.EnableWindow(TRUE);
m_editTime.EnableWindow(TRUE);
}
else
{
m_editDate.EnableWindow(FALSE);
m_editTime.EnableWindow(FALSE);
}
if(m_dwDefaultExpire == 0) m_btSetToDefaultExpire.EnableWindow(FALSE); // Unchangable
}
void CAddEntryDlg::OnChangeEditPassword()
{
UpdateData(TRUE);
LPTSTR lp = m_pEditPw.GetPassword();
NewGUI_ShowQualityMeter(&m_cPassQuality, GetDlgItem(IDC_STATIC_PASSBITS), lp);
CSecureEditEx::DeletePassword(lp); lp = NULL;
}
void CAddEntryDlg::OnCheckExpires()
{
UpdateControlsStatus();
}
void CAddEntryDlg::OnSetDefaultExpireBtn()
{
if(m_dwDefaultExpire == 0) return;
SetExpireDays(m_dwDefaultExpire, FALSE);
}
HBRUSH CAddEntryDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if((nCtlColor == CTLCOLOR_EDIT) && (pWnd != NULL))
if((pWnd->GetDlgCtrlID() == IDC_EDIT_URL) && (pDC != NULL))
pDC->SetTextColor(RGB(0, 0, 255));
return hbr;
}
void CAddEntryDlg::SetExpireDays(DWORD dwDays, BOOL bSetTime)
{
UpdateData(TRUE);
m_bExpires = TRUE;
CTime t = CTime::GetCurrentTime();
t += CTimeSpan((LONG)dwDays, 0, 0, 0);
m_editDate.SetDate(t); // Beware of daylight saving
if(bSetTime == TRUE) m_editTime.SetTime(t);
UpdateData(FALSE);
UpdateControlsStatus();
}
void CAddEntryDlg::OnExpiresNow()
{
SetExpireDays(0, TRUE);
}
void CAddEntryDlg::OnExpires1Week()
{
SetExpireDays(7, FALSE);
}
void CAddEntryDlg::OnExpires2Weeks()
{
SetExpireDays(14, FALSE);
}
void CAddEntryDlg::OnExpires1Month()
{
SetExpireDays(30, FALSE);
}
void CAddEntryDlg::OnExpires3Months()
{
SetExpireDays(91, FALSE);
}
void CAddEntryDlg::OnExpires6Months()
{
SetExpireDays(182, FALSE);
}
void CAddEntryDlg::OnExpires12Months()
{
SetExpireDays(365, FALSE);
}
BOOL CAddEntryDlg::PreTranslateMessage(MSG* pMsg)
{
m_tipSecClear.RelayEvent(pMsg);
return CDialog::PreTranslateMessage(pMsg);
}
void CAddEntryDlg::OnReNotesClickLink(NMHDR* pNMHDR, LRESULT* pResult)
{
ENLINK *pEnLink = reinterpret_cast<ENLINK *>(pNMHDR);
if(pEnLink == NULL) return;
if((pEnLink->nmhdr.idFrom == IDC_RE_NOTES) && (pEnLink->msg == WM_LBUTTONDOWN))
{
CHARRANGE cr;
m_reNotes.GetSel(cr); // Push current user selection
m_reNotes.SetSel(pEnLink->chrg);
CString strSelectedURL = m_reNotes.GetSelText();
m_reNotes.SetSel(cr); // Pop current user selection
if(strSelectedURL.GetLength() != 0)
OpenUrlEx(strSelectedURL, this->m_hWnd);
}
*pResult = 0;
}
void CAddEntryDlg::OnHelpOpenFile()
{
_OpenLocalFile(PWM_README_FILE, OLF_OPEN);
}
void CAddEntryDlg::OnHelpURLFieldFeatures()
{
WU_OpenAppHelp(PWM_HELP_URLS);
}
void CAddEntryDlg::OnHelpAutoType()
{
WU_OpenAppHelp(PWM_HELP_AUTOTYPE);
}
#pragma warning(pop)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -