OSDN Git Service

Status List intergrate to LogDlg
authorFrank Li <lznuaa@gmail.com>
Mon, 29 Dec 2008 14:21:32 +0000 (22:21 +0800)
committerFrank Li <lznuaa@gmail.com>
Mon, 29 Dec 2008 14:21:32 +0000 (22:21 +0800)
src/Git/GitStatusListCtrl.cpp
src/Git/GitStatusListCtrl.h
src/Resources/TortoiseProcENG.rc
src/TortoiseProc/GitStatusListCtrlHelpers.cpp
src/TortoiseProc/LogDlg.cpp
src/TortoiseProc/LogDlg.h
src/TortoiseProc/resource.h

index 8748468..f809128 100644 (file)
@@ -1383,6 +1383,16 @@ void CGitStatusListCtrl::Show(DWORD dwShow, const CTGitPathList& checkedList, bo
 #endif\r
 \r
 }\r
+int CGitStatusListCtrl::GetColumnIndex(int mask)\r
+{\r
+       int i=0;\r
+       for(i=0;i<32;i++)\r
+               if(mask&0x1)\r
+                       return i;\r
+               else\r
+                       mask=mask>>1;\r
+       return -1;\r
+}\r
 void CGitStatusListCtrl::AddEntry(CTGitPath * GitPath, WORD langID, int listIndex)\r
 {\r
        static CString ponly(MAKEINTRESOURCE(IDS_STATUSLIST_PROPONLY));\r
@@ -1411,196 +1421,17 @@ void CGitStatusListCtrl::AddEntry(CTGitPath * GitPath, WORD langID, int listInde
        // SVNSLC_COLEXT\r
        SetItemText(index, nCol++, GitPath->GetFileExtension());\r
        // SVNSLC_COLSTATUS\r
-//     if (entry->isNested)\r
-//     {\r
-//             CString sTemp(MAKEINTRESOURCE(IDS_STATUSLIST_NESTED));\r
-//             SetItemText(index, nCol++, sTemp);\r
-//     }\r
-//     else\r
-       {\r
-               SetItemText(index, nCol++, GitPath->GetActionName());\r
-       }\r
-       // SVNSLC_COLREMOTESTATUS\r
-//     if (entry->isNested)\r
-//     {\r
-//             CString sTemp(MAKEINTRESOURCE(IDS_STATUSLIST_NESTED));\r
-//             SetItemText(index, nCol++, sTemp);\r
-//     }\r
-//     else\r
-       {\r
-               //SetItemText(index, nCol++, buf);\r
-       }\r
-       // SVNSLC_COLTEXTSTATUS\r
-//     if (entry->isNested)\r
-//     {\r
-//             CString sTemp(MAKEINTRESOURCE(IDS_STATUSLIST_NESTED));\r
-//             SetItemText(index, nCol++, sTemp);\r
-//     }\r
-//     else\r
-//     {\r
-#if 0\r
-               SVNStatus::GetStatusString(hResourceHandle, entry->textstatus, buf, sizeof(buf)/sizeof(TCHAR), (WORD)langID);\r
-               if ((entry->copied)&&(_tcslen(buf)>1))\r
-                       _tcscat_s(buf, 100, _T(" (+)"));\r
-               if ((entry->switched)&&(_tcslen(buf)>1))\r
-                       _tcscat_s(buf, 100, _T(" (s)"));\r
-#endif\r
-//             SetItemText(index, nCol++, buf);\r
-//     }\r
-       // SVNSLC_COLPROPSTATUS\r
-//     if (entry->isNested)\r
-//     {\r
-//             SetItemText(index, nCol++, _T(""));\r
-//     }\r
-//     else\r
-//     {\r
-#if 0\r
-               SVNStatus::GetStatusString(hResourceHandle, entry->propstatus, buf, sizeof(buf)/sizeof(TCHAR), (WORD)langID);\r
-               if ((entry->copied)&&(_tcslen(buf)>1))\r
-                       _tcscat_s(buf, 100, _T(" (+)"));\r
-               if ((entry->switched)&&(_tcslen(buf)>1))\r
-                       _tcscat_s(buf, 100, _T(" (s)"));\r
-#endif\r
-//             SetItemText(index, nCol++, buf);\r
-//     }\r
-       // SVNSLC_COLREMOTETEXT\r
-//     if (entry->isNested)\r
-//     {\r
-//             SetItemText(index, nCol++, _T(""));\r
-//     }\r
-//     else\r
-//     {\r
-#if 0\r
-               SVNStatus::GetStatusString(hResourceHandle, entry->remotetextstatus, buf, sizeof(buf)/sizeof(TCHAR), (WORD)langID);\r
-               SetItemText(index, nCol++, buf);\r
-#endif\r
-//     }\r
-       // SVNSLC_COLREMOTEPROP\r
-//     if (entry->isNested)\r
-//     {\r
-//             SetItemText(index, nCol++, _T(""));\r
-//     }\r
-//     else\r
-//     {\r
-//             SVNStatus::GetStatusString(hResourceHandle, entry->remotepropstatus, buf, sizeof(buf)/sizeof(TCHAR), (WORD)langID);\r
-//             SetItemText(index, nCol++, buf);\r
-//     }\r
-       // SVNSLC_COLURL\r
-//     SetItemText(index, nCol++, entry->url);\r
-       // SVNSLC_COLLOCK\r
-#if 0\r
-       if (!m_HeadRev.IsHead())\r
-       {\r
-               // we have contacted the repository\r
+       SetItemText(index, nCol++, GitPath->GetActionName());\r
 \r
-               // decision-matrix\r
-               // wc           repository              text\r
-               // ""           ""                              ""\r
-               // ""           UID1                    owner\r
-               // UID1         UID1                    owner\r
-               // UID1         ""                              lock has been broken\r
-               // UID1         UID2                    lock has been stolen\r
-               if (entry->lock_token.IsEmpty() || (entry->lock_token.Compare(entry->lock_remotetoken)==0))\r
-               {\r
-                       if (entry->lock_owner.IsEmpty())\r
-                               SetItemText(index, nCol++, entry->lock_remoteowner);\r
-                       else\r
-                               SetItemText(index, nCol++, entry->lock_owner);\r
-               }\r
-               else if (entry->lock_remotetoken.IsEmpty())\r
-               {\r
-                       // broken lock\r
-                       CString temp(MAKEINTRESOURCE(IDS_STATUSLIST_LOCKBROKEN));\r
-                       SetItemText(index, nCol++, temp);\r
-               }\r
-               else\r
-               {\r
-                       // stolen lock\r
-                       CString temp;\r
-                       temp.Format(IDS_STATUSLIST_LOCKSTOLEN, (LPCTSTR)entry->lock_remoteowner);\r
-                       SetItemText(index, nCol++, temp);\r
-               }\r
-       }\r
-       else\r
-               SetItemText(index, nCol++, entry->lock_owner);\r
-       // SVNSLC_COLLOCKCOMMENT\r
-       SetItemText(index, nCol++, entry->lock_comment);\r
-       // SVNSLC_COLAUTHOR\r
-       SetItemText(index, nCol++, entry->last_commit_author);\r
-       // SVNSLC_COLREVISION\r
-       CString temp;\r
-       temp.Format(_T("%ld"), entry->last_commit_rev);\r
-       if (entry->last_commit_rev > 0)\r
-               SetItemText(index, nCol++, temp);\r
-       else\r
-               SetItemText(index, nCol++, _T(""));\r
-       // SVNSLC_COLREMOTEREVISION\r
-       temp.Format(_T("%ld"), entry->remoterev);\r
-       if (entry->remoterev > 0)\r
-               SetItemText(index, nCol++, temp);\r
-       else\r
-               SetItemText(index, nCol++, _T(""));\r
-       // SVNSLC_COLDATE\r
-       TCHAR datebuf[SVN_DATE_BUFFER];\r
-       apr_time_t date = entry->last_commit_date;\r
-       SVN::formatDate(datebuf, date, true);\r
-       if (date)\r
-               SetItemText(index, nCol++, datebuf);\r
-       else\r
-               SetItemText(index, nCol++, _T(""));\r
-       // SVNSLC_COLSVNNEEDSLOCK\r
-    BOOL bFoundSVNNeedsLock = entry->present_props.IsNeedsLockSet();\r
-       CString strSVNNeedsLock = (bFoundSVNNeedsLock) ? _T("*") : _T("");\r
-       SetItemText(index, nCol++, strSVNNeedsLock);\r
-       // SVNSLC_COLCOPYFROM\r
-       if (m_sURL.Compare(entry->copyfrom_url.Left(m_sURL.GetLength()))==0)\r
-               temp = entry->copyfrom_url.Mid(m_sURL.GetLength());\r
-       else\r
-               temp = entry->copyfrom_url;\r
-       SetItemText(index, nCol++, temp);\r
-       // SVNSLC_COLMODIFICATIONDATE\r
-       __int64 filetime = entry->GetPath().GetLastWriteTime();\r
-       if ( (filetime) && (entry->status!=git_wc_status_deleted) )\r
-       {\r
-               FILETIME* f = (FILETIME*)(__int64*)&filetime;\r
-               TCHAR datebuf[SVN_DATE_BUFFER];\r
-               SVN::formatDate(datebuf,*f,true);\r
-               SetItemText(index, nCol++, datebuf);\r
-       }\r
-       else\r
-       {\r
-               SetItemText(index, nCol++, _T(""));\r
-       }\r
+       SetItemText(index, GetColumnIndex(SVNSLC_COLADD),GitPath->m_StatAdd);\r
+       SetItemText(index, GetColumnIndex(SVNSLC_COLDEL),GitPath->m_StatDel);\r
 \r
-    // user-defined properties\r
-    for ( int i = SVNSLC_NUMCOLUMNS, count = m_ColumnManager.GetColumnCount()\r
-        ; i < count\r
-        ; ++i)\r
-    {\r
-        assert (i == nCol++);\r
-        assert (m_ColumnManager.IsUserProp (i));\r
 \r
-        CString name = m_ColumnManager.GetName(i);\r
-        if (entry->present_props.HasProperty (name))\r
-               {\r
-                       const CString& propVal = entry->present_props [name];\r
-                       if (propVal.IsEmpty())\r
-                               SetItemText(index, i, m_sNoPropValueText);\r
-                       else\r
-                               SetItemText(index, i, propVal);\r
-               }\r
-               else\r
-            SetItemText(index, i, _T(""));\r
-    }\r
-#endif\r
        SetCheck(index, GitPath->m_Checked);\r
        if (GitPath->m_Checked)\r
                m_nSelected++;\r
 \r
-//#if 0\r
-//     if (m_changelists.find(entry->changelist) != m_changelists.end())\r
-//             SetItemGroup(index, m_changelists[entry->changelist]);\r
-//     else\r
+\r
        if( GitPath->m_Action & CTGitPath::LOGACTIONS_IGNORE)\r
                SetItemGroup(index, 2);\r
        else if( GitPath->m_Action & CTGitPath::LOGACTIONS_UNVER)\r
@@ -1608,7 +1439,7 @@ void CGitStatusListCtrl::AddEntry(CTGitPath * GitPath, WORD langID, int listInde
        else\r
                SetItemGroup(index,0);\r
        m_bBlock = FALSE;\r
-//#endif\r
+\r
 \r
 }\r
 #if 0\r
@@ -4651,6 +4482,7 @@ void CGitStatusListCtrl::PreSubclassWindow()
 {\r
        CListCtrl::PreSubclassWindow();\r
        EnableToolTips(TRUE);\r
+       m_Theme.SetWindowTheme(GetSafeHwnd(), L"Explorer", NULL);\r
 }\r
 \r
 INT_PTR CGitStatusListCtrl::OnToolHitTest(CPoint point, TOOLINFO* pTI) const\r
@@ -5400,6 +5232,29 @@ int CGitStatusListCtrl::UpdateFileList(git_revnum_t hash,CTGitPathList *list)
 \r
 \r
                this->m_StatusFileList.ParserFromLog(out);\r
+       }else\r
+       {\r
+               int count = 0;\r
+               if(list == NULL)\r
+                       count = 1;\r
+               else\r
+                       count = list->GetCount();\r
+\r
+               for(int i=0;i<count;i++)\r
+               {       \r
+                       CString cmdout;\r
+                       CString cmd;\r
+                       if(list == NULL)\r
+                               cmd.Format(_T("git.exe diff-tree --raw --numstat -C -M %s"),hash);\r
+                       else\r
+                               cmd.Format(_T("git.exe diff-tree --raw  --numstat -C -M %s -- \"%s\""),hash,(*list)[i].GetGitPathString());\r
+\r
+                       g_Git.Run(cmd,&cmdout);\r
+\r
+                       out+=cmdout;\r
+               }\r
+               this->m_StatusFileList.ParserFromLog(out);\r
+\r
        }\r
        for(int i=0;i<m_StatusFileList.GetCount();i++)\r
        {\r
@@ -5410,6 +5265,19 @@ int CGitStatusListCtrl::UpdateFileList(git_revnum_t hash,CTGitPathList *list)
        this->m_bBusy=FALSE;\r
        return 0;\r
 }\r
+\r
+int CGitStatusListCtrl::UpdateWithGitPathList(CTGitPathList &list)\r
+{\r
+       m_arStatusArray.clear();\r
+       for(int i=0;i<list.GetCount();i++)\r
+       {\r
+               CTGitPath * gitpatch=(CTGitPath*)&list[i];\r
+               gitpatch->m_Checked = TRUE;\r
+               m_arStatusArray.push_back((CTGitPath*)&list[i]);\r
+       }\r
+       return 0;\r
+}\r
+\r
 int CGitStatusListCtrl::UpdateUnRevFileList(CTGitPathList *List)\r
 {\r
        this->m_UnRevFileList.FillUnRev(CTGitPath::LOGACTIONS_UNVER,List);\r
index 3574ddd..c009c2f 100644 (file)
@@ -22,6 +22,7 @@
 #include "GitRev.h"\r
 #include "GitConfig.h"\r
 #include "Colors.h"\r
+#include "XPTheme.h"\r
 \r
 #define SVN_WC_ENTRY_WORKING_SIZE_UNKNOWN (-1)\r
 \r
@@ -35,7 +36,9 @@
 #define        SVNSLC_COLREVISION                      0x000000080\r
 #define        SVNSLC_COLDATE                          0x000000100\r
 #define        SVNSLC_COLMODIFICATIONDATE      0x000000200\r
-#define SVNSLC_NUMCOLUMNS              10\r
+#define SVNSLC_COLADD                          0x000000400\r
+#define SVNSLC_COLDEL                          0x000000600\r
+#define SVNSLC_NUMCOLUMNS                      12\r
 \r
 //#define SVNSLC_COLREMOTESTATUS               0x000000010\r
 //#define SVNSLC_COLREMOTETEXT         0x000000080\r
@@ -155,6 +158,7 @@ class CGitStatusListCtrl :
        public CListCtrl\r
 {\r
 public:\r
+       int GetColumnIndex(int colmask);\r
        /**\r
         * Sent to the parent window (using ::SendMessage) after a context menu\r
         * command has finished if the item count has changed.\r
@@ -189,6 +193,7 @@ public:
         * Helper class for CGitStatusListCtrl which represents\r
         * the data for each file shown.\r
         */\r
+\r
        class FileEntry\r
        {\r
        public:\r
@@ -903,8 +908,14 @@ public:
        int UpdateFileList(int mask, bool once=true,CTGitPathList *List=NULL);\r
        int UpdateUnRevFileList(CTGitPathList *List=NULL);\r
        int UpdateIgnoreFileList(CTGitPathList *List=NULL);\r
+       \r
+       int UpdateWithGitPathList(CTGitPathList &list);\r
+\r
        void AddEntry(CTGitPath* path, WORD langID, int ListIndex);\r
        int m_FileLoaded;\r
+\r
+public:\r
+       CXPTheme        m_Theme;\r
 };\r
 \r
 #if 0\r
index 9eeaf38..fbd0ef3 100644 (file)
Binary files a/src/Resources/TortoiseProcENG.rc and b/src/Resources/TortoiseProcENG.rc differ
index 6372d55..16c6a5e 100644 (file)
@@ -281,6 +281,8 @@ CString CGitStatusListCtrl::ColumnManager::GetName (int column) const
 \r
 //               , IDS_STATUSLIST_COLCOPYFROM\r
           , IDS_STATUSLIST_COLMODIFICATIONDATE\r
+                 , IDS_STATUSLIST_COLADD\r
+                 , IDS_STATUSLIST_COLDEL\r
                };\r
 \r
     // standard columns\r
@@ -295,8 +297,8 @@ CString CGitStatusListCtrl::ColumnManager::GetName (int column) const
 \r
     // user-prop columns\r
 \r
-//    if (index < columns.size())\r
-//        return userProps[columns[index].index - SVNSLC_USERPROPCOLOFFSET].name;\r
+       //    if (index < columns.size())\r
+       //        return userProps[columns[index].index - SVNSLC_USERPROPCOLOFFSET].name;\r
 \r
     // default: empty\r
 \r
index dd69ad1..376ebb7 100644 (file)
@@ -122,7 +122,7 @@ void CLogDlg::DoDataExchange(CDataExchange* pDX)
 BEGIN_MESSAGE_MAP(CLogDlg, CResizableStandAloneDialog)\r
        ON_REGISTERED_MESSAGE(m_FindDialogMessage, OnFindDialogMessage) \r
        ON_BN_CLICKED(IDC_GETALL, OnBnClickedGetall)\r
-       ON_NOTIFY(NM_DBLCLK, IDC_LOGMSG, OnNMDblclkChangedFileList)\r
+       //ON_NOTIFY(NM_DBLCLK, IDC_LOGMSG, OnNMDblclkChangedFileList)\r
        ON_WM_CONTEXTMENU()\r
        ON_WM_SETCURSOR()\r
        ON_BN_CLICKED(IDHELP, OnBnClickedHelp)\r
@@ -138,10 +138,10 @@ BEGIN_MESSAGE_MAP(CLogDlg, CResizableStandAloneDialog)
        ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DATETO, OnDtnDatetimechangeDateto)\r
        ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DATEFROM, OnDtnDatetimechangeDatefrom)\r
        ON_BN_CLICKED(IDC_NEXTHUNDRED, OnBnClickedNexthundred)\r
