OSDN Git Service

Impliment commit command at log dialog when choose work copy
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / AppUtils.cpp
index b79ee62..efc9405 100644 (file)
@@ -46,6 +46,7 @@
 #include "SendMailDlg.h"\r
 #include "SVNProgressDlg.h"\r
 #include "PushDlg.h"\r
+#include "CommitDlg.h"\r
 \r
 CAppUtils::CAppUtils(void)\r
 {\r
@@ -2181,4 +2182,68 @@ void CAppUtils::RemoveTrailSlash(CString &path)
                if(path.IsEmpty())\r
                        return;\r
        }\r
+}\r
+\r
+BOOL CAppUtils::Commit(CString bugid,BOOL bWholeProject,CString &sLogMsg,\r
+                                       CTGitPathList &pathList,\r
+                                       CTGitPathList &selectedList,\r
+                                       BOOL bSelectFilesForCommit)\r
+{\r
+       bool bFailed = true;\r
+       while (bFailed)\r
+       {\r
+               bFailed = false;\r
+               CCommitDlg dlg;\r
+               dlg.m_sBugID = bugid;\r
+        \r
+        dlg.m_bWholeProject = bWholeProject;\r
+               \r
+               dlg.m_sLogMessage = sLogMsg;\r
+               dlg.m_pathList = pathList;\r
+               dlg.m_checkedPathList = selectedList;\r
+               dlg.m_bSelectFilesForCommit = bSelectFilesForCommit;\r
+               if (dlg.DoModal() == IDOK)\r
+               {\r
+                       if (dlg.m_pathList.GetCount()==0)\r
+                               return false;\r
+                       // if the user hasn't changed the list of selected items\r
+                       // we don't use that list. Because if we would use the list\r
+                       // of pre-checked items, the dialog would show different\r
+                       // checked items on the next startup: it would only try\r
+                       // to check the parent folder (which might not even show)\r
+                       // instead, we simply use an empty list and let the\r
+                       // default checking do its job.\r
+                       if (!dlg.m_pathList.IsEqual(pathList))\r
+                               selectedList = dlg.m_pathList;\r
+                       pathList = dlg.m_updatedPathList;\r
+                       sLogMsg = dlg.m_sLogMessage;\r
+                       bSelectFilesForCommit = true;\r
+\r
+                       if( dlg.m_bPushAfterCommit )\r
+                       {\r
+                               CAppUtils::Push();\r
+                       }\r
+//                     CGitProgressDlg progDlg;\r
+//                     progDlg.SetChangeList(dlg.m_sChangeList, !!dlg.m_bKeepChangeList);\r
+//                     if (parser.HasVal(_T("closeonend")))\r
+//                             progDlg.SetAutoClose(parser.GetLongVal(_T("closeonend")));\r
+//                     progDlg.SetCommand(CGitProgressDlg::GitProgress_Commit);\r
+//                     progDlg.SetOptions(dlg.m_bKeepLocks ? ProgOptKeeplocks : ProgOptNone);\r
+//                     progDlg.SetPathList(dlg.m_pathList);\r
+//                     progDlg.SetCommitMessage(dlg.m_sLogMessage);\r
+//                     progDlg.SetDepth(dlg.m_bRecursive ? Git_depth_infinity : svn_depth_empty);\r
+//                     progDlg.SetSelectedList(dlg.m_selectedPathList);\r
+//                     progDlg.SetItemCount(dlg.m_itemsCount);\r
+//                     progDlg.SetBugTraqProvider(dlg.m_BugTraqProvider);\r
+//                     progDlg.DoModal();\r
+//                     CRegDWORD err = CRegDWORD(_T("Software\\TortoiseGit\\ErrorOccurred"), FALSE);\r
+//                     err = (DWORD)progDlg.DidErrorsOccur();\r
+//                     bFailed = progDlg.DidErrorsOccur();\r
+//                     bRet = progDlg.DidErrorsOccur();\r
+//                     CRegDWORD bFailRepeat = CRegDWORD(_T("Software\\TortoiseGit\\CommitReopen"), FALSE);\r
+//                     if (DWORD(bFailRepeat)==0)\r
+//                             bFailed = false;                // do not repeat if the user chose not to in the settings.\r
+               }\r
+       }\r
+       return true;\r
 }
\ No newline at end of file