OSDN Git Service

Send email to multi person success and add CC and TO list
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / SVNProgressDlg.cpp
index 1db965e..febe50b 100644 (file)
@@ -40,6 +40,7 @@
 #include "ShellUpdater.h"\r
 #include "IconMenu.h"\r
 #include "BugTraqAssociations.h"\r
+#include "patch.h"\r
 \r
 static UINT WM_GITPROGRESS = RegisterWindowMessage(_T("TORTOISEGIT_GITPROGRESS_MSG"));\r
 \r
@@ -216,7 +217,9 @@ void CGitProgressDlg::AddItemToList()
 }\r
 \r
 \r
-BOOL CGitProgressDlg::Notify(const CTGitPath& path, git_wc_notify_action_t action\r
+BOOL CGitProgressDlg::Notify(const CTGitPath& path, git_wc_notify_action_t action,\r
+                                                        int status ,\r
+                                                        CString *strErr \r
                                                         /*\r
                                                         svn_node_kind_t kind, const CString& mime_type, \r
                                                         svn_wc_notify_state_t content_state, \r
@@ -233,6 +236,7 @@ BOOL CGitProgressDlg::Notify(const CTGitPath& path, git_wc_notify_action_t actio
        data->path = path;\r
        data->action = action;\r
        data->sPathColumnText=path.GetGitPathString();\r
+       data->bAuxItem = false;\r
 #if 0\r
        data->kind = kind;\r
        data->mime_type = mime_type;\r
@@ -267,7 +271,30 @@ BOOL CGitProgressDlg::Notify(const CTGitPath& path, git_wc_notify_action_t actio
                        data->color = m_Colors.GetColor(CColors::Added);\r
        //      }\r
                break;\r
+       case git_wc_notify_sendmail_start:\r
+               data->bAuxItem = true;\r
+               data->sActionColumnText.LoadString(IDS_SVNACTION_SENDMAIL_START);\r
+               data->color = m_Colors.GetColor(CColors::Modified);\r
+               break;\r
        \r
+       case git_wc_notify_sendmail_error:\r
+               data->bAuxItem = true;\r
+               data->sActionColumnText.LoadString(IDS_SVNACTION_SENDMAIL_ERROR);\r
+               if(strErr)\r
+                       data->sPathColumnText = *strErr;\r
+               else\r
+                       data->sPathColumnText.Empty();\r
+               data->color = m_Colors.GetColor(CColors::Modified);\r
+               break;\r
+\r
+       case git_wc_notify_sendmail_done:\r
+               \r
+               data->sActionColumnText.LoadString(IDS_SVNACTION_SENDMAIL_DONE);\r
+               data->sPathColumnText.Empty();\r
+               data->color = m_Colors.GetColor(CColors::Modified);\r
+               break;\r
+\r
+\r
        case git_wc_notify_resolved:\r
                data->sActionColumnText.LoadString(IDS_SVNACTION_RESOLVE);\r
                break;\r
@@ -488,7 +515,7 @@ BOOL CGitProgressDlg::Notify(const CTGitPath& path, git_wc_notify_action_t actio
                {\r
                        m_arData.push_back(data);\r
                        AddItemToList();\r
-                       if (/*(!data->bAuxItem)&&*/(m_itemCount > 0))\r
+                       if ((!data->bAuxItem) && (m_itemCount > 0))\r
                        {\r
                                m_itemCount--;\r
 \r
@@ -896,6 +923,9 @@ UINT CGitProgressDlg::ProgressThread()
        case GitProgress_Update:\r
                bSuccess = CmdUpdate(sWindowTitle, localoperation);\r
                break;\r
+       case GitProgress_SendMail:\r
+               bSuccess = CmdSendMail(sWindowTitle, localoperation);\r
+               break;\r
        }\r
        if (!bSuccess)\r
                temp.LoadString(IDS_PROGRS_TITLEFAILED);\r
@@ -2671,3 +2701,25 @@ CString CGitProgressDlg::GetPathFromColumnText(const CString& sColumnText)
        }\r
        return sPath;\r
 }\r
+\r
+bool CGitProgressDlg::CmdSendMail(CString& sWindowTitle, bool& /*localoperation*/)\r
+{\r
+       sWindowTitle.LoadString(IDS_PROGRS_TITLE_SENDMAIL);\r
+       SetWindowText(sWindowTitle);\r
+       //SetBackgroundImage(IDI_ADD_BKG);\r
+       ReportCmd(CString(MAKEINTRESOURCE(IDS_PROGRS_CMD_SENDMAIL)));\r
+\r
+       for(int i=0;i<m_targetPathList.GetCount();i++)\r
+       {\r
+               CPatch patch;\r
+               Notify(m_targetPathList[i],git_wc_notify_sendmail_start);\r
+               int ret=patch.Send((CString&)m_targetPathList[i].GetWinPathString(),this->m_SendMailTO,\r
+                                this->m_SendMailCC,this->m_SendMailFlags&SENDMAIL_ATTACHMENT);\r
+               if(ret)\r
+               {\r
+                       Notify(m_targetPathList[i],git_wc_notify_sendmail_error,ret,&patch.m_LastError);\r
+               }\r
+               Notify(m_targetPathList[i],git_wc_notify_sendmail_done,ret);\r
+       }\r
+       return true;\r
+}
\ No newline at end of file