-       ON_NOTIFY(NM_CUSTOMDRAW, IDC_LOGMSG, OnNMCustomdrawChangedFileList)\r
-       ON_NOTIFY(LVN_GETDISPINFO, IDC_LOGMSG, OnLvnGetdispinfoChangedFileList)\r
+       //ON_NOTIFY(NM_CUSTOMDRAW, IDC_LOGMSG, OnNMCustomdrawChangedFileList)\r
+       //ON_NOTIFY(LVN_GETDISPINFO, IDC_LOGMSG, OnLvnGetdispinfoChangedFileList)\r
        ON_NOTIFY(LVN_COLUMNCLICK,IDC_LOGLIST   , OnLvnColumnclick)\r
-       ON_NOTIFY(LVN_COLUMNCLICK, IDC_LOGMSG, OnLvnColumnclickChangedFileList)\r
+       //ON_NOTIFY(LVN_COLUMNCLICK, IDC_LOGMSG, OnLvnColumnclickChangedFileList)\r
        ON_BN_CLICKED(IDC_HIDEPATHS, OnBnClickedHidepaths)\r
        \r
        ON_BN_CLICKED(IDC_CHECK_STOPONCOPY, &CLogDlg::OnBnClickedCheckStoponcopy)\r
@@ -219,30 +219,13 @@ BOOL CLogDlg::OnInitDialog()
                m_bShowBugtraqColumn = true;\r
 \r
        //theme.SetWindowTheme(m_LogList.GetSafeHwnd(), L"Explorer", NULL);\r
