OSDN Git Service

Version browse in switch, export, new branch/tag and merge dialogs
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / LogDlg.h
index 91b1f0c..f174d35 100644 (file)
 #include "GitRev.h"\r
 #include "Tooltip.h"\r
 #include "HintListCtrl.h"\r
-\r
 #include <regex>\r
+#include "GitLogList.h"\r
+#include "GitStatusListCtrl.h"\r
+\r
 using namespace std;\r
 \r
 \r
@@ -42,14 +44,6 @@ using namespace std;
 #define MERGE_REVSELECTSTARTEND  3             ///< both\r
 #define MERGE_REVSELECTMINUSONE  4             ///< first with N-1\r
 \r
-#define LOGFILTER_ALL      1\r
-#define LOGFILTER_MESSAGES 2\r
-#define LOGFILTER_PATHS    3\r
-#define LOGFILTER_AUTHORS  4\r
-#define LOGFILTER_REVS    5\r
-#define LOGFILTER_REGEX           6\r
-#define LOGFILTER_BUGID    7\r
-\r
 \r
 #define LOGFILTER_TIMER                101\r
 \r
@@ -68,7 +62,7 @@ class CLogDlg : public CResizableStandAloneDialog, IFilterEditValidator
 public:\r
        CLogDlg(CWnd* pParent = NULL);   // standard constructor\r
        virtual ~CLogDlg();\r
-\r
+#if 0\r
        enum\r
        {\r
                LOGLIST_GRAPH,\r
@@ -79,7 +73,7 @@ public:
                LOGLIST_BUG,\r
                LOGLIST_MESSAGE_MAX=250\r
        };\r
-\r
+#endif\r
        enum\r
        {\r
                FILELIST_ACTION,\r
@@ -88,15 +82,20 @@ public:
                FILELIST_PATH\r
        };\r
 \r
-       void SetParams(const CTGitPath& path, GitRev pegrev, GitRev startrev, GitRev endrev, int limit, \r
-               BOOL bStrict = CRegDWORD(_T("Software\\TortoiseGit\\LastLogStrict"), FALSE), BOOL bSaveStrict = TRUE);\r
+       void SetParams(const CTGitPath& path, GitRev pegrev, GitRev startrev, GitRev endrev, int limit);\r
        void SetIncludeMerge(bool bInclude = true) {m_bIncludeMerges = bInclude;}\r
        void SetProjectPropertiesPath(const CTGitPath& path) {m_ProjectProperties.ReadProps(path);}\r
-       bool IsThreadRunning() {return !!m_bThreadRunning;}\r
+       bool IsThreadRunning() {return !!m_LogList.m_bThreadRunning;}\r
        void SetDialogTitle(const CString& sTitle) {m_sTitle = sTitle;}\r
        void SetSelect(bool bSelect) {m_bSelect = bSelect;}\r
        void ContinuousSelection(bool bCont = true) {m_bSelectionMustBeContinuous = bCont;}\r
+       void SingleSelection(bool bSingle = true) {m_bSelectionMustBeSingle = bSingle;}\r
        void SetMergePath(const CTGitPath& mergepath) {m_mergePath = mergepath;}\r
+       /**\r
+        * Provides selected commit hash if available, call after OK return from here\r
+        * Empty if none\r
+       **/\r
+       CString GetSelectedHash(){ return m_sSelectedHash; }\r
 \r
 //     const GitRevRangeArray& GetSelectedRevRanges() {return m_selectedRevs;}\r
 \r
@@ -114,6 +113,8 @@ protected:
        afx_msg LRESULT OnFindDialogMessage(WPARAM wParam, LPARAM lParam);\r
        afx_msg LRESULT OnClickedInfoIcon(WPARAM wParam, LPARAM lParam);\r
        afx_msg LRESULT OnClickedCancelFilter(WPARAM wParam, LPARAM lParam);\r
+       afx_msg LRESULT OnLogListLoading(WPARAM wParam, LPARAM lParam);\r
+\r
        afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);\r
        afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);\r
        afx_msg void OnBnClickedGetall();\r
@@ -123,9 +124,8 @@ protected:
        afx_msg void OnBnClickedHelp();\r
        afx_msg void OnEnLinkMsgview(NMHDR *pNMHDR, LRESULT *pResult);\r
        afx_msg void OnBnClickedStatbutton();\r
-       afx_msg void OnNMCustomdrawLoglist(NMHDR *pNMHDR, LRESULT *pResult);\r
+\r
        afx_msg void OnNMCustomdrawChangedFileList(NMHDR *pNMHDR, LRESULT *pResult);\r
