OSDN Git Service

Log Filter From To Time Work
authorFrank Li <lznuaa@gmail.com>
Tue, 30 Dec 2008 06:57:31 +0000 (14:57 +0800)
committerFrank Li <lznuaa@gmail.com>
Tue, 30 Dec 2008 06:57:31 +0000 (14:57 +0800)
src/TortoiseProc/GitLogList.cpp
src/TortoiseProc/GitLogList.h
src/TortoiseProc/LogDlg.cpp
src/TortoiseProc/LogDlg.h

index 22b5b9d..0649b43 100644 (file)
@@ -80,6 +80,9 @@ CGitLogList::CGitLogList():CHintListCtrl()
        m_bFilterWithRegex = !!CRegDWORD(_T("Software\\TortoiseGit\\UseRegexFilter"), TRUE);\r
 \r
        g_Git.GetMapHashToFriendName(m_HashMap);\r
+\r
+       m_From=CTime(1970,1,2,0,0,0);\r
+       m_To=CTime::GetCurrentTime();\r
 }\r
 \r
 CGitLogList::~CGitLogList()\r
@@ -261,10 +264,6 @@ void CGitLogList::ResizeAllListCtrlCols()
 \r
 }\r
 \r
-void Refresh()\r
-{\r
-       \r
-}\r
 \r
 BOOL CGitLogList::GetShortName(CString ref, CString &shortname,CString prefix)\r
 {\r
@@ -1806,6 +1805,21 @@ UINT CGitLogList::LogThreadEntry(LPVOID pVoid)
        return ((CGitLogList*)pVoid)->LogThread();\r
 }\r
 \r
+void CGitLogList::GetTimeRange(CTime &oldest, CTime &latest)\r
+{\r
+       //CTime time;\r
+       oldest=CTime::GetCurrentTime();\r
+       latest=CTime(1971,1,2,0,0,0);\r
+       for(int i=0;i<m_logEntries.size();i++)\r
+       {\r
+               if(m_logEntries[i].m_AuthorDate.GetTime() < oldest.GetTime())\r
+                       oldest = m_logEntries[i].m_AuthorDate.GetTime();\r
+\r
+               if(m_logEntries[i].m_AuthorDate.GetTime() > latest.GetTime())\r
+                       latest = m_logEntries[i].m_AuthorDate.GetTime();\r
+\r
+       }\r
+}\r
 \r
 UINT CGitLogList::LogThread()\r
 {\r
@@ -1906,6 +1920,9 @@ void CGitLogList::Refresh()
                        InterlockedExchange(&m_bNoDispUpdates, FALSE);\r
                        CMessageBox::Show(NULL, IDS_ERR_THREADSTARTFAILED, IDS_APPNAME, MB_OK | MB_ICONERROR);\r
                }\r
+               m_sFilterText.Empty();\r
+               m_From=CTime(1970,1,2,0,0,0);\r
+               m_To=CTime::GetCurrentTime();\r
        }\r
 }\r
 bool CGitLogList::ValidateRegexp(LPCTSTR regexp_str, tr1::wregex& pat, bool bMatchCase /* = false */)\r
@@ -2112,15 +2129,13 @@ void CGitLogList::RecalculateShownList(CPtrArray * pShownlist)
 \r
 BOOL CGitLogList::IsEntryInDateRange(int i)\r
 {\r
-#if 0\r
-       __time64_t time = m_logEntries[i]->tmDate;\r
-       if ((time >= m_tFrom)&&(time <= m_tTo))\r
+       __time64_t time = m_logEntries[i].m_AuthorDate.GetTime();\r
+       if ((time >= m_From.GetTime())&&(time <= m_To.GetTime()))\r
                return TRUE;\r
 \r
        return FALSE;\r
 \r
-#endif;\r
-       return TRUE;\r
+//     return TRUE;\r
 }\r
 void CGitLogList::StartFilter()\r
 {\r
@@ -2133,7 +2148,7 @@ void CGitLogList::StartFilter()
        SetItemCountEx(ShownCountWithStopped());\r
        RedrawItems(0, ShownCountWithStopped());\r
        SetRedraw(false);\r
-       ResizeAllListCtrlCols();\r
+       //ResizeAllListCtrlCols();\r
        SetRedraw(true);\r
        Invalidate();\r
 }\r