-       theme.SetWindowTheme(m_ChangedFileListCtrl.GetSafeHwnd(), L"Explorer", NULL);\r
+       //theme.SetWindowTheme(m_ChangedFileListCtrl.GetSafeHwnd(), L"Explorer", NULL);\r
 \r
        // set up the columns\r
        m_LogList.DeleteAllItems();\r
        m_LogList.InsertGitColumn();\r
 \r
-       m_ChangedFileListCtrl.SetExtendedStyle ( LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER );\r
-       m_ChangedFileListCtrl.DeleteAllItems();\r
-       int c = ((CHeaderCtrl*)(m_ChangedFileListCtrl.GetDlgItem(0)))->GetItemCount()-1;\r
-       while (c>=0)\r
-               m_ChangedFileListCtrl.DeleteColumn(c--);\r
-       temp.LoadString(IDS_PROGRS_ACTION);\r
-       m_ChangedFileListCtrl.InsertColumn(this->FILELIST_ACTION, temp);\r
-       temp.LoadString(IDS_LOG_FILE_LINE_ADD);\r
-       m_ChangedFileListCtrl.InsertColumn(this->FILELIST_ADD, temp);\r
-       temp.LoadString(IDS_LOG_FILE_LINE_DEL);\r
-       m_ChangedFileListCtrl.InsertColumn(this->FILELIST_DEL, temp);\r
-       temp.LoadString(IDS_PROGRS_PATH);\r
-       m_ChangedFileListCtrl.InsertColumn(this->FILELIST_PATH, temp);\r
-       \r
-       m_ChangedFileListCtrl.SetRedraw(false);\r
-       CAppUtils::ResizeAllListCtrlCols(&m_ChangedFileListCtrl);\r
-       m_ChangedFileListCtrl.SetRedraw(true);\r
-\r
+       m_ChangedFileListCtrl.Init(SVNSLC_COLEXT | SVNSLC_COLSTATUS |IDS_STATUSLIST_COLADD|IDS_STATUSLIST_COLDEL , _T("LogDlg"));\r
 \r
        GetDlgItem(IDC_LOGLIST)->UpdateData(FALSE);\r
 \r