-       afx_msg void OnLvnGetdispinfoLoglist(NMHDR *pNMHDR, LRESULT *pResult);\r
        afx_msg void OnLvnGetdispinfoChangedFileList(NMHDR *pNMHDR, LRESULT *pResult);\r
        afx_msg void OnEnChangeSearchedit();\r
        afx_msg void OnTimer(UINT_PTR nIDEvent);\r
@@ -133,14 +133,15 @@ protected:
        afx_msg void OnDtnDatetimechangeDatefrom(NMHDR *pNMHDR, LRESULT *pResult);\r
        afx_msg void OnLvnColumnclick(NMHDR *pNMHDR, LRESULT *pResult);\r
        afx_msg void OnLvnColumnclickChangedFileList(NMHDR *pNMHDR, LRESULT *pResult);\r
-       afx_msg void OnBnClickedNexthundred();\r
+       afx_msg void OnBnClickShowWholeProject();\r
        afx_msg void OnBnClickedHidepaths();\r
+       afx_msg void OnBnClickedAllBranch();\r
        afx_msg void OnBnClickedCheckStoponcopy();\r
-       afx_msg void OnLvnOdfinditemLoglist(NMHDR *pNMHDR, LRESULT *pResult);\r
+       \r
        afx_msg void OnDtnDropdownDatefrom(NMHDR *pNMHDR, LRESULT *pResult);\r
        afx_msg void OnDtnDropdownDateto(NMHDR *pNMHDR, LRESULT *pResult);\r
        afx_msg void OnSize(UINT nType, int cx, int cy);\r
-       afx_msg void OnBnClickedIncludemerge();\r
+       afx_msg void OnBnClickedFirstParent();\r
        afx_msg void OnBnClickedRefresh();\r
        afx_msg void OnRefresh();\r
        afx_msg void OnFind();\r
@@ -155,11 +156,14 @@ protected:
        void    FillLogMessageCtrl(bool bShow = true);\r
        void    DoDiffFromLog(INT_PTR selIndex, GitRev *rev1, GitRev *rev2, bool blame, bool unified);\r
 \r
+       static  void LogCallBack(void *data, int cur){((CLogDlg*)data)->LogRunStatus(cur);}\r
+       void    LogRunStatus(int cur);\r
+\r
        DECLARE_MESSAGE_MAP()\r
 \r
 private:\r
-       static UINT LogThreadEntry(LPVOID pVoid);\r
-       UINT LogThread();\r
+       \r
+\r
        void Refresh (bool autoGoOnline = false);\r
        BOOL IsDiffPossible(LogChangedPath * changedpath, git_revnum_t rev);\r
        BOOL Open(bool bOpenWith, CString changedpath, git_revnum_t rev);\r
@@ -170,17 +174,17 @@ private:
        void AdjustMinSize();\r
        void SetSplitterRange();\r
        void SetFilterCueText();\r
-       BOOL IsEntryInDateRange(int i);\r
+       \r
        void CopySelectionToClipBoard();\r
        void CopyChangedSelectionToClipBoard();\r
        CTGitPathList GetChangedPathsFromSelectedRevisions(bool bRelativePaths = false, bool bUseFilter = true);\r
     void SortShownListArray();\r
-       void RecalculateShownList(CPtrArray * pShownlist);\r
+       \r
     void SetSortArrow(CListCtrl * control, int nColumn, bool bAscending);\r
        void SortByColumn(int nSortColumn, bool bAscending);\r
-       bool IsSelectionContinuous();\r
+       \r
        void EnableOKButton();\r
-       void GetAll(bool bForceAll = false);\r
+       void GetAll(bool bIsShowProjectOrBranch = false);\r
        void UpdateLogInfoLabel();\r
        void SaveSplitterPos();\r
        bool ValidateRegexp(LPCTSTR regexp_str, tr1::wregex& pat, bool bMatchCase);\r
@@ -195,14 +199,12 @@ private:
         * Extracts part of commit message suitable for displaying in revision list.\r
         */\r
        CString MakeShortMessage(const CString& message);\r
-       inline int ShownCountWithStopped() const { return (int)m_arShownList.GetCount() + (m_bStrictStopped ? 1 : 0); }\r
+//     inline int ShownCountWithStopped() const { return (int)m_arShownList.GetCount() + (m_bStrictStopped ? 1 : 0); }\r
 \r
 \r
        virtual LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam);\r
        static int __cdecl      SortCompare(const void * pElem1, const void * pElem2);  ///< sort callback function\r
 \r
-       void ResizeAllListCtrlCols();\r
-\r
        void ShowContextMenuForRevisions(CWnd* pWnd, CPoint point);\r
        void ShowContextMenuForChangedpaths(CWnd* pWnd, CPoint point);\r
 public:\r
@@ -210,39 +212,43 @@ public:
        ProjectProperties       m_ProjectProperties;\r
        WORD                            m_wParam;\r
 private:\r
