OSDN Git Service

SyncDlg Show Conflict when pull
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / SyncDlg.h
index a2222a7..32957a9 100644 (file)
 #include "registry.h"\r
 #include "Balloon.h"\r
 #include "BranchCombox.h"\r
+#include "GitLoglist.h"\r
 // CSyncDlg dialog\r
 #define IDC_SYNC_TAB 0x1000000\r
 \r
+#define IDC_CMD_LOG                    0x1\r
+#define IDC_IN_LOGLIST         0x2\r
+#define IDC_IN_CHANGELIST      0x3\r
+#define IDC_IN_CONFLICT                0x4\r
+#define IDC_OUT_LOGLIST                0x5\r
+#define IDC_OUT_CHANGELIST     0x6\r
+\r
 class CSyncDlg : public CResizableStandAloneDialog,public CBranchCombox\r
 {\r
        DECLARE_DYNAMIC(CSyncDlg)\r
@@ -41,15 +49,53 @@ public:
 // Dialog Data\r
        enum { IDD = IDD_SYNC };\r
 \r
+       enum { GIT_COMMAND_PUSH,\r
+                  GIT_COMMAND_PULL,\r
+               };\r
 protected:\r
        virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support\r
        BRANCH_COMBOX_EVENT_HANDLE();\r
 \r
+       int m_CurrentCmd;\r
+\r
        CRegDWORD m_regPullButton;\r
        CRegDWORD m_regPushButton;\r
        CMFCTabCtrl m_ctrlTabCtrl;\r
+\r
        CBalloon                        m_tooltips;\r
        \r
+       BOOL            m_bInited;\r
+       \r
+       CGitLogList     m_OutLogList;\r
+       CGitLogList m_InLogList;\r
+\r
+       CGitStatusListCtrl m_OutChangeFileList;\r
+       CGitStatusListCtrl m_InChangeFileList;\r
+       CGitStatusListCtrl m_ConflictFileList;\r
+       \r
+       CRichEditCtrl      m_ctrlCmdOut;\r
+\r
+       CTGitPathList   m_arOutChangeList;\r
+       CTGitPathList   m_arInChangeList;\r
+\r
+       int                             m_CmdOutCurrentPos;\r
+\r
+       CWinThread*                             m_pThread;      \r
+\r
+       void            ParserCmdOutput(TCHAR ch);\r
+\r
+       virtual void LocalBranchChange(){FetchOutList();};\r
+       virtual void RemoteBranchChange(){FetchOutList();};\r
+       void ShowTab(int windowid)\r
+       {\r
+               this->m_ctrlTabCtrl.ShowTab(windowid-1);\r
+               this->m_ctrlTabCtrl.SetActiveTab(windowid-1);\r
+       }\r
+\r
+       void FetchOutList(bool force=false);\r
+\r
+       bool IsURL();\r
+\r
        void SetRemote(CString remote)\r
        {\r
                if(!remote.IsEmpty())\r
@@ -57,9 +103,55 @@ protected:
                        this->m_ctrlURL.AddString(remote);\r
                }\r
        }\r
+\r
+       std::vector<CString> m_GitCmdList;\r
+       \r
+       bool m_bAbort;\r
+\r
+       int  m_GitCmdStatus;\r
+       \r
+       CString m_LogText;\r
+       CString m_OutLocalBranch;\r
+       CString m_OutRemoteBranch;\r
+       \r
+       CString m_oldHash;\r
+\r
+       void ShowProgressCtrl(bool bShow=true);\r
+       void ShowInputCtrl(bool bShow=true);\r
+       void SwitchToRun(){ShowProgressCtrl(true);ShowInputCtrl(false);EnableControlButton(false);}\r
+       void SwitchToInput(){ShowProgressCtrl(false);ShowInputCtrl(true);}\r
+       \r
+       LRESULT OnProgressUpdateUI(WPARAM wParam,LPARAM lParam);\r
+\r
+       void UpateCombox()\r
+       {\r
+               this->m_strLocalBranch = this->m_ctrlLocalBranch.GetString();\r
+               this->m_ctrlRemoteBranch.GetWindowText(this->m_strRemoteBranch);\r
+               this->m_ctrlURL.GetWindowText(this->m_strURL);\r
+               m_strRemoteBranch=m_strRemoteBranch.Trim();\r
+       }\r
+\r
+       void AddDiffFileList(CGitStatusListCtrl *pCtrlList, CTGitPathList *pGitList,\r
+                                                       CString &rev1,CString &rev2)\r
+       {\r
+               g_Git.GetCommitDiffList(rev1,rev2,*pGitList);\r
+               pCtrlList->m_Rev1=rev1;\r
+               pCtrlList->m_Rev2=rev2;\r
+               pCtrlList->Show(0,*pGitList);\r
+               pCtrlList->SetEmptyString(CString(_T("No changed file")));\r
+               return;\r
+       }\r
+\r
+       void PullComplete();\r
+\r
        DECLARE_MESSAGE_MAP()\r
 public:\r
        BOOL m_bAutoLoadPuttyKey;\r
+       BOOL m_bForce;\r
+       CString m_strURL;\r
+\r
+       static UINT ProgressThreadEntry(LPVOID pVoid){ return ((CSyncDlg*)pVoid) ->ProgressThread(); };\r
+       UINT            ProgressThread();\r
        \r
        CHistoryCombo m_ctrlURL;\r
        CButton m_ctrlDumyButton;\r
@@ -75,4 +167,9 @@ public:
        virtual BOOL OnInitDialog();\r
        afx_msg void OnBnClickedButtonManage();\r
        virtual BOOL PreTranslateMessage(MSG* pMsg);\r
+       afx_msg void OnCbenEndeditComboboxexUrl(NMHDR *pNMHDR, LRESULT *pResult);\r
+       afx_msg void OnCbnEditchangeComboboxexUrl();\r
+\r
+       void EnableControlButton(bool bEnabled=true);\r
+       afx_msg void OnBnClickedButtonCommit();\r
 };\r