@@ -492,10 +475,9 @@ void CLogDlg::FillLogMessageCtrl(bool bShow /* = true*/)
        m_ChangedFileListCtrl.SetRedraw(FALSE);\r
 //     InterlockedExchange(&m_bNoDispUpdates, TRUE);\r
        m_currentChangedArray = NULL;\r
-       m_ChangedFileListCtrl.SetExtendedStyle ( LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER );\r
+       //m_ChangedFileListCtrl.SetExtendedStyle ( LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER );\r
        m_ChangedFileListCtrl.DeleteAllItems();\r
-       m_ChangedFileListCtrl.SetItemCountEx(0);\r
-\r
+       \r
        // if we're not here to really show a selected revision, just\r
        // get out of here after clearing the views, which is what is intended\r
        // if that flag is not set.\r
@@ -539,13 +521,12 @@ void CLogDlg::FillLogMessageCtrl(bool bShow /* = true*/)
                // and we can find a match of those in the log message\r
                m_ProjectProperties.FindBugID(pLogEntry->m_Body, pMsgView);\r
                CAppUtils::FormatTextInRichEditControl(pMsgView);\r
-               m_currentChangedArray = &(pLogEntry->m_Files);\r
-               if (m_currentChangedArray == NULL)\r
-               {\r
-//                     InterlockedExchange(&m_bNoDispUpdates, FALSE);\r
-                       m_ChangedFileListCtrl.SetRedraw(TRUE);\r
-                       return;\r
-               }\r
+\r
+               m_ChangedFileListCtrl.UpdateWithGitPathList(pLogEntry->m_Files);\r
+               m_ChangedFileListCtrl.Show(0);\r
+\r
+               m_ChangedFileListCtrl.SetRedraw(TRUE);\r
+               return;\r
 #if 0\r
                // fill in the changed files list control\r
                if ((m_cHidePaths.GetState() & 0x0003)==BST_CHECKED)\r