-       HFONT                           m_boldFont;\r
+       //HFONT                         m_boldFont;\r
        CString                         m_sRelativeRoot;\r
        CString                         m_sRepositoryRoot;\r
        CString                         m_sSelfRelativeURL;\r
        CString                         m_sURL;\r
        CString                         m_sUUID;    ///< empty if the log cache is not used\r
-       CHintListCtrl           m_LogList;\r
-       CListCtrl                       m_ChangedFileListCtrl;\r
+       CGitLogList                     m_LogList;\r
+       CGitStatusListCtrl  m_ChangedFileListCtrl;\r
        CFilterEdit                     m_cFilter;\r
        CProgressCtrl           m_LogProgress;\r
        CMenuButton                     m_btnShow;\r
+       CMenuButton                     m_btnShowWholeProject;\r
        CTGitPath                       m_path;\r
        CTGitPath                       m_mergePath;\r
        GitRev                          m_pegrev;\r
        GitRev                          m_startrev;\r
        GitRev                          m_LogRevision;\r
        GitRev                          m_endrev;\r
-       GitRev                          m_wcRev;\r
+       //GitRev                                m_wcRev;\r
 //     GitRevRangeArray        m_selectedRevs;\r
 //     GitRevRangeArray        m_selectedRevsOneRange;\r
+       CString                         m_sSelectedHash;        // set to selected commit hash on OK if appropriate\r
        bool                            m_bSelectionMustBeContinuous;\r
+       bool                            m_bSelectionMustBeSingle;\r
        long                            m_logcounter;\r
        bool                            m_bCancelled;\r
-       volatile LONG           m_bThreadRunning;\r
-       BOOL                            m_bStrict;\r
-       bool                            m_bStrictStopped;\r
+       \r
        BOOL                            m_bIncludeMerges;\r
+       BOOL                            m_bFirstParent;\r
+       BOOL                            m_bAllBranch;\r
+       BOOL                            m_bWholeProject;\r
+\r
        git_revnum_t            m_lowestRev;\r
-       BOOL                            m_bSaveStrict;\r
        CTGitPathList   *   m_currentChangedArray;\r
        LogChangedPathArray m_CurrentFilteredChangedArray;\r
        CTGitPathList           m_currentChangedPathList;\r
-       CPtrArray                       m_arShownList;\r
+       //CPtrArray                     m_arShownList;\r
        bool                            m_hasWC;\r
        int                                     m_nSearchIndex;\r
        bool                            m_bFilterWithRegex;\r
@@ -256,21 +262,18 @@ private:
        CRect                           m_MsgViewOrigRect;\r
        CRect                           m_LogListOrigRect;\r
        CRect                           m_ChgOrigRect;\r
-       CString                         m_sFilterText;\r
-       int                                     m_nSelectedFilter;\r
-       volatile LONG           m_bNoDispUpdates;\r
+//     CString                         m_sFilterText;\r
+       \r
+       //volatile LONG         m_bNoDispUpdates;\r
        CDateTimeCtrl           m_DateFrom;\r
        CDateTimeCtrl           m_DateTo;\r
-       DWORD                           m_tFrom;\r
-       DWORD                           m_tTo;\r
        int                                     m_limit;\r
        int                                     m_limitcounter;\r
        int                 m_nSortColumn;\r
        bool                m_bAscending;\r
        static int                      m_nSortColumnPathList;\r
        static bool                     m_bAscendingPathList;\r
-       CRegDWORD                       m_regLastStrict;\r
-       CRegDWORD                       m_regMaxBugIDColWidth;\r
+       //CRegDWORD                     m_regMaxBugIDColWidth;\r
        CButton                         m_cHidePaths;\r
        bool                            m_bShowedAll;\r
        CString                         m_sTitle;\r
@@ -281,23 +284,23 @@ private:
 \r
        CToolTips                       m_tooltips;\r
 \r
-       CTime                           m_timFrom;\r
-       CTime                           m_timTo;\r
        CColors                         m_Colors;\r
        CImageList                      m_imgList;\r
+#if 0\r
        HICON                           m_hModifiedIcon;\r
        HICON                           m_hReplacedIcon;\r
        HICON                           m_hAddedIcon;\r
        HICON                           m_hDeletedIcon;\r
+#endif\r
 \r
        DWORD                           m_childCounter;\r
        DWORD                           m_maxChild;\r
        HACCEL                          m_hAccel;\r
 \r
-       CStoreSelection*        m_pStoreSelection;\r
-    CLogDataVector             m_logEntries;\r
+\r
+    \r
        \r
-       CXPTheme                        theme;\r
+       //CXPTheme                      theme;\r
        bool                            m_bVista;\r
 };\r
 static UINT WM_REVSELECTED = RegisterWindowMessage(_T("TORTOISEGit_REVSELECTED_MSG"));\r