Can't change branch name when branch is not default name
[TortoiseGit.git] / src / TortoiseProc / SendMailDlg.cpp
blobca1180590f25ddb8ab74a1456f186e621e8650f7
1 // SendMailDlg.cpp : implementation file
2 //
4 #include "stdafx.h"
5 #include "TortoiseProc.h"
6 #include "SendMailDlg.h"
7 #include "MessageBox.h"
8 #include "commonresource.h"
9 #include "AppUtils.h"
10 #include "PatchListCtrl.h"
11 // CSendMailDlg dialog
13 IMPLEMENT_DYNAMIC(CSendMailDlg, CResizableStandAloneDialog)
15 CSendMailDlg::CSendMailDlg(CWnd* pParent /*=NULL*/)
16 : CResizableStandAloneDialog(CSendMailDlg::IDD, pParent)
17 , m_To(_T(""))
18 , m_CC(_T(""))
19 , m_Subject(_T(""))
21 , m_regAttach(_T("Software\\TortoiseGit\\TortoiseProc\\SendMail\\Attach"),0)
22 , m_regCombine(_T("Software\\TortoiseGit\\TortoiseProc\\SendMail\\Combine"),0)
24 m_bAttachment = m_regAttach;
25 m_bCombine = m_regCombine;
26 this->m_ctrlList.m_ContextMenuMask &=~ m_ctrlList.GetMenuMask(CPatchListCtrl::MENU_SENDMAIL);
29 CSendMailDlg::~CSendMailDlg()
33 void CSendMailDlg::DoDataExchange(CDataExchange* pDX)
35 CDialog::DoDataExchange(pDX);
36 DDX_Text(pDX, IDC_SENDMAIL_TO, m_To);
37 DDX_Text(pDX, IDC_SENDMAIL_CC, m_CC);
38 DDX_Check(pDX, IDC_SENDMAIL_ATTACHMENT, m_bAttachment);
39 DDX_Check(pDX, IDC_SENDMAIL_COMBINE, m_bCombine);
40 DDX_Control(pDX, IDC_SENDMAIL_PATCHS, m_ctrlList);
41 DDX_Control(pDX,IDC_SENDMAIL_SETUP, this->m_SmtpSetup);
42 DDX_Control(pDX,IDC_SENDMAIL_TO,m_ctrlTO);
43 DDX_Control(pDX,IDC_SENDMAIL_CC,m_ctrlCC);
47 BEGIN_MESSAGE_MAP(CSendMailDlg, CResizableStandAloneDialog)
48 ON_BN_CLICKED(IDC_SENDMAIL_COMBINE, &CSendMailDlg::OnBnClickedSendmailCombine)
49 ON_BN_CLICKED(IDOK, &CSendMailDlg::OnBnClickedOk)
50 ON_NOTIFY(LVN_ITEMCHANGED, IDC_SENDMAIL_PATCHS, &CSendMailDlg::OnLvnItemchangedSendmailPatchs)
51 ON_NOTIFY(NM_DBLCLK, IDC_SENDMAIL_PATCHS, &CSendMailDlg::OnNMDblclkSendmailPatchs)
52 ON_EN_CHANGE(IDC_SENDMAIL_SUBJECT, &CSendMailDlg::OnEnChangeSendmailSubject)
53 END_MESSAGE_MAP()
56 // CSendMailDlg message handlers
58 BOOL CSendMailDlg::OnInitDialog()
60 CResizableStandAloneDialog::OnInitDialog();
62 AddAnchor(IDC_SENDMAIL_GROUP,TOP_LEFT,TOP_RIGHT);
63 AddAnchor(IDC_SENDMAIL_TO,TOP_LEFT,TOP_RIGHT);
64 AddAnchor(IDC_SENDMAIL_CC,TOP_LEFT,TOP_RIGHT);
65 AddAnchor(IDC_SENDMAIL_SUBJECT,TOP_LEFT,TOP_RIGHT);
66 AddAnchor(IDC_SENDMAIL_SETUP,TOP_RIGHT);
68 AddAnchor(IDC_SENDMAIL_PATCHS,TOP_LEFT,BOTTOM_RIGHT);
69 AddAnchor(IDOK,BOTTOM_RIGHT);
70 AddAnchor(IDCANCEL,BOTTOM_RIGHT);
71 AddAnchor(IDHELP, BOTTOM_RIGHT);
73 this->AddOthersToAnchor();
74 EnableSaveRestore(_T("SendMailDlg"));
76 m_ctrlCC.Init();
77 m_ctrlTO.Init();
79 m_ctrlCC.SetSeparator(_T(";"));
80 m_ctrlTO.SetSeparator(_T(";"));
82 m_AddressReg.SetMaxHistoryItems(0xFFFF);
84 m_AddressReg.Load(_T("Software\\TortoiseGit\\TortoiseProc\\EmailAddress\\"),_T("email"));
85 for(int i=0;i<m_AddressReg.GetCount();i++)
87 m_ctrlCC.AddSearchString(m_AddressReg.GetEntry(i));
88 m_ctrlTO.AddSearchString(m_AddressReg.GetEntry(i));
91 m_ctrlList.SetExtendedStyle( m_ctrlList.GetExtendedStyle()| LVS_EX_CHECKBOXES );
93 for(int i=0;i<m_PathList.GetCount();i++)
95 m_ctrlList.InsertItem(i,m_PathList[i].GetWinPathString());
96 m_ctrlList.SetCheck(i,true);
99 // m_ctrlCC.AddSearchString(_T("Tortoisegit-dev@google.com"));
100 // m_ctrlTO.AddSearchString(_T("Tortoisegit-dev@google.com"));
101 this->UpdateData(FALSE);
102 OnBnClickedSendmailCombine();
103 return TRUE;
105 void CSendMailDlg::OnBnClickedSendmailCombine()
107 // TODO: Add your control notification handler code here
108 this->UpdateData();
109 this->GetDlgItem(IDC_SENDMAIL_SUBJECT)->EnableWindow(this->m_bCombine);
110 if(m_bCombine)
111 GetDlgItem(IDC_SENDMAIL_SUBJECT)->SetWindowText(this->m_Subject);
113 UpdateSubject();
116 void CSendMailDlg::OnBnClickedOk()
119 this->UpdateData();
121 if(this->m_To.IsEmpty() && this->m_CC.IsEmpty())
123 CMessageBox::Show(NULL,IDS_ERR_ADDRESS_NO_EMPTY,IDS_APPNAME,MB_OK|MB_ICONERROR);
124 return;
126 int start =0;
127 CString Address;
128 while(start>=0)
130 Address=this->m_CC.Tokenize(_T(";"),start);
131 m_AddressReg.AddEntry(Address);
132 m_AddressReg.Save();
134 start =0;
135 while(start>=0)
137 Address=this->m_To.Tokenize(_T(";"),start);
138 m_AddressReg.AddEntry(Address);
139 m_AddressReg.Save();
142 this->m_PathList.Clear();
143 for(int i=0;i<m_ctrlList.GetItemCount();i++)
145 CTGitPath path;
146 if(m_ctrlList.GetCheck(i))
148 path.SetFromWin(m_ctrlList.GetItemText(i,0));
149 this->m_PathList.AddPath(path);
153 m_regAttach=m_bAttachment;
154 m_regCombine=m_bCombine;
156 OnOK();
157 // TODO: Add your control notification handler code here
160 void CSendMailDlg::UpdateSubject()
162 this->UpdateData();
164 if(!this->m_bCombine)
166 if(m_ctrlList.GetSelectedCount()==1)
168 POSITION pos=m_ctrlList.GetFirstSelectedItemPosition();
169 int index=m_ctrlList.GetNextSelectedItem(pos);
170 if(this->m_MapPatch.find(index) == m_MapPatch.end() )
172 m_MapPatch[index].Parser(m_ctrlList.GetItemText(index,0));
174 GetDlgItem(IDC_SENDMAIL_SUBJECT)->SetWindowText(m_MapPatch[index].m_Subject);
176 else
178 GetDlgItem(IDC_SENDMAIL_SUBJECT)->SetWindowText(_T(""));
183 void CSendMailDlg::OnLvnItemchangedSendmailPatchs(NMHDR *pNMHDR, LRESULT *pResult)
185 LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
187 UpdateSubject();
188 // TODO: Add your control notification handler code here
190 *pResult = 0;
193 void CSendMailDlg::OnNMDblclkSendmailPatchs(NMHDR *pNMHDR, LRESULT *pResult)
195 LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
196 // TODO: Add your control notification handler code here
197 CString path=this->m_ctrlList.GetItemText(pNMItemActivate->iItem,0);
198 CTGitPath gitpath;
199 gitpath.SetFromWin(path);
201 CAppUtils::StartUnifiedDiffViewer(path,gitpath.GetFilename());
203 *pResult = 0;
206 void CSendMailDlg::OnEnChangeSendmailSubject()
208 // TODO: If this is a RICHEDIT control, the control will not
209 // send this notification unless you override the CResizableStandAloneDialog::OnInitDialog()
210 // function and call CRichEditCtrl().SetEventMask()
211 // with the ENM_CHANGE flag ORed into the mask.
213 // TODO: Add your control notification handler code here
214 this->UpdateData();
215 if(this->m_bCombine)
216 GetDlgItem(IDC_SENDMAIL_SUBJECT)->GetWindowText(this->m_Subject);