@@ -700,59 +681,6 @@ void CLogDlg::OnBnClickedRefresh()
 void CLogDlg::Refresh (bool autoGoOnline)\r
 {\r
        m_LogList.Refresh();\r
-\r
-#if 0\r
-       // refreshing means re-downloading the already shown log messages\r
-       UpdateData();\r
-       m_maxChild = 0;\r
-       m_childCounter = 0;\r
-\r
-       if ((m_limit == 0)||(m_bStrict)||(int(m_logEntries.size()-1) > m_limit))\r
-       {\r
-               if (m_logEntries.size() != 0)\r
-               {\r
-                       m_endrev = m_logEntries[m_logEntries.size()-1]->Rev;\r
-               }\r
-       }\r
-       m_startrev = -1;\r
-       m_bCancelled = FALSE;\r
-\r
-       // We need to create CStoreSelection on the heap or else\r
-       // the variable will run out of the scope before the\r
-       // thread ends. Therefore we let the thread delete\r
-       // the instance.\r
-       m_pStoreSelection = new CStoreSelection(this);\r
-       m_ChangedFileListCtrl.SetItemCountEx(0);\r
-       m_ChangedFileListCtrl.Invalidate();\r
-       m_LogList.SetItemCountEx(0);\r
-       m_LogList.Invalidate();\r
-       InterlockedExchange(&m_bNoDispUpdates, TRUE);\r
-       CWnd * pMsgView = GetDlgItem(IDC_MSGVIEW);\r
-       pMsgView->SetWindowText(_T(""));\r
-\r
-       SetSortArrow(&m_LogList, -1, true);\r
-\r
-       m_LogList.DeleteAllItems();\r
-       m_arShownList.RemoveAll();\r
-       m_logEntries.ClearAll();\r
-\r
-    // reset the cached HEAD property & go on-line\r
-\r
-    if (autoGoOnline)\r
-    {\r
-           SetDlgTitle (false);\r
-        logCachePool.GetRepositoryInfo().ResetHeadRevision (m_sUUID, m_sRepositoryRoot);\r
-    }\r
-\r
-       InterlockedExchange(&m_bThreadRunning, TRUE);\r
-       if (AfxBeginThread(LogThreadEntry, this)==NULL)\r
-       {\r
-               InterlockedExchange(&m_bThreadRunning, FALSE);\r
-               CMessageBox::Show(NULL, IDS_ERR_THREADSTARTFAILED, IDS_APPNAME, MB_OK | MB_ICONERROR);\r
-       }\r
-       GetDlgItem(IDC_LOGLIST)->UpdateData(FALSE);\r
-       InterlockedExchange(&m_bNoDispUpdates, FALSE);\r
-#endif\r
 }\r
 \r
 void CLogDlg::OnBnClickedNexthundred()\r