index 901f38d..c49be27 100644 (file)
@@ -143,7 +143,9 @@ public:
        void StartFilter();\r
        bool ValidateRegexp(LPCTSTR regexp_str, tr1::wregex& pat, bool bMatchCase = false );\r
        CString                         m_sFilterText;\r
-\r
+       CTime                   m_From;\r
+       CTime                   m_To;\r
+       void                            GetTimeRange(CTime &oldest,CTime &latest);\r
 protected:\r
        DECLARE_MESSAGE_MAP()\r
        afx_msg void OnNMCustomdrawLoglist(NMHDR *pNMHDR, LRESULT *pResult);\r
index cc18f0a..b42f96d 100644 (file)
@@ -345,8 +345,8 @@ BOOL CLogDlg::OnInitDialog()
 \r
        // first start a thread to obtain the log messages without\r
        // blocking the dialog\r
-       m_tTo = 0;\r
-       m_tFrom = (DWORD)-1;\r
+       //m_tTo = 0;\r
+       //m_tFrom = (DWORD)-1;\r
 \r
        m_LogList.FetchLogAsync(LogCallBack,this);\r
 \r
@@ -397,6 +397,11 @@ void CLogDlg::LogRunStatus(int cur)
 \r
                PostMessage(WM_TIMER, LOGFILTER_TIMER);\r
 \r
+               //CTime time=m_LogList.GetOldestTime();\r
+               CTime begin,end;\r
+               m_LogList.GetTimeRange(begin,end);\r
+               m_DateFrom.SetTime(&begin);\r
+               m_DateTo.SetTime(&end);\r
        }\r
 \r
        m_LogProgress.SetPos(cur);\r
@@ -2321,6 +2326,11 @@ LRESULT CLogDlg::OnClickedCancelFilter(WPARAM /*wParam*/, LPARAM /*lParam*/)
 \r
        m_LogList.RemoveFilter();\r
 \r
+       CTime begin,end;\r
+       m_LogList.GetTimeRange(begin,end);\r
+       m_DateFrom.SetTime(&begin);\r
+       m_DateTo.SetTime(&end);\r
+\r
        theApp.DoWaitCursor(-1);\r
        GetDlgItem(IDC_SEARCHEDIT)->ShowWindow(SW_HIDE);\r
        GetDlgItem(IDC_SEARCHEDIT)->ShowWindow(SW_SHOW);\r
@@ -2418,9 +2428,9 @@ void CLogDlg::OnDtnDatetimechangeDateto(NMHDR * /*pNMHDR*/, LRESULT *pResult)
        try\r
        {\r
                CTime time(_time.GetYear(), _time.GetMonth(), _time.GetDay(), 23, 59, 59);\r
-               if (time.GetTime() != m_tTo)\r
+               if (time.GetTime() != m_LogList.m_To.GetTime())\r
                {\r
-                       m_tTo = (DWORD)time.GetTime();\r
+                       m_LogList.m_To = (DWORD)time.GetTime();\r
                        SetTimer(LOGFILTER_TIMER, 10, NULL);\r
                }\r
        }\r
@@ -2438,9 +2448,9 @@ void CLogDlg::OnDtnDatetimechangeDatefrom(NMHDR * /*pNMHDR*/, LRESULT *pResult)
        try\r
        {\r
                CTime time(_time.GetYear(), _time.GetMonth(), _time.GetDay(), 0, 0, 0);\r
-               if (time.GetTime() != m_tFrom)\r
+               if (time.GetTime() != m_LogList.m_From.GetTime())\r
                {\r
-                       m_tFrom = (DWORD)time.GetTime();\r
+                       m_LogList.m_From = (DWORD)time.GetTime();\r
                        SetTimer(LOGFILTER_TIMER, 10, NULL);\r
                }\r
        }\r
index 818f253..fa42a04 100644 (file)
@@ -257,8 +257,6 @@ private:
        //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
@@ -277,8 +275,6 @@ 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