#include "stdafx.h"\r
#include "TortoiseProc.h"\r
#include "SendMailDlg.h"\r
-\r
-\r
+#include "MessageBox.h"\r
+#include "commonresource.h"\r
+#include "AppUtils.h"\r
// CSendMailDlg dialog\r
\r
IMPLEMENT_DYNAMIC(CSendMailDlg, CResizableStandAloneDialog)\r
, m_CC(_T(""))\r
, m_Subject(_T(""))\r
, m_bAttachment(FALSE)\r
- , m_bBranch(FALSE)\r
+ , m_bCombine(FALSE)\r
{\r
\r
}\r
CDialog::DoDataExchange(pDX);\r
DDX_Text(pDX, IDC_SENDMAIL_TO, m_To);\r
DDX_Text(pDX, IDC_SENDMAIL_CC, m_CC);\r
- DDX_Text(pDX, IDC_SENDMAIL_SUBJECT, m_Subject);\r
DDX_Check(pDX, IDC_SENDMAIL_ATTACHMENT, m_bAttachment);\r
- DDX_Check(pDX, IDC_SENDMAIL_COMBINE, m_bBranch);\r
+ DDX_Check(pDX, IDC_SENDMAIL_COMBINE, m_bCombine);\r
DDX_Control(pDX, IDC_SENDMAIL_PATCHS, m_ctrlList);\r
DDX_Control(pDX,IDC_SENDMAIL_SETUP, this->m_SmtpSetup);\r
+ DDX_Control(pDX,IDC_SENDMAIL_TO,m_ctrlTO);\r
+ DDX_Control(pDX,IDC_SENDMAIL_CC,m_ctrlCC);\r
}\r
\r
\r
BEGIN_MESSAGE_MAP(CSendMailDlg, CResizableStandAloneDialog)\r
ON_BN_CLICKED(IDC_SENDMAIL_COMBINE, &CSendMailDlg::OnBnClickedSendmailCombine)\r
+ ON_BN_CLICKED(IDOK, &CSendMailDlg::OnBnClickedOk)\r
+ ON_NOTIFY(LVN_ITEMCHANGED, IDC_SENDMAIL_PATCHS, &CSendMailDlg::OnLvnItemchangedSendmailPatchs)\r
+ ON_NOTIFY(NM_DBLCLK, IDC_SENDMAIL_PATCHS, &CSendMailDlg::OnNMDblclkSendmailPatchs)\r
+ ON_EN_CHANGE(IDC_SENDMAIL_SUBJECT, &CSendMailDlg::OnEnChangeSendmailSubject)\r
END_MESSAGE_MAP()\r
\r
\r
\r
this->AddOthersToAnchor();\r
EnableSaveRestore(_T("SendMailDlg"));\r
+\r
+ m_ctrlCC.Init();\r
+ m_ctrlTO.Init();\r
+\r
+ m_ctrlCC.SetSeparator(_T(";"));\r
+ m_ctrlTO.SetSeparator(_T(";"));\r
+\r
+ m_AddressReg.SetMaxHistoryItems(0xFFFF);\r
+\r
+ m_AddressReg.Load(_T("Software\\TortoiseGit\\TortoiseProc\\EmailAddress\\"),_T("email"));\r
+ for(int i=0;i<m_AddressReg.GetCount();i++)\r
+ {\r
+ m_ctrlCC.AddSearchString(m_AddressReg.GetEntry(i));\r
+ m_ctrlTO.AddSearchString(m_AddressReg.GetEntry(i));\r
+ }\r
+\r
+ m_ctrlList.SetExtendedStyle( m_ctrlList.GetExtendedStyle()| LVS_EX_CHECKBOXES );\r
+\r
+ for(int i=0;i<m_PathList.GetCount();i++)\r
+ {\r
+ m_ctrlList.InsertItem(i,m_PathList[i].GetWinPathString());\r
+ m_ctrlList.SetCheck(i,true);\r
+ }\r
+ \r
+// m_ctrlCC.AddSearchString(_T("Tortoisegit-dev@google.com"));\r
+// m_ctrlTO.AddSearchString(_T("Tortoisegit-dev@google.com"));\r
+ this->UpdateData(FALSE);\r
+ OnBnClickedSendmailCombine();\r
return TRUE;\r
}\r
void CSendMailDlg::OnBnClickedSendmailCombine()\r
{\r
// TODO: Add your control notification handler code here\r
+ this->UpdateData();\r
+ this->GetDlgItem(IDC_SENDMAIL_SUBJECT)->EnableWindow(this->m_bCombine);\r
+ if(m_bCombine)\r
+ GetDlgItem(IDC_SENDMAIL_SUBJECT)->SetWindowText(this->m_Subject);\r
+\r
+ UpdateSubject();\r
+}\r
+\r
+void CSendMailDlg::OnBnClickedOk()\r
+{\r
+ \r
+ this->UpdateData();\r
+\r
+ if(this->m_To.IsEmpty() && this->m_CC.IsEmpty())\r
+ {\r
+ CMessageBox::Show(NULL,IDS_ERR_ADDRESS_NO_EMPTY,IDS_APPNAME,MB_OK|MB_ICONERROR);\r
+ return;\r
+ }\r
+ int start =0;\r
+ CString Address;\r
+ while(start>=0)\r
+ {\r
+ Address=this->m_CC.Tokenize(_T(";"),start);\r
+ m_AddressReg.AddEntry(Address);\r
+ m_AddressReg.Save();\r
+ }\r
+ start =0;\r
+ while(start>=0)\r
+ {\r
+ Address=this->m_To.Tokenize(_T(";"),start);\r
+ m_AddressReg.AddEntry(Address);\r
+ m_AddressReg.Save();\r
+ } \r
+ \r
+ this->m_PathList.Clear();\r
+ for(int i=0;i<m_ctrlList.GetItemCount();i++)\r
+ {\r
+ CTGitPath path;\r
+ if(m_ctrlList.GetCheck(i))\r
+ {\r
+ path.SetFromWin(m_ctrlList.GetItemText(i,0));\r
+ this->m_PathList.AddPath(path);\r
+ }\r
+ }\r
+ OnOK();\r
+ // TODO: Add your control notification handler code here\r
+}\r
+\r
+void CSendMailDlg::UpdateSubject()\r
+{\r
+ this->UpdateData();\r
+\r
+ if(!this->m_bCombine)\r
+ {\r
+ if(m_ctrlList.GetSelectedCount()==1)\r
+ {\r
+ POSITION pos=m_ctrlList.GetFirstSelectedItemPosition();\r
+ int index=m_ctrlList.GetNextSelectedItem(pos);\r
+ if(this->m_MapPatch.find(index) == m_MapPatch.end() )\r
+ {\r
+ m_MapPatch[index].Parser(m_ctrlList.GetItemText(index,0));\r
+ }\r
+ GetDlgItem(IDC_SENDMAIL_SUBJECT)->SetWindowText(m_MapPatch[index].m_Subject);\r
+ }\r
+ else\r
+ {\r
+ GetDlgItem(IDC_SENDMAIL_SUBJECT)->SetWindowText(_T(""));\r
+ }\r
+ }\r
+}\r
+\r
+void CSendMailDlg::OnLvnItemchangedSendmailPatchs(NMHDR *pNMHDR, LRESULT *pResult)\r
+{\r
+ LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);\r
+ \r
+ UpdateSubject();\r
+ // TODO: Add your control notification handler code here\r
+ \r
+ *pResult = 0;\r
+}\r
+\r
+void CSendMailDlg::OnNMDblclkSendmailPatchs(NMHDR *pNMHDR, LRESULT *pResult)\r
+{\r
+ LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);\r
+ // TODO: Add your control notification handler code here\r
+ CString path=this->m_ctrlList.GetItemText(pNMItemActivate->iItem,0);\r
+ CTGitPath gitpath;\r
+ gitpath.SetFromWin(path);\r
+ \r
+ CAppUtils::StartUnifiedDiffViewer(path,gitpath.GetFilename());\r
+\r
+ *pResult = 0;\r
+}\r
+\r
+void CSendMailDlg::OnEnChangeSendmailSubject()\r
+{\r
+ // TODO: If this is a RICHEDIT control, the control will not\r
+ // send this notification unless you override the CResizableStandAloneDialog::OnInitDialog()\r
+ // function and call CRichEditCtrl().SetEventMask()\r
+ // with the ENM_CHANGE flag ORed into the mask.\r
+\r
+ // TODO: Add your control notification handler code here\r
+ this->UpdateData();\r
+ if(this->m_bCombine)\r
+ GetDlgItem(IDC_SENDMAIL_SUBJECT)->GetWindowText(this->m_Subject);\r
}\r