@@ -1065,7 +993,7 @@ void CLogDlg::OnContextMenu(CWnd* pWnd, CPoint point)
        }\r
        else if (pWnd == &m_ChangedFileListCtrl)\r
        {\r
-               ShowContextMenuForChangedpaths(pWnd, point);\r
+               //ShowContextMenuForChangedpaths(pWnd, point);\r
        }\r
        else if ((selCount == 1)&&(pWnd == GetDlgItem(IDC_MSGVIEW)))\r
        {\r
@@ -1090,12 +1018,12 @@ void CLogDlg::OnContextMenu(CWnd* pWnd, CPoint point)
                        sMenuItemText.LoadString(IDS_SCIEDIT_SELECTALL);\r
                        popup.AppendMenu(MF_STRING | MF_ENABLED, EM_SETSEL, sMenuItemText);\r
 \r
-                       if (selIndex >= 0)\r
-                       {\r
-                               popup.AppendMenu(MF_SEPARATOR);\r
-                               sMenuItemText.LoadString(IDS_LOG_POPUP_EDITLOG);\r
-                               popup.AppendMenu(MF_STRING | MF_ENABLED, CGitLogList::ID_EDITAUTHOR, sMenuItemText);\r
-                       }\r
+                       //if (selIndex >= 0)\r
+                       //{\r
+                       //      popup.AppendMenu(MF_SEPARATOR);\r
+                       //      sMenuItemText.LoadString(IDS_LOG_POPUP_EDITLOG);\r
+                       //      popup.AppendMenu(MF_STRING | MF_ENABLED, CGitLogList::ID_EDITAUTHOR, sMenuItemText);\r
+                       //}\r
 \r
                        int cmd = popup.TrackPopupMenu(TPM_RETURNCMD | TPM_LEFTALIGN | TPM_NONOTIFY, point.x, point.y, this, 0);\r
                        switch (cmd)\r
@@ -3094,6 +3022,7 @@ void CLogDlg::SetSortArrow(CListCtrl * control, int nColumn, bool bAscending)
 }\r
 void CLogDlg::OnLvnColumnclickChangedFileList(NMHDR *pNMHDR, LRESULT *pResult)\r
 {\r
+#if 0\r
        if (this->IsThreadRunning())\r
                return;         //no sorting while the arrays are filled\r
        if (m_currentChangedArray == NULL)\r
@@ -3107,6 +3036,7 @@ void CLogDlg::OnLvnColumnclickChangedFileList(NMHDR *pNMHDR, LRESULT *pResult)
        SetSortArrow(&m_ChangedFileListCtrl, m_nSortColumnPathList, m_bAscendingPathList);\r
        m_ChangedFileListCtrl.Invalidate();\r
        *pResult = 0;\r
+#endif\r
 }\r
 \r
 int CLogDlg::m_nSortColumnPathList = 0;\r
@@ -3287,6 +3217,7 @@ void CLogDlg::UpdateLogInfoLabel()
        UpdateData(FALSE);\r
 }\r
 \r
+#if 0\r
 void CLogDlg::ShowContextMenuForChangedpaths(CWnd* /*pWnd*/, CPoint point)\r
 {\r
 \r
@@ -3822,6 +3753,7 @@ void CLogDlg::ShowContextMenuForChangedpaths(CWnd* /*pWnd*/, CPoint point)
 \r
        } // if (popup.CreatePopupMenu())\r
 }\r
+#endif\r
 \r
 void CLogDlg::OnDtnDropdownDatefrom(NMHDR * /*pNMHDR*/, LRESULT *pResult)\r
 {\r
index 41565db..f63c2cb 100644 (file)
@@ -34,7 +34,7 @@
 #include "HintListCtrl.h"\r
 #include <regex>\r
 #include "GitLogList.h"\r
-\r
+#include "GitStatusListCtrl.h"\r
 using namespace std;\r
 \r
 \r
@@ -220,7 +220,10 @@ private:
        CString                         m_sURL;\r
        CString                         m_sUUID;    ///< empty if the log cache is not used\r
        CGitLogList                     m_LogList;\r
-       CListCtrl                       m_ChangedFileListCtrl;\r
+       //CListCtrl                     m_ChangedFileListCtrl;\r
+       \r
+       CGitStatusListCtrl  m_ChangedFileListCtrl;\r
+\r
        CFilterEdit                     m_cFilter;\r
        CProgressCtrl           m_LogProgress;\r
        CMenuButton                     m_btnShow;\r
@@ -302,7 +305,7 @@ private:
 \r
     \r
        \r
-       CXPTheme                        theme;\r
+       //CXPTheme                      theme;\r
        bool                            m_bVista;\r
 };\r
 static UINT WM_REVSELECTED = RegisterWindowMessage(_T("TORTOISEGit_REVSELECTED_MSG"));\r
index 9e9906f..96fa155 100644 (file)
Binary files a/src/TortoiseProc/resource.h and b/src/TortoiseProc/resource